source: branches/feature-module-update/html/admin/products/review.php @ 15078

Revision 15078, 7.4 KB checked in by nanasess, 17 years ago (diff)

r15064 から svn cp
とりあえず暫定コミット.

  • UTF-8 に変更
  • slib.php, glib.php のクラス化
  • LC_Page の抽象化(一部)
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7require_once("../require.php");
8require_once("./index_csv.php");
9
10session_start();
11
12class LC_Page {
13    var $arrSession;
14    function LC_Page() {
15        global $arrPageMax;
16        global $arrRECOMMEND;
17        global $arrSex;
18        $this->arrPageMax = $arrPageMax;
19        $this->arrRECOMMEND = $arrRECOMMEND;
20        $this->arrSex = $arrSex;
21        $this->tpl_mainpage = 'products/review.tpl';
22        $this->tpl_subnavi = 'products/subnavi.tpl';
23        $this->tpl_mainno = 'products';
24        $this->tpl_subno = 'review';
25        $this->tpl_pager = DATA_PATH . 'Smarty/templates/admin/pager.tpl';
26        $this->tpl_subtitle = 'レビュー管理';
27    }
28}
29
30$objPage = new LC_Page();
31$objView = new SC_AdminView();
32$objSess = new SC_Session();
33$objDate = new SC_Date();
34$objQuery = new SC_Query();
35
36// 登録・更新検索開始年
37$objDate->setStartYear(RELEASE_YEAR);
38$objDate->setEndYear(DATE("Y"));
39$objPage->arrStartYear = $objDate->getYear();
40$objPage->arrStartMonth = $objDate->getMonth();
41$objPage->arrStartDay = $objDate->getDay();
42// 登録・更新検索終了年
43$objDate->setStartYear(RELEASE_YEAR);
44$objDate->setEndYear(DATE("Y"));
45$objPage->arrEndYear = $objDate->getYear();
46$objPage->arrEndMonth = $objDate->getMonth();
47$objPage->arrEndDay = $objDate->getDay();
48
49// 認証可否の判定
50sfIsSuccess($objSess);
51
52//レビュー情報のカラムの取得
53$select="review_id, A.product_id, reviewer_name, sex, recommend_level, ";
54$select.="reviewer_url, title, comment, A.status, A.create_date, A.update_date, name";
55$from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id ";
56
57    // 検索ワードの引き継ぎ
58    foreach ($_POST as $key => $val) {
59        if (ereg("^search_", $key)) {
60            switch ($key){
61                case 'search_sex':
62                $objPage->arrHidden[$key] = sfMergeParamCheckBoxes($val);
63                if(!is_array($val)) {
64                    $objPage->arrForm[$key] = split("-", $val);
65                }
66                break;
67               
68                default:
69                    $objPage->arrHidden[$key] = $val;
70                    break;
71            }
72        }
73    }
74
75if ($_POST['mode'] == "delete"){
76    //レビューの削除
77    $objQuery->exec("UPDATE dtb_review SET del_flg=1 WHERE review_id=?", array($_POST['review_id']));
78}
79   
80if ($_POST['mode'] == 'search' || $_POST['mode'] == 'csv' || $_POST['mode'] == 'delete'){
81   
82    //削除されていない商品を検索
83    $where="A.del_flg = 0 AND B.del_flg = 0";
84    $objPage->arrForm = $_POST;
85    if (!is_array($_POST['search_sex'])){
86        $objPage->arrForm['search_sex'] = split("-", $_POST['search_sex']);
87    }
88    //エラーチェック
89    $objPage->arrErr = lfCheckError();
90
91    if (!$objPage->arrErr){
92        foreach ($_POST as $key => $val){
93
94            $val = sfManualEscape($val);
95           
96            if($val == "") {
97                continue;
98            }
99           
100            switch ($key){
101            case 'search_reviewer_name':
102                $val = ereg_replace(" ", "%", $val);
103                $val = ereg_replace(" ", "%", $val);
104                $where.= " AND reviewer_name ILIKE ? ";
105                $arrval[] = "%$val%";
106                break;
107               
108            case 'search_reviewer_url':
109                $val = ereg_replace(" ", "%", $val);
110                $val = ereg_replace(" ", "%", $val);
111                $where.= " AND reviewer_url ILIKE ? ";
112                $arrval[] = "%$val%";
113                break;
114               
115            case 'search_name':
116                $val = ereg_replace(" ", "%", $val);
117                $val = ereg_replace(" ", "%", $val);
118                $where.= " AND name ILIKE ? ";
119                $arrval[] = "%$val%";
120                break;
121               
122            case 'search_product_code':
123                $val = ereg_replace(" ", "%", $val);
124                $val = ereg_replace(" ", "%", $val);
125                $where.= " AND A.product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? )";
126                $arrval[] = "%$val%";
127                break;
128               
129            case 'search_sex':
130                $tmp_where = "";
131                //$val=配列の中身,$element=各キーの値(1,2)
132                if (is_array($val)){
133                    foreach($val as $element) {
134                        if($element != "") {
135                            if($tmp_where == "") {
136                                $tmp_where .= " AND (sex = ?";
137                            } else {
138                                $tmp_where .= " OR sex = ?";
139                            }
140                            $arrval[] = $element;
141                        }
142                    }
143                    if($tmp_where != "") {
144                        $tmp_where .= ")";
145                        $where .= " $tmp_where ";
146                    }
147                }
148               
149                break;
150               
151            case 'search_recommend_level':
152                $where.= " AND recommend_level LIKE ? ";
153                $arrval[] = $val;
154                break;
155               
156            case 'search_startyear':
157                if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){
158                    $date = sfGetTimestamp($_POST['search_startyear'], $_POST['search_startmonth'], $_POST['search_startday']);
159                    $where.= " AND A.create_date >= ? ";
160                    $arrval[] = $date;
161                }
162                break;
163
164            case 'search_endyear':
165                if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])){
166                    $date = sfGetTimestamp($_POST['search_endyear'], $_POST['search_endmonth'], $_POST['search_endday']);
167                   
168                    $end_date = date("Y/m/d",strtotime("1 day" ,strtotime($date)));
169                   
170                    $where.= " AND A.create_date <= cast('$end_date' as date) ";
171                }
172                break;
173            }
174       
175        }
176           
177    }
178   
179    $order = "A.create_date DESC";
180   
181    // ページ送りの処理
182    if(is_numeric($_POST['search_page_max'])) {
183        $page_max = $_POST['search_page_max'];
184    } else {
185        $page_max = SEARCH_PMAX;
186    }
187   
188    $linemax = $objQuery->count($from, $where, $arrval);
189    $objPage->tpl_linemax = $linemax;
190   
191    // ページ送りの取得
192    $objNavi = new SC_PageNavi($_POST['search_pageno'], $linemax, $page_max, "fnNaviSearchPage", NAVI_PMAX);
193    $objPage->arrPagenavi = $objNavi->arrPagenavi;
194    $startno = $objNavi->start_row;
195
196    $objPage->tpl_pageno = $_POST['search_pageno'];
197   
198    // 取得範囲の指定(開始行番号、行数のセット)
199    $objQuery->setlimitoffset($page_max, $startno);
200
201    // 表示順序
202    $objQuery->setorder($order);
203   
204    //検索結果の取得
205    $objPage->arrReview = $objQuery->select($select, $from, $where, $arrval);
206   
207    //CSVダウンロード
208    if ($_POST['mode'] == 'csv'){
209        // オプションの指定
210        $option = "ORDER BY review_id";
211        // CSV出力タイトル行の作成
212        $head = sfGetCSVList($arrREVIEW_CVSTITLE);
213        $data = lfGetReviewCSV($where, '', $arrval);
214        // CSVを送信する。
215        sfCSVDownload($head.$data);
216        exit;
217    }   
218}
219
220$objView->assignobj($objPage);
221$objView->display(MAIN_FRAME);
222
223//-------------------------------------------------------------------------------------
224
225// 入力エラーチェック
226function lfCheckError() {
227    $objErr = new SC_CheckError();
228    switch ($_POST['mode']){
229        case 'search':
230        $objErr->doFunc(array("投稿者", "search_startyear", "search_startmonth", "search_startday"), array("CHECK_DATE"));
231        $objErr->doFunc(array("開始日", "search_startyear", "search_startmonth", "search_startday"), array("CHECK_DATE"));
232        $objErr->doFunc(array("終了日", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_DATE"));
233        $objErr->doFunc(array("開始日", "終了日", "search_startyear", "search_startmonth", "search_startday", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_SET_TERM"));
234        break;
235       
236        case 'complete':
237        $objErr->doFunc(array("おすすめレベル", "recommend_level"), array("SELECT_CHECK"));
238        $objErr->doFunc(array("タイトル", "title", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
239        $objErr->doFunc(array("コメント", "comment", LTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
240        break;
241    }
242    return $objErr->arrErr;
243}
244
245?>
Note: See TracBrowser for help on using the repository browser.