[Svn-src-all:1288] [version-2_5-dev 20177] #964 リファクタリング 入力値のバリデーション処理を追加

coelacanth admin @ mail.ec-cube.net
2011年 2月 17日 (木) 13:58:30 JST


Subversion committed to /home/svn/open 20177
http://svn.ec-cube.net/open_trac/changeset/20177
┌────────────────────────────┐
│更新者 :  coelacanth                                   │
│更新日時:  2011-02-17 13:58:30 +0900 (木, 17  2月 2011)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#964 リファクタリング 入力値のバリデーション処理を追加

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Delivery.php
U   branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php
U   branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Kiyaku.php
U   branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Payment.php

変更: branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Delivery.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Delivery.php	2011-02-17 04:57:51 UTC (rev 20176)
+++ branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Delivery.php	2011-02-17 04:58:30 UTC (rev 20177)
@@ -75,7 +75,17 @@
         // 認証可否の判定
         SC_Utils_Ex::sfIsSuccess($objSess);
 
-        switch($this->getMode()) {
+        $mode = $this->getMode();
+
+        if (!empty($_POST)) {
+            $this->arrErr = $this->lfCheckError($mode);
+            if (!empty($this->arrErr['deliv_id'])) {
+                SC_Utils_Ex::sfDispException();
+                return;
+            }
+        }
+
+        switch($mode) {
         case 'delete':
             // ランク付きレコードの削除
             $objDb->sfDeleteRankRecord("dtb_deliv", "deliv_id", $_POST['deliv_id']);
@@ -113,6 +123,31 @@
     }
 
     /**
+     * 入力エラーチェック
+     *
+     * @param string $mode
+     * @return array
+     */
+    function lfCheckError($mode) {
+        $arrErr = array();
+        switch ($mode) {
+            case "delete":
+            case "up":
+            case "down":
+                $this->objFormParam = new SC_FormParam();
+                $this->objFormParam->addParam('配送業者ID', 'deliv_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
+                $this->objFormParam->setParam($_POST);
+                $this->objFormParam->convParam();
+
+                $arrErr = $this->objFormParam->checkError();
+                break;
+            default:
+                break;
+        }
+        return $arrErr;
+    }
+
+    /**
      * デストラクタ.
      *
      * @return void

変更: branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php	2011-02-17 04:57:51 UTC (rev 20176)
+++ branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php	2011-02-17 04:58:30 UTC (rev 20177)
@@ -76,17 +76,23 @@
         // 認証可否の判定
         SC_Utils_Ex::sfIsSuccess($objSess);
 
+        $mode = $this->getMode();
+
+        if (!empty($_POST)) {
+            $this->arrErr = $this->lfCheckError($mode);
+            if (!empty($this->arrErr['holiday_id'])) {
+                SC_Utils_Ex::sfDispException();
+                return;
+            }
+        }
+
         // 要求判定
-        switch($this->getMode()) {
+        switch($mode) {
         // 編集処理
         case 'edit':
             // POST値の引き継ぎ
             $this->arrForm = $_POST;
-            // 入力文字の変換
-            $this->arrForm = $this->lfConvertParam($this->arrForm);
 
-            // エラーチェック
-            $this->arrErr = $this->lfErrorCheck();
             if(count($this->arrErr) <= 0) {
                 if($_POST['holiday_id'] == "") {
                     $this->lfInsertClass($this->arrForm);	// 新規作成
@@ -206,27 +212,51 @@
         return $array;
     }
 
-    /* 入力エラーチェック */
-    function lfErrorCheck() {
-        $objErr = new SC_CheckError();
-        $objErr->doFunc(array("タイトル", "title", SMTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("月", "month", INT_LEN), array("SELECT_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("日", "day", INT_LEN), array("SELECT_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
-        if(!isset($objErr->arrErr['date'])) {
-            $objQuery =& SC_Query::getSingletonInstance();
-            $where = "del_flg = 0 AND month = ? AND day = ?";
-            $arrval = array($_POST['month'], $_POST['day']);
-            if (!empty($_POST['holiday_id'])) {
-                $where .= " AND holiday_id <> ?";
-                $arrval[] = $_POST['holiday_id'];
-            }
-            $arrRet = $objQuery->select("count(holiday_id)", "dtb_holiday", $where, $arrval);
-            // 編集中のレコード以外に同じ日付が存在する場合
-            if ($arrRet[0]['count'] > 0) {
-                $objErr->arrErr['date'] = "※ 既に同じ日付の登録が存在します。<br>";
-            }
+    /**
+     * 入力エラーチェック
+     *
+     * @param string $mode
+     * @return array
+     */
+    function lfCheckError($mode) {
+        $arrErr = array();
+        switch ($mode) {
+            case 'edit':
+                $_POST = $this->lfConvertParam($_POST);
+
+                $objErr = new SC_CheckError();
+                $objErr->doFunc(array("タイトル", "title", SMTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
+                $objErr->doFunc(array("月", "month", INT_LEN), array("SELECT_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
+                $objErr->doFunc(array("日", "day", INT_LEN), array("SELECT_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
+                if(!isset($objErr->arrErr['date'])) {
+                    $objQuery =& SC_Query::getSingletonInstance();
+                    $where = "del_flg = 0 AND month = ? AND day = ?";
+                    $arrval = array($_POST['month'], $_POST['day']);
+                    if (!empty($_POST['holiday_id'])) {
+                        $where .= " AND holiday_id <> ?";
+                        $arrval[] = $_POST['holiday_id'];
+                    }
+                    $arrRet = $objQuery->select("count(holiday_id)", "dtb_holiday", $where, $arrval);
+                    // 編集中のレコード以外に同じ日付が存在する場合
+                    if ($arrRet[0]['count'] > 0) {
+                        $objErr->arrErr['date'] = "※ 既に同じ日付の登録が存在します。<br>";
+                    }
+                }
+                // breakしない
+            case 'delete':
+            case 'pre_edit':
+            case 'down':
+            case 'up':
+                $this->objFormParam = new SC_FormParam();
+                $this->objFormParam->addParam('定休日ID', 'holiday_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
+                $this->objFormParam->setParam($_POST);
+                $this->objFormParam->convParam();
+                $arrErr = $this->objFormParam->checkError();
+                break;
+            default:
+                break;
         }
-        return $objErr->arrErr;
+        return array_merge((array)$objErr->arrErr, (array)$arrErr);
     }
 }
 ?>

変更: branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Kiyaku.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Kiyaku.php	2011-02-17 04:57:51 UTC (rev 20176)
+++ branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Kiyaku.php	2011-02-17 04:58:30 UTC (rev 20177)
@@ -72,22 +72,28 @@
         // 認証可否の判定
         SC_Utils_Ex::sfIsSuccess($objSess);
 
+        $mode = $this->getMode();
+
+        if (!empty($_POST)) {
+            $this->arrErr = $this->lfCheckError($mode);
+            if (!empty($this->arrErr['kiyaku_id'])) {
+                SC_Utils_Ex::sfDispException();
+                return;
+            }
+        }
+
         // 要求判定
-        switch($this->getMode()) {
+        switch($mode) {
         // 編集処理
         case 'edit':
             // POST値の引き継ぎ
             $this->arrForm = $_POST;
-            // 入力文字の変換
-            $this->arrForm = $this->lfConvertParam($this->arrForm);
 
-            // エラーチェック
-            $this->arrErr = $this->lfErrorCheck();
             if(count($this->arrErr) <= 0) {
                 if($_POST['kiyaku_id'] == "") {
-                    $this->lfInsertClass($this->arrForm);	// 新規作成
+                    $this->lfInsertClass($this->arrForm);    // 新規作成
                 } else {
-                    $this->lfUpdateClass($this->arrForm);	// 既存編集
+                    $this->lfUpdateClass($this->arrForm);    // 既存編集
                 }
                 // 再表示
                 $this->objDisplay->reload();
@@ -198,20 +204,45 @@
         return $array;
     }
 
-    /* 入力エラーチェック */
-    function lfErrorCheck() {
-        $objErr = new SC_CheckError();
-        $objErr->doFunc(array("規約タイトル", "kiyaku_title", SMTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("規約内容", "kiyaku_text", MLTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
-        if(!isset($objErr->arrErr['name'])) {
-            $objQuery =& SC_Query::getSingletonInstance();
-            $arrRet = $objQuery->select("kiyaku_id, kiyaku_title", "dtb_kiyaku", "del_flg = 0 AND kiyaku_title = ?", array($_POST['kiyaku_title']));
-            // 編集中のレコード以外に同じ名称が存在する場合
-            if ($arrRet[0]['kiyaku_id'] != $_POST['kiyaku_id'] && $arrRet[0]['kiyaku_title'] == $_POST['kiyaku_title']) {
-                $objErr->arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br>";
-            }
+    /**
+     * 入力エラーチェック
+     *
+     * @param string $mode
+     * @return array
+     */
+    function lfCheckError($mode) {
+        $arrErr = array();
+
+        switch ($mode) {
+            case 'edit':
+                $_POST = $this->lfConvertParam($_POST);
+
+                $objErr = new SC_CheckError();
+                $objErr->doFunc(array("規約タイトル", "kiyaku_title", SMTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
+                $objErr->doFunc(array("規約内容", "kiyaku_text", MLTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
+                if(!isset($objErr->arrErr['name'])) {
+                    $objQuery =& SC_Query::getSingletonInstance();
+                    $arrRet = $objQuery->select("kiyaku_id, kiyaku_title", "dtb_kiyaku", "del_flg = 0 AND kiyaku_title = ?", array($_POST['kiyaku_title']));
+                    // 編集中のレコード以外に同じ名称が存在する場合
+                    if ($arrRet[0]['kiyaku_id'] != $_POST['kiyaku_id'] && $arrRet[0]['kiyaku_title'] == $_POST['kiyaku_title']) {
+                        $objErr->arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br>";
+                    }
+                }
+            case 'delete':
+            case 'pre_edit':
+            case 'down':
+            case 'up':
+                $this->objFormParam = new SC_FormParam();
+                $this->objFormParam->addParam('規約ID', 'kiyaku_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
+                $this->objFormParam->setParam($_POST);
+                $this->objFormParam->convParam();
+                $arrErr = $this->objFormParam->checkError();
+
+                break;
+            default:
+                break;
         }
-        return $objErr->arrErr;
+        return array_merge((array)$objErr->arrErr, (array)$arrErr);
     }
 }
 ?>

変更: branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Payment.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Payment.php	2011-02-17 04:57:51 UTC (rev 20176)
+++ branches/version-2_5-dev/data/class/pages/admin/basis/LC_Page_Admin_Basis_Payment.php	2011-02-17 04:58:30 UTC (rev 20177)
@@ -72,6 +72,16 @@
         // 認証可否の判定
         SC_Utils_Ex::sfIsSuccess($objSess);
 
+        $mode = $this->getMode();
+
+        if (!empty($_POST)) {
+            $this->arrErr = $this->lfCheckError($mode);
+            if (!empty($this->arrErr['payment_id'])) {
+                SC_Utils_Ex::sfDispException();
+                return;
+            }
+        }
+
         switch($this->getMode()) {
             case 'delete':
                 // ランク付きレコードの削除
@@ -116,5 +126,28 @@
         $arrRet = $objQuery->select($col, $table, $where);
         return $arrRet;
     }
+
+    /**
+     * 入力エラーチェック
+     *
+     * @param string $mode
+     * @return array
+     */
+    function lfCheckError($mode) {
+        $arrErr = array();
+        switch($mode) {
+            case 'delete':
+            case 'up':
+            case 'down':
+                $this->objFormParam = new SC_FormParam();
+                $this->objFormParam->addParam('配送業者ID', 'payment_id', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
+                $this->objFormParam->setParam($_POST);
+                $this->objFormParam->convParam();
+                $arrErr = $this->objFormParam->checkError();
+
+                break;
+        }
+        return $arrErr;
+    }
 }
 ?>




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