Installer: minor fixes.
[AOOS.git] / lib / AOOSModelConstraints.php
bloba537da5a64e1f465116097e16b49dcc139532431
1 <?php
2 require_once("AOOSInterfaces.php");
4 class LengthConstraint implements AOOSModelConstraintInterface {
5 static public function name() {
6 return "Length";
9 static public function numArgs() {
10 return 1;
13 static public function check($args, $value) {
14 if (is_integer($value) || is_object($value) || is_float($value) || is_bool($value)) {
15 return false;
17 return true;
20 static public function execute($args, $value) {
21 $length = $args[0];
22 if (is_string($value)) {
23 if (strlen($value) > $length) {
24 return substr($value, 0, $length);
26 else {
27 return $value;
30 elseif (is_array($value)) {
31 if (count($value) > $length) {
32 return array_slice($value, 0, $length);
34 else {
35 return $value;
38 return false;
42 class MatchConstraint implements AOOSModelConstraintInterface {
43 static public function name() {
44 return "Match";
47 static public function numArgs() {
48 return 1;
51 static public function check($args, $value) {
52 if (!is_string($value)) {
53 return false;
55 return true;
58 static public function execute($args, $value) {
59 $pattern = $args[0];
60 if (preg_match($pattern, $value)) {
61 return $value;
63 return false;
67 class RangeConstraint implements AOOSModelConstraintInterface {
68 static public function name() {
69 return "Range";
72 static public function numArgs() {
73 return 2;
76 static public function check($args, $value) {
77 $start = $args[0];
78 $end = $args[1];
79 if (!is_integer($value) && !is_float($value)) {
80 return false;
82 if (!(is_integer($start) || is_float($start) || is_integer($end) || is_float($end)) || $start > $end) {
83 return false;
85 return true;
88 static public function execute($args, $value) {
89 $start = $args[0];
90 $end = $args[1];
91 if ($value < $start) {
92 $value = $start;
94 elseif ($value > $end) {
95 $value = $end;
97 return $value;