source: branches/feature-module-update/data/class/pages/products/LC_Page_Products_Review.php @ 15901

Revision 15901, 8.3 KB checked in by nanasess, 15 years ago (diff)

未定義変数の修正

  • Property svn:keywords set to Id Revision Date
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7
8// {{{ requires
9require_once(CLASS_PATH . "pages/LC_Page.php");
10
11/**
12 * お客様の声投稿のページクラス.
13 *
14 * @package Page
15 * @author LOCKON CO.,LTD.
16 * @version $Id:LC_Page_Products_Review.php 15532 2007-08-31 14:39:46Z nanasess $
17 */
18class LC_Page_Products_Review extends LC_Page {
19
20    // {{{ properties
21
22    /** おすすめレベル */
23    var $arrRECOMMEND;
24
25    /** 性別 */
26    var $arrSex;
27
28    /** 入力禁止URL */
29    var $arrReviewDenyURL;
30
31    // }}}
32    // {{{ functions
33
34    /**
35     * Page を初期化する.
36     *
37     * @return void
38     */
39    function init() {
40        parent::init();
41        $this->tpl_mainpage = 'products/review.tpl';
42
43        $masterData = new SC_DB_MasterData_Ex();
44        $this->arrRECOMMEND = $masterData->getMasterData("mtb_recommend");
45        $this->arrSex = $masterData->getMasterData("mtb_sex");
46        $this->arrReviewDenyURL = $masterData->getMasterData("mtb_review_deny_url");
47    }
48
49    /**
50     * Page のプロセス.
51     *
52     * @return void
53     */
54    function process() {
55        $objView = new SC_SiteView();
56        $objQuery = new SC_Query();
57
58        if ($_SERVER["REQUEST_METHOD"] == "POST") {
59            if (!$this->isValidToken()) {
60                SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, "", true);
61            }
62        }
63
64        //---- 登録用カラム配列
65        $arrRegistColumn = array(
66                                     array(  "column" => "review_id", "convert" => "aKV" ),
67                                     array(  "column" => "product_id", "convert" => "aKV" ),
68                                     array(  "column" => "reviewer_name", "convert" => "aKV" ),
69                                     array(  "column" => "reviewer_url", "convert" => "a"),
70                                     array(  "column" => "sex", "convert" => "n" ),
71                                     array(  "column" => "email", "convert" => "a" ),
72                                     array(  "column" => "recommend_level", "convert" => "n" ),
73                                     array(  "column" => "title", "convert" => "aKV" ),
74                                     array(  "column" => "comment", "convert" => "aKV" ),
75
76                                );
77
78        if (!isset($_POST['mode'])) $_POST['mode'] = "";
79        switch ($_POST['mode']){
80        case 'confirm':
81            $arrForm = $this->lfConvertParam($_POST, $arrRegistColumn);
82            $this->arrErr = $this->lfErrorCheck($arrForm);
83            //重複メッセージの判定
84            $flag = $objQuery->count("dtb_review","product_id = ? AND title = ? ", array($arrForm['product_id'], $arrForm['title']));
85
86            if ($flag > 0){
87                $this->arrErr['title'] .= "重複したタイトルは登録できません。";
88            }
89
90            //エラーチェック
91            if($this->arrErr == ""){
92                //重複タイトルでない
93                if($flag == 0){
94                    //商品名の取得
95                    $arrForm['name'] = $objQuery->get("dtb_products", "name", "product_id = ? ", array($arrForm['product_id']));
96                    $this->arrForm = $arrForm;
97                    $this->tpl_mainpage = 'products/review_confirm.tpl';
98                }
99            } else {
100                //商品名の取得
101                $arrForm['name'] = $objQuery->get("dtb_products", "name", "product_id = ? ", array($arrForm['product_id']));
102                $this->arrForm = $arrForm;
103            }
104            break;
105
106        case 'return':
107            foreach($_POST as $key => $val){
108                $this->arrForm[ $key ] = $val;
109            }
110
111            //商品名の取得
112            $this->arrForm['name'] = $objQuery->get("dtb_products", "name", "product_id = ? ", array($this->arrForm['product_id']));
113            if(empty($this->arrForm['name'])) {
114                SC_Utils_Ex::sfDispSiteError(PAGE_ERROR);
115            }
116            break;
117
118        case 'complete':
119            $arrForm = $this->lfConvertParam($_POST, $arrRegistColumn);
120            $arrErr = $this->lfErrorCheck($arrForm);
121            //重複メッセージの判定
122            $flag = $objQuery->count("dtb_review","product_id = ? AND title = ? ", array($arrForm['product_id'], $arrForm['title']));
123            //エラーチェック
124            if ($arrErr == ""){
125                //重複タイトルでない
126                if($flag == 0) {
127                    //登録実行
128                    $this->lfRegistRecommendData($arrForm, $arrRegistColumn);
129                    //レビュー書き込み完了ページへ
130                    $this->sendRedirect($this->getLocation("./review_complete.php", array(), true));
131                    exit;
132                }
133            } else {
134                if($flag > 0) {
135                    SC_Utils_Ex::sfDispSiteError(PAGE_ERROR);
136                }
137            }
138            break;
139
140        default:
141            if(SC_Utils_Ex::sfIsInt($_GET['product_id'])) {
142                //商品情報の取得
143                $arrForm = $objQuery->select("product_id, name", "dtb_products", "del_flg = 0 AND status = 1 AND product_id=?", array($_GET['product_id']));
144                if(empty($arrForm)) {
145                    SC_Utils_Ex::sfDispSiteError(PAGE_ERROR);
146                }
147                $this->arrForm = $arrForm[0];
148            }
149            break;
150
151        }
152
153        $this->transactionid = $this->getToken();
154        $objView->assignobj($this);
155        $objView->display($this->tpl_mainpage);
156    }
157
158    /**
159     * デストラクタ.
160     *
161     * @return void
162     */
163    function destroy() {
164        parent::destroy();
165    }
166
167    //エラーチェック
168
169    function lfErrorCheck() {
170        $objErr = new SC_CheckError();
171        $objErr->doFunc(array("商品ID", "product_id", INT_LEN), array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
172        $objErr->doFunc(array("投稿者名", "reviewer_name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
173        $objErr->doFunc(array("URL", "reviewer_url", MTEXT_LEN), array("MAX_LENGTH_CHECK", "URL_CHECK"));
174        $objErr->doFunc(array("おすすめレベル", "recommend_level"), array("SELECT_CHECK"));
175        $objErr->doFunc(array("タイトル", "title", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
176        $objErr->doFunc(array("コメント", "comment", LTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
177
178        if (REVIEW_ALLOW_URL == false) {
179            // コメント欄へのURLの入力を禁止
180            $objErr->doFunc(array("URL", "comment", $this->arrReviewDenyURL), array("PROHIBITED_STR_CHECK"));
181        }
182
183        return $objErr->arrErr;
184    }
185
186    //---- 取得文字列の変換
187    function lfConvertParam($array, $arrRegistColumn) {
188        /*
189         *  文字列の変換
190         *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
191         *  C :  「全角ひら仮名」を「全角かた仮名」に変換
192         *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
193         *  n :  「全角」数字を「半角(ハンカク)」に変換
194         *  a :  全角英数字を半角英数字に変換する
195         */
196        // カラム名とコンバート情報
197        foreach ($arrRegistColumn as $data) {
198            $arrConvList[ $data["column"] ] = $data["convert"];
199        }
200        // 文字変換
201        foreach ($arrConvList as $key => $val) {
202            // POSTされてきた値のみ変換する。
203            if(!empty($array[$key])) {
204                $array[$key] = mb_convert_kana($array[$key] ,$val);
205            }
206        }
207        return $array;
208    }
209
210    //登録実行
211    function lfRegistRecommendData ($array, $arrRegistColumn) {
212        // 仮登録
213        foreach ($arrRegistColumn as $data) {
214            if (strlen($array[ $data["column"] ]) > 0 ) {
215                $arrRegist[ $data["column"] ] = $array[ $data["column"] ];
216            }
217        }
218        $arrRegist['create_date'] = 'now()';
219        $arrRegist['update_date'] = 'now()';
220        $arrRegist['creator_id'] = '0';
221        //-- 登録実行
222        $objQuery = new SC_Query();
223        $objQuery->begin();
224        $objQuery->insert("dtb_review", $arrRegist);
225        $objQuery->commit();
226    }
227}
228?>
Note: See TracBrowser for help on using the repository browser.