OSDN Git Service

349d8812fe31503d0fccf0da205871c220e3b7e4
[ethna/ethna.git] / Idea_Plugin_Extlib / class / Plugin / Validator / Ethna_Plugin_Validator_Type.php
1 <?php
2 // vim: foldmethod=marker
3 /**
4  *  Ethna_Plugin_Validator_Type.php
5  *
6  *  @author     ICHII Takashi <ichii386@schweetheart.jp>
7  *  @license    http://www.opensource.org/licenses/bsd-license.php The BSD License
8  *  @package    Ethna
9  *  @version    $Id$
10  */
11
12 // {{{ Ethna_Plugin_Validator_Type
13 /**
14  *  タイプチェックプラグイン
15  *
16  *  @author     ICHII Takashi <ichii386@schweetheart.jp>
17  *  @access     public
18  *  @package    Ethna
19  */
20 class Ethna_Plugin_Validator_Type extends Ethna_Plugin_Validator
21 {
22     /** @var    bool    配列を受け取るかフラグ */
23     var $accept_array = false;
24
25     /**
26      *  フォーム値の型チェックを行う
27      *
28      *  @access public
29      *  @param  string  $name       フォームの名前
30      *  @param  mixed   $var        フォームの値
31      *  @param  array   $params     プラグインのパラメータ
32      */
33     function &validate($name, $var, $params)
34     {
35         $true = true;
36         $type = $params['type'];
37         if ($type == VAR_TYPE_FILE || $this->isEmpty($var, $type)) {
38             return $true;
39         }
40
41         foreach (array_keys(to_array($var)) as $key) {
42             switch ($type) {
43                 case VAR_TYPE_INT:
44                     if (!preg_match('/^-?\d+$/', $var)) {
45                         if (isset($params['error'])) {
46                             $msg = $params['error'];
47                         } else {
48                             $msg = _et('Please input integer value to {form}.');
49                         }
50                         return Ethna::raiseNotice($msg, E_FORM_WRONGTYPE_INT);
51                     }
52                     break;
53
54                 case VAR_TYPE_FLOAT:
55                     if (!preg_match('/^-?\d+$/', $var) && !preg_match('/^-?\d+\.\d+$/', $var)) {
56                         if (isset($params['error'])) {
57                             $msg = $params['error'];
58                         } else {
59                             $msg = _et('Please input float value to {form}.');
60                         }
61                         return Ethna::raiseNotice($msg, E_FORM_WRONGTYPE_FLOAT);
62                     }
63                     break;
64
65                 case VAR_TYPE_BOOLEAN:
66                     if ($var != "1" && $var != "0") {
67                         if (isset($params['error'])) {
68                             $msg = $params['error'];
69                         } else {
70                             $msg = _et('You can input 0 or 1 to {form}.');
71                         }
72                         return Ethna::raiseNotice($msg, E_FORM_WRONGTYPE_BOOLEAN);
73                     }
74                     break;
75
76                 case VAR_TYPE_DATETIME:
77                     $r = strtotime($var);
78                     if ($r == -1 || $r === false) {
79                         if (isset($params['error'])) {
80                             $msg = $params['error'];
81                         } else {
82                             $msg = _et('Please input valid datetime to {form}.');
83                         }
84                         return Ethna::raiseNotice($msg, E_FORM_WRONGTYPE_DATETIME);
85                     }
86                     break;
87             }
88         }
89
90         return $true;
91     }
92 }
93 // }}}
94
95 ?>