[Svn-src-all:1305] [version-2_5-dev 20194] リファクタリング
Yammy
admin @ mail.ec-cube.net
2011年 2月 18日 (金) 15:15:56 JST
Subversion committed to /home/svn/open 20194
http://svn.ec-cube.net/open_trac/changeset/20194
┌────────────────────────────┐
│更新者 : Yammy │
│更新日時: 2011-02-18 15:15:56 +0900 (金, 18 2月 2011)│
└────────────────────────────┘
Log:
--------------------------------------------------------
リファクタリング
refs #970
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
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/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-18 05:55:14 UTC (rev 20193)
+++ branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Review.php 2011-02-18 06:15:56 UTC (rev 20194)
@@ -75,8 +75,11 @@
function action() {
$objSess = new SC_Session();
$objDate = new SC_Date();
- $objQuery = new SC_Query();
+ $objQuery =& SC_Query::getSingletonInstance();
+ // 認証可否の判定
+ SC_Utils_Ex::sfIsSuccess($objSess);
+
// 登録・更新検索開始年
$objDate->setStartYear(RELEASE_YEAR);
$objDate->setEndYear(DATE("Y"));
@@ -90,184 +93,42 @@
$this->arrEndMonth = $objDate->getMonth();
$this->arrEndDay = $objDate->getDay();
- // 認証可否の判定
- SC_Utils_Ex::sfIsSuccess($objSess);
+ // パラメータ管理クラス
+ $this->objFormParam = new SC_FormParam();
+ // パラメータ情報の初期化
+ $this->lfInitParam();
+ $this->objFormParam->setParam($_POST);
+ $arrForm = $this->objFormParam->getHashArray();
- //レビュー情報のカラムの取得
- $select="review_id, A.product_id, reviewer_name, sex, recommend_level, ";
- $select.="reviewer_url, title, comment, A.status, A.create_date, A.update_date, name";
- $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id ";
+ // hidden の設定
+ $this->arrHidden = $this->lfSetHidden($arrForm);
- // 検索ワードの引き継ぎ
- foreach ($_POST as $key => $val) {
- if (ereg("^search_", $key)) {
- switch ($key){
- case 'search_sex':
- $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val);
- if(!is_array($val)) {
- $this->arrForm[$key] = split("-", $val);
- }
- break;
-
- default:
- $this->arrHidden[$key] = $val;
- break;
- }
- }
- }
switch ($this->getMode()) {
case 'delete':
- //レビューの削除
- $objQuery->exec("UPDATE dtb_review SET del_flg=1 WHERE review_id=?", array($_POST['review_id']));
+ $this->lfDeleteReview($arrForm['review_id']);
case 'search':
case 'csv':
- //削除されていない商品を検索
- $where="A.del_flg = 0 AND B.del_flg = 0";
- $this->arrForm = $_POST;
- if (isset($_POST['search_sex']) && !is_array($_POST['search_sex'])){
- $this->arrForm['search_sex'] = split("-", $_POST['search_sex']);
- }
- //エラーチェック
+ // エラーチェック
$this->arrErr = $this->lfCheckError();
-
if (!$this->arrErr){
- foreach ($_POST as $key => $val){
-
- if($val == "") {
- continue;
- }
-
- switch ($key){
- case 'search_reviewer_name':
- $val = ereg_replace(" ", "%", $val);
- $val = ereg_replace(" ", "%", $val);
- $where.= " AND reviewer_name ILIKE ? ";
- $arrval[] = "%$val%";
- break;
-
- case 'search_reviewer_url':
- $val = ereg_replace(" ", "%", $val);
- $val = ereg_replace(" ", "%", $val);
- $where.= " AND reviewer_url ILIKE ? ";
- $arrval[] = "%$val%";
- break;
-
- case 'search_name':
- $val = ereg_replace(" ", "%", $val);
- $val = ereg_replace(" ", "%", $val);
- $where.= " AND name ILIKE ? ";
- $arrval[] = "%$val%";
- break;
-
- case 'search_product_code':
- $val = ereg_replace(" ", "%", $val);
- $val = ereg_replace(" ", "%", $val);
- $where.= " AND A.product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? )";
- $arrval[] = "%$val%";
- break;
-
- case 'search_sex':
- $tmp_where = "";
- //$val=配列の中身,$element=各キーの値(1,2)
- if (is_array($val)){
- foreach($val as $element) {
- if($element != "") {
- if($tmp_where == "") {
- $tmp_where .= " AND (sex = ?";
- } else {
- $tmp_where .= " OR sex = ?";
- }
- $arrval[] = $element;
- }
- }
- if($tmp_where != "") {
- $tmp_where .= ")";
- $where .= " $tmp_where ";
- }
- }
-
- break;
-
- case 'search_recommend_level':
- $where.= " AND recommend_level = ? ";
- $arrval[] = $val;
- break;
-
- case 'search_startyear':
- if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){
- $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_startyear'], $_POST['search_startmonth'], $_POST['search_startday']);
- $where.= " AND A.create_date >= ? ";
- $arrval[] = $date;
- }
- break;
-
- case 'search_endyear':
- if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){
- $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_endyear'], $_POST['search_endmonth'], $_POST['search_endday']);
-
- $end_date = date("Y/m/d",strtotime("1 day" ,strtotime($date)));
-
- $where.= " AND A.create_date <= cast('$end_date' as date) ";
- }
- break;
- }
-
- }
-
+ // 検索条件を取得
+ list($where, $arrval) = $this->lfGetWhere($arrForm);
}
- $order = "A.create_date DESC";
-
- // ページ送りの処理
- if(is_numeric($_POST['search_page_max'])) {
- $page_max = $_POST['search_page_max'];
- } else {
- $page_max = SEARCH_PMAX;
- }
-
- if (!isset($arrval)) $arrval = array();
-
- $linemax = $objQuery->count($from, $where, $arrval);
- $this->tpl_linemax = $linemax;
-
- $this->tpl_pageno =
- isset($_POST['search_pageno']) ? $_POST['search_pageno'] : "";
-
- // ページ送りの取得
- $objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, $page_max,
- "fnNaviSearchPage", NAVI_PMAX);
- $this->arrPagenavi = $objNavi->arrPagenavi;
- $startno = $objNavi->start_row;
-
-
-
- // 取得範囲の指定(開始行番号、行数のセット)
- $objQuery->setLimitOffset($page_max, $startno);
-
- // 表示順序
- $objQuery->setOrder($order);
-
- //検索結果の取得
- $this->arrReview = $objQuery->select($select, $from, $where, $arrval);
-
//CSVダウンロード
- if ($mode == 'csv'){
-
- $objCSV = new SC_Helper_CSV_Ex();
- // オプションの指定
- $option = "ORDER BY review_id";
- // CSV出力タイトル行の作成
- $head = SC_Utils_Ex::sfGetCSVList($objCSV->arrREVIEW_CVSTITLE);
- $data = $objCSV->lfGetReviewCSV($where, '', $arrval);
- // CSVを送信する。
- list($fime_name, $data) = SC_Utils_Ex::sfGetCSVData($head.$data);
- $this->sendResponseCSV($fime_name, $data);
+ if ($this->getMode() == 'csv') {
+ $this->lfCsv($where, $arrval);
exit;
}
+
+ // 検索条件を取得
+ $this->arrReview = $this->lfGetRevire($arrForm, $where, $arrval);
break;
default:
break;
}
+
+ $this->arrForm = $arrForm;
}
/**
@@ -281,7 +142,10 @@
// 入力エラーチェック
function lfCheckError() {
- $objErr = new SC_CheckError();
+ // 入力データを渡す。
+ $arrRet = $this->objFormParam->getHashArray();
+ $objErr = new SC_CheckError($arrRet);
+ $objErr->arrErr = $this->objFormParam->checkError();
switch ($this->getMode()){
case 'search':
@@ -299,5 +163,195 @@
}
return $objErr->arrErr;
}
+
+ //レビューの削除
+ function lfDeleteReview($review_id) {
+ $objQuery =& SC_Query::getSingletonInstance();
+ $sqlval['del_flg'] = 1;
+ $objQuery->update("dtb_review", $sqlval, "review_id = ?", array($review_id));
+ }
+
+ // 検索ワードの引き継ぎ
+ function lfSetHidden($arrForm) {
+ $arrHidden = array();
+ foreach ($arrForm AS $key=>$val) {
+ if (preg_match("/^search_/", $key)) {
+ switch ($key){
+ case 'search_sex':
+ $arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val);
+ if(!is_array($val)) {
+ $arrForm[$key] = split("-", $val);
+ }
+ break;
+
+ default:
+ $arrHidden[$key] = $val;
+ break;
+ }
+ }
+ }
+ return $arrHidden;
+ }
+
+ /* パラメータ情報の初期化 */
+ 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"));
+ }
+
+ // CSV ファイル出力実行
+ function lfCsv($where, $arrval) {
+ $objCSV = new SC_Helper_CSV_Ex();
+ // CSV出力タイトル行の作成
+ $head = SC_Utils_Ex::sfGetCSVList($objCSV->arrREVIEW_CVSTITLE);
+ $data = $objCSV->lfGetReviewCSV($where, '', $arrval);
+ // CSVを送信する。
+ list($fime_name, $data) = SC_Utils_Ex::sfGetCSVData($head.$data);
+ $this->sendResponseCSV($fime_name, $data);
+ }
+
+
+ // 検索条件の取得
+ function lfGetWhere($arrForm) {
+ //削除されていない商品を検索
+ $where = "A.del_flg = 0 AND B.del_flg = 0";
+
+ foreach ($arrForm AS $key=>$val){
+ if (empty($val)) continue;
+
+ switch ($key){
+ case 'search_reviewer_name':
+ $val = mb_convert_kana($val, 's');
+ $val = preg_replace("/ /", "%", $val);
+ $where.= " AND reviewer_name ILIKE ? ";
+ $arrval[] = "%$val%";
+ break;
+
+ case 'search_reviewer_url':
+ $val = mb_convert_kana($val, 's');
+ $val = preg_replace("/ /", "%", $val);
+ $where.= " AND reviewer_url ILIKE ? ";
+ $arrval[] = "%$val%";
+ break;
+
+ case 'search_name':
+ $val = mb_convert_kana($val, 's');
+ $val = preg_replace("/ /", "%", $val);
+ $where.= " AND name ILIKE ? ";
+ $arrval[] = "%$val%";
+ break;
+
+ case 'search_product_code':
+ $val = mb_convert_kana($val, 's');
+ $val = preg_replace("/ /", "%", $val);
+ $where.= " AND A.product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? )";
+ $arrval[] = "%$val%";
+ break;
+
+ case 'search_sex':
+ $tmp_where = "";
+ //$val=配列の中身,$element=各キーの値(1,2)
+ if (is_array($val)){
+ foreach($val as $element) {
+ if($element != "") {
+ if($tmp_where == "") {
+ $tmp_where .= " AND (sex = ?";
+ } else {
+ $tmp_where .= " OR sex = ?";
+ }
+ $arrval[] = $element;
+ }
+ }
+ if($tmp_where != "") {
+ $tmp_where .= ")";
+ $where .= " $tmp_where ";
+ }
+ }
+
+ break;
+
+ case 'search_recommend_level':
+ $where.= " AND recommend_level = ? ";
+ $arrval[] = $val;
+ break;
+
+ case 'search_startyear':
+ if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){
+ $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_startyear'], $_POST['search_startmonth'], $_POST['search_startday']);
+ $where.= " AND A.create_date >= ? ";
+ $arrval[] = $date;
+ }
+ break;
+
+ case 'search_endyear':
+ if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){
+ $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_endyear'], $_POST['search_endmonth'], $_POST['search_endday']);
+ $end_date = date("Y/m/d",strtotime("1 day" ,strtotime($date)));
+ $where.= " AND A.create_date <= cast('$end_date' as date) ";
+ }
+ break;
+ }
+
+ }
+ return array($where, $arrval);
+ }
+
+ /*
+ * レビューの検索結果取得
+ */
+ function lfGetRevire($arrForm, $where, $arrval) {
+ $objQuery =& SC_Query::getSingletonInstance();
+
+ // ページ送りの処理
+ if(is_numeric($arrForm['search_page_max'])) {
+ $page_max = $arrForm['search_page_max'];
+ } else {
+ $page_max = SEARCH_PMAX;
+ }
+
+ if (!isset($arrval)) $arrval = array();
+
+ $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id ";
+ $linemax = $objQuery->count($from, $where, $arrval);
+ $this->tpl_linemax = $linemax;
+
+ $this->tpl_pageno = isset($arrForm['search_pageno']) ? $arrForm['search_pageno'] : "";
+
+ // ページ送りの取得
+ $objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, $page_max,
+ "fnNaviSearchPage", NAVI_PMAX);
+ $this->arrPagenavi = $objNavi->arrPagenavi;
+ $startno = $objNavi->start_row;
+
+ // 取得範囲の指定(開始行番号、行数のセット)
+ $objQuery->setLimitOffset($page_max, $startno);
+
+ // 表示順序
+ $order = "A.create_date DESC";
+ $objQuery->setOrder($order);
+ //検索結果の取得
+ //レビュー情報のカラムの取得
+ $col = "review_id, A.product_id, reviewer_name, sex, recommend_level, ";
+ $col .= "reviewer_url, title, comment, A.status, A.create_date, A.update_date, name";
+ $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id ";
+ $arrReview = $objQuery->select($col, $from, $where, $arrval);
+
+ return $arrReview;
+ }
+
+
}
?>
変更: 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-18 05:55:14 UTC (rev 20193)
+++ branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ReviewEdit.php 2011-02-18 06:15:56 UTC (rev 20194)
@@ -71,7 +71,8 @@
*/
function action() {
$objSess = new SC_Session();
- $this->objQuery = new SC_Query();
+ $this->objQuery =& SC_Query::getSingletonInstance();
+
// 認証可否の判定
SC_Utils_Ex::sfIsSuccess($objSess);
@@ -107,9 +108,8 @@
if ($this->arrErr) {
// 入力内容を引き継ぐ
$this->arrReview = $arrReview;
- }
+ } else {
// エラー無し
- else {
// レビュー情報の更新
$this->lfRegistReviewData($arrReview, $arrRegistColumn);
Svn-src-all メーリングリストの案内