source: branches/feature-module-update/data/class/pages/inquiry/LC_Page_Inquiry.php @ 16576

Revision 16576, 11.3 KB checked in by nanasess, 16 years ago (diff)

コメント修正

  • Property svn:keywords set to Id
  • 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_Inquiry.php 15532 2007-08-31 14:39:46Z nanasess $
17 */
18class LC_Page_Inquiry extends LC_Page {
19
20    // }}}
21    // {{{ functions
22
23    /**
24     * Page を初期化する.
25     *
26     * @return void
27     */
28    function init() {
29        parent::init();
30        $this->tpl_mainpage = 'inquiry/index.tpl';
31        $this->tpl_mainno = 'contents';
32    }
33
34    /**
35     * Page のプロセス.
36     *
37     * @return void
38     */
39    function process() {
40        $conn = new SC_DBConn();
41        $objPage = new LC_Page();
42        $objView = new SC_SiteView();
43        $objSess = new SC_Session();
44
45
46        // 都道府県プルダウン用配列
47        $masterData = new SC_DB_MasterData_Ex();
48        $this->arrPref = $masterData->getMasterData("mtb_pref",
49                                  array("pref_id", "pref_name", "rank"));
50
51        // CSV保存項目
52        //---- 登録用カラム配列 オプション以外
53        $arrRegistColumn = array(
54                                     array(  "column" => "name01", "convert" => "aKV" ),
55                                     array(  "column" => "name02", "convert" => "aKV" ),
56                                     array(  "column" => "kana01", "convert" => "CKV" ),
57                                     array(  "column" => "kana02", "convert" => "CKV" ),
58                                     array(  "column" => "zip01", "convert" => "n" ),
59                                     array(  "column" => "zip02", "convert" => "n" ),
60                                     array(  "column" => "pref", "convert" => "n" ),
61                                     array(  "column" => "addr01", "convert" => "aKV" ),
62                                     array(  "column" => "addr02", "convert" => "aKV" ),
63                                     array(  "column" => "email", "convert" => "a" ),
64                                     array(  "column" => "email02", "convert" => "a" ),
65                                     array(  "column" => "tel01", "convert" => "n" ),
66                                     array(  "column" => "tel02", "convert" => "n" ),
67                                     array(  "column" => "tel03", "convert" => "n" ),
68                            );
69
70
71        if (!isset($_POST['mode'])) $_POST['mode'] = "";
72
73        if ( ( ! $_POST['mode'] == 'confirm' ) && ( ! is_numeric($_REQUEST['question_id']) ) ){
74            echo "不正アクセス";
75            exit;
76        }
77
78        // テンプレート登録項目取得
79        $sql = "SELECT question_id, question FROM dtb_question WHERE question_id = ?";
80        $result = $conn->getAll( $sql, array($_REQUEST['question_id']) );
81        $this->QUESTION = $this->lfGetArrInput( unserialize( $result[0]['question'] ) );
82
83        $this->question_id = $_REQUEST['question_id'];
84
85        $this->arrHidden = SC_Utils_Ex::sfMakeHiddenArray($_POST);
86        unset($this->arrHidden['mode']);
87
88        if (isset($this->QUESTION["delete"])
89            && (int)$this->QUESTION["delete"] !== 0 ){
90
91            $objPage->tpl_mainpage = "inquiry/closed.tpl";
92
93        } elseif( $_POST['mode'] == "confirm" ) {
94
95            //-- 入力エラーチェック
96            $this->arrForm = $_POST;
97            $this->arrForm = $this->lfConvertParam($this->arrForm, $arrRegistColumn);
98            $this->arrErr = $this->lfErrorCheck($this->arrForm);
99            $this->arrErr = $this->lfGetArrInput($this->arrErr);
100
101            if( ! $this->arrErr ) {
102                $this->tpl_mainpage = "inquiry/confirm.tpl";
103            }
104
105
106        }elseif( $_POST['mode'] == "return"){
107            $this->arrForm = $_POST;
108
109        }elseif( $_POST['mode'] == "regist" )  {
110
111            //-- 入力文字・変換&エラーチェック
112            $this->arrForm = $_POST;
113            $this->arrForm = $this->lfConvertParam($this->arrForm, $arrRegistColumn);
114            $this->arrErr = $this->lfErrorCheck($this->arrForm);
115            $this->arrErr = $this->lfGetArrInput($this->arrErr);
116
117
118            if( ! $this->arrErr ) {
119
120                //完了画面
121                $this->tpl_mainpage = "inquiry/complete.tpl";
122
123
124                //--------- ▼ SQL ---------//
125
126                    // テーブルに入れるように整形する
127                    $arrOption = $this->arrForm['option'];
128                    unset ($this->arrForm['email02']);
129                    $this->arrForm['mail01'] = $this->arrForm['email'];
130                    unset ($this->arrForm['email']);
131                    unset ($this->arrForm['option']);
132                    $this->arrForm['question_id'] = $this->question_id;
133                    $this->arrForm['question_name'] = $this->QUESTION['title'];
134                    for ( $i=0; $i<(count($arrOption)); $i++ ){
135                        $tmp = "";
136                        if ( is_array($arrOption[$i]) ){
137                            for( $j=0; $j<count($arrOption[$i]); $j++){
138                                if ( $j>0 ) $tmp .= ",";
139                                $tmp .= $arrOption[$i][$j];
140                            }
141                            $this->arrForm['question0'.($i+1)] = $tmp;
142                        } else {
143                            $this->arrForm['question0'.($i+1)] = $arrOption[$i];
144                        }
145                    }
146                    $this->arrForm['create_date'] = "now()";
147                    // DB登録
148                    $objQuery = new SC_Query();
149                    $objQuery->insert("dtb_question_result", $this->arrForm );
150
151                //--------- ▲ SQL ---------//
152
153            }
154        }
155
156        $this->cnt_question = 6;
157        $this->arrActive = isset($arrActive) ? $arrActive : "";
158        $this->arrQuestion = isset($arrQuestion) ? $arrQuestion : "";
159
160
161        //---- ページ表示
162        $objView->_smarty->register_modifier("lfArray_Search_key_Smarty","lfArray_Search_key_Smarty");
163        $objView->assignobj($this);
164        $objView->display($this->tpl_mainpage);
165    }
166
167    /**
168     * デストラクタ.
169     *
170     * @return void
171     */
172    function destroy() {
173        parent::destroy();
174    }
175
176    // }}}
177    // {{{ protected functions
178
179    /**
180     * エラーチェック
181     *
182     * @param array FormParam の配列
183     * @return array エラー情報の配列
184     **/
185    function lfErrorCheck($array) {
186
187        $objErr = new SC_CheckError($array);
188
189        $objErr->doFunc(array("お名前(姓)", 'name01', STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK","MAX_LENGTH_CHECK"));
190        $objErr->doFunc(array("お名前(名)", 'name02', STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
191        $objErr->doFunc(array("フリガナ(セイ)", 'kana01', STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK"));
192        $objErr->doFunc(array("フリガナ(メイ)", 'kana02', STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK", "KANA_CHECK"));
193        $objErr->doFunc(array("郵便番号1", "zip01", ZIP01_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
194        $objErr->doFunc(array("郵便番号2", "zip02", ZIP02_LEN ) ,array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
195        $objErr->doFunc(array("郵便番号", "zip01", "zip02"), array("ALL_EXIST_CHECK"));
196        $objErr->doFunc(array("都道府県", 'pref'), array("SELECT_CHECK","NUM_CHECK"));
197        $objErr->doFunc(array("ご住所1", "addr01", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
198        $objErr->doFunc(array("ご住所2", "addr02", MTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
199        $objErr->doFunc(array("お電話番号1", 'tel01'), array("EXIST_CHECK", "NUM_CHECK"));
200        $objErr->doFunc(array("お電話番号2", 'tel02'), array("EXIST_CHECK", "NUM_CHECK"));
201        $objErr->doFunc(array("お電話番号3", 'tel03'), array("EXIST_CHECK", "NUM_CHECK"));
202        $objErr->doFunc(array('メールアドレス', "email", MTEXT_LEN) ,array("EXIST_CHECK", "SPTAB_CHECK", "EMAIL_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
203        $objErr->doFunc(array('メールアドレス(確認)', "email02", MTEXT_LEN) ,array("EXIST_CHECK", "SPTAB_CHECK", "EMAIL_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
204        $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', "email", "email02") ,array("EQUAL_CHECK"));
205
206        $objErr->arrErr["option"] =  array_map(array($this, "lfCheckNull"), (array)$_POST['option'] );
207
208        return $objErr->arrErr;
209    }
210
211    /**
212     * 取得文字列の変換
213     *
214     * @param array $array 取得文字列の配列
215     * @param array フォームパラメータの配列
216     * @return array 変換後の文字列
217     **/
218    function lfConvertParam($array, $arrRegistColumn) {
219
220        // カラム名とコンバート情報
221        foreach ($arrRegistColumn as $data) {
222            $arrConvList[ $data["column"] ] = $data["convert"];
223        }
224        // 文字変換
225        $new_array = array();
226        foreach ($arrConvList as $key => $val) {
227            $new_array[$key] = $array[$key];
228            if( strlen($val) > 0) {
229                $new_array[$key] = mb_convert_kana($new_array[$key] ,$val);
230            }
231        }
232
233        // オプション配列用
234        for ($i=0; $i<count($array['option']); $i++){
235            if ( is_array($array['option'][$i]) ){
236                $new_array['option'][$i] = $array['option'][$i];
237            } else {
238                $new_array['option'][$i] = mb_convert_kana($array['option'][$i] ,"aKV");
239            }
240        }
241
242        return $new_array;
243    }
244
245    /**
246     * 値が入力された配列のみを返す.
247     *
248     * @param array $arr 入力文字列
249     * @return array 値が入力された配列
250     */
251    function lfGetArrInput( $arr ){
252        // 値が入力された配列のみを返す
253        $return = array();
254
255        if ( is_array($arr) ){
256            foreach ( $arr as $key=>$val ) {
257                if ( is_string($val) && strlen($val) > 0 ){
258                    $return[$key] = $val;
259                } elseif ( is_array( $val ) ) {
260                    $data = $this->lfGetArrInput ( $val );
261                    if ( $data ){
262                        $return[$key] = $data;
263                    }
264                }
265            }
266        }
267        return $return;
268    }
269
270    /**
271     * 配列の Smarty 変数の存在をチェックする.
272     *
273     * @param array $params フォームパラメータの配列
274     * @return Smarty 変数が存在する場合 true
275     */
276    function lfArray_Search_key_Smarty ( $params ){
277
278        $val = $params['val'];
279        $arr = $params['arr'];
280
281        $revers_arr = array_flip($arr);
282        return array_search( $val ,$revers_arr );
283
284
285    }
286
287    /**
288     * 引数が null かチェックする.
289     *
290     * @param mixed $val 入力データ
291     * @return integer|array 引数に null が含まれる場合 1, それ以外は空の配列
292     */
293    function lfCheckNull ( $val ){
294        $return = array();
295
296        if ( ( ! is_array( $val ) ) && ( strlen( $val ) < 1 ) ){
297            $return = "1";
298        } elseif ( is_array( $val ) ) {
299            foreach ($val as $line) {
300                $return = $this->lfCheckNull( $line );
301            }
302        }
303        return $return;
304    }
305}
306?>
Note: See TracBrowser for help on using the repository browser.