Squiz Matrix  4.12.2
 All Data Structures Namespaces Functions Variables Pages
form_question_rule_type_regexp.inc
1 <?php
18 require_once dirname(__FILE__).'/../../form_question_rule/form_question_rule.inc';
19 
32 {
33 
34 
41  function __construct($assetid=0)
42  {
43  parent::__construct($assetid);
44 
45  }//end constructor
46 
47 
55  public static function getOperators()
56  {
57  return Array(
58  1 => translate('core_form_rule_regexp_true'),
59  0 => translate('core_form_rule_regexp_false'),
60  );
61 
62  }//end getOperators()
63 
64 
74  function generateJSCode(&$q_asset, $rule_data)
75  {
76  $operator = array_get_index($rule_data, 'operator', 1);
77  $value = array_get_index($rule_data, 'value', '');
78  $case_sensitive = array_get_index($rule_data, 'case_sensitive', 1) ? '' : 'i';
79 
80  ob_start(); // buffer this please
81 
82  // JavaScript only accepts forward slashes for their regexs
83  ?>
84  if (<?php echo ($operator == 1) ? '!' : ''; ?>form.elements["q<?php echo $q_asset->id; ?>"].value.match(/<?php echo str_replace('/', '\/', $value) ?>/<?php echo $case_sensitive; ?>)) {
85  submission_errors[submission_errors.length] = "<?php
86  if (empty($rule_data['custom_text'])) {
87  echo addslashes($this->defaultError($q_asset, $rule_data));
88  } else {
89  echo addslashes($rule_data['custom_text']);
90  }
91  ?>";
92  }
93  <?php
94 
95  $contents = ob_get_contents();
96  ob_end_clean();
97 
98  return $contents;
99 
100  }//end generateJSCode()
101 
102 
117  function evaluate($answer, $rule_data)
118  {
119  $operator = array_get_index($rule_data, 'operator', 1);
120 
121  $pattern = '/'.str_replace('/', '\\'.'/', array_get_index($rule_data, 'value', '')).'/';
122 
123  // case insensitive?
124  if (!array_get_index($rule_data, 'case_sensitive', 1)) {
125  $pattern .= 'i';
126  }
127 
128  $valid = (preg_match($pattern, $answer)) ? 1 : 0;
129 
130  return ($valid == $operator);
131 
132  }//end evaluate()
133 
134 
144  function defaultError(&$q_asset, $rule_data)
145  {
146  $error_str = translate('core_form_rule_regexp_error', $q_asset->name);
147 
148  return $error_str;
149 
150  }//end defaultError()
151 
152 
162  function ruleDescription(&$q_asset, $rule_data)
163  {
164  $operator = array_get_index($rule_data, 'operator', 1);
165  $value = array_get_index($rule_data, 'value', '');
166  $operator_list = $this->getOperators();
167 
168  $error_str = translate('core_form_rule_regexp_desc_'.($operator ? 'true' : 'false'), $q_asset->attr('name'), $value);
169 
170  return $error_str;
171 
172  }//end ruleDescription()
173 
174 
175 }//end class
176 ?>