Squiz Matrix  4.12.2
 All Data Structures Namespaces Functions Variables Pages
decision_tree_question_type_numeric.inc
1 <?php
18 require_once SQ_PACKAGES_PATH.'/cms/page_templates/page_decision_tree/decision_tree_question/decision_tree_question.inc';
19 
30 {
31 
32 
39  function __construct($assetid=0)
40  {
41  parent::__construct($assetid);
42 
43  }//end constructor
44 
45 
53  function _getAllowedLinks()
54  {
55  $page_links = parent::_getAllowedLinks();
56  return $page_links;
57 
58  }//end _getAllowedLinks()
59 
60 
67  function getHtmlField()
68  {
69 
70  $width = $this->attr('width');
71  $max = $this->attr('max');
72  $extras = $this->attr('extra');
73  $name = 'q'.$this->id;
74 
75  // prepare a valid value for the field id
76  $extras = $extras.' id="'.$name.'"';
77 
78  ob_start();
79  text_box($name, '', $width, $max, FALSE, $extras);
80  $html = ob_get_contents();
81  ob_end_clean();
82 
83  return $html;
84 
85  }//end getHtmlField()
86 
93  function getHtmlButton()
94  {
95 
96  $name = 'q'.$this->id.'_button';
97  $value = $this->attr('button_value');
98  $on_click = "get_next_step(document.getElementById('q$this->id').value, $this->id)";
99 
100  ob_start();
101  normal_button($name, $value, $on_click, '');
102  $html = ob_get_contents();
103  ob_end_clean();
104 
105  return $html;
106 
107  }//end getHtmlButton()
108 
109 
117  public function getOperators()
118  {
119  $operators = Array(
120  'INCL' => translate('all_inclusive'),
121  'L_INCL' => translate('left_inclusive'),
122  'R_INCL' => translate('right_inclusive'),
123  'N_INCL' => translate('not_inclusive'),
124  );
125 
126  return $operators;
127 
128  }//end getOperators()
129 
130 
145  function evaluate($answer, $rule_data)
146  {
147  $answer = trim($answer);
148  if (strlen($answer) == 0 || !is_numeric($answer)) return FALSE;
149 
150  if (empty($rule_data)) return FALSE;
151  if ((strlen($rule_data['value_1']) == 0 && strlen($rule_data['value_2']) == 0) || empty($rule_data['logic'])) return FALSE;
152 
153  switch ($rule_data['logic']) {
154  case 'INCL':
155  if (strlen($rule_data['value_1']) == 0){
156  $valid = ($answer <= $rule_data['value_2']);
157  } else if (strlen($rule_data['value_2']) == 0){
158  $valid = ($answer >= $rule_data['value_1']);
159  } else {
160  $valid = ($answer >= $rule_data['value_1'] && $answer <= $rule_data['value_2']);
161  }
162  break;
163 
164  case 'L_INCL':
165  if (strlen($rule_data['value_1']) == 0){
166  $valid = ($answer < $rule_data['value_2']);
167  } else if (strlen($rule_data['value_2']) == 0){
168  $valid = ($answer >= $rule_data['value_1']);
169  } else {
170  $valid = ($answer >= $rule_data['value_1'] && $answer < $rule_data['value_2']);
171  }
172  break;
173 
174  case 'R_INCL':
175  if (strlen($rule_data['value_1']) == 0){
176  $valid = ($answer <= $rule_data['value_2']);
177  } else if (strlen($rule_data['value_2']) == 0){
178  $valid = ($answer > $rule_data['value_1']);
179  } else {
180  $valid = ($answer > $rule_data['value_1'] && $answer <= $rule_data['value_2']);
181  }
182  break;
183 
184  case 'N_INCL':
185  if (strlen($rule_data['value_1']) == 0){
186  $valid = ($answer < $rule_data['value_2']);
187  } else if (strlen($rule_data['value_2']) == 0){
188  $valid = ($answer > $rule_data['value_1']);
189  } else {
190  $valid = ($answer > $rule_data['value_1'] && $answer < $rule_data['value_2']);
191  }
192  break;
193 
194  default:
195  $valid = FALSE;
196  }
197 
198  return $valid;
199 
200  }//end evaluate()
201 
202 
216  function printDescription($rule_data)
217  {
218 
219  if ((strlen($rule_data['value_1']) == 0 && strlen($rule_data['value_2']) == 0) || empty($rule_data['logic'])) return;
220  switch ($rule_data['logic']) {
221  case 'INCL':
222  if (strlen($rule_data['value_1']) == 0){
223  echo "<= $rule_data[value_2]";
224  } else if (strlen($rule_data['value_2']) == 0){
225  echo ">= $rule_data[value_1]";
226  } else {
227  echo (">= $rule_data[value_1] AND <= $rule_data[value_2]");
228  }
229  break;
230 
231  case 'L_INCL':
232  if (strlen($rule_data['value_1']) == 0){
233  echo "< $rule_data[value_2]";
234  } else if (strlen($rule_data['value_2']) == 0){
235  echo ">= $rule_data[value_1]";
236  } else {
237  echo (">= $rule_data[value_1] AND < $rule_data[value_2]");
238  }
239  break;
240 
241  case 'R_INCL':
242  if (strlen($rule_data['value_1']) == 0){
243  echo "<= $rule_data[value_2]";
244  } else if (strlen($rule_data['value_2']) == 0){
245  echo "> $rule_data[value_1]";
246  } else {
247  echo ("> $rule_data[value_1] AND <= $rule_data[value_2]");
248  }
249  break;
250 
251  case 'N_INCL':
252  if (strlen($rule_data['value_1']) == 0){
253  echo "< $rule_data[value_2]";
254  } else if (strlen($rule_data['value_2']) == 0){
255  echo "> $rule_data[value_1]";
256  } else {
257  echo ("> $rule_data[value_1] AND < $rule_data[value_2]");
258  }
259  break;
260 
261  default:
262  echo '';
263  }
264 
265  }//end printDescription()
266 
267 }//end class
268 ?>