Source for file LC_Page_Inquiry.php

Documentation is available at LC_Page_Inquiry.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  22.  */
  23.  
  24. // {{{ requires
  25. require_once(CLASS_PATH "pages/LC_Page.php");
  26.  
  27. /**
  28.  * アンケート のページクラス.
  29.  *
  30.  * @package Page
  31.  * @author LOCKON CO.,LTD.
  32.  * @version $Id:LC_Page_Inquiry.php 15532 2007-08-31 14:39:46Z nanasess $
  33.  */
  34. class LC_Page_Inquiry extends LC_Page {
  35.  
  36.     // }}}
  37.     // {{{ functions
  38.  
  39.     /**
  40.      * Page を初期化する.
  41.      *
  42.      * @return void 
  43.      */
  44.     function init({
  45.         parent::init();
  46.         $this->tpl_mainpage = 'inquiry/index.tpl';
  47.         $this->tpl_mainno = 'contents';
  48.     }
  49.  
  50.     /**
  51.      * Page のプロセス.
  52.      *
  53.      * @return void 
  54.      */
  55.     function process({
  56.         $conn new SC_DBConn();
  57.         $objPage new LC_Page();
  58.         $objView new SC_SiteView();
  59.         $objSess new SC_Session();
  60.  
  61.  
  62.         // 都道府県プルダウン用配列
  63.         $masterData new SC_DB_MasterData_Ex();
  64.         $this->arrPref $masterData->getMasterData("mtb_pref",
  65.                                   array("pref_id""pref_name""rank"));
  66.  
  67.         // CSV保存項目
  68.         //---- 登録用カラム配列 オプション以外
  69.         $arrRegistColumn array(
  70.                                      array(  "column" => "name01""convert" => "aKV" ),
  71.                                      array(  "column" => "name02""convert" => "aKV" ),
  72.                                      array(  "column" => "kana01""convert" => "CKV" ),
  73.                                      array(  "column" => "kana02""convert" => "CKV" ),
  74.                                      array(  "column" => "zip01""convert" => "n" ),
  75.                                      array(  "column" => "zip02""convert" => "n" ),
  76.                                      array(  "column" => "pref""convert" => "n" ),
  77.                                      array(  "column" => "addr01""convert" => "aKV" ),
  78.                                      array(  "column" => "addr02""convert" => "aKV" ),
  79.                                      array(  "column" => "email""convert" => "a" ),
  80.                                      array(  "column" => "email02""convert" => "a" ),
  81.                                      array(  "column" => "tel01""convert" => "n" ),
  82.                                      array(  "column" => "tel02""convert" => "n" ),
  83.                                      array(  "column" => "tel03""convert" => "n" ),
  84.                             );
  85.  
  86.  
  87.         if (!isset($_POST['mode'])) $_POST['mode'"";
  88.  
  89.         if ( ( $_POST['mode'== 'confirm' && is_numeric($_REQUEST['question_id']) ) ){
  90.             SC_Utils_Ex::sfDispSiteError(PAGE_ERROR);
  91.         }
  92.  
  93.         // テンプレート登録項目取得
  94.         $sql "SELECT question_id, question FROM dtb_question WHERE question_id = ?";
  95.         $result $conn->getAll$sqlarray($_REQUEST['question_id']) );
  96.         if count($result<= ){
  97.             SC_Utils_Ex::sfDispSiteError(PAGE_ERROR);
  98.         }
  99.         $this->QUESTION $this->lfGetArrInputunserialize$result[0]['question') );
  100.  
  101.         $this->question_id $_REQUEST['question_id'];
  102.  
  103.         $this->arrHidden SC_Utils_Ex::sfMakeHiddenArray($_POST);
  104.         unset($this->arrHidden['mode']);
  105.  
  106.         if (isset($this->QUESTION["delete"])
  107.             && (int)$this->QUESTION["delete"!== ){
  108.  
  109.             $objPage->tpl_mainpage "inquiry/closed.tpl";
  110.  
  111.         elseif$_POST['mode'== "confirm" {
  112.  
  113.             //-- 入力エラーチェック
  114.             $this->arrForm $_POST;
  115.             $this->arrForm $this->lfConvertParam($this->arrForm$arrRegistColumn);
  116.             $this->arrErr $this->lfErrorCheck($this->arrForm);
  117.             $this->arrErr $this->lfGetArrInput($this->arrErr);
  118.  
  119.             if$this->arrErr {
  120.                 $this->tpl_mainpage = "inquiry/confirm.tpl";
  121.             }
  122.  
  123.  
  124.         }elseif$_POST['mode'== "return"){
  125.             $this->arrForm $_POST;
  126.  
  127.         }elseif$_POST['mode'== "regist" )  {
  128.  
  129.             //-- 入力文字・変換&エラーチェック
  130.             $this->arrForm $_POST;
  131.             $this->arrForm $this->lfConvertParam($this->arrForm$arrRegistColumn);
  132.             $this->arrErr $this->lfErrorCheck($this->arrForm);
  133.             $this->arrErr $this->lfGetArrInput($this->arrErr);
  134.  
  135.  
  136.             if$this->arrErr {
  137.  
  138.                 //完了画面
  139.                 $this->tpl_mainpage = "inquiry/complete.tpl";
  140.  
  141.  
  142.                 //--------- ▼ SQL ---------//
  143.  
  144.                     // テーブルに入れるように整形する
  145.                     $arrOption $this->arrForm['option'];
  146.                     unset ($this->arrForm['email02']);
  147.                     $this->arrForm['mail01'$this->arrForm['email'];
  148.                     unset ($this->arrForm['email']);
  149.                     unset ($this->arrForm['option']);
  150.                     $this->arrForm['question_id'$this->question_id;
  151.                     $this->arrForm['question_name'$this->QUESTION['title'];
  152.                     for $i=0$i<(count($arrOption))$i++ ){
  153.                         $tmp "";
  154.                         if is_array($arrOption[$i]) ){
  155.                             for$j=0$j<count($arrOption[$i])$j++){
  156.                                 if $j>$tmp .= ",";
  157.                                 $tmp .= $arrOption[$i][$j];
  158.                             }
  159.                             $this->arrForm['question0'.($i+1)$tmp;
  160.                         else {
  161.                             $this->arrForm['question0'.($i+1)$arrOption[$i];
  162.                         }
  163.                     }
  164.                     $this->arrForm['create_date'"now()";
  165.                     // DB登録
  166.                     $objQuery new SC_Query();
  167.                     $objQuery->insert("dtb_question_result"$this->arrForm );
  168.  
  169.                 //--------- ▲ SQL ---------//
  170.  
  171.             }
  172.         }
  173.  
  174.         $this->cnt_question 6;
  175.         $this->arrActive = isset($arrActive$arrActive "";
  176.         $this->arrQuestion = isset($arrQuestion$arrQuestion "";
  177.  
  178.  
  179.         //---- ページ表示
  180.         $objView->_smarty->register_function("lfArray_Search_key_Smarty"array("LC_Page_Inquiry""lfArray_Search_key_Smarty"));
  181.         $objView->assignobj($this);
  182.         $objView->display($this->tpl_mainpage);
  183.     }
  184.  
  185.     /**
  186.      * デストラクタ.
  187.      *
  188.      * @return void 
  189.      */
  190.     function destroy({
  191.         parent::destroy();
  192.     }
  193.  
  194.     // }}}
  195.     // {{{ protected functions
  196.  
  197.     /**
  198.      * エラーチェック
  199.      *
  200.      * @param array FormParam の配列
  201.      * @return array エラー情報の配列
  202.      ***/
  203.     function lfErrorCheck($array{
  204.  
  205.         $objErr new SC_CheckError($array);
  206.  
  207.         $objErr->doFunc(array("お名前(姓)"'name01'STEXT_LEN)array("EXIST_CHECK""SPTAB_CHECK","MAX_LENGTH_CHECK"));
  208.         $objErr->doFunc(array("お名前(名)"'name02'STEXT_LEN)array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  209.         $objErr->doFunc(array("フリガナ(セイ)"'kana01'STEXT_LEN)array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK""KANA_CHECK"));
  210.         $objErr->doFunc(array("フリガナ(メイ)"'kana02'STEXT_LEN)array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK""KANA_CHECK"));
  211.         $objErr->doFunc(array("郵便番号1""zip01"ZIP01_LEN ,array("EXIST_CHECK""NUM_CHECK""NUM_COUNT_CHECK"));
  212.         $objErr->doFunc(array("郵便番号2""zip02"ZIP02_LEN ,array("EXIST_CHECK""NUM_CHECK""NUM_COUNT_CHECK"));
  213.         $objErr->doFunc(array("郵便番号""zip01""zip02")array("ALL_EXIST_CHECK"));
  214.         $objErr->doFunc(array("都道府県"'pref')array("SELECT_CHECK","NUM_CHECK"));
  215.         $objErr->doFunc(array("ご住所1""addr01"MTEXT_LEN)array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
  216.         $objErr->doFunc(array("ご住所2""addr02"MTEXT_LEN)array("SPTAB_CHECK""MAX_LENGTH_CHECK"));
  217.         $objErr->doFunc(array("お電話番号1"'tel01')array("EXIST_CHECK""NUM_CHECK"));
  218.         $objErr->doFunc(array("お電話番号2"'tel02')array("EXIST_CHECK""NUM_CHECK"));
  219.         $objErr->doFunc(array("お電話番号3"'tel03')array("EXIST_CHECK""NUM_CHECK"));
  220.         $objErr->doFunc(array('メールアドレス'"email"MTEXT_LEN,array("EXIST_CHECK""SPTAB_CHECK""EMAIL_CHECK""EMAIL_CHAR_CHECK""MAX_LENGTH_CHECK"));
  221.         $objErr->doFunc(array('メールアドレス(確認)'"email02"MTEXT_LEN,array("EXIST_CHECK""SPTAB_CHECK""EMAIL_CHECK""EMAIL_CHAR_CHECK""MAX_LENGTH_CHECK"));
  222.         $objErr->doFunc(array('メールアドレス''メールアドレス(確認)'"email""email02",array("EQUAL_CHECK"));
  223.  
  224.         $objErr->arrErr["option"=  array_map(array($this"lfCheckNull")(array)$_POST['option');
  225.  
  226.         return $objErr->arrErr;
  227.     }
  228.  
  229.     /**
  230.      * 取得文字列の変換
  231.      *
  232.      * @param array $array 取得文字列の配列
  233.      * @param array フォームパラメータの配列
  234.      * @return array 変換後の文字列
  235.      ***/
  236.     function lfConvertParam($array$arrRegistColumn{
  237.  
  238.         // カラム名とコンバート情報
  239.         foreach ($arrRegistColumn as $data{
  240.             $arrConvList$data["column"] ] $data["convert"];
  241.         }
  242.         // 文字変換
  243.         $new_array array();
  244.         foreach ($arrConvList as $key => $val{
  245.             $new_array[$key$array[$key];
  246.             ifstrlen($val0{
  247.                 $new_array[$keymb_convert_kana($new_array[$key,$val);
  248.             }
  249.         }
  250.  
  251.         // オプション配列用
  252.         for ($i=0$i<count($array['option'])$i++){
  253.             if is_array($array['option'][$i]) ){
  254.                 $new_array['option'][$i$array['option'][$i];
  255.             else {
  256.                 $new_array['option'][$imb_convert_kana($array['option'][$i,"aKV");
  257.             }
  258.         }
  259.  
  260.         return $new_array;
  261.     }
  262.  
  263.     /**
  264.      * 値が入力された配列のみを返す.
  265.      *
  266.      * @param array $arr 入力文字列
  267.      * @return array 値が入力された配列
  268.      */
  269.     function lfGetArrInput$arr ){
  270.         // 値が入力された配列のみを返す
  271.         $return array();
  272.  
  273.         if is_array($arr)    ){
  274.             foreach $arr as $key=>$val {
  275.                 if is_string($val&& strlen($val){
  276.                     $return[$key$val;
  277.                 elseif is_array$val ) ) {
  278.                     $data $this->lfGetArrInput $val );
  279.                     if $data ){
  280.                         $return[$key$data;
  281.                     }
  282.                 }
  283.             }
  284.         }
  285.         return $return;
  286.     }
  287.  
  288.     /**
  289.      * 配列の Smarty 変数の存在をチェックする.
  290.      *
  291.      * @param array $params フォームパラメータの配列
  292.      * @return Smarty 変数が存在する場合 true
  293.      */
  294.     function lfArray_Search_key_Smarty $params ){
  295.  
  296.         $val $params['val'];
  297.         $arr $params['arr'];
  298.  
  299.         $revers_arr array_flip($arr);
  300.         return array_search$val ,$revers_arr );
  301.  
  302.  
  303.     }
  304.  
  305.     /**
  306.      * 引数が null かチェックする.
  307.      *
  308.      * @param mixed $val 入力データ
  309.      * @return integer|array引数に null が含まれる場合 1, それ以外は空の配列
  310.      */
  311.     function lfCheckNull $val ){
  312.         $return array();
  313.  
  314.         if ( ( is_array$val ) ) && strlen$val ) ){
  315.             $return "1";
  316.         elseif is_array$val ) ) {
  317.             foreach ($val as $line{
  318.                 $return $this->lfCheckNull$line );
  319.             }
  320.         }
  321.         return $return;
  322.     }
  323. }
  324. ?>

Documentation generated on Tue, 28 Apr 2009 18:12:21 +0900 by phpDocumentor 1.4.2