[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 メーリングリストの案内