Squiz Matrix  4.12.2
 All Data Structures Namespaces Functions Variables Pages
form_question_type_numeric.inc
1 <?php
18 require_once dirname(__FILE__).'/../form_question_type_text/form_question_type_text.inc';
19 require_once SQ_FUDGE_PATH.'/general/www.inc';
20 
21 
34 {
35 
36 
44  function Form_Question_Type_Numeric($assetid=0, $data=Array())
45  {
46  $this->Form_Question_Type_Text($assetid, $data);
47 
48  }//end constructor
49 
50 
59  function getAllowedRules()
60  {
61  return Array('comparison', 'integer', 'length');
62 
63  }//end getAllowedRules()
64 
65 
81  function hasValidValue($answer=NULL, $mute_errors=FALSE)
82  {
83  if (is_null($answer)) $answer = $this->getValue();
84 
85  if (!empty($answer)) {
86  $req_rule = Array('rule_code' => 'numeric', 'operator' => 1);
87  array_unshift($this->vars['rules']['value'], $req_rule);
88 
89  // Add Force Integer if required
90  if ($this->attr('is_int')) {
91  $req_rule = Array('rule_code' => 'integer', 'operator' => 1);
92  array_unshift($this->vars['rules']['value'], $req_rule);
93  }
94  }
95 
96  $ok = parent::hasValidValue($answer, $mute_errors);
97 
98  if (!empty($answer)) {
99  if ($this->attr('is_int')) { // Remove Force Integer
100  array_shift($this->vars['rules']['value']);
101  }
102  array_shift($this->vars['rules']['value']); // Remove Force Numeric in any case
103  }
104 
105  return $ok;
106 
107  }//end hasValidValue()
108 
109 
120  function generateJSCode()
121  {
122  // Add Force Numeric in any case
123  $req_rule = Array('rule_code' => 'numeric', 'operator' => 1);
124  array_unshift($this->vars['rules']['value'], $req_rule);
125 
126  // Add Force Integer if required
127  if ($this->attr('is_int')) {
128  $req_rule = Array('rule_code' => 'integer', 'operator' => 1);
129  array_unshift($this->vars['rules']['value'], $req_rule);
130  }
131 
132  $code = parent::generateJSCode();
133 
134  if ($this->attr('is_int')) { // Remove Force Integer
135  array_shift($this->vars['rules']['value']);
136  }
137  array_shift($this->vars['rules']['value']); // Remove Force Numeric in any case
138 
139  return $code;
140 
141  }//end generateJSCode()
142 
143 
144 }//end class
145 ?>