Page
[ class tree: Page ] [ index: Page ] [ all elements ]

Source for file LC_Page_Mypage_Change.php

Documentation is available at LC_Page_Mypage_Change.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2010 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. if (file_exists(MODULE_PATH "mdl_gmopg/inc/function.php")) {
  28.     require_once(MODULE_PATH "mdl_gmopg/inc/function.php");
  29. }
  30.  
  31. /**
  32.  * 登録内容変更 のページクラス.
  33.  *
  34.  * @package Page
  35.  * @author LOCKON CO.,LTD.
  36.  * @version $Id: LC_Page_Mypage_Change.php 18741 2010-06-23 03:16:05Z nanasess $
  37.  */
  38. class LC_Page_Mypage_Change extends LC_Page {
  39.  
  40.  
  41.     // }}}
  42.     // {{{ functions
  43.  
  44.     /**
  45.      * Page を初期化する.
  46.      *
  47.      * @return void 
  48.      */
  49.     function init({
  50.         parent::init();
  51.         $this->tpl_mainpage = TEMPLATE_DIR 'mypage/change.tpl';
  52.         $this->tpl_title = 'MYページ/会員登録内容変更(入力ページ)';
  53.         $this->tpl_navi TEMPLATE_DIR 'mypage/navi.tpl';
  54.         $this->tpl_mainno = 'mypage';
  55.         $this->tpl_mypageno 'change';
  56.         $this->tpl_column_num = 1;
  57.  
  58.         $masterData new SC_DB_MasterData_Ex();
  59.         $this->arrReminder $masterData->getMasterData("mtb_reminder");
  60.         $this->arrPref $masterData->getMasterData("mtb_pref",
  61.                                  array("pref_id""pref_name""rank"));
  62.         $this->arrJob $masterData->getMasterData("mtb_job");
  63.         $this->arrMAILMAGATYPE $masterData->getMasterData("mtb_mail_magazine_type");
  64.         $this->arrSex $masterData->getMasterData("mtb_sex");
  65.         $this->allowClientCache();
  66.  
  67.     }
  68.  
  69.     /**
  70.      * Page のプロセス.
  71.      *
  72.      * @return void 
  73.      */
  74.     function process({
  75.         $objView new SC_SiteView();
  76.         $this->objQuery new SC_Query();
  77.         $this->objCustomer new SC_Customer();
  78.         $this->objFormParam new SC_FormParam();
  79.  
  80.         // レイアウトデザインを取得
  81.         $objLayout new SC_Helper_PageLayout_Ex();
  82.         $objLayout->sfGetPageLayout($thisfalse"mypage/index.php");
  83.  
  84.         //日付プルダウン設定
  85.         $objDate new SC_Date(1901);
  86.         $this->arrYear $objDate->getYear();
  87.         $this->arrMonth $objDate->getMonth();
  88.         $this->arrDay $objDate->getDay();
  89.  
  90.         // ログインチェック
  91.         if (!$this->objCustomer->isLoginSuccess()){
  92.             SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
  93.         }else {
  94.             //マイページトップ顧客情報表示用
  95.             $this->CustomerName1 $this->objCustomer->getvalue('name01');
  96.             $this->CustomerName2 $this->objCustomer->getvalue('name02');
  97.             $this->CustomerPoint $this->objCustomer->getvalue('point');
  98.         }
  99.  
  100.         //---- 登録用カラム配列
  101.         $arrRegistColumn array(
  102.                                  array(  "column" => "name01",      "convert" => "aKV" ),
  103.                                  array(  "column" => "name02",      "convert" => "aKV" ),
  104.                                  array(  "column" => "kana01",      "convert" => "CKV" ),
  105.                                  array(  "column" => "kana02",      "convert" => "CKV" ),
  106.                                  array(  "column" => "zip01",       "convert" => "n" ),
  107.                                  array(  "column" => "zip02",       "convert" => "n" ),
  108.                                  array(  "column" => "pref",        "convert" => "n" ),
  109.                                  array(  "column" => "addr01",      "convert" => "aKV" ),
  110.                                  array(  "column" => "addr02",      "convert" => "aKV" ),
  111.                                  array(  "column" => "email",       "convert" => "a" ),
  112.                                  array(  "column" => "email_mobile""convert" => "a" ),
  113.                                  array(  "column" => "tel01",       "convert" => "n" ),
  114.                                  array(  "column" => "tel02",       "convert" => "n" ),
  115.                                  array(  "column" => "tel03",       "convert" => "n" ),
  116.                                  array(  "column" => "fax01",       "convert" => "n" ),
  117.                                  array(  "column" => "fax02",       "convert" => "n" ),
  118.                                  array(  "column" => "fax03",       "convert" => "n" ),
  119.                                  array(  "column" => "sex",         "convert" => "n" ),
  120.                                  array(  "column" => "job",         "convert" => "n" ),
  121.                                  array(  "column" => "birth",       "convert" => "n" ),
  122.                                  array(  "column" => "password",    "convert" => "an" ),
  123.                                  array(  "column" => "reminder",    "convert" => "n" ),
  124.                                  array(  "column" => "reminder_answer""convert" => "aKV" ),
  125.                                  array(  "column" => "mailmaga_flg""convert" => "n" )
  126.                                  );
  127.  
  128.         //メールアドレス種別
  129.         $arrMailType array("email" => true"email_mobile" => true);
  130.  
  131.         if (!isset($_POST['mode'])) $_POST['mode'"";
  132.  
  133.         switch ($_POST['mode']){
  134.  
  135.         case 'confirm':
  136.  
  137.             //エラーなしでかつメールアドレスが重複していない場合
  138.             if ($this->checkErrorTotal($arrRegistColumn$arrMailType)) {
  139.  
  140.                 //確認ページへ
  141.                 $this->tpl_mainpage = TEMPLATE_DIR 'mypage/change_confirm.tpl';
  142.                 $this->tpl_title = 'MYページ/会員登録内容変更(確認ページ)';
  143.                 $passlen strlen($this->arrForm['password']);
  144.                 $this->passlen $this->lfPassLen($passlen);
  145.             else {
  146.                 $this->lfFormReturn($this->arrForm,$this);
  147.             }
  148.  
  149.             break;
  150.  
  151.         case 'return':
  152.             $this->arrForm $_POST;
  153.             $this->lfFormReturn($this->arrForm,$this);
  154.             break;
  155.  
  156.         case 'gmo_oneclick':
  157.             sfGMOMypageEdit();
  158.             $this->arrForm $this->lfGetCustomerData();
  159.             $this->arrForm['password'DEFAULT_PASSWORD;
  160.             $this->arrForm['password02'DEFAULT_PASSWORD;
  161.             break;
  162.         case 'complete':
  163.             //エラーなしでかつメールアドレスが重複していない場合
  164.             if ($this->checkErrorTotal($arrRegistColumn$arrMailType)) {
  165.                 $this->arrForm['customer_id'$this->objCustomer->getValue('customer_id');
  166.                 //-- 編集登録
  167.                 $objDb new SC_Helper_DB_Ex();
  168.                 $objDb->sfEditCustomerData($this->arrForm$arrRegistColumn);
  169.                 //セッション情報を最新の状態に更新する
  170.                 $this->objCustomer->updateSession();
  171.  
  172.                 // Do楽SNS連携モジュールユーザ情報更新処理
  173.                 if (function_exists('sfUpdateSourakuSNSUserInfo')) {
  174.                     sfUpdateSourakuSNSUserInfo();
  175.                 }
  176.  
  177.                 //完了ページへ
  178.                 $this->sendRedirect($this->getLocation("./change_complete.php"));
  179.                 exit;
  180.             else {
  181.                 SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
  182.             }
  183.             break;
  184.  
  185.         default:
  186.             //顧客情報取得
  187.             $this->arrForm $this->lfGetCustomerData();
  188.             $this->arrForm['password'DEFAULT_PASSWORD;
  189.             $this->arrForm['password02'DEFAULT_PASSWORD;
  190.             break;
  191.         }
  192.  
  193.         //誕生日データ登録の有無
  194.         $arrCustomer $this->lfGetCustomerData();
  195.         if ($arrCustomer['birth'!= ""){
  196.             $this->birth_check true;
  197.         }
  198.  
  199.         $objView->assignobj($this);             //$objpage内の全てのテンプレート変数をsmartyに格納
  200.         $objView->display(SITE_FRAME);              //パスとテンプレート変数の呼び出し、実行
  201.  
  202.  
  203.     }
  204.  
  205.     /**
  206.      * モバイルページを初期化する.
  207.      *
  208.      * @return void 
  209.      */
  210.     function mobileInit({
  211.         $this->tpl_mainpage = 'mypage/change.tpl';        // メインテンプレート
  212.         $this->tpl_title .= '登録変更(1/3)';            // ページタイトル
  213.  
  214.         $masterData new SC_DB_MasterData_Ex();
  215.         $this->arrReminder $masterData->getMasterData("mtb_reminder");
  216.         $this->arrPref $masterData->getMasterData("mtb_pref",
  217.                                  array("pref_id""pref_name""rank"));
  218.         $this->arrJob $masterData->getMasterData("mtb_job");
  219.         $this->arrMAILMAGATYPE $masterData->getMasterData("mtb_mail_magazine_type");
  220.         $this->arrSex $masterData->getMasterData("mtb_sex");
  221.     }
  222.  
  223.     /**
  224.      * Page のプロセス(モバイル).
  225.      *
  226.      * @return void 
  227.      */
  228.     function mobileProcess({
  229.         $objDb new SC_Helper_DB_Ex();
  230.         $CONF $objDb->sf_getBasisData();                    // 店舗基本情報
  231.         $objConn new SC_DbConn();
  232.         $objView new SC_MobileView();
  233.         $this->objDate new SC_Date(START_BIRTH_YEARdate("Y",strtotime("now")));
  234.         $this->arrYear $this->objDate->getYear();
  235.         $this->arrMonth $this->objDate->getMonth();
  236.         $this->arrDay $this->objDate->getDay();
  237.  
  238.         $this->objQuery new SC_Query();
  239.         $this->objCustomer new SC_Customer();
  240.  
  241.         //メールアドレス種別
  242.         $arrMailType array("email" => true"email_mobile" => true);
  243.  
  244.         //---- 登録用カラム配列
  245.         $arrRegistColumn array(
  246.                                  array(  "column" => "name01""convert" => "aKV" ),
  247.                                  array(  "column" => "name02""convert" => "aKV" ),
  248.                                  array(  "column" => "kana01""convert" => "CKV" ),
  249.                                  array(  "column" => "kana02""convert" => "CKV" ),
  250.                                  array(  "column" => "zip01""convert" => "n" ),
  251.                                  array(  "column" => "zip02""convert" => "n" ),
  252.                                  array(  "column" => "pref""convert" => "n" ),
  253.                                  array(  "column" => "addr01""convert" => "aKV" ),
  254.                                  array(  "column" => "addr02""convert" => "aKV" ),
  255.                                  array(  "column" => "email""convert" => "a" ),
  256.                                  array(  "column" => "email_mobile""convert" => "a" ),
  257.                                  array(  "column" => "tel01""convert" => "n" ),
  258.                                  array(  "column" => "tel02""convert" => "n" ),
  259.                                  array(  "column" => "tel03""convert" => "n" ),
  260.                                  array(  "column" => "fax01""convert" => "n" ),
  261.                                  array(  "column" => "fax02""convert" => "n" ),
  262.                                  array(  "column" => "fax03""convert" => "n" ),
  263.                                  array(  "column" => "sex""convert" => "n" ),
  264.                                  array(  "column" => "job""convert" => "n" ),
  265.                                  array(  "column" => "birth""convert" => "n" ),
  266.                                  array(  "column" => "reminder""convert" => "n" ),
  267.                                  array(  "column" => "reminder_answer""convert" => "aKV"),
  268.                                  array(  "column" => "password""convert" => "a" ),
  269.                                  array(  "column" => "mailmaga_flg""convert" => "n" )
  270.                                  );
  271.  
  272.         //---- 登録除外用カラム配列
  273.         $arrRejectRegistColumn array("year""month""day""email02""email_mobile02""password02");
  274.  
  275.         $this->arrForm $this->lfGetCustomerData();
  276.         $this->arrForm['password'DEFAULT_PASSWORD;
  277.  
  278.         if ($_SERVER["REQUEST_METHOD"== "POST"{
  279.  
  280.             //-- POSTデータの引き継ぎ
  281.             $this->arrForm array_merge($this->arrForm$_POST);
  282.  
  283.             if (!isset($this->arrForm['year'])) $this->arrForm['year'"";
  284.             if($this->arrForm['year'== '----'{
  285.                 $this->arrForm['year''';
  286.             }
  287.  
  288.             //-- 入力データの変換
  289.             $this->arrForm $this->lfConvertParam($this->arrForm$arrRegistColumn);
  290.  
  291.             // 戻るボタン用処理
  292.             if (!empty($_POST["return"])) {
  293.                 switch ($_POST["mode"]{
  294.                 case "complete":
  295.                     $_POST["mode""set3";
  296.                     break;
  297.                 case "confirm":
  298.                     $_POST["mode""set2";
  299.                     break;
  300.                 default:
  301.                     $_POST["mode""set1";
  302.                     break;
  303.                 }
  304.             }
  305.  
  306.             //-- 入力エラーチェック
  307.             if ($_POST["mode"== "set1"{
  308.                 $this->arrErr $this->lfErrorCheck1($this->arrForm);
  309.                 $this->tpl_mainpage = 'mypage/change.tpl';
  310.                 $this->tpl_title = '登録変更(1/3)';
  311.             elseif ($_POST["mode"== "set2"{
  312.                 $this->arrErr $this->lfErrorCheck2($this->arrForm);
  313.                 $this->tpl_mainpage = 'mypage/set1.tpl';
  314.                 $this->tpl_title = '登録変更(2/3)';
  315.             else {
  316.                 $this->arrErr $this->lfErrorCheck3($this->arrForm);
  317.                 $this->tpl_mainpage = 'mypage/set2.tpl';
  318.                 $this->tpl_title = '登録変更(3/3)';
  319.             }
  320.  
  321.             if ($this->arrErr || !empty($_POST["return"])) {        // 入力エラーのチェック
  322.                 //-- データの設定
  323.                 if ($_POST["mode"== "set1"{
  324.                     $checkVal array("email""email_mobile""password""reminder""reminder_answer""name01""name02""kana01""kana02");
  325.                 elseif ($_POST["mode"== "set2"{
  326.                     $checkVal array("sex""year""month""day""zip01""zip02");
  327.                 else {
  328.                     $checkVal array("pref""addr01""addr02""tel01""tel02""tel03""mailmaga_flg");
  329.                 }
  330.  
  331.                 foreach($this->arrForm as $key => $val{
  332.                     if ($key != "return" && $key != "mode" && $key != "confirm" && $key != session_name(&& !in_array($key$checkVal)) {
  333.                         $this->list_data$key $val;
  334.                     }
  335.                 }
  336.  
  337.             else {
  338.  
  339.                 //-- テンプレート設定
  340.                 if ($_POST["mode"== "set1"{
  341.                     $this->tpl_mainpage = 'mypage/set1.tpl';
  342.                     $this->tpl_title = '登録変更(2/3)';
  343.                 elseif ($_POST["mode"== "set2"{
  344.                     $this->tpl_mainpage = 'mypage/set2.tpl';
  345.                     $this->tpl_title = '登録変更(3/3)';
  346.                 elseif ($_POST["mode"== "confirm"{
  347.                     //パスワード表示
  348.                     $passlen strlen($this->arrForm['password']);
  349.                     $this->passlen $this->lfPassLen($passlen);
  350.  
  351.                     // メール受け取り
  352.                     if (!isset($_POST['mailmaga_flg'])) $_POST['mailmaga_flg'"";
  353.                     if (strtolower($_POST['mailmaga_flg']== "on"{
  354.                         $this->arrForm['mailmaga_flg'"2";
  355.                     else {
  356.                         $this->arrForm['mailmaga_flg'"3";
  357.                     }
  358.  
  359.                     $this->tpl_mainpage = 'mypage/change_confirm.tpl';
  360.                     $this->tpl_title = '登録変更(確認ページ)';
  361.  
  362.                 }
  363.  
  364.                 //-- データ設定
  365.                 unset($this->list_data);
  366.                 if ($_POST["mode"== "set1"{
  367.                     $checkVal array("sex""year""month""day""zip01""zip02");
  368.                 elseif ($_POST["mode"== "set2"{
  369.                     $checkVal array("pref""addr01""addr02""tel01""tel02""tel03""mailmaga_flg");
  370.                 else {
  371.                     $checkVal array();
  372.                 }
  373.  
  374.                 foreach($this->arrForm as $key => $val{
  375.                     if ($key != "return" && $key != "mode" && $key != "confirm" && $key != session_name(&& !in_array($key$checkVal)) {
  376.                         $this->list_data$key $val;
  377.                     }
  378.                 }
  379.  
  380.  
  381.                 //-- 仮登録と完了画面
  382.                 if ($_POST["mode"== "complete"{
  383.                     //エラーなしでかつメールアドレスが重複していない場合
  384.                     if($this->checkErrorTotal($arrRegistColumn$arrMailTypetrue)) {
  385.                         $this->arrForm['customer_id'$this->objCustomer->getValue('customer_id');
  386.                         //-- 編集登録
  387.                         $objDb->sfEditCustomerData($this->arrForm$arrRegistColumn);
  388.                         //セッション情報を最新の状態に更新する
  389.                         $this->objCustomer->updateSession();
  390.                         //完了ページへ
  391.                         $this->sendRedirect($this->getLocation("./change_complete.php")true);
  392.                         exit;
  393.                     else {
  394.                         SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR""false""true);
  395.                     }
  396.                 }
  397.             }
  398.         }
  399.  
  400.         $arrPrivateVariables array('secret_key''first_buy_date''last_buy_date''buy_times''buy_total''point''note''status''create_date''update_date''del_flg''cell01''cell02''cell03''mobile_phone_id');
  401.         foreach ($arrPrivateVariables as $key{
  402.             unset($this->list_data[$key]);
  403.         }
  404.  
  405.         //---- ページ表示
  406.         $objView->assignobj($this);
  407.         $objView->display(SITE_FRAME);
  408.     }
  409.  
  410.     /**
  411.      * デストラクタ.
  412.      *
  413.      * @return void 
  414.      */
  415.     function destroy({
  416.         parent::destroy();
  417.     }
  418.  
  419.     /**
  420.      * すべてのエラーチェックを行う.
  421.      *
  422.      * @param array $arrRegistColumn 登録カラムの配列
  423.      * @param array $arrMailType メール種別とフラグを格納した配列
  424.      * @param bool $isMobile モバイル版登録チェックの場合 true
  425.      * @return bool エラーの無い場合 true
  426.      */
  427.     function checkErrorTotal(&$arrRegistColumn&$arrMailType$isMobile false{
  428.         // emailはすべて小文字で処理
  429.         $this->paramToLower($arrRegistColumn);
  430.  
  431.         // 入力データの変換
  432.         $this->arrForm $this->lfConvertParam($_POST$arrRegistColumn);
  433.  
  434.         //エラーチェック
  435.         $this->arrErr $isMobile
  436.             ? $this->lfErrorCheckMobile($this->arrForm)
  437.             : $this->lfErrorCheck($this->arrForm);
  438.  
  439.         //メールアドレスを変更している場合、メールアドレスの重複チェック
  440.         $arrMailType2 $arrMailType;
  441.         foreach ($arrMailType as $mailType => $mailTypeValue{
  442.  
  443.             if ($this->arrForm[$mailType]
  444.                 != $this->objCustomer->getValue($mailType)){
  445.  
  446.                 $email_cnt $this->objQuery->count("dtb_customer",
  447.                                  "del_flg=0 AND (email = ? OR email_mobile = ?) ",
  448.                                   array($this->arrForm[$mailType]$this->arrForm[$mailType]));
  449.                 if ($email_cnt 0){
  450.                     $arrMailType2[$mailTypefalse;
  451.                     $this->arrErr[$mailType.= "既に使用されているメールアドレスです。";
  452.                 }
  453.             }
  454.         }
  455.  
  456.         // エラーが存在せず, メールアドレスの重複が無い場合は true
  457.         if (empty($this->arrErr)
  458.             && $arrMailType2['email'== true
  459.             && $arrMailType2['email_mobile'== true{
  460.             return true;
  461.         else {
  462.             return false;
  463.         }
  464.     }
  465.  
  466.     /* パラメータ情報の初期化 */
  467.     function lfInitParam({
  468.         $this->objFormParam->addParam("お名前(姓)""name01"STEXT_LEN"KVa"array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  469.         $this->objFormParam->addParam("お名前(名)""name02"STEXT_LEN"KVa"array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  470.         $this->objFormParam->addParam("フリガナ(セイ)""kana01"STEXT_LEN"KVCa"array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  471.         $this->objFormParam->addParam("フリガナ(メイ)""kana02"STEXT_LEN"KVCa"array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  472.         $this->objFormParam->addParam("郵便番号1""zip01"ZIP01_LEN"n"array("EXIST_CHECK""NUM_CHECK""NUM_COUNT_CHECK"));
  473.         $this->objFormParam->addParam("郵便番号2""zip02"ZIP02_LEN"n"array("EXIST_CHECK""NUM_CHECK""NUM_COUNT_CHECK"));
  474.         $this->objFormParam->addParam("都道府県""pref"INT_LEN"n"array("EXIST_CHECK""MAX_LENGTH_CHECK""NUM_CHECK"));
  475.         $this->objFormParam->addParam("ご住所1""addr01"MTEXT_LEN"KVa"array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  476.         $this->objFormParam->addParam("ご住所2""addr02"MTEXT_LEN"KVa"array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  477.         $this->objFormParam->addParam("お電話番号1""tel01"TEL_ITEM_LEN"n"array("EXIST_CHECK""MAX_LENGTH_CHECK" ,"NUM_CHECK"));
  478.         $this->objFormParam->addParam("お電話番号2""tel02"TEL_ITEM_LEN"n"array("EXIST_CHECK""MAX_LENGTH_CHECK" ,"NUM_CHECK"));
  479.         $this->objFormParam->addParam("お電話番号3""tel03"TEL_ITEM_LEN"n"array("EXIST_CHECK""MAX_LENGTH_CHECK" ,"NUM_CHECK"));
  480.     }
  481.  
  482.     //エラーチェック
  483.  
  484.     function lfErrorCheck($array{
  485.         $objErr new SC_CheckError($array);
  486.  
  487.         $objErr->doFunc(array("お名前(姓)"'name01'STEXT_LEN)array("EXIST_CHECK""SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
  488.         $objErr->doFunc(array("お名前(名)"'name02'STEXT_LEN)array("EXIST_CHECK""SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
  489.         $objErr->doFunc(array("フリガナ(セイ)"'kana01'STEXT_LEN)array("EXIST_CHECK""SPTAB_CHECK" ,"MAX_LENGTH_CHECK""KANA_CHECK"));
  490.         $objErr->doFunc(array("フリガナ(メイ)"'kana02'STEXT_LEN)array("EXIST_CHECK""SPTAB_CHECK" ,"MAX_LENGTH_CHECK""KANA_CHECK"));
  491.         $objErr->doFunc(array("郵便番号1""zip01"ZIP01_LEN ,array("EXIST_CHECK""SPTAB_CHECK" ,"NUM_CHECK""NUM_COUNT_CHECK"));
  492.         $objErr->doFunc(array("郵便番号2""zip02"ZIP02_LEN ,array("EXIST_CHECK""SPTAB_CHECK" ,"NUM_CHECK""NUM_COUNT_CHECK"));
  493.         $objErr->doFunc(array("郵便番号""zip01""zip02")array("ALL_EXIST_CHECK"));
  494.         $objErr->doFunc(array("都道府県"'pref')array("SELECT_CHECK","NUM_CHECK"));
  495.         $objErr->doFunc(array("ご住所1""addr01"MTEXT_LEN)array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
  496.         $objErr->doFunc(array("ご住所2""addr02"MTEXT_LEN)array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
  497.         $objErr->doFunc(array('メールアドレス'"email"MTEXT_LEN,array("EXIST_CHECK""EMAIL_CHECK""NO_SPTAB" ,"EMAIL_CHAR_CHECK""MAX_LENGTH_CHECK"));
  498.         $objErr->doFunc(array('メールアドレス(確認)'"email02"MTEXT_LEN,array("EXIST_CHECK""EMAIL_CHECK","NO_SPTAB" "EMAIL_CHAR_CHECK""MAX_LENGTH_CHECK"));
  499.         $objErr->doFunc(array('メールアドレス''メールアドレス(確認)'"email""email02",array("EQUAL_CHECK"));
  500.         $objErr->doFunc(array('携帯メールアドレス'"email_mobile"MTEXT_LEN,array("EMAIL_CHECK""NO_SPTAB" ,"EMAIL_CHAR_CHECK""MAX_LENGTH_CHECK""MOBILE_EMAIL_CHECK"));
  501.         $objErr->doFunc(array('携帯メールアドレス(確認)'"email_mobile02"MTEXT_LEN)array("EMAIL_CHECK","NO_SPTAB" "EMAIL_CHAR_CHECK""MAX_LENGTH_CHECK""MOBILE_EMAIL_CHECK"));
  502.         $objErr->doFunc(array('携帯メールアドレス''携帯メールアドレス(確認)'"email_mobile""email_mobile02",array("EQUAL_CHECK"));
  503.         $objErr->doFunc(array("お電話番号1"'tel01')array("EXIST_CHECK"));
  504.         $objErr->doFunc(array("お電話番号2"'tel02')array("EXIST_CHECK"));
  505.         $objErr->doFunc(array("お電話番号3"'tel03')array("EXIST_CHECK"));
  506.         $objErr->doFunc(array("お電話番号""tel01""tel02""tel03"TEL_LEN,array("TEL_CHECK"));
  507.         $objErr->doFunc(array("FAX番号""fax01""fax02""fax03"TEL_LEN,array("TEL_CHECK"));
  508.         $objErr->doFunc(array("ご性別""sex",array("SELECT_CHECK""NUM_CHECK"));
  509.         $objErr->doFunc(array("ご職業""job",array("NUM_CHECK"));
  510.         $objErr->doFunc(array("生年月日""year""month""day")array("CHECK_DATE"));
  511.         $objErr->doFunc(array("パスワード"'password'PASSWORD_LEN1PASSWORD_LEN2)array("EXIST_CHECK""ALNUM_CHECK""NUM_RANGE_CHECK"));
  512.         $objErr->doFunc(array("パスワード(確認)"'password02'PASSWORD_LEN1PASSWORD_LEN2)array("EXIST_CHECK""ALNUM_CHECK""NUM_RANGE_CHECK"));
  513.         $objErr->doFunc(array("パスワード"'パスワード(確認)''password''password02')array("EQUAL_CHECK"));
  514.         $objErr->doFunc(array("パスワードを忘れたときの質問""reminder",array("SELECT_CHECK""NUM_CHECK"));
  515.         $objErr->doFunc(array("パスワードを忘れたときの答え""reminder_answer"STEXT_LEN,array("EXIST_CHECK""MAX_LENGTH_CHECK"));
  516.         $objErr->doFunc(array("メールマガジン""mailmaga_flg",array("SELECT_CHECK""NUM_CHECK"));
  517.         return $objErr->arrErr;
  518.  
  519.     }
  520.  
  521.     //---- 取得文字列の変換
  522.     function lfConvertParam($array$arrRegistColumn{
  523.         /*
  524.          *  文字列の変換
  525.          *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
  526.          *  C :  「全角ひら仮名」を「全角かた仮名」に変換
  527.          *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
  528.          *  n :  「全角」数字を「半角(ハンカク)」に変換
  529.          *  a :  全角英数字を半角英数字に変換する
  530.          */
  531.         foreach ($arrRegistColumn as $registColumn{
  532.             $key $registColumn["column"];
  533.             $mb_convert_kana_option $registColumn["convert"];
  534.             $val =$array[$key];
  535.  
  536.             // string 型以外は変換対象外とする
  537.             if (!is_string($val)) continue;
  538.  
  539.             // 文字変換
  540.             if (strlen($val0{
  541.                 $val mb_convert_kana($val ,$mb_convert_kana_option);
  542.             }
  543.         }
  544.         return $array;
  545.     }
  546.  
  547.     //顧客情報の取得
  548.     function lfGetCustomerData(){
  549.         //顧客情報取得
  550.         $ret $this->objQuery->select("*","dtb_customer","customer_id=?"array($this->objCustomer->getValue('customer_id')));
  551.         $arrForm $ret[0];
  552.  
  553.         //誕生日の年月日取得
  554.         if (isset($arrForm['birth'])){
  555.             $birth split(" "$arrForm["birth"]);
  556.             list($year$month$daysplit("-",$birth[0]);
  557.  
  558.             $arrForm['year'$year;
  559.             $arrForm['month'$month;
  560.             $arrForm['day'$day;
  561.  
  562.         }
  563.         return $arrForm;
  564.     }
  565.  
  566.     /**
  567.      * 編集登録
  568.      * TODO
  569.      * @deprecated 未使用?
  570.      */
  571.     function lfRegistData($array$arrRegistColumn{
  572.  
  573.         foreach ($arrRegistColumn as $data{
  574.             if ($data["column"!= "password"{
  575.                 if($array$data['column'] ] == ""{
  576.                     $arrRegist$data['column'] ] NULL;
  577.                 else {
  578.                     $arrRegist$data["column"] ] $array$data["column"] ];
  579.                 }
  580.             }
  581.         }
  582.         if (strlen($array["year"]&& strlen($array["month"]&& strlen($array["day"]0{
  583.             $arrRegist["birth"$array["year"."/"$array["month"."/"$array["day"." 00:00:00";
  584.         else {
  585.             $arrRegist["birth"NULL;
  586.         }
  587.  
  588.         //-- パスワードの更新がある場合は暗号化。(更新がない場合はUPDATE文を構成しない)
  589.         if ($array["password"!= DEFAULT_PASSWORD$arrRegist["password"sha1($array["password"":" AUTH_MAGIC);
  590.         $arrRegist["update_date""NOW()";
  591.  
  592.         //-- 編集登録実行
  593.         $this->objQuery->begin();
  594.         $this->objQuery->update("dtb_customer"$arrRegist"customer_id = ? "array($this->objCustomer->getValue('customer_id')));
  595.         $this->objQuery->commit();
  596.     }
  597.  
  598.     //確認ページ用パスワード表示用
  599.  
  600.     function lfPassLen($passlen){
  601.         $ret "";
  602.         for ($i=0;$i<$passlen;true){
  603.             $ret.="*";
  604.             $i++;
  605.         }
  606.         return $ret;
  607.     }
  608.  
  609.     //エラー、戻る時にフォームに入力情報を返す
  610.     function lfFormReturn($array&$objPage){
  611.         foreach($array as $key => $val){
  612.             switch ($key){
  613.             case 'password':
  614.             case 'password02':
  615.                 $objPage->$key $val;
  616.                 break;
  617.             default:
  618.                 $array$key $val;
  619.                 break;
  620.             }
  621.         }
  622.     }
  623.  
  624.  
  625.     // }}}
  626.     // {{{ mobile functions
  627.  
  628.     /**
  629.      * TODO
  630.      * @deprecated 未使用?
  631.      */
  632.     function lfRegistDataMobile ($array$arrRegistColumn,
  633.                                  $arrRejectRegistColumn{
  634.  
  635.         // 仮登録
  636.         foreach ($arrRegistColumn as $data{
  637.             if (strlen($array$data["column"] ]&& in_array($data["column"]$arrRejectRegistColumn)) {
  638.                 $arrRegist$data["column"] ] $array$data["column"] ];
  639.             }
  640.         }
  641.  
  642.         // 誕生日が入力されている場合
  643.         if (strlen($array["year"]{
  644.             $arrRegist["birth"$array["year"."/"$array["month"."/"$array["day"." 00:00:00";
  645.         }
  646.  
  647.         // パスワードの暗号化
  648.         $arrRegist["password"sha1($arrRegist["password"":" AUTH_MAGIC);
  649.  
  650.         $count 1;
  651.         while ($count != 0{
  652.             $uniqid SC_Utils_Ex::sfGetUniqRandomId("t");
  653.             $count $objConn->getOne("SELECT COUNT(*) FROM dtb_customer WHERE secret_key = ?"array($uniqid));
  654.         }
  655.  
  656.         $arrRegist["secret_key"$uniqid;        // 仮登録ID発行
  657.         $arrRegist["create_date""now()";     // 作成日
  658.         $arrRegist["update_date""now()";     // 更新日
  659.         $arrRegist["first_buy_date""";         // 最初の購入日
  660.  
  661.  
  662.         //-- 仮登録実行
  663.         $this->objQuery->insert("dtb_customer"$arrRegist);
  664.  
  665.         return $uniqid;
  666.     }
  667.  
  668.  
  669.     //エラーチェック
  670.  
  671.     function lfErrorCheckMobile($array{
  672.         $objErr new SC_CheckError($array);
  673.  
  674.         $objErr->doFunc(array("お名前(姓)"'name01'STEXT_LEN)array("EXIST_CHECK""SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
  675.         $objErr->doFunc(array("お名前(名)"'name02'STEXT_LEN)array("EXIST_CHECK""SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
  676.         $objErr->doFunc(array("お名前(カナ/姓)"'kana01'STEXT_LEN)array("EXIST_CHECK""SPTAB_CHECK" ,"MAX_LENGTH_CHECK""KANA_CHECK"));
  677.         $objErr->doFunc(array("お名前(カナ/名)"'kana02'STEXT_LEN)array("EXIST_CHECK""SPTAB_CHECK" ,"MAX_LENGTH_CHECK""KANA_CHECK"));
  678.         $objErr->doFunc(array("郵便番号1""zip01"ZIP01_LEN ,array("EXIST_CHECK""SPTAB_CHECK" ,"NUM_CHECK""NUM_COUNT_CHECK"));
  679.         $objErr->doFunc(array("郵便番号2""zip02"ZIP02_LEN ,array("EXIST_CHECK""SPTAB_CHECK" ,"NUM_CHECK""NUM_COUNT_CHECK"));
  680.         $objErr->doFunc(array("郵便番号""zip01""zip02")array("ALL_EXIST_CHECK"));
  681.         $objErr->doFunc(array("都道府県"'pref')array("SELECT_CHECK","NUM_CHECK"));
  682.         $objErr->doFunc(array("市区町村""addr01"MTEXT_LEN)array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
  683.         $objErr->doFunc(array("番地""addr02"MTEXT_LEN)array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
  684.         $objErr->doFunc(array('メールアドレス'"email"MTEXT_LEN,array("EXIST_CHECK""EMAIL_CHECK""NO_SPTAB" ,"EMAIL_CHAR_CHECK""MAX_LENGTH_CHECK"));
  685.         $objErr->doFunc(array('携帯メールアドレス'"email_mobile"MTEXT_LEN,array("EMAIL_CHECK""NO_SPTAB" ,"EMAIL_CHAR_CHECK""MAX_LENGTH_CHECK""MOBILE_EMAIL_CHECK"));
  686.         $objErr->doFunc(array("電話番号1"'tel01')array("EXIST_CHECK"));
  687.         $objErr->doFunc(array("電話番号2"'tel02')array("EXIST_CHECK"));
  688.         $objErr->doFunc(array("電話番号3"'tel03')array("EXIST_CHECK"));
  689.         $objErr->doFunc(array("電話番号""tel01""tel02""tel03"TEL_LEN,array("TEL_CHECK"));
  690.         $objErr->doFunc(array("FAX番号""fax01""fax02""fax03"TEL_LEN,array("TEL_CHECK"));
  691.         $objErr->doFunc(array("性別""sex",array("SELECT_CHECK""NUM_CHECK"));
  692.         $objErr->doFunc(array("ご職業""job",array("NUM_CHECK"));
  693.         $objErr->doFunc(array("生年月日""year""month""day")array("CHECK_DATE"));
  694.         $objErr->doFunc(array("パスワード"'password'PASSWORD_LEN1PASSWORD_LEN2)array("EXIST_CHECK""ALNUM_CHECK""NUM_RANGE_CHECK"));
  695.         $objErr->doFunc(array("パスワード確認用の質問""reminder",array("SELECT_CHECK""NUM_CHECK"));
  696.         $objErr->doFunc(array("パスワード確認用の質問の答え""reminder_answer"STEXT_LEN,array("EXIST_CHECK""MAX_LENGTH_CHECK"));
  697.         return $objErr->arrErr;
  698.  
  699.     }
  700.  
  701.  
  702.     //---- 入力エラーチェック
  703.     function lfErrorCheck1($array{
  704.  
  705.         $objErr new SC_CheckError($array);
  706.  
  707.         $objErr->doFunc(array("お名前(姓)"'name01'STEXT_LEN)array("EXIST_CHECK""NO_SPTAB""SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
  708.         $objErr->doFunc(array("お名前(名)"'name02'STEXT_LEN)array("EXIST_CHECK""NO_SPTAB""SPTAB_CHECK" "MAX_LENGTH_CHECK"));
  709.         $objErr->doFunc(array("お名前(カナ/姓)"'kana01'STEXT_LEN)array("EXIST_CHECK""NO_SPTAB""SPTAB_CHECK" ,"MAX_LENGTH_CHECK""KANA_CHECK"));
  710.         $objErr->doFunc(array("お名前(カナ/名)"'kana02'STEXT_LEN)array("EXIST_CHECK""NO_SPTAB""SPTAB_CHECK" ,"MAX_LENGTH_CHECK""KANA_CHECK"));
  711.         $objErr->doFunc(array('メールアドレス'"email"MTEXT_LEN,array("NO_SPTAB""EXIST_CHECK""EMAIL_CHECK""SPTAB_CHECK" ,"EMAIL_CHAR_CHECK""MAX_LENGTH_CHECK"));
  712.         $objErr->doFunc(array('携帯メールアドレス'"email_mobile"MTEXT_LEN,array("NO_SPTAB""EMAIL_CHECK""SPTAB_CHECK" ,"EMAIL_CHAR_CHECK""MAX_LENGTH_CHECK""MOBILE_EMAIL_CHECK"));
  713.  
  714.         //現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可
  715.         $array["customer_id"$this->objCustomer->getValue('customer_id');
  716.         if (strlen($array["email"]0{
  717.             $arrRet $this->objQuery->select("email, update_date, del_flg""dtb_customer","customer_id <> ? and (email = ? OR email_mobile = ?) ORDER BY del_flg"array($array["customer_id"]$array["email"]$array["email"]));
  718.  
  719.             if(count($arrRet0{
  720.                 if($arrRet[0]['del_flg'!= '1'{
  721.                     // 会員である場合
  722.                     $objErr->arrErr["email".= "※ すでに会員登録で使用されているメールアドレスです。<br />";
  723.                 else {
  724.                     // 退会した会員である場合
  725.                     $leave_time SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']);
  726.                     $now_time time();
  727.                     $pass_time $now_time $leave_time;
  728.                     // 退会から何時間-経過しているか判定する。
  729.                     $limit_time ENTRY_LIMIT_HOUR 3600;
  730.                     if($pass_time $limit_time{
  731.                         $objErr->arrErr["email".= "※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br />";
  732.                     }
  733.                 }
  734.             }
  735.         }
  736.  
  737.         $objErr->doFunc(array("パスワード"'password'PASSWORD_LEN1PASSWORD_LEN2)array("EXIST_CHECK""SPTAB_CHECK" ,"ALNUM_CHECK""NUM_RANGE_CHECK"));
  738.         $objErr->doFunc(array("パスワード確認用の質問""reminder",array("SELECT_CHECK""NUM_CHECK"));
  739.         $objErr->doFunc(array("パスワード確認用の質問の答え""reminder_answer"STEXT_LEN,array("EXIST_CHECK","SPTAB_CHECK" "MAX_LENGTH_CHECK"));
  740.  
  741.         return $objErr->arrErr;
  742.     }
  743.  
  744.     //---- 入力エラーチェック
  745.     function lfErrorCheck2($array{
  746.  
  747.         $objErr new SC_CheckError($array);
  748.  
  749.         $objErr->doFunc(array("郵便番号1""zip01"ZIP01_LEN ,array("EXIST_CHECK""SPTAB_CHECK" ,"NUM_CHECK""NUM_COUNT_CHECK"));
  750.         $objErr->doFunc(array("郵便番号2""zip02"ZIP02_LEN ,array("EXIST_CHECK""SPTAB_CHECK" ,"NUM_CHECK""NUM_COUNT_CHECK"));
  751.         $objErr->doFunc(array("郵便番号""zip01""zip02")array("ALL_EXIST_CHECK"));
  752.  
  753.         $objErr->doFunc(array("性別""sex",array("SELECT_CHECK""NUM_CHECK"));
  754.         $objErr->doFunc(array("生年月日 (年)""year"4)array("SPTAB_CHECK""NUM_CHECK""NUM_COUNT_CHECK"));
  755.         if (!empty($array["year"])) {
  756.             $objErr->doFunc(array("生年月日 (年)""year"$this->objDate->getStartYear())array("MIN_CHECK"));
  757.             $objErr->doFunc(array("生年月日 (年)""year"$this->objDate->getEndYear())array("MAX_CHECK"));
  758.         }
  759.         if (!isset($objErr->arrErr['year']&& !isset($objErr->arrErr['month']&& !isset($objErr->arrErr['day'])) {
  760.             $objErr->doFunc(array("生年月日""year""month""day")array("CHECK_DATE"));
  761.         }
  762.  
  763.         return $objErr->arrErr;
  764.     }
  765.  
  766.     //---- 入力エラーチェック
  767.     function lfErrorCheck3($array{
  768.  
  769.         $objErr new SC_CheckError($array);
  770.  
  771.         $objErr->doFunc(array("都道府県"'pref')array("SELECT_CHECK","NUM_CHECK"));
  772.         $objErr->doFunc(array("市区町村""addr01"MTEXT_LEN)array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
  773.         $objErr->doFunc(array("番地""addr02"MTEXT_LEN)array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
  774.         $objErr->doFunc(array("電話番号1"'tel01')array("EXIST_CHECK"));
  775.         $objErr->doFunc(array("電話番号2"'tel02')array("EXIST_CHECK"));
  776.         $objErr->doFunc(array("電話番号3"'tel03')array("EXIST_CHECK"));
  777.         $objErr->doFunc(array("電話番号""tel01""tel02""tel03",TEL_ITEM_LEN,array("TEL_CHECK"));
  778.  
  779.         return $objErr->arrErr;
  780.     }
  781.  
  782.     // 郵便番号から住所の取得
  783.     function lfGetAddress($zipcode{
  784.         global $arrPref;
  785.  
  786.         $conn new SC_DBconn(ZIP_DSN);
  787.  
  788.         // 郵便番号検索文作成
  789.         $zipcode mb_convert_kana($zipcode ,"n");
  790.         $sqlse "SELECT state, city, town FROM mtb_zip WHERE zipcode = ?";
  791.  
  792.         $data_list $conn->getAll($sqlsearray($zipcode));
  793.  
  794.         // インデックスと値を反転させる。
  795.         $arrREV_PREF array_flip($arrPref);
  796.  
  797.         /*
  798.           総務省からダウンロードしたデータをそのままインポートすると
  799.           以下のような文字列が入っているので    対策する。
  800.           ・(1・19丁目)
  801.           ・以下に掲載がない場合
  802.         */
  803.         $town =  $data_list[0]['town'];
  804.         $town ereg_replace("(.*)$","",$town);
  805.         $town ereg_replace("以下に掲載がない場合","",$town);
  806.         $data_list[0]['town'$town;
  807.         $data_list[0]['state'$arrREV_PREF[$data_list[0]['state']];
  808.  
  809.         return $data_list;
  810.     }
  811.  
  812.     //顧客情報の取得
  813.     function lfGetCustomerDataMobile(){
  814.  
  815.         //顧客情報取得
  816.         $ret $this->objQuery->select("*","dtb_customer","customer_id=?"array($this->objCustomer->getValue('customer_id')));
  817.         $arrForm $ret[0];
  818.         //$arrForm['email'] = $arrForm['email_mobile'];
  819.  
  820.         //メルマガフラグ取得
  821.         // TODO たぶん未使用
  822.         $arrForm['mailmaga_flg'$this->objQuery->get("dtb_customer","mailmaga_flg","email_mobile=?"array($this->objCustomer->getValue('email_mobile')));
  823.  
  824.         //誕生日の年月日取得
  825.         if (isset($arrForm['birth'])){
  826.             $birth split(" "$arrForm["birth"]);
  827.             list($year$month$daysplit("-",$birth[0]);
  828.  
  829.             $arrForm['year'$year;
  830.             $arrForm['month'$month;
  831.             $arrForm['day'$day;
  832.  
  833.         }
  834.         return $arrForm;
  835.     }
  836.  
  837.     /**
  838.      * フォームパラメータの内容を小文字に変換する.
  839.      *
  840.      * @param array $arrParam パラメータ名の配列
  841.      * @return void 
  842.      */
  843.     function paramToLower(&$arrParam{
  844.         foreach ($arrParam as $key => $val{
  845.             if (!isset($val)) {
  846.                 $this->arrForm[$key"";
  847.             }elseif($key == 'email' || $key == 'email02' || $key == 'email_mobile' || $key == 'email_mobile02'){
  848.                 $this->arrForm[$keystrtolower($val);
  849.             }
  850.         }
  851.     }
  852. }
  853. ?>

Documentation generated on Fri, 24 Feb 2012 13:59:34 +0900 by Seasoft