Changeset 20194
- Timestamp:
- 2011/02/18 15:15:56 (13 years ago)
- Location:
- branches/version-2_5-dev/data/class/pages/admin/products
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Review.php
r20128 r20194 76 76 $objSess = new SC_Session(); 77 77 $objDate = new SC_Date(); 78 $objQuery = new SC_Query(); 78 $objQuery =& SC_Query::getSingletonInstance(); 79 80 // 認証可否の判定 81 SC_Utils_Ex::sfIsSuccess($objSess); 79 82 80 83 // 登録・更新検索開始年 … … 91 94 $this->arrEndDay = $objDate->getDay(); 92 95 93 // 認証可否の判定 94 SC_Utils_Ex::sfIsSuccess($objSess); 95 96 //レビュー情報のカラムの取得 97 $select="review_id, A.product_id, reviewer_name, sex, recommend_level, "; 98 $select.="reviewer_url, title, comment, A.status, A.create_date, A.update_date, name"; 99 $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id "; 100 101 // 検索ワードの引き継ぎ 102 foreach ($_POST as $key => $val) { 103 if (ereg("^search_", $key)) { 104 switch ($key){ 105 case 'search_sex': 106 $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val); 107 if(!is_array($val)) { 108 $this->arrForm[$key] = split("-", $val); 109 } 110 break; 111 112 default: 113 $this->arrHidden[$key] = $val; 114 break; 115 } 116 } 117 } 96 // パラメータ管理クラス 97 $this->objFormParam = new SC_FormParam(); 98 // パラメータ情報の初期化 99 $this->lfInitParam(); 100 $this->objFormParam->setParam($_POST); 101 $arrForm = $this->objFormParam->getHashArray(); 102 103 // hidden の設定 104 $this->arrHidden = $this->lfSetHidden($arrForm); 105 118 106 switch ($this->getMode()) { 119 107 case 'delete': 120 //レビューの削除 121 $objQuery->exec("UPDATE dtb_review SET del_flg=1 WHERE review_id=?", array($_POST['review_id'])); 108 $this->lfDeleteReview($arrForm['review_id']); 122 109 case 'search': 123 110 case 'csv': 124 // 削除されていない商品を検索125 $ where="A.del_flg = 0 AND B.del_flg = 0";126 $this->arrForm = $_POST;127 if (isset($_POST['search_sex']) && !is_array($_POST['search_sex'])){128 $this->arrForm['search_sex'] = split("-", $_POST['search_sex']);111 // エラーチェック 112 $this->arrErr = $this->lfCheckError(); 113 if (!$this->arrErr){ 114 // 検索条件を取得 115 list($where, $arrval) = $this->lfGetWhere($arrForm); 129 116 } 130 //エラーチェック131 $this->arrErr = $this->lfCheckError();132 133 if (!$this->arrErr){134 foreach ($_POST as $key => $val){135 136 if($val == "") {137 continue;138 }139 140 switch ($key){141 case 'search_reviewer_name':142 $val = ereg_replace(" ", "%", $val);143 $val = ereg_replace(" ", "%", $val);144 $where.= " AND reviewer_name ILIKE ? ";145 $arrval[] = "%$val%";146 break;147 148 case 'search_reviewer_url':149 $val = ereg_replace(" ", "%", $val);150 $val = ereg_replace(" ", "%", $val);151 $where.= " AND reviewer_url ILIKE ? ";152 $arrval[] = "%$val%";153 break;154 155 case 'search_name':156 $val = ereg_replace(" ", "%", $val);157 $val = ereg_replace(" ", "%", $val);158 $where.= " AND name ILIKE ? ";159 $arrval[] = "%$val%";160 break;161 162 case 'search_product_code':163 $val = ereg_replace(" ", "%", $val);164 $val = ereg_replace(" ", "%", $val);165 $where.= " AND A.product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? )";166 $arrval[] = "%$val%";167 break;168 169 case 'search_sex':170 $tmp_where = "";171 //$val=配列の中身,$element=各キーの値(1,2)172 if (is_array($val)){173 foreach($val as $element) {174 if($element != "") {175 if($tmp_where == "") {176 $tmp_where .= " AND (sex = ?";177 } else {178 $tmp_where .= " OR sex = ?";179 }180 $arrval[] = $element;181 }182 }183 if($tmp_where != "") {184 $tmp_where .= ")";185 $where .= " $tmp_where ";186 }187 }188 189 break;190 191 case 'search_recommend_level':192 $where.= " AND recommend_level = ? ";193 $arrval[] = $val;194 break;195 196 case 'search_startyear':197 if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){198 $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_startyear'], $_POST['search_startmonth'], $_POST['search_startday']);199 $where.= " AND A.create_date >= ? ";200 $arrval[] = $date;201 }202 break;203 204 case 'search_endyear':205 if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){206 $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_endyear'], $_POST['search_endmonth'], $_POST['search_endday']);207 208 $end_date = date("Y/m/d",strtotime("1 day" ,strtotime($date)));209 210 $where.= " AND A.create_date <= cast('$end_date' as date) ";211 }212 break;213 }214 215 }216 217 }218 219 $order = "A.create_date DESC";220 221 // ページ送りの処理222 if(is_numeric($_POST['search_page_max'])) {223 $page_max = $_POST['search_page_max'];224 } else {225 $page_max = SEARCH_PMAX;226 }227 228 if (!isset($arrval)) $arrval = array();229 230 $linemax = $objQuery->count($from, $where, $arrval);231 $this->tpl_linemax = $linemax;232 233 $this->tpl_pageno =234 isset($_POST['search_pageno']) ? $_POST['search_pageno'] : "";235 236 // ページ送りの取得237 $objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, $page_max,238 "fnNaviSearchPage", NAVI_PMAX);239 $this->arrPagenavi = $objNavi->arrPagenavi;240 $startno = $objNavi->start_row;241 242 243 244 // 取得範囲の指定(開始行番号、行数のセット)245 $objQuery->setLimitOffset($page_max, $startno);246 247 // 表示順序248 $objQuery->setOrder($order);249 250 //検索結果の取得251 $this->arrReview = $objQuery->select($select, $from, $where, $arrval);252 117 253 118 //CSVダウンロード 254 if ($mode == 'csv'){ 255 256 $objCSV = new SC_Helper_CSV_Ex(); 257 // オプションの指定 258 $option = "ORDER BY review_id"; 259 // CSV出力タイトル行の作成 260 $head = SC_Utils_Ex::sfGetCSVList($objCSV->arrREVIEW_CVSTITLE); 261 $data = $objCSV->lfGetReviewCSV($where, '', $arrval); 262 // CSVを送信する。 263 list($fime_name, $data) = SC_Utils_Ex::sfGetCSVData($head.$data); 264 $this->sendResponseCSV($fime_name, $data); 119 if ($this->getMode() == 'csv') { 120 $this->lfCsv($where, $arrval); 265 121 exit; 266 122 } 123 124 // 検索条件を取得 125 $this->arrReview = $this->lfGetRevire($arrForm, $where, $arrval); 267 126 break; 268 127 default: 269 128 break; 270 129 } 130 131 $this->arrForm = $arrForm; 271 132 } 272 133 … … 282 143 // 入力エラーチェック 283 144 function lfCheckError() { 284 $objErr = new SC_CheckError(); 145 // 入力データを渡す。 146 $arrRet = $this->objFormParam->getHashArray(); 147 $objErr = new SC_CheckError($arrRet); 148 $objErr->arrErr = $this->objFormParam->checkError(); 285 149 286 150 switch ($this->getMode()){ … … 300 164 return $objErr->arrErr; 301 165 } 166 167 //レビューの削除 168 function lfDeleteReview($review_id) { 169 $objQuery =& SC_Query::getSingletonInstance(); 170 $sqlval['del_flg'] = 1; 171 $objQuery->update("dtb_review", $sqlval, "review_id = ?", array($review_id)); 172 } 173 174 // 検索ワードの引き継ぎ 175 function lfSetHidden($arrForm) { 176 $arrHidden = array(); 177 foreach ($arrForm AS $key=>$val) { 178 if (preg_match("/^search_/", $key)) { 179 switch ($key){ 180 case 'search_sex': 181 $arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val); 182 if(!is_array($val)) { 183 $arrForm[$key] = split("-", $val); 184 } 185 break; 186 187 default: 188 $arrHidden[$key] = $val; 189 break; 190 } 191 } 192 } 193 return $arrHidden; 194 } 195 196 /* パラメータ情報の初期化 */ 197 function lfInitParam() { 198 $this->objFormParam->addParam("投稿者名", "search_reviewer_name", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 199 $this->objFormParam->addParam("投稿者URL", "search_reviewer_url", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 200 $this->objFormParam->addParam("商品名", "search_name", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 201 $this->objFormParam->addParam("商品コード", "search_product_code", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 202 $this->objFormParam->addParam("性別", "search_sex", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 203 $this->objFormParam->addParam("おすすめレベル", "search_recommend_level", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 204 $this->objFormParam->addParam("投稿年", "search_startyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 205 $this->objFormParam->addParam("投稿月", "search_startmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 206 $this->objFormParam->addParam("投稿日", "search_startday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 207 $this->objFormParam->addParam("投稿年", "search_endyear", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 208 $this->objFormParam->addParam("投稿月", "search_endmonth", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 209 $this->objFormParam->addParam("投稿日", "search_endday", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 210 $this->objFormParam->addParam("最大表示件数", "search_page_max", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 211 $this->objFormParam->addParam("ページ番号件数", "search_pageno", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 212 $this->objFormParam->addParam("レビューID", "review_id", INT_LEN, "n", array("MAX_LENGTH_CHECK")); 213 } 214 215 // CSV ファイル出力実行 216 function lfCsv($where, $arrval) { 217 $objCSV = new SC_Helper_CSV_Ex(); 218 // CSV出力タイトル行の作成 219 $head = SC_Utils_Ex::sfGetCSVList($objCSV->arrREVIEW_CVSTITLE); 220 $data = $objCSV->lfGetReviewCSV($where, '', $arrval); 221 // CSVを送信する。 222 list($fime_name, $data) = SC_Utils_Ex::sfGetCSVData($head.$data); 223 $this->sendResponseCSV($fime_name, $data); 224 } 225 226 227 // 検索条件の取得 228 function lfGetWhere($arrForm) { 229 //削除されていない商品を検索 230 $where = "A.del_flg = 0 AND B.del_flg = 0"; 231 232 foreach ($arrForm AS $key=>$val){ 233 if (empty($val)) continue; 234 235 switch ($key){ 236 case 'search_reviewer_name': 237 $val = mb_convert_kana($val, 's'); 238 $val = preg_replace("/ /", "%", $val); 239 $where.= " AND reviewer_name ILIKE ? "; 240 $arrval[] = "%$val%"; 241 break; 242 243 case 'search_reviewer_url': 244 $val = mb_convert_kana($val, 's'); 245 $val = preg_replace("/ /", "%", $val); 246 $where.= " AND reviewer_url ILIKE ? "; 247 $arrval[] = "%$val%"; 248 break; 249 250 case 'search_name': 251 $val = mb_convert_kana($val, 's'); 252 $val = preg_replace("/ /", "%", $val); 253 $where.= " AND name ILIKE ? "; 254 $arrval[] = "%$val%"; 255 break; 256 257 case 'search_product_code': 258 $val = mb_convert_kana($val, 's'); 259 $val = preg_replace("/ /", "%", $val); 260 $where.= " AND A.product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? )"; 261 $arrval[] = "%$val%"; 262 break; 263 264 case 'search_sex': 265 $tmp_where = ""; 266 //$val=配列の中身,$element=各キーの値(1,2) 267 if (is_array($val)){ 268 foreach($val as $element) { 269 if($element != "") { 270 if($tmp_where == "") { 271 $tmp_where .= " AND (sex = ?"; 272 } else { 273 $tmp_where .= " OR sex = ?"; 274 } 275 $arrval[] = $element; 276 } 277 } 278 if($tmp_where != "") { 279 $tmp_where .= ")"; 280 $where .= " $tmp_where "; 281 } 282 } 283 284 break; 285 286 case 'search_recommend_level': 287 $where.= " AND recommend_level = ? "; 288 $arrval[] = $val; 289 break; 290 291 case 'search_startyear': 292 if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){ 293 $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_startyear'], $_POST['search_startmonth'], $_POST['search_startday']); 294 $where.= " AND A.create_date >= ? "; 295 $arrval[] = $date; 296 } 297 break; 298 299 case 'search_endyear': 300 if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){ 301 $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_endyear'], $_POST['search_endmonth'], $_POST['search_endday']); 302 $end_date = date("Y/m/d",strtotime("1 day" ,strtotime($date))); 303 $where.= " AND A.create_date <= cast('$end_date' as date) "; 304 } 305 break; 306 } 307 308 } 309 return array($where, $arrval); 310 } 311 312 /* 313 * レビューの検索結果取得 314 */ 315 function lfGetRevire($arrForm, $where, $arrval) { 316 $objQuery =& SC_Query::getSingletonInstance(); 317 318 // ページ送りの処理 319 if(is_numeric($arrForm['search_page_max'])) { 320 $page_max = $arrForm['search_page_max']; 321 } else { 322 $page_max = SEARCH_PMAX; 323 } 324 325 if (!isset($arrval)) $arrval = array(); 326 327 $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id "; 328 $linemax = $objQuery->count($from, $where, $arrval); 329 $this->tpl_linemax = $linemax; 330 331 $this->tpl_pageno = isset($arrForm['search_pageno']) ? $arrForm['search_pageno'] : ""; 332 333 // ページ送りの取得 334 $objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, $page_max, 335 "fnNaviSearchPage", NAVI_PMAX); 336 $this->arrPagenavi = $objNavi->arrPagenavi; 337 $startno = $objNavi->start_row; 338 339 // 取得範囲の指定(開始行番号、行数のセット) 340 $objQuery->setLimitOffset($page_max, $startno); 341 342 // 表示順序 343 $order = "A.create_date DESC"; 344 $objQuery->setOrder($order); 345 //検索結果の取得 346 //レビュー情報のカラムの取得 347 $col = "review_id, A.product_id, reviewer_name, sex, recommend_level, "; 348 $col .= "reviewer_url, title, comment, A.status, A.create_date, A.update_date, name"; 349 $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id "; 350 $arrReview = $objQuery->select($col, $from, $where, $arrval); 351 352 return $arrReview; 353 } 354 355 302 356 } 303 357 ?> -
branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_ReviewEdit.php
r20116 r20194 72 72 function action() { 73 73 $objSess = new SC_Session(); 74 $this->objQuery = new SC_Query(); 74 $this->objQuery =& SC_Query::getSingletonInstance(); 75 75 76 // 認証可否の判定 76 77 SC_Utils_Ex::sfIsSuccess($objSess); … … 108 109 // 入力内容を引き継ぐ 109 110 $this->arrReview = $arrReview; 110 } 111 } else { 111 112 // エラー無し 112 else {113 113 // レビュー情報の更新 114 114 $this->lfRegistReviewData($arrReview, $arrRegistColumn);
Note: See TracChangeset
for help on using the changeset viewer.