ILIAS  eassessment Revision 61809
 All Data Structures Namespaces Files Functions Variables Groups Pages
Integer.php
Go to the documentation of this file.
1 <?php
2 
11 {
12 
16  protected $negative = true;
17 
21  protected $zero = true;
22 
26  protected $positive = true;
27 
33  public function __construct(
34  $negative = true, $zero = true, $positive = true
35  ) {
36  $this->negative = $negative;
37  $this->zero = $zero;
38  $this->positive = $positive;
39  }
40 
41  public function validate($integer, $config, $context) {
42 
43  $integer = $this->parseCDATA($integer);
44  if ($integer === '') return false;
45 
46  // we could possibly simply typecast it to integer, but there are
47  // certain fringe cases that must not return an integer.
48 
49  // clip leading sign
50  if ( $this->negative && $integer[0] === '-' ) {
51  $digits = substr($integer, 1);
52  if ($digits === '0') $integer = '0'; // rm minus sign for zero
53  } elseif( $this->positive && $integer[0] === '+' ) {
54  $digits = $integer = substr($integer, 1); // rm unnecessary plus
55  } else {
56  $digits = $integer;
57  }
58 
59  // test if it's numeric
60  if (!ctype_digit($digits)) return false;
61 
62  // perform scope tests
63  if (!$this->zero && $integer == 0) return false;
64  if (!$this->positive && $integer > 0) return false;
65  if (!$this->negative && $integer < 0) return false;
66 
67  return $integer;
68 
69  }
70 
71 }
72 
73 // vim: et sw=4 sts=4