[Svn-src-all:1293] [version-2_5-dev 20182] #973 規格分類管理画面のリファクタリング

kajiwara admin @ mail.ec-cube.net
2011年 2月 17日 (木) 19:53:51 JST


Subversion committed to /home/svn/open 20182
http://svn.ec-cube.net/open_trac/changeset/20182
┌────────────────────────────┐
│更新者 :  kajiwara                                     │
│更新日時:  2011-02-17 19:53:51 +0900 (木, 17  2月 2011)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#973 規格分類管理画面のリファクタリング

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

変更: branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ClassCategory.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ClassCategory.php	2011-02-17 10:53:03 UTC (rev 20181)
+++ branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ClassCategory.php	2011-02-17 10:53:51 UTC (rev 20182)
@@ -66,94 +66,69 @@
      * @return void
      */
     function action() {
-        $objQuery = new SC_Query();
-        $objDb = new SC_Helper_DB_Ex();
+        $objFormParam = new SC_FormParam();
 
         // 認証可否の判定
-        $objSess = new SC_Session();
-        SC_Utils_Ex::sfIsSuccess($objSess);
+        SC_Utils_Ex::sfIsSuccess(new SC_Session());
 
-        $get_check = false;
+        $this->lfInitParam($objFormParam);
+        $objFormParam->setParam($_POST);
+        $objFormParam->setParam($_GET);
+        $objFormParam->convParam();
+        $class_id = $objFormParam->getValue('class_id');
+        $classcategory_id = $objFormParam->getValue('classcategory_id');
 
-        // 規格IDのチェック
-        if(SC_Utils_Ex::sfIsInt($_GET['class_id'])) {
-            // 規格名の取得
-            $this->tpl_class_name = $objQuery->get("name", "dtb_class", "class_id = ?", array($_GET['class_id']));
-            if($this->tpl_class_name != "") {
-                // 規格IDの引き継ぎ
-                $this->arrHidden['class_id'] = $_GET['class_id'];
-                $get_check = true;
-            }
-        }
-
-        if(!$get_check) {
-            // 規格登録ページに飛ばす。
-            SC_Response_Ex::sendRedirect(ADMIN_CLASS_REGIST_URLPATH);
-            exit;
-        }
-
-        if (isset($_POST['class_id'])) {
-            if (!SC_Utils_Ex::sfIsInt($_POST['class_id'])) {
-                SC_Utils_Ex::sfDispError("");
-            }
-        }
-
+        switch($this->getMode()) {
+        // 登録ボタン押下
         // 新規作成 or 編集
-        switch($this->getMode()) {
-            // 登録ボタン押下
         case 'edit':
-            // POST値の引き継ぎ
-            $this->arrForm = $_POST;
-            // 入力文字の変換
-            $_POST = $this->lfConvertParam($_POST);
-            // エラーチェック
-            $this->arrErr = $this->lfErrorCheck();
-            if(count($this->arrErr) <= 0) {
-                if($_POST['classcategory_id'] == "") {
-                    $this->lfInsertClass();	// DBへの書き込み
+            // パラメータ値の取得
+            $this->arrForm = $objFormParam->getHashArray();
+            // 入力パラメーターチェック
+            $this->arrErr = $this->lfCheckError($objFormParam);
+            if (SC_Utils_Ex::isBlank($this->arrErr)) {
+                //新規規格追加かどうかを判定する
+                $is_insert = $this->lfCheckInsert($classcategory_id);
+                if($is_insert) {
+                    //新規追加
+                    $this->lfInsertClass($this->arrForm);
                 } else {
-                    $this->lfUpdateClass();	// DBへの書き込み
+                    //更新
+                    $this->lfUpdateClass($this->arrForm);
                 }
                 // 再表示
-                $this->objDisplay->reload($_GET['class_id']);
-                //sfReload("class_id=" . $_GET['class_id']);
-            } else {
-                // POSTデータを引き継ぐ
-                $this->tpl_classcategory_id = $_POST['classcategory_id'];
+                SC_Response::reload();
             }
             break;
             // 削除
         case 'delete':
             // ランク付きレコードの削除
-            $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']);
-            $objDb->sfDeleteRankRecord("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where, true);
+            $this->lfDeleteClassCat($class_id, $classcategory_id);
             break;
             // 編集前処理
         case 'pre_edit':
-            // 編集項目をDBより取得する。
-            $where = "classcategory_id = ?";
-            $name = $objQuery->get("name", "dtb_classcategory", $where, array($_POST['classcategory_id']));
+            // 規格名を取得する。
+            $classcategory_name = $this->lfGetClassCatName($classcategory_id);
             // 入力項目にカテゴリ名を入力する。
-            $this->arrForm['name'] = $name;
-            // POSTデータを引き継ぐ
-            $this->tpl_classcategory_id = $_POST['classcategory_id'];
+            $this->arrForm['name'] = $classcategory_name;
             break;
         case 'down':
-            $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']);
-            $objDb->sfRankDown("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where);
+            //並び順を下げる
+            $this->lfDownRank($class_id, $classcategory_id);
             break;
         case 'up':
-            $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']);
-            $objDb->sfRankUp("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where);
+            //並び順を上げる
+            $this->lfUpRank($class_id, $classcategory_id);
             break;
         default:
             break;
         }
-
-        // 規格分類の読込
-        $where = "del_flg <> 1 AND class_id = ?";
-        $objQuery->setOrder("rank DESC");
-        $this->arrClassCat = $objQuery->select("name, classcategory_id", "dtb_classcategory", $where, array($_GET['class_id']));
+        //規格分類名の取得
+        $this->tpl_class_name = $this->lfGetClassName($class_id);
+        //規格分類情報の取得
+        $this->arrClassCat = $this->lfGetClassCat($class_id);
+        // POSTデータを引き継ぐ
+        $this->tpl_classcategory_id = $classcategory_id;
     }
 
     /**
@@ -165,19 +140,77 @@
         parent::destroy();
     }
 
-    /* DBへの挿入 */
-    function lfInsertClass() {
-        $objQuery = new SC_Query();
+    /**
+     * パラメータの初期化を行う.
+     *
+     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
+     * @return void
+     */
+    function lfInitParam(&$objFormParam) {
+    	$objFormParam->addParam("規格ID", "class_id", INT_LEN, "n", array("NUM_CHECK"));
+        $objFormParam->addParam("規格分類名", "name", STEXT_LEN, "KVa", array("EXIST_CHECK" ,"SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("規格分類ID", "classcategory_id", INT_LEN, "n", array("NUM_CHECK"));
+    }
+
+   /**
+     * 有効な規格分類情報の取得
+     *
+     * @param integer $class_id 規格ID
+     * @return array 規格分類情報
+     */
+    function lfGetClassCat($class_id) {
+        $objQuery =& SC_Query::getSingletonInstance();
+
+        $where = "del_flg <> 1 AND class_id = ?";
+        $objQuery->setOrder("rank DESC");
+        $arrClassCat = $objQuery->select("name, classcategory_id", "dtb_classcategory", $where, array($class_id));
+        return $arrClassCat;
+    }
+
+   /**
+     * 規格名の取得
+     *
+     * @param integer $class_id 規格ID
+     * @return string 規格名
+     */
+    function lfGetClassName($class_id) {
+        $objQuery =& SC_Query::getSingletonInstance();
+
+        $where = "class_id = ?";
+        $name = $objQuery->get("name", "dtb_class", $where, array($class_id));
+        return $name;
+    }
+   /**
+     * 規格分類名を取得する
+     *
+     * @param integer $classcategory_id 規格分類ID
+     * @return string 規格分類名
+     */
+    function lfGetClassCatName($classcategory_id) {
+        $objQuery =& SC_Query::getSingletonInstance();
+        $where = "classcategory_id = ?";
+        $name = $objQuery->get("name", "dtb_classcategory", $where, array($classcategory_id));
+        return $name;
+    }
+
+   /**
+     * 規格分類情報を新規登録
+     *
+     * @param array $arrForm フォームパラメータークラス
+     * @return integer 更新件数
+     */
+    function lfInsertClass($arrForm) {
+        $objQuery =& SC_Query::getSingletonInstance();
         $objQuery->begin();
         // 親規格IDの存在チェック
         $where = "del_flg <> 1 AND class_id = ?";
-        $ret = 	$objQuery->get("class_id", "dtb_class", $where, array($_POST['class_id']));
-        if($ret != "") {
+        $class_id = $objQuery->get("class_id", "dtb_class", $where, array($arrForm['class_id']));
+        if(!SC_Utils_Ex::isBlank($class_id)) {
             // INSERTする値を作成する。
-            $sqlval['name'] = $_POST['name'];
-            $sqlval['class_id'] = $_POST['class_id'];
+            $sqlval['name'] = $arrForm['name'];
+            $sqlval['class_id'] = $arrForm['class_id'];
             $sqlval['creator_id'] = $_SESSION['member_id'];
-            $sqlval['rank'] = $objQuery->max("rank", "dtb_classcategory", $where, array($_POST['class_id'])) + 1;
+            $sqlval['rank'] = $objQuery->max("rank", "dtb_classcategory", $where, array($arrForm['class_id'])) + 1;
             $sqlval['create_date'] = "now()";
             $sqlval['update_date'] = "now()";
             // INSERTの実行
@@ -200,34 +233,82 @@
         return $ret;
     }
 
-    /* 取得文字列の変換 */
-    function lfConvertParam($array) {
-        // 文字変換
-        $arrConvList['name'] = "KVa";
+   /**
+     * エラーチェック
+     *
+     * @param array $objFormParam フォームパラメータークラス
+     * @return array エラー配列
+     */
+    function lfCheckError(&$objFormParam) {
+        $objQuery =& SC_Query::getSingletonInstance();
+        $arrForm = $objFormParam->getHashArray();
+        // パラメーターの基本チェック
+        $arrErr = $objFormParam->checkError();
+        if (!SC_Utils_Ex::isBlank($arrErr)) {
+            return $arrErr;
+        }else{
+            $arrForm = $objFormParam->getHashArray();
+        }
 
-        foreach ($arrConvList as $key => $val) {
-            // POSTされてきた値のみ変換する。
-            if(isset($array[$key])) {
-                $array[$key] = mb_convert_kana($array[$key] ,$val);
-            }
+        $where = "class_id = ? AND name = ?";
+        $arrRet = $objQuery->select("classcategory_id, name", "dtb_classcategory", $where, array($arrForm['class_id'], $arrForm['name']));
+        // 編集中のレコード以外に同じ名称が存在する場合
+        if ($arrRet[0]['classcategory_id'] != $arrForm['classcategory_id'] && $arrRet[0]['name'] == $arrForm['name']) {
+            $arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br>";
         }
-        return $array;
+        return $arrErr;
     }
 
-    /* 入力エラーチェック */
-    function lfErrorCheck() {
-        $objErr = new SC_CheckError();
-        $objErr->doFunc(array("分類名", "name", STEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK"));
-        if(!isset($objErr->arrErr['name'])) {
-            $objQuery = new SC_Query();
-            $where = "class_id = ? AND name = ?";
-            $arrRet = $objQuery->select("classcategory_id, name", "dtb_classcategory", $where, array($_GET['class_id'], $_POST['name']));
-            // 編集中のレコード以外に同じ名称が存在する場合
-            if ($arrRet[0]['classcategory_id'] != $_POST['classcategory_id'] && $arrRet[0]['name'] == $_POST['name']) {
-                $objErr->arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br>";
-            }
+    /**
+     * 新規規格分類追加かどうかを判定する.
+     *
+     * @param integer $classcategory_id 規格分類ID
+     * @return boolean 新規商品追加の場合 true
+     */
+    function lfCheckInsert($classcategory_id) {
+        //classcategory_id のあるなしで新規規格分類化かどうかを判定
+        if (empty($classcategory_id)){
+            return true;
+        }else{
+            return false;
         }
-        return $objErr->arrErr;
     }
+
+    /**
+     * 規格分類情報を削除する
+     *
+     * @param integer $class_id 規格ID
+     * @param integer $classcategory_id 規格分類ID
+     * @return void
+     */
+    function lfDeleteClassCat($class_id, $classcategory_id) {
+        $objDb = new SC_Helper_DB_Ex();
+        $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($class_id);
+        $objDb->sfDeleteRankRecord("dtb_classcategory", "classcategory_id", $classcategory_id, $where, true);
+    }
+    /**
+     * 並び順を上げる
+     *
+     * @param integer $class_id 規格ID
+     * @param integer $classcategory_id 規格分類ID
+     * @return void
+     */
+    function lfUpRank($class_id, $classcategory_id) {
+        $objDb = new SC_Helper_DB_Ex();
+        $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($class_id);
+        $objDb->sfRankUp("dtb_classcategory", "classcategory_id", $classcategory_id, $where);
+    }
+    /**
+     * 並び順を下げる
+     *
+     * @param integer $class_id 規格ID
+     * @param integer $classcategory_id 規格分類ID
+     * @return void
+     */
+    function lfDownRank($class_id, $classcategory_id) {
+        $objDb = new SC_Helper_DB_Ex();
+        $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($class_id);
+        $objDb->sfRankDown("dtb_classcategory", "classcategory_id", $classcategory_id, $where);
+    }
 }
 ?>




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