[Svn-src-all:1238] [version-2_5-dev 20127] #975([管理画面]受注管理(受注一覧、登録編集))

nanasess admin @ mail.ec-cube.net
2011年 2月 9日 (水) 21:10:45 JST


Subversion committed to /home/svn/open 20127
http://svn.ec-cube.net/open_trac/changeset/20127
┌────────────────────────────┐
│更新者 :  nanasess                                     │
│更新日時:  2011-02-09 21:10:45 +0900 (水, 09  2月 2011)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#975([管理画面]受注管理(受注一覧、登録編集))
 * 配送商品のチェックを多次元配列で行うため, SC_FormParam::checkError() を多次元配列に対応


Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/data/class/SC_FormParam.php

変更: branches/version-2_5-dev/data/class/SC_FormParam.php
===================================================================
--- branches/version-2_5-dev/data/class/SC_FormParam.php	2011-02-09 11:27:32 UTC (rev 20126)
+++ branches/version-2_5-dev/data/class/SC_FormParam.php	2011-02-09 12:10:45 UTC (rev 20127)
@@ -175,7 +175,7 @@
     function checkError($br = true, $keyname = "") {
         // 連想配列の取得
         $arrRet = $this->getHashArray($keyname);
-        $objErr = new SC_CheckError($arrRet);
+        $objErr->arrErr = array();
 
         $cnt = 0;
         foreach($this->keyname as $val) {
@@ -201,43 +201,16 @@
                 case 'DOMAIN_CHECK':
                 case 'FILE_NAME_CHECK':
                 case 'MOBILE_EMAIL_CHECK':
-
-                    if(!is_array($this->param[$cnt])) {
-                        $objErr->doFunc(array($this->disp_name[$cnt], $val), array($func));
-                    } else {
-                        $max = count($this->param[$cnt]);
-                        for($i = 0; $i < $max; $i++) {
-                            $objSubErr = new SC_CheckError($this->param[$cnt]);
-                            $objSubErr->doFunc(array($this->disp_name[$cnt], $i), array($func));
-                            if(count($objSubErr->arrErr) > 0) {
-                                foreach($objSubErr->arrErr as $mess) {
-                                    if($mess != "") {
-                                        $objErr->arrErr[$val] = $mess;
-                                    }
-                                }
-                            }
-                        }
-                    }
+                    $this->recursionCheck($this->disp_name[$cnt], $func,
+                                          $this->param[$cnt], $objErr->arrErr,
+                                          $val, $this->length[$cnt]);
                     break;
                 case 'MAX_LENGTH_CHECK':
                 case 'MIN_LENGTH_CHECK':
                 case 'NUM_COUNT_CHECK':
-                    if(!is_array($this->param[$cnt])) {
-                        $objErr->doFunc(array($this->disp_name[$cnt], $val, $this->length[$cnt]), array($func));
-                    } else {
-                        $max = count($this->param[$cnt]);
-                        for($i = 0; $i < $max; $i++) {
-                            $objSubErr = new SC_CheckError($this->param[$cnt]);
-                            $objSubErr->doFunc(array($this->disp_name[$cnt], $i, $this->length[$cnt]), array($func));
-                            if(count($objSubErr->arrErr) > 0) {
-                                foreach($objSubErr->arrErr as $mess) {
-                                    if($mess != "") {
-                                        $objErr->arrErr[$val] = $mess;
-                                    }
-                                }
-                            }
-                        }
-                    }
+                    $this->recursionCheck($this->disp_name[$cnt], $func,
+                                          $this->param[$cnt], $objErr->arrErr,
+                                          $val, $this->length[$cnt]);
                     break;
                 // 小文字に変換
                 case 'CHANGE_LOWER':
@@ -269,6 +242,37 @@
         return $objErr->arrErr;
     }
 
+    /**
+     * SC_CheckError::doFunc() を再帰的に実行する.
+     *
+     * @param string $disp_name 表示名
+     * @param string $func チェック種別
+     * @param mixed $value チェック対象の値. 配列の場合は再帰的にチェックする.
+     * @param array $arrErr エラーメッセージを格納する配列
+     * @param string $error_key エラーメッセージを格納する配列のキー
+     * @param integer $length チェック対象の値の長さ
+     * @return void
+     */
+    function recursionCheck($disp_name, $func, $value, &$arrErr, $error_key,
+                            $length = 0) {
+        if (is_array($value)) {
+            foreach ($value as $in) {
+                $this->recursionCheck($disp_name, $func, $in, $arrErr, $error_key,
+                                      $length);
+            }
+        } else {
+            $objSubErr = new SC_CheckError(array(0 => $value));
+            $objSubErr->doFunc(array($disp_name, 0, $length), array($func));
+            if(count($objSubErr->arrErr) > 0) {
+                foreach($objSubErr->arrErr as $mess) {
+                    if($mess != "") {
+                        $arrErr[$error_key] .= $mess;
+                    }
+                }
+            }
+        }
+    }
+
     // 入力文字の変換
     function convParam() {
         /*




Svn-src-all メーリングリストの案内