Source for file Ethna_Plugin_Validator_Required.php

Documentation is available at Ethna_Plugin_Validator_Required.php

  1. <?php
  2. // vim: foldmethod=marker
  3. /**
  4.  *  Ethna_Plugin_Validator_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: Ethna_Plugin_Validator_Required.php 298 2006-07-19 05:22:39Z fujimoto $
  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.     var $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.     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 '{form}が選択されていません';
  62.                 else {
  63.                     $msg '{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]$form_def['type']== false{
  76.                     $valid_keys[$key;
  77.                 }
  78.             }
  79.         }
  80.  
  81.         // required_key のチェック
  82.         if (isset($params['key'])) {
  83.             $invalid_keys array_diff(to_array($params['key'])$valid_keys);
  84.             if (count($invalid_keys0{
  85.                 if (isset($params['error'])) {
  86.                     $msg $params['error'];
  87.                 else if ($choice{
  88.                     $msg '{form}の必要な項目が選択されていません';
  89.                 else {
  90.                     $msg '{form}の必要な項目が入力されていません';
  91.                 }
  92.                 return Ethna::raiseNotice($msgE_FORM_REQUIRED);
  93.             }
  94.         }
  95.  
  96.         // required_num のチェック
  97.         if (isset($params['num'])) {
  98.             if (count($valid_keysintval($params['num'])) {
  99.                 if (isset($params['error'])) {
  100.                     $msg $params['error'];
  101.                 else if ($choice{
  102.                     $msg '{form}が必要な数まで選択されていません';
  103.                 else {
  104.                     $msg '{form}が必要な数まで入力されていません';
  105.                 }
  106.                 return Ethna::raiseNotice($msgE_FORM_REQUIRED);
  107.             }
  108.         }
  109.  
  110.         // とくに指定がないとき: フォームに与えられた全要素
  111.         if (isset($params['key']== false && isset($params['num']== false{
  112.             if (count($valid_keys== || count($valid_keys!= count($var)) {
  113.                 if (isset($params['error'])) {
  114.                     $msg $params['error'];
  115.                 else if ($choice{
  116.                     $msg '{form}が選択されていません';
  117.                 else {
  118.                     $msg '{form}が入力されていません';
  119.                 }
  120.                 return Ethna::raiseNotice($msgE_FORM_REQUIRED);
  121.             }
  122.         }
  123.  
  124.         return $true;
  125.     }
  126.  
  127. }
  128. // }}}
  129. ?>

Documentation generated on Thu, 08 May 2008 00:15:23 +0900 by phpDocumentor 1.4.2