[Svn-src-all:1372] [version-2_5-dev 20262] レビュー管理リファクタリング

naka admin @ mail.ec-cube.net
2011年 2月 20日 (日) 19:53:19 JST


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

Log:
--------------------------------------------------------
レビュー管理リファクタリング

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

変更: branches/version-2_5-dev/data/Smarty/templates/admin/products/review_edit.tpl
===================================================================
--- branches/version-2_5-dev/data/Smarty/templates/admin/products/review_edit.tpl	2011-02-20 10:42:53 UTC (rev 20261)
+++ branches/version-2_5-dev/data/Smarty/templates/admin/products/review_edit.tpl	2011-02-20 10:53:19 UTC (rev 20262)
@@ -34,9 +34,17 @@
         <table>
             <tr>
                 <th>商品名</th>
-                <td><!--{$arrReview.name|h}--></td>
+                <td><!--{$arrReview.name|h}-->
+                <input type="hidden" name="name" value="<!--{$arrReview.name}-->">
+                </td>
             </tr>
             <tr>
+                <th>投稿日</th>
+                <td><!--{$arrReview.create_date|sfDispDBDate}-->
+                <input type="hidden" name="create_date" value="<!--{$arrReview.create_date}-->">
+                </td>
+            </tr>
+            <tr>
                 <th>レビュー表示</th>
                 <td>
                     <!--{if $arrErr.status}--><span class="attention"><!--{$arrErr.status}--></span><!--{/if}-->
@@ -44,10 +52,6 @@
                 </td>
             </tr>
             <tr>
-                <th>投稿日</th>
-                <td><!--{$arrReview.create_date|sfDispDBDate}--></td>
-            </tr>
-            <tr>
                 <th>投稿者名 <span class="attention">*</span></th>
                 <td>
                     <!--{if $arrErr.reviewer_name}--><span class="attention"><!--{$arrErr.reviewer_name}--></span><!--{/if}-->

変更: branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Review.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Review.php	2011-02-20 10:42:53 UTC (rev 20261)
+++ branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Review.php	2011-02-20 10:53:19 UTC (rev 20262)
@@ -55,6 +55,20 @@
         $this->arrPageMax = $masterData->getMasterData("mtb_page_max");
         $this->arrRECOMMEND = $masterData->getMasterData("mtb_recommend");
         $this->arrSex = $masterData->getMasterData("mtb_sex");
+        
+        $objDate = new SC_Date();
+        // 登録・更新検索開始年
+        $objDate->setStartYear(RELEASE_YEAR);
+        $objDate->setEndYear(DATE("Y"));
+        $this->arrStartYear = $objDate->getYear();
+        $this->arrStartMonth = $objDate->getMonth();
+        $this->arrStartDay = $objDate->getDay();
+        // 登録・更新検索終了年
+        $objDate->setStartYear(RELEASE_YEAR);
+        $objDate->setEndYear(DATE("Y"));
+        $this->arrEndYear = $objDate->getYear();
+        $this->arrEndMonth = $objDate->getMonth();
+        $this->arrEndDay = $objDate->getDay();
     }
 
     /**
@@ -74,45 +88,29 @@
      */
     function action() {
         $objSess = new SC_Session();
-        $objDate = new SC_Date();
+
         $objQuery =& SC_Query::getSingletonInstance();
 
         // 認証可否の判定
         SC_Utils_Ex::sfIsSuccess($objSess);
 
-        // 登録・更新検索開始年
-        $objDate->setStartYear(RELEASE_YEAR);
-        $objDate->setEndYear(DATE("Y"));
-        $this->arrStartYear = $objDate->getYear();
-        $this->arrStartMonth = $objDate->getMonth();
-        $this->arrStartDay = $objDate->getDay();
-        // 登録・更新検索終了年
-        $objDate->setStartYear(RELEASE_YEAR);
-        $objDate->setEndYear(DATE("Y"));
-        $this->arrEndYear = $objDate->getYear();
-        $this->arrEndMonth = $objDate->getMonth();
-        $this->arrEndDay = $objDate->getDay();
-
         // パラメータ管理クラス
-        $this->objFormParam = new SC_FormParam();
-        // パラメータ情報の初期化
-        $this->lfInitParam();
-        $this->objFormParam->setParam($_POST);
-        $arrForm = $this->objFormParam->getHashArray();
+        $objFormParam = new SC_FormParam();
+        $this->lfInitParam($objFormParam);
+        $objFormParam->setParam($_POST);
+        $this->arrForm = $objFormParam->getHashArray();
+        $this->arrHidden = $this->lfSetHidden($this->arrForm);
 
-        // hidden の設定
-        $this->arrHidden = $this->lfSetHidden($arrForm);
-
         switch ($this->getMode()) {
         case 'delete':
             $this->lfDeleteReview($arrForm['review_id']);
         case 'search':
         case 'csv':
             // エラーチェック
-            $this->arrErr = $this->lfCheckError();
+            $this->arrErr = $this->lfCheckError($objFormParam);
             if (!$this->arrErr){
                 // 検索条件を取得
-                list($where, $arrval) = $this->lfGetWhere($arrForm);
+                list($where, $arrval) = $this->lfGetWhere($this->arrForm);
             }
 
             //CSVダウンロード
@@ -122,13 +120,11 @@
             }
 
             // 検索条件を取得
-            $this->arrReview = $this->lfGetRevire($arrForm, $where, $arrval);
+            $this->arrReview = $this->lfGetReview($this->arrForm, $where, $arrval);
             break;
         default:
             break;
         }
-
-        $this->arrForm = $arrForm;
     }
 
     /**
@@ -141,11 +137,11 @@
     }
 
     // 入力エラーチェック
-    function lfCheckError() {
+    function lfCheckError(&$objFormParam) {
         // 入力データを渡す。
-        $arrRet =  $this->objFormParam->getHashArray();
+        $arrRet =  $objFormParam->getHashArray();
         $objErr = new SC_CheckError($arrRet);
-        $objErr->arrErr = $this->objFormParam->checkError();
+        $objErr->arrErr = $objFormParam->checkError();
 
         switch ($this->getMode()){
         case 'search':
@@ -183,7 +179,6 @@
                         $arrForm[$key] = split("-", $val);
                     }
                     break;
-
                 default:
                     $arrHidden[$key] = $val;
                     break;
@@ -194,22 +189,22 @@
     }
 
     /* パラメータ情報の初期化 */
-    function lfInitParam() {
-        $this->objFormParam->addParam("投稿者名", "search_reviewer_name", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("投稿者URL", "search_reviewer_url", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("商品名", "search_name", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("商品コード", "search_product_code", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("性別", "search_sex", INT_LEN, "n", array("MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("おすすめレベル", "search_recommend_level", INT_LEN, "n", array("MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("投稿年", "search_startyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("投稿月", "search_startmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("投稿日", "search_startday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("投稿年", "search_endyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("投稿月", "search_endmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("投稿日", "search_endday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("最大表示件数", "search_page_max", INT_LEN, "n", array("MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("ページ番号件数", "search_pageno", INT_LEN, "n", array("MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("レビューID", "review_id", INT_LEN, "n", array("MAX_LENGTH_CHECK"));
+    function lfInitParam(&$objFormParam) {
+        $objFormParam->addParam("投稿者名", "search_reviewer_name", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"),"",false);
+        $objFormParam->addParam("投稿者URL", "search_reviewer_url", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"),"",false);
+        $objFormParam->addParam("商品名", "search_name", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"),"",false);
+        $objFormParam->addParam("商品コード", "search_product_code", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"),"",false);
+        $objFormParam->addParam("性別", "search_sex", INT_LEN, "n", array("MAX_LENGTH_CHECK"),"",false);
+        $objFormParam->addParam("おすすめレベル", "search_recommend_level", INT_LEN, "n", array("MAX_LENGTH_CHECK"),"",false);
+        $objFormParam->addParam("投稿年", "search_startyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"),"",false);
+        $objFormParam->addParam("投稿月", "search_startmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"),"",false);
+        $objFormParam->addParam("投稿日", "search_startday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"),"",false);
+        $objFormParam->addParam("投稿年", "search_endyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"),"",false);
+        $objFormParam->addParam("投稿月", "search_endmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"),"",false);
+        $objFormParam->addParam("投稿日", "search_endday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"),"",false);
+        $objFormParam->addParam("最大表示件数", "search_page_max", INT_LEN, "n", array("MAX_LENGTH_CHECK"),"",false);
+        $objFormParam->addParam("ページ番号件数", "search_pageno", INT_LEN, "n", array("MAX_LENGTH_CHECK"),"",false);
+        $objFormParam->addParam("レビューID", "review_id", INT_LEN, "n", array("MAX_LENGTH_CHECK"),"",false);
     }
 
     // CSV ファイル出力実行
@@ -312,7 +307,7 @@
     /*
      * レビューの検索結果取得
      */
-    function lfGetRevire($arrForm, $where, $arrval) {
+    function lfGetReview($arrForm, $where, $arrval) {
         $objQuery =& SC_Query::getSingletonInstance();
 
         // ページ送りの処理

変更: branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ReviewEdit.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ReviewEdit.php	2011-02-20 10:42:53 UTC (rev 20261)
+++ branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ReviewEdit.php	2011-02-20 10:53:19 UTC (rev 20262)
@@ -22,7 +22,7 @@
  */
 
 // {{{ requires
-require_once(CLASS_REALDIR . "pages/admin/LC_Page_Admin.php");
+require_once(CLASS_REALDIR . "pages/admin/products/LC_Page_Admin_Products_Review.php");
 
 /**
  * レビュー編集 のページクラス.
@@ -31,7 +31,7 @@
  * @author LOCKON CO.,LTD.
  * @version $Id$
  */
-class LC_Page_Admin_Products_ReviewEdit extends LC_Page_Admin {
+class LC_Page_Admin_Products_ReviewEdit extends LC_Page_Admin_Products_Review {
 
     // }}}
     // {{{ functions
@@ -47,6 +47,8 @@
         $this->tpl_subnavi = 'products/subnavi.tpl';
         $this->tpl_mainno = 'products';
         $this->tpl_subno = 'review';
+        // 両方選択可能
+        $this->tpl_status_change = true;
 
         $masterData = new SC_DB_MasterData_Ex();
         $this->arrRECOMMEND = $masterData->getMasterData("mtb_recommend");
@@ -72,57 +74,34 @@
     function action() {
         $objSess = new SC_Session();
         $this->objQuery =& SC_Query::getSingletonInstance();
-
         // 認証可否の判定
         SC_Utils_Ex::sfIsSuccess($objSess);
 
-        // 検索ワードの引継ぎ
-        foreach ($_POST as $key => $val){
-            if (ereg("^search_", $key)){
-                $this->arrSearchHidden[$key] = $val;
-            }
-        }
-
-        // 両方選択可能
-        $this->tpl_status_change = true;
-
+        // パラメータ情報の初期化
+        $objFormParam = new SC_FormParam();
+        $this->lfInitParam($objFormParam);
+        $objFormParam->setParam($_POST);
+        $objFormParam->convParam();
+        // 検索ワードの引き継ぎ
+        $this->arrSearchHidden = $objFormParam->getSearchArray();
+        $this->arrReview = $objFormParam->getHashArray();
+                
         switch ($this->getMode()) {
             // 登録
             case 'complete':
-                // 取得文字列の変換用カラム
-                $arrRegistColumn = array (
-                    array("column" => "status"),
-                    array("column" => "recommend_level"),
-                    array("column" => "title", "convert" => "KVa"),
-                    array("column" => "comment", "convert" => "KVa"),
-                    array("column" => "reviewer_name", "convert" => "KVa"),
-                    array("column" => "reviewer_url", "convert" => "KVa"),
-                    array("column" => "sex", "convert" => "n")
-                );
-
-                // フォーム値の変換
-                $arrReview = $this->lfConvertParam($_POST, $arrRegistColumn);
-                $this->arrErr = $this->lfCheckError($arrReview);
-
-                // エラー有り
-                if ($this->arrErr) {
-                    // 入力内容を引き継ぐ
-                    $this->arrReview = $arrReview;
-                } else {
+                $this->arrErr = $this->lfCheckError($objFormParam);
                 // エラー無し
+                if (!$this->arrErr) {
                     // レビュー情報の更新
-                    $this->lfRegistReviewData($arrReview, $arrRegistColumn);
-
+                    $this->lfRegistReviewData($objFormParam);
                     // レビュー情報のDB取得
-                    $this->arrReview = $this->lfGetReviewData($arrReview['review_id']);
-
+                    $this->arrReview = $this->lfGetReviewData($this->arrReview['review_id']);
                     $this->tpl_onload = "alert('登録が完了しました。');";
                 }
                 break;
-
             default:
                 // レビュー情報のDB取得
-                $this->arrReview = $this->lfGetReviewData($_POST['review_id']);
+                $this->arrReview = $this->lfGetReviewData($this->arrReview['review_id']);
                 break;
         }
     }
@@ -137,47 +116,39 @@
     }
 
     /**
-     * 入力エラーチェック
+     * パラメータ情報の初期化を行う.
      *
+     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
+     * @return void
      */
-    function lfCheckError($arrReview) {
-        $objErr = new SC_CheckError($arrReview);
-        $objErr->doFunc(array("おすすめレベル", "recommend_level"), array("SELECT_CHECK"));
-        $objErr->doFunc(array("タイトル", "title", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("コメント", "comment", LTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("投稿者名", "reviewer_name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("投稿者URL", "reviewer_url", URL_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("性別", "sex", STEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
-        return $objErr->arrErr;
-    }
+    function lfInitParam(&$objFormParam) {
+    	// 検索条件のパラメータを初期化
+        parent::lfInitParam($objFormParam);
+    	$objFormParam->addParam("レビューID", "review_id");
+    	$objFormParam->addParam("商品名", "name", "", "", array(), "", false);
+    	$objFormParam->addParam("投稿日", "create_date", "", "", array(), "", false);
+        
+    	// 登録情報
+        $objFormParam->addParam("レビュー表示", "status", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+        $objFormParam->addParam("投稿者名", "reviewer_name", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("投稿者URL", "reviewer_url", URL_LEN, "KVCa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
+		$objFormParam->addParam("性別", "sex", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+		$objFormParam->addParam("おすすめレベル", "recommend_level", INT_LEN, "n", array("SELECT_CHECK"));
+	    $objFormParam->addParam("タイトル", "title", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
+        $objFormParam->addParam("コメント", "comment", LTEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
+	}    
 
-    /**
-     * 取得文字列の変換
+	/**
+     * フォーム入力パラメーターエラーチェック
      *
+     * @param array $objFormParam フォームパラメータークラス
+     * @return array エラー配列
      */
-    function lfConvertParam($array, $arrRegistColumn) {
-        /*
-         *	文字列の変換
-         *	K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
-         *	C :  「全角ひら仮名」を「全角かた仮名」に変換
-         *	V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
-         *	n :  「全角」数字を「半角(ハンカク)」に変換
-         *  a :  全角英数字を半角英数字に変換する
-         */
-        // カラム名とコンバート情報
-        foreach ($arrRegistColumn as $data) {
-            $arrConvList[ $data["column"] ] = isset($data["convert"])
-                ? $data["convert"] : "";
+    function lfCheckError(&$objFormParam) {
+		$arrErr = $objFormParam->checkError();
+        if (!SC_Utils_Ex::isBlank($arrErr)) {
+            return $arrErr;
         }
-
-        // 文字変換
-        foreach ($arrConvList as $key => $val) {
-            // POSTされてきた値のみ変換する。
-            if(strlen(($array[$key])) > 0) {
-                $array[$key] = mb_convert_kana($array[$key] ,$val);
-            }
-        }
-        return $array;
     }
 
     /**
@@ -193,7 +164,6 @@
         if (empty($arrReview)) {
             SC_Utils_Ex::sfDispError("");
         }
-
         return $arrReview[0];
     }
 
@@ -201,14 +171,10 @@
      * レビュー情報の更新
      *
      */
-    function lfRegistReviewData($arrReview, $arrRegistColumn){
-        foreach ($arrRegistColumn as $data) {
-            $arrRegist[ $data["column"] ] = $arrReview[ $data["column"] ];
-        }
-        $arrRegist['update_date'] = 'now()';
-
-        // 更新実行
-        $this->objQuery->update("dtb_review", $arrRegist, "review_id = ?", array($arrReview['review_id']));
+    function lfRegistReviewData(&$objFormParam){
+    	$arrValues = $objFormParam->getDbArray();
+        $arrValues['update_date'] = 'now()';
+        $this->objQuery->update("dtb_review", $arrValues, "review_id = ?", array($arrValues['review_id']));
     }
 }
 ?>




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