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

Source for file SC_Helper_Customer.php

Documentation is available at SC_Helper_Customer.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2011 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. /**
  25.  * 会員情報の登録・編集・検索ヘルパークラス.
  26.  *
  27.  *
  28.  * @package Helper
  29.  * @author Hirokazu Fukuda
  30.  * @version $Id: SC_Helper_Customer.php 21221 2011-08-26 01:36:12Z sire $
  31.  */
  32.  
  33.     /**
  34.      * 会員情報の登録・編集処理を行う.
  35.      *
  36.      * @param array $array 登録するデータの配列(SC_FormParamのgetDbArrayの戻り値)
  37.      * @param array $customer_id nullの場合はinsert, 存在する場合はupdate
  38.      * @access public
  39.      * @return integer 登録編集したユーザーのcustomer_id
  40.      */
  41.     function sfEditCustomerData($array$customer_id null{
  42.         $objQuery =SC_Query_Ex::getSingletonInstance();
  43.         $objQuery->begin();
  44.  
  45.         $array["update_date"'CURRENT_TIMESTAMP';    // 更新日
  46.  
  47.         // salt値の生成(insert時)または取得(update時)。
  48.         if(is_numeric($customer_id)) {
  49.             $salt $objQuery->get('salt'"dtb_customer""customer_id = ? "array($customer_id));
  50.  
  51.             // 旧バージョン(2.11未満)からの移行を考慮
  52.             if (empty($salt)) $old_version_flag true;
  53.         }else{
  54.             $salt SC_Utils_Ex::sfGetRandomString(10);
  55.             $array['salt'$salt;
  56.         }
  57.         //-- パスワードの更新がある場合は暗号化
  58.         if ($array['password'== DEFAULT_PASSWORD or $array['password'== ""{
  59.             //更新しない
  60.             unset($array['password']);
  61.         else {
  62.             // 旧バージョン(2.11未満)からの移行を考慮
  63.             if ($old_version_flag{
  64.                 $is_password_updated true;
  65.                 $salt SC_Utils_Ex::sfGetRandomString(10);
  66.                 $array['salt'$salt;
  67.             }
  68.  
  69.             $array['password'SC_Utils_Ex::sfGetHashString($array['password']$salt);
  70.         }
  71.         //-- 秘密の質問の更新がある場合は暗号化
  72.         if ($array["reminder_answer"== DEFAULT_PASSWORD or $array["reminder_answer"== ""{
  73.             //更新しない
  74.             unset($array["reminder_answer"]);
  75.  
  76.             // 旧バージョン(2.11未満)からの移行を考慮
  77.             if ($old_version_flag && $is_password_updated{
  78.                 // パスワードが更新される場合は、平文になっている秘密の質問を暗号化する
  79.                 $reminder_answer $objQuery->get('reminder_answer'"dtb_customer""customer_id = ? "array($customer_id));
  80.                 $array["reminder_answer"SC_Utils_Ex::sfGetHashString($reminder_answer$salt);
  81.             }
  82.         else {
  83.             // 旧バージョン(2.11未満)からの移行を考慮
  84.             if ($old_version_flag && !$is_password_updated{
  85.                 // パスワードが更新されない場合は、平文のままにする
  86.                 unset($array['salt']);
  87.             else {
  88.                 $array["reminder_answer"SC_Utils_Ex::sfGetHashString($array["reminder_answer"]$salt);
  89.             }
  90.         }
  91.  
  92.         //-- 編集登録実行
  93.         if (is_numeric($customer_id)){
  94.             // 編集
  95.             $objQuery->update("dtb_customer"$array"customer_id = ? "array($customer_id));
  96.         else {
  97.             // 新規登録
  98.  
  99.             // 顧客ID
  100.             $customer_id $objQuery->nextVal('dtb_customer_customer_id');
  101.             $array['customer_id'$customer_id;
  102.             // 作成日
  103.             if (is_null($array["create_date"])){
  104.                 $array["create_date"'CURRENT_TIMESTAMP';
  105.             }
  106.             $objQuery->insert("dtb_customer"$array);
  107.         }
  108.  
  109.         $objQuery->commit();
  110.         return $customer_id;
  111.     }
  112.  
  113.     /**
  114.      * 注文番号、利用ポイント、加算ポイントから最終ポイントを取得する.
  115.      *
  116.      * @param integer $order_id 注文番号
  117.      * @param integer $use_point 利用ポイント
  118.      * @param integer $add_point 加算ポイント
  119.      * @return array 最終ポイントの配列
  120.      */
  121.     function sfGetCustomerPoint($order_id$use_point$add_point{
  122.         $objQuery =SC_Query_Ex::getSingletonInstance();
  123.         $arrRet $objQuery->select("customer_id""dtb_order""order_id = ?"array($order_id));
  124.         $customer_id $arrRet[0]['customer_id'];
  125.         if ($customer_id != "" && $customer_id >= 1{
  126.             if (USE_POINT !== false{
  127.                 $arrRet $objQuery->select('point'"dtb_customer""customer_id = ?"array($customer_id));
  128.                 $point $arrRet[0]['point'];
  129.                 $total_point $arrRet[0]['point'$use_point $add_point;
  130.             else {
  131.                 $total_point 0;
  132.                 $point 0;
  133.             }
  134.         else {
  135.             $total_point "";
  136.             $point "";
  137.         }
  138.         return array($point$total_point);
  139.     }
  140.  
  141.     /**
  142.      * emailアドレスから、登録済み会員や退会済み会員をチェックする
  143.      *
  144.      * XXX SC_CheckError からしか呼び出されず, 本クラスの中で SC_CheckError を呼び出している
  145.      *
  146.      * @param string $email  メールアドレス
  147.      * @return integer  0:登録可能     1:登録済み   2:再登録制限期間内削除ユーザー  3:自分のアドレス
  148.      */
  149.     function sfCheckRegisterUserFromEmail($email{
  150.         $objCustomer new SC_Customer_Ex();
  151.         $objQuery =SC_Query_Ex::getSingletonInstance();
  152.  
  153.         // ログインしている場合、すでに登録している自分のemailの場合
  154.         if ($objCustomer->isLoginSuccess(true)
  155.             && SC_Helper_Customer_Ex::sfCustomerEmailDuplicationCheck($objCustomer->getValue('customer_id')$email)) {
  156.             // 自分のアドレス
  157.             return 3;
  158.         }
  159.  
  160.         $arrRet $objQuery->select("email, update_date, del_flg",
  161.             "dtb_customer",
  162.             "email = ? OR email_mobile = ? ORDER BY del_flg",
  163.             array($email$email));
  164.  
  165.         if (count($arrRet0{
  166.             // 会員である場合
  167.             if ($arrRet[0]['del_flg'!= '1'{
  168.                 // 登録済み
  169.                 return 1;
  170.             else {
  171.                 // 退会した会員である場合
  172.                 $leave_time SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']);
  173.                 $now_time   time();
  174.                 $pass_time  $now_time $leave_time;
  175.                 // 退会から何時間-経過しているか判定する。
  176.                 $limit_time ENTRY_LIMIT_HOUR 3600;
  177.                 if($pass_time $limit_time{
  178.                     // 再登録制限期間内削除ユーザー
  179.                     return 2;
  180.                 }
  181.             }
  182.         }
  183.  
  184.         // 登録可能
  185.         return 0;
  186.     }
  187.  
  188.     /**
  189.      * ログイン時メールアドレス重複チェック.
  190.      *
  191.      * 会員の保持する email, mobile_email が, 引数 $email と一致するかチェックする
  192.      *
  193.      * @param integer $customer_id チェック対象顧客の顧客ID
  194.      * @param string $email チェック対象のメールアドレス
  195.      * @return boolean メールアドレスが重複する場合 true
  196.      */
  197.     function sfCustomerEmailDuplicationCheck($customer_id$email{
  198.         $objQuery =SC_Query_Ex::getSingletonInstance();
  199.  
  200.         $arrResults $objQuery->getRow('email, email_mobile',
  201.                                         'dtb_customer''customer_id = ?',
  202.                                         array($customer_id));
  203.         $return =
  204.                strlen($arrResults['email']>= && $email === $arrResults['email']
  205.             || strlen($arrResults['email_mobile']>= &&  $email === $arrResults['email_mobile']
  206.         ;
  207.         return $return;
  208.     }
  209.  
  210.     /**
  211.      * customer_idから会員情報を取得する
  212.      *
  213.      * @param mixed $customer_id 
  214.      * @param mixed $mask_flg 
  215.      * @access public
  216.      * @return array 会員情報の配列を返す
  217.      */
  218.     function sfGetCustomerData($customer_id$mask_flg true{
  219.         $objQuery       =SC_Query_Ex::getSingletonInstance();
  220.  
  221.         // 会員情報DB取得
  222.         $ret        $objQuery->select("*","dtb_customer","customer_id=?"array($customer_id));
  223.         $arrForm    $ret[0];
  224.  
  225.         // 確認項目に複製
  226.         $arrForm['email02'$arrForm['email'];
  227.         $arrForm['email_mobile02'$arrForm['email_mobile'];
  228.  
  229.         // 誕生日を年月日に分ける
  230.         if (isset($arrForm['birth'])){
  231.             $birth explode(" "$arrForm['birth']);
  232.             list($arrForm['year']$arrForm['month']$arrForm['day']explode("-",$birth[0]);
  233.         }
  234.  
  235.         if ($mask_flg{
  236.             $arrForm['password']          DEFAULT_PASSWORD;
  237.             $arrForm['password02']        DEFAULT_PASSWORD;
  238.             $arrForm['reminder_answer']   DEFAULT_PASSWORD;
  239.         }
  240.         return $arrForm;
  241.     }
  242.  
  243.     /**
  244.      * 顧客ID指定またはwhere条件指定での会員情報取得(単一行データ)
  245.      *
  246.      * TODO: sfGetCustomerDataと統合したい
  247.      *
  248.      * @param integer $customer_id 顧客ID (指定無しでも構わないが、Where条件を入れる事)
  249.      * @param string $add_where 追加WHERE条件
  250.      * @param array $arrAddVal 追加WHEREパラメーター
  251.      * @access public
  252.      * @return array 対象会員データ
  253.      */
  254.     function sfGetCustomerDataFromId($customer_id$add_where ''$arrAddVal array()) {
  255.         $objQuery   =SC_Query_Ex::getSingletonInstance();
  256.         if($add_where == ''{
  257.             $where 'customer_id = ?';
  258.             $arrData $objQuery->getRow("*""dtb_customer"$wherearray($customer_id));
  259.         }else{
  260.             $where $add_where;
  261.             if(SC_Utils_Ex::sfIsInt($customer_id)) {
  262.                 $where .= ' AND customer_id = ?';
  263.                 $arrAddVal[$customer_id;
  264.             }
  265.             $arrData $objQuery->getRow("*""dtb_customer"$where$arrAddVal);
  266.         }
  267.         return $arrData;
  268.     }
  269.  
  270.     /**
  271.      * 重複しない会員登録キーを発行する。
  272.      *
  273.      * @access public
  274.      * @return string 会員登録キーの文字列
  275.      */
  276.     function sfGetUniqSecretKey({
  277.         $objQuery   =SC_Query_Ex::getSingletonInstance();
  278.         $count      1;
  279.         while ($count != 0{
  280.             $uniqid SC_Utils_Ex::sfGetUniqRandomId('r');
  281.             $count  $objQuery->count("dtb_customer""secret_key = ?"array($uniqid));
  282.         }
  283.         return $uniqid;
  284.     }
  285.  
  286.     /**
  287.      * 会員登録キーから顧客IDを取得する.
  288.      *
  289.      * @param string $uniqid 会員登録キー
  290.      * @param boolean $check_status 本会員のみを対象とするか
  291.      * @access public
  292.      * @return integer 顧客ID
  293.      */
  294.     function sfGetCustomerId($uniqid$check_status false{
  295.         $objQuery   =SC_Query_Ex::getSingletonInstance();
  296.         $where      "secret_key = ?";
  297.  
  298.         if ($check_status{
  299.             $where .= ' AND status = 1 AND del_flg = 0';
  300.         }
  301.  
  302.         return $objQuery->get("customer_id""dtb_customer"$wherearray($uniqid));
  303.     }
  304.  
  305.     /**
  306.      * 会員登録時フォーム初期化
  307.      *
  308.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  309.      * @param boolean $isAdmin true:管理者画面 false:顧客向け
  310.      * @access public
  311.      * @return void 
  312.      */
  313.     function sfCustomerEntryParam (&$objFormParam$isAdmin false{
  314.         SC_Helper_Customer_Ex::sfCustomerCommonParam($objFormParam);
  315.         SC_Helper_Customer_Ex::sfCustomerRegisterParam($objFormParam$isAdmin);
  316.         if ($isAdmin{
  317.             $objFormParam->addParam("顧客ID""customer_id"INT_LEN'n'array("NUM_CHECK"));
  318.             $objFormParam->addParam('携帯メールアドレス'"email_mobile"null'a'array("NO_SPTAB""EMAIL_CHECK""SPTAB_CHECK" ,"EMAIL_CHAR_CHECK""MOBILE_EMAIL_CHECK"));
  319.             $objFormParam->addParam("会員状態"'status'INT_LEN'n'array("EXIST_CHECK""NUM_CHECK""MAX_LENGTH_CHECK"));
  320.             $objFormParam->addParam("SHOP用メモ"'note'LTEXT_LEN'KVa'array("MAX_LENGTH_CHECK"));
  321.             $objFormParam->addParam("所持ポイント"'point'INT_LEN'n'array("NUM_CHECK"));
  322.         }
  323.  
  324.         if (SC_Display_Ex::detectDevice(== DEVICE_TYPE_MOBILE{
  325.             // 登録確認画面の「戻る」ボタンのためのパラメーター
  326.             $objFormParam->addParam("戻る""return"''''array()''false);
  327.         }
  328.     }
  329.  
  330.     /**
  331.      * 会員情報変更フォーム初期化
  332.      *
  333.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  334.      * @access public
  335.      * @return void 
  336.      */
  337.     function sfCustomerMypageParam (&$objFormParam{
  338.         SC_Helper_Customer_Ex::sfCustomerCommonParam($objFormParam);
  339.         SC_Helper_Customer_Ex::sfCustomerRegisterParam($objFormParamfalsetrue);
  340.         if (SC_Display_Ex::detectDevice(!== DEVICE_TYPE_MOBILE){
  341.             $objFormParam->addParam('携帯メールアドレス'"email_mobile"null'a'array("NO_SPTAB""EMAIL_CHECK""SPTAB_CHECK" ,"EMAIL_CHAR_CHECK""MOBILE_EMAIL_CHECK"));
  342.             $objFormParam->addParam('携帯メールアドレス(確認)'"email_mobile02"null'a'array("NO_SPTAB""EMAIL_CHECK","SPTAB_CHECK" "EMAIL_CHAR_CHECK""MOBILE_EMAIL_CHECK")""false);
  343.         else {
  344.             $objFormParam->addParam('携帯メールアドレス'"email_mobile"null'a'array("EXIST_CHECK""NO_SPTAB""EMAIL_CHECK""SPTAB_CHECK" ,"EMAIL_CHAR_CHECK""MOBILE_EMAIL_CHECK"));
  345.             $objFormParam->addParam('メールアドレス''email'null'a'array("NO_SPTAB""EMAIL_CHECK""SPTAB_CHECK" ,"EMAIL_CHAR_CHECK"));
  346.         }
  347.     }
  348.  
  349.     /**
  350.      * お届け先フォーム初期化
  351.      *
  352.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  353.      * @access public
  354.      * @return void 
  355.      */
  356.     function sfCustomerOtherDelivParam (&$objFormParam{
  357.         SC_Helper_Customer_Ex::sfCustomerCommonParam($objFormParam);
  358.         $objFormParam->addParam(""'other_deliv_id');
  359.     }
  360.  
  361.     /**
  362.      * 会員共通
  363.      *
  364.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  365.      * @access public
  366.      * @return void 
  367.      */
  368.     function sfCustomerCommonParam (&$objFormParam{
  369.         $objFormParam->addParam("お名前(姓)"'name01'STEXT_LEN'aKV'array("EXIST_CHECK""NO_SPTAB""SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
  370.         $objFormParam->addParam("お名前(名)"'name02'STEXT_LEN'aKV'array("EXIST_CHECK""NO_SPTAB""SPTAB_CHECK" "MAX_LENGTH_CHECK"));
  371.         $objFormParam->addParam("お名前(フリガナ・姓)"'kana01'STEXT_LEN'CKV'array("EXIST_CHECK""NO_SPTAB""SPTAB_CHECK" ,"MAX_LENGTH_CHECK""KANA_CHECK"));
  372.         $objFormParam->addParam("お名前(フリガナ・名)"'kana02'STEXT_LEN'CKV'array("EXIST_CHECK""NO_SPTAB""SPTAB_CHECK" ,"MAX_LENGTH_CHECK""KANA_CHECK"));
  373.         $objFormParam->addParam("郵便番号1""zip01"ZIP01_LEN'n'array("EXIST_CHECK""SPTAB_CHECK" ,"NUM_CHECK""NUM_COUNT_CHECK"));
  374.         $objFormParam->addParam("郵便番号2""zip02"ZIP02_LEN'n'array("EXIST_CHECK""SPTAB_CHECK" ,"NUM_CHECK""NUM_COUNT_CHECK"));
  375.         $objFormParam->addParam("都道府県"'pref'INT_LEN'n'array("EXIST_CHECK""NUM_CHECK"));
  376.         $objFormParam->addParam("住所1""addr01"MTEXT_LEN'aKV'array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  377.         $objFormParam->addParam("住所2""addr02"MTEXT_LEN'aKV'array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  378.         $objFormParam->addParam("お電話番号1"'tel01'TEL_ITEM_LEN'n'array("EXIST_CHECK""SPTAB_CHECK""NUM_CHECK""MAX_LENGTH_CHECK"));
  379.         $objFormParam->addParam("お電話番号2"'tel02'TEL_ITEM_LEN'n'array("EXIST_CHECK""SPTAB_CHECK""NUM_CHECK""MAX_LENGTH_CHECK"));
  380.         $objFormParam->addParam("お電話番号3"'tel03'TEL_ITEM_LEN'n'array("EXIST_CHECK""SPTAB_CHECK""NUM_CHECK""MAX_LENGTH_CHECK"));
  381.     }
  382.  
  383.     /**
  384.      * 会員登録共通
  385.      *
  386.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  387.      * @param boolean $isAdmin true:管理者画面 false:会員向け
  388.      * @param boolean $is_mypage マイページの場合 true
  389.      * @return void 
  390.      */
  391.     function sfCustomerRegisterParam (&$objFormParam$isAdmin false$is_mypage false{
  392.         $objFormParam->addParam("パスワード"'password'STEXT_LEN'a'array("EXIST_CHECK""SPTAB_CHECK""ALNUM_CHECK""MAX_LENGTH_CHECK"));
  393.         $objFormParam->addParam("パスワード確認用の質問の答え""reminder_answer"STEXT_LEN'aKV'array("EXIST_CHECK""SPTAB_CHECK""MAX_LENGTH_CHECK"));
  394.         $objFormParam->addParam("パスワード確認用の質問"'reminder'STEXT_LEN'n'array("EXIST_CHECK""NUM_CHECK""MAX_LENGTH_CHECK"));
  395.         $objFormParam->addParam("性別"'sex'INT_LEN'n'array("EXIST_CHECK""NUM_CHECK""MAX_LENGTH_CHECK"));
  396.         $objFormParam->addParam("職業"'job'INT_LEN'n'array("NUM_CHECK""MAX_LENGTH_CHECK"));
  397.         $objFormParam->addParam("年"'year'4'n'array("NUM_CHECK""MAX_LENGTH_CHECK")""false);
  398.         $objFormParam->addParam("月"'month'2'n'array("NUM_CHECK""MAX_LENGTH_CHECK")""false);
  399.         $objFormParam->addParam("日"'day'2'n'array("NUM_CHECK""MAX_LENGTH_CHECK")""false);
  400.         $objFormParam->addParam("メールマガジン""mailmaga_flg"INT_LEN'n'array("EXIST_CHECK""NUM_CHECK""MAX_LENGTH_CHECK"));
  401.  
  402.         if (SC_Display_Ex::detectDevice(!== DEVICE_TYPE_MOBILE){
  403.             $objFormParam->addParam("FAX番号1"'fax01'TEL_ITEM_LEN'n'array("SPTAB_CHECK"));
  404.             $objFormParam->addParam("FAX番号2"'fax02'TEL_ITEM_LEN'n'array("SPTAB_CHECK"));
  405.             $objFormParam->addParam("FAX番号3"'fax03'TEL_ITEM_LEN'n'array("SPTAB_CHECK"));
  406.             $objFormParam->addParam('メールアドレス''email'null'a'array("NO_SPTAB""EXIST_CHECK""EMAIL_CHECK""SPTAB_CHECK" ,"EMAIL_CHAR_CHECK"));
  407.             if(!$isAdmin{
  408.                 $objFormParam->addParam("パスワード(確認)"'password02'STEXT_LEN'a'array("EXIST_CHECK""SPTAB_CHECK" ,"ALNUM_CHECK")""false);
  409.                 $objFormParam->addParam('メールアドレス(確認)'"email02"null'a'array("NO_SPTAB""EXIST_CHECK""EMAIL_CHECK","SPTAB_CHECK" "EMAIL_CHAR_CHECK")""false);
  410.             }
  411.         else {
  412.             if (!$is_mypage{
  413.                 $objFormParam->addParam('メールアドレス''email'null'a'array("EXIST_CHECK""EMAIL_CHECK""NO_SPTAB" ,"EMAIL_CHAR_CHECK""MOBILE_EMAIL_CHECK"));
  414.             }
  415.         }
  416.     }
  417.  
  418.     function sfCustomerOtherDelivErrorCheck(&$objFormParam{
  419.         $objErr SC_Helper_Customer_Ex::sfCustomerCommonErrorCheck($objFormParam);
  420.         return $objErr->arrErr;
  421.     }
  422.  
  423.     /**
  424.      * 会員登録エラーチェック
  425.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  426.      * @access public
  427.      * @return array エラーの配列
  428.      */
  429.     function sfCustomerEntryErrorCheck(&$objFormParam{
  430.         $objErr SC_Helper_Customer_Ex::sfCustomerCommonErrorCheck($objFormParam);
  431.         $objErr SC_Helper_Customer_Ex::sfCustomerRegisterErrorCheck($objErr);
  432.  
  433.         /*
  434.          * sfCustomerRegisterErrorCheck() では, ログイン中の場合は重複チェック
  435.          * されないので, 再度チェックを行う
  436.          */
  437.         $objCustomer new SC_Customer_Ex();
  438.         if ($objCustomer->isLoginSuccess(true)
  439.             && SC_Helper_Customer_Ex::sfCustomerEmailDuplicationCheck($objCustomer->getValue('customer_id')$objFormParam->getValue('email'))) {
  440.             $objErr->arrErr['email'.= "※ すでに会員登録で使用されているメールアドレスです。<br />";
  441.         }
  442.         if ($objCustomer->isLoginSuccess(true)
  443.             && SC_Helper_Customer_Ex::sfCustomerEmailDuplicationCheck($objCustomer->getValue('customer_id')$objFormParam->getValue('email_mobile'))) {
  444.             $objErr->arrErr['email_mobile'.= "※ すでに会員登録で使用されているメールアドレスです。<br />";
  445.         }
  446.  
  447.         return $objErr->arrErr;
  448.     }
  449.  
  450.     /**
  451.      * 会員情報変更エラーチェック
  452.      *
  453.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  454.      * @param boolean $isAdmin 管理画面チェック時:true
  455.      * @access public
  456.      * @return array エラーの配列
  457.      */
  458.     function sfCustomerMypageErrorCheck(&$objFormParam$isAdmin false{
  459.  
  460.         $objFormParam->toLower('email_mobile');
  461.         $objFormParam->toLower('email_mobile02');
  462.  
  463.         $objErr SC_Helper_Customer_Ex::sfCustomerCommonErrorCheck($objFormParam);
  464.         $objErr SC_Helper_Customer_Ex::sfCustomerRegisterErrorCheck($objErr$isAdmin);
  465.  
  466.         if (isset($objErr->arrErr['password'])
  467.              && $objFormParam->getValue('password'== DEFAULT_PASSWORD{
  468.             unset($objErr->arrErr['password']);
  469.             unset($objErr->arrErr['password02']);
  470.         }
  471.         if (isset($objErr->arrErr['reminder_answer'])
  472.                 && $objFormParam->getValue('reminder_answer'== DEFAULT_PASSWORD{
  473.             unset($objErr->arrErr['reminder_answer']);
  474.         }
  475.         return $objErr->arrErr;
  476.     }
  477.  
  478.     /**
  479.      * 会員エラーチェック共通
  480.      *
  481.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  482.      * @access private
  483.      * @return array エラー情報の配列
  484.      */
  485.     function sfCustomerCommonErrorCheck(&$objFormParam{
  486.         $objFormParam->convParam();
  487.         $objFormParam->toLower('email');
  488.         $objFormParam->toLower('email02');
  489.         $arrParams $objFormParam->getHashArray();
  490.  
  491.         // 入力データを渡す。
  492.         $objErr new SC_CheckError_Ex($arrParams);
  493.         $objErr->arrErr $objFormParam->checkError();
  494.  
  495.         $objErr->doFunc(array("お電話番号""tel01""tel02""tel03"),array("TEL_CHECK"));
  496.         $objErr->doFunc(array("郵便番号""zip01""zip02")array("ALL_EXIST_CHECK"));
  497.  
  498.         return $objErr;
  499.     }
  500.  
  501.     /**
  502.      * 会員登録編集共通の相関チェック
  503.      *
  504.      * @param SC_CheckError $objErr SC_CheckError インスタンス
  505.      * @param boolean $isAdmin 管理画面チェック時:true
  506.      * @return SC_CheckError $objErr エラー情報
  507.      */
  508.     function sfCustomerRegisterErrorCheck(&$objErr$isAdmin false{
  509.         $objErr->doFunc(array("生年月日"'year''month''day')array("CHECK_BIRTHDAY"));
  510.  
  511.         if (SC_Display_Ex::detectDevice(!== DEVICE_TYPE_MOBILE{
  512.             if (!$isAdmin{
  513.                 $objErr->doFunc(array('パスワード''パスワード(確認)''password'"password02",array("EQUAL_CHECK"));
  514.                 $objErr->doFunc(array('メールアドレス''メールアドレス(確認)''email'"email02",array("EQUAL_CHECK"));
  515.             }
  516.             $objErr->doFunc(array("FAX番号""fax01""fax02""fax03",array("TEL_CHECK"));
  517.         }
  518.  
  519.         if (!$isAdmin{
  520.             // 現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可
  521.             $objErr->doFunc(array("メールアドレス"'email')array("CHECK_REGIST_CUSTOMER_EMAIL"));
  522.             $objErr->doFunc(array("携帯メールアドレス"'email_mobile')array("CHECK_REGIST_CUSTOMER_EMAIL""MOBILE_EMAIL_CHECK"));
  523.         }
  524.         return $objErr;
  525.     }
  526.  
  527.     /**
  528.      * 顧客検索パラメーター(管理画面用)
  529.      *
  530.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  531.      * @access public
  532.      * @return void 
  533.      */
  534.     function sfSetSearchParam(&$objFormParam{
  535.         $objFormParam->addParam('顧客ID''search_customer_id'ID_MAX_LEN'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  536.         $objFormParam->addParam('お名前''search_name'STEXT_LEN'KVa'array("SPTAB_CHECK""MAX_LENGTH_CHECK"));
  537.         $objFormParam->addParam('お名前(フリガナ)''search_kana'STEXT_LEN'CKV'array("SPTAB_CHECK""MAX_LENGTH_CHECK""KANABLANK_CHECK"));
  538.         $objFormParam->addParam('都道府県''search_pref'INT_LEN'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  539.         $objFormParam->addParam('誕生日(開始年)''search_b_start_year'4'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  540.         $objFormParam->addParam('誕生日(開始月)''search_b_start_month'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  541.         $objFormParam->addParam('誕生日(開始日)''search_b_start_day'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  542.  
  543.         $objFormParam->addParam('誕生日(終了年)''search_b_end_year'4'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  544.         $objFormParam->addParam('誕生日(終了月)''search_b_end_month'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  545.         $objFormParam->addParam('誕生日(終了日)''search_b_end_day'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  546.         $objFormParam->addParam('誕生月''search_birth_month'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  547.         $objFormParam->addParam('メールアドレス''search_email'MTEXT_LEN'a'array("SPTAB_CHECK""EMAIL_CHAR_CHECK""MAX_LENGTH_CHECK"));
  548.         $objFormParam->addParam('携帯メールアドレス''search_email_mobile'MTEXT_LEN'a'array("SPTAB_CHECK""EMAIL_CHAR_CHECK""MAX_LENGTH_CHECK"));
  549.         $objFormParam->addParam('電話番号''search_tel'TEL_LEN'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  550.         $objFormParam->addParam('購入金額(開始)''search_buy_total_from'PRICE_LEN'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  551.         $objFormParam->addParam('購入金額(終了)''search_buy_total_to'PRICE_LEN'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  552.         $objFormParam->addParam('購入回数(開始)''search_buy_times_from'INT_LEN'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  553.         $objFormParam->addParam('購入回数(終了)''search_buy_times_to'INT_LEN'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  554.         $objFormParam->addParam('登録・更新日(開始年)''search_start_year'4'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  555.         $objFormParam->addParam('登録・更新日(開始月)''search_start_month'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  556.         $objFormParam->addParam('登録・更新日(開始日)''search_start_day'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  557.         $objFormParam->addParam('登録・更新日(終了年)''search_end_year'4'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  558.         $objFormParam->addParam('登録・更新日(終了月)''search_end_month'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  559.         $objFormParam->addParam('登録・更新日(終了日)''search_end_day'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  560.         $objFormParam->addParam('表示件数''search_page_max'INT_LEN'n'array("NUM_CHECK","MAX_LENGTH_CHECK")1false);
  561.         $objFormParam->addParam('ページ番号''search_pageno'INT_LEN'n'array("NUM_CHECK","MAX_LENGTH_CHECK")1false);
  562.         $objFormParam->addParam('最終購入日(開始年)''search_buy_start_year'4'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  563.         $objFormParam->addParam('最終購入日(開始月)''search_buy_start_month'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  564.         $objFormParam->addParam('最終購入日(開始日)''search_buy_start_day'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  565.         $objFormParam->addParam('最終購入日(終了年)''search_buy_end_year'4'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  566.         $objFormParam->addParam('最終購入日(終了月)''search_buy_end_month'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  567.         $objFormParam->addParam('最終購入日(終了日)''search_buy_end_day'2'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  568.         $objFormParam->addParam('購入商品コード''search_buy_product_code'STEXT_LEN'KVa'array("SPTAB_CHECK""MAX_LENGTH_CHECK"));
  569.         $objFormParam->addParam('購入商品名''search_buy_product_name'STEXT_LEN'KVa'array("SPTAB_CHECK""MAX_LENGTH_CHECK"));
  570.         $objFormParam->addParam('カテゴリ''search_category_id'INT_LEN'n'array("NUM_CHECK","MAX_LENGTH_CHECK"));
  571.         $objFormParam->addParam('性別''search_sex'INT_LEN'n'array("MAX_LENGTH_CHECK"));
  572.         $objFormParam->addParam('会員状態''search_status'INT_LEN'n'array("MAX_LENGTH_CHECK"));
  573.         $objFormParam->addParam('職業''search_job'INT_LEN'n'array("MAX_LENGTH_CHECK"));
  574.     }
  575.  
  576.     /**
  577.      * 顧客検索パラメーター エラーチェック(管理画面用)
  578.      *
  579.      * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  580.      * @access public
  581.      * @return array エラー配列
  582.      */
  583.     function sfCheckErrorSearchParam(&$objFormParam{
  584.         // パラメーターの基本チェック
  585.         $arrErr $objFormParam->checkError();
  586.         // 拡張エラーチェック初期化
  587.         $objErr new SC_CheckError_Ex($objFormParam->getHashArray());
  588.         // 拡張エラーチェック
  589.         $objErr->doFunc(array("誕生日(開始日)""search_b_start_year""search_b_start_month""search_b_start_day")array("CHECK_DATE"));
  590.         $objErr->doFunc(array("誕生日(終了日)""search_b_end_year""search_b_end_month""search_b_end_day")array("CHECK_DATE"));
  591.  
  592.         $objErr->doFunc(array("誕生日(開始日)","誕生日(終了日)""search_b_start_year""search_b_start_month""search_b_start_day""search_b_end_year""search_b_end_month""search_b_end_day")array("CHECK_SET_TERM"));
  593.         $objErr->doFunc(array("登録・更新日(開始日)""search_start_year""search_start_month""search_start_day",)array("CHECK_DATE"));
  594.         $objErr->doFunc(array("登録・更新日(終了日)""search_end_year""search_end_month""search_end_day")array("CHECK_DATE"));
  595.         $objErr->doFunc(array("登録・更新日(開始日)","登録・更新日(終了日)""search_start_year""search_start_month""search_start_day""search_end_year""search_end_month""search_end_day")array("CHECK_SET_TERM"));
  596.         $objErr->doFunc(array("最終購入日(開始日)""search_buy_start_year""search_buy_start_month""search_buy_start_day",)array("CHECK_DATE"));
  597.         $objErr->doFunc(array("最終購入(終了日)""search_buy_end_year""search_buy_end_month""search_buy_end_day")array("CHECK_DATE"));
  598.         //購入金額(from) > 購入金額(to) の場合はエラーとする
  599.         $objErr->doFunc(array("最終購入日(開始日)","登録・更新日(終了日)""search_buy_start_year""search_buy_start_month""search_buy_start_day""search_buy_end_year""search_buy_end_month""search_buy_end_day")array("CHECK_SET_TERM"));
  600.  
  601.         if ((SC_Utils_Ex::sfIsInt($array["search_buy_total_from"])
  602.              && SC_Utils_Ex::sfIsInt($array["search_buy_total_to"]))
  603.              && ($array["search_buy_total_from"$array["buy_total_to"])) {
  604.             $objErr->arrErr["search_buy_total_from".= "※ 購入金額の指定範囲が不正です。";
  605.         }
  606.  
  607.         if ((SC_Utils_Ex::sfIsInt($array["search_buy_times_from"])
  608.              && SC_Utils_Ex::sfIsInt($array["search_buy_times_to"]))
  609.              && ($array["search_buy_times_from"$array["search_buy_times_to"])) {
  610.             $objErr->arrErr["search_buy_times_from".= "※ 購入回数の指定範囲が不正です。";
  611.         }
  612.         if(!SC_Utils_Ex::isBlank($objErr->arrErr)) {
  613.             $arrErr array_merge($arrErr$objErr->arrErr);
  614.         }
  615.         return $arrErr;
  616.     }
  617.  
  618.     /**
  619.      * 顧客一覧検索をする処理(ページング処理付き、管理画面用共通処理)
  620.      *
  621.      * @param array $arrParam 検索パラメーター連想配列
  622.      * @param string $limitMode ページングを利用するか判定用フラグ
  623.      * @return array( integer 全体件数, mixed 顧客データ一覧配列, mixed SC_PageNaviオブジェクト)
  624.      */
  625.     function sfGetSearchData($arrParam$limitMode ''{
  626.         $objQuery =SC_Query_Ex::getSingletonInstance();
  627.         $objSelect new SC_CustomerList_Ex($arrParam'customer');
  628.         $page_max SC_Utils_Ex::sfGetSearchPageMax($arrParam['search_page_max']);
  629.         $disp_pageno $arrParam['search_pageno'];
  630.         if($disp_pageno == 0{
  631.             $disp_pageno 1;
  632.         }
  633.         $offset intval($page_max(intval($disp_pageno1);
  634.         if ($limitMode == ''{
  635.             $objSelect->setLimitOffset($page_max$offset);
  636.         }
  637.         $arrData $objQuery->getAll($objSelect->getList()$objSelect->arrVal);
  638.  
  639.         // 該当全体件数の取得
  640.         $linemax $objQuery->getOne($objSelect->getListCount()$objSelect->arrVal);
  641.  
  642.         // ページ送りの取得
  643.         $objNavi new SC_PageNavi_Ex($arrParam['search_pageno'],
  644.                                     $linemax,
  645.                                     $page_max,
  646.                                     'fnNaviSearchOnlyPage',
  647.                                     NAVI_PMAX);
  648.         return array($linemax$arrData$objNavi);
  649.     }
  650. }

Documentation generated on Fri, 24 Feb 2012 14:02:40 +0900 by Seasoft