Source for file Required.php

Documentation is available at Required.php

  1. <?php
  2. // vim: foldmethod=marker
  3. /**
  4.  *  Required.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: 25c4fccad1de19a010e17a356d9f378d3a1043b3 $
  10.  */
  11.  
  12. // {{{ Ethna_Plugin_Validator_Required
  13. /**
  14.  *  必須フォームの検証プラグイン
  15.  *
  16.  *  @author     ICHII Takashi <ichii386@schweetheart.jp>
  17.  *  @access     public
  18.  *  @package    Ethna
  19.  */
  20. {
  21.     /** @var    bool    配列を受け取るかフラグ */
  22.     public $accept_array = true;
  23.  
  24.     /**
  25.      *  フォームに値が入力されているかを検証する
  26.      *
  27.      *  配列の場合は、入力されるべき key のリスト、
  28.      *  あるいは key の数を指定できます
  29.      *
  30.      *  @access public
  31.      *  @param  string  $name       フォームの名前
  32.      *  @param  mixed   $var        フォームの値
  33.      *  @param  array   $params     プラグインのパラメータ
  34.      */
  35.     public function validate($name$var$params)
  36.     {
  37.         $true true;
  38.         if (isset($params['required']&& $params['required'== false{
  39.             return $true;
  40.         }
  41.         $form_def $this->getFormDef($name);
  42.  
  43.         // 選択型のフォームかどうか
  44.         switch ($form_def['form_type']{
  45.         case FORM_TYPE_SELECT:
  46.         case FORM_TYPE_RADIO:
  47.         case FORM_TYPE_CHECKBOX:
  48.         case FORM_TYPE_FILE:
  49.             $choice true;
  50.             break;
  51.         default:
  52.             $choice false;
  53.         }
  54.  
  55.         // スカラーの場合
  56.         if (is_array($form_def['type']== false{
  57.             if ($this->isEmpty($var$this->getFormType($name))) {
  58.                 if (isset($params['error'])) {
  59.                     $msg $params['error'];
  60.                 else if ($choice{
  61.                     $msg _et('{form} was not selected.');
  62.                 else {
  63.                     $msg _et('no input to {form}.');
  64.                 }
  65.                 return Ethna::raiseNotice($msgE_FORM_REQUIRED);
  66.             else {
  67.                 return $true;
  68.             }
  69.         }
  70.                 
  71.         // 配列の場合
  72.         $valid_keys array();
  73.         if ($var != null{
  74.             foreach (array_keys($varas $key{
  75.                 if ($this->isEmpty($var[$key]$this->getFormType($name)) == false{
  76.                     $valid_keys[$key;
  77.                 }
  78.             }
  79.         }
  80.  
  81.         // 配列の required_key のチェック
  82.         // 'required_key' => array(xx) に設定された配列の要素値がなければエラー。
  83.         if (isset($params['key'])) {
  84.             $invalid_keys array_diff(to_array($params['key'])$valid_keys);
  85.             if (count($invalid_keys0{
  86.                 if (isset($params['error'])) {
  87.                     $msg $params['error'];
  88.                 else if ($choice{
  89.                     $msg _et('Required item of {form} was not selected.');
  90.                 else {
  91.                     $msg _et('Required item of {form} was not submitted.');
  92.                 }
  93.                 return Ethna::raiseNotice($msgE_FORM_REQUIRED);
  94.             }
  95.         }
  96.  
  97.         // 配列の required_num のチェック
  98.         // 'required_num' => xx に設定された数より、validな値の数が少なければエラー。
  99.         if (isset($params['num'])) {
  100.             if (count($valid_keysintval($params['num'])) {
  101.                 if (isset($params['error'])) {
  102.                     $msg $params['error'];
  103.                 else if ($choice{
  104.                     $msg _et('Required numbers of {form} was not selected.');
  105.                 else {
  106.                     $msg _et('Required numbers of {form} was not submitted.');
  107.                 }
  108.                 return Ethna::raiseNotice($msgE_FORM_REQUIRED);
  109.             }
  110.         }
  111.  
  112.         // とくに指定がないとき: フォームに与えられた全要素に
  113.         // valid な値が入っていなければならない
  114.         if (isset($params['key']== false && isset($params['num']== false{
  115.             if (count($valid_keys== || count($valid_keys!= count($var)) {
  116.                 if (isset($params['error'])) {
  117.                     $msg $params['error'];
  118.                 else if ($choice{
  119.                     $msg _et('Please select {form}.');
  120.                 else {
  121.                     $msg _et('Please input {form}.');
  122.                 }
  123.                 return Ethna::raiseNotice($msgE_FORM_REQUIRED);
  124.             }
  125.         }
  126.  
  127.         return $true;
  128.     }
  129.  
  130. }
  131. // }}}

Documentation generated on Fri, 11 Nov 2011 03:59:01 +0900 by phpDocumentor 1.4.3