Source for file LC_Page_CampaignApplication.php

Documentation is available at LC_Page_CampaignApplication.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_CampaignApplication.php 17675 2008-11-01 06:44:55Z Seasoft $
  33.  */
  34.  
  35.     // }}}
  36.     // {{{ functions
  37.  
  38.     /**
  39.      * Page を初期化する.
  40.      *
  41.      * @return void 
  42.      */
  43.     function init({
  44.         parent::init();
  45.         $this->tpl_mainpage = TEMPLATE_DIR '/campaign/application.tpl';
  46.         $this->allowClientCache();
  47.     }
  48.  
  49.     /**
  50.      * Page のプロセス.
  51.      *
  52.      * @return void 
  53.      */
  54.     function process({
  55.         global $objCampaignSess;
  56.  
  57.         $objView new SC_SiteView(false);
  58.         $objQuery new SC_Query();
  59.         $objCustomer new SC_Customer();
  60.         $objCampaignSess new SC_CampaignSession();
  61.         // クッキー管理クラス
  62.         $objCookie new SC_Cookie(COOKIE_EXPIRE);
  63.  
  64.         $objLoginFormParam new SC_FormParam();    // ログインフォーム用
  65.         $this->lfInitLoginFormParam($objLoginFormParam)// 初期設定
  66.         $objLoginFormParam->setParam($_POST);        // POST値の取得
  67.  
  68.         // ディレクトリ名を取得
  69.         $dir_name dirname($_SERVER['PHP_SELF']);
  70.         $arrDir split('/'$dir_name);
  71.         $dir_name $arrDir[count($arrDir-1];
  72.  
  73.         /* セッションにキャンペーンデータを書き込む */
  74.         // キャンペーンからの遷移という情報を保持
  75.         $objCampaignSess->setIsCampaign();
  76.         // キャンペーンIDを保持
  77.         $campaign_id $objQuery->get("dtb_campaign""campaign_id""directory_name = ? AND del_flg = 0"array($dir_name));
  78.         $objCampaignSess->setCampaignId($campaign_id);
  79.         // キャンペーンディレクトリ名を保持
  80.         $objCampaignSess->setCampaignDir($dir_name);
  81.  
  82.         // キャンペーンが開催中かをチェック
  83.         if($this->lfCheckActive($dir_name$objQuery)) {
  84.             $status CAMPAIGN_TEMPLATE_ACTIVE;
  85.             $this->is_active true;
  86.         else {
  87.             $status CAMPAIGN_TEMPLATE_END;
  88.             $this->is_active false;
  89.         }
  90.  
  91.         switch($_POST['mode']{
  92.             // ログインチェック
  93.         case 'login':
  94.             $objLoginFormParam->toLower('login_email');
  95.             $this->arrErr $objLoginFormParam->checkError();
  96.             $arrForm =  $objLoginFormParam->getHashArray();
  97.             // クッキー保存判定
  98.             if($arrForm['login_memory'== "1" && $arrForm['login_email'!= ""{
  99.                 $objCookie->setCookie('login_email'$_POST['login_email']);
  100.             else {
  101.                 $objCookie->setCookie('login_email''');
  102.             }
  103.  
  104.             if(count($this->arrErr== 0{
  105.                 // ログイン判定
  106.                 if(!$objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass']$arrForm['login_email'])) {
  107.                     // 仮登録の判定
  108.                     $where "email = ? AND status = 1 AND del_flg = 0";
  109.                     $ret $objQuery->count("dtb_customer"$wherearray($arrForm['login_email']));
  110.  
  111.                     if($ret 0{
  112.                         SC_Utils_Ex::sfDispSiteError(TEMP_LOGIN_ERROR);
  113.                     else {
  114.                         SC_Utils_Ex::sfDispSiteError(SITE_LOGIN_ERROR);
  115.                     }
  116.                 else {
  117.                     // 重複申込チェック
  118.                     $orverlapping_flg $objQuery->get("dtb_campaign""orverlapping_flg""campaign_id = ?"array($objCampaignSess->getCampaignId()));
  119.  
  120.                     if($orverlapping_flg{
  121.                         if($this->lfOverlappingCheck($objCustomer->getValue('customer_id')$objQuery)) {
  122.                             $this->arrErr['login_email'"※ 複数回ご応募することは出来ません。";
  123.                         }
  124.                     }
  125.  
  126.                     if(count($this->arrErr== 0{
  127.                         // 申込情報を登録
  128.                         $this->lfRegistCampaignOrder($objCustomer->getValue('customer_id')$objQuery);
  129.                         // 完了ページへリダイレクト
  130.                         $this->sendRedirect($this->getLocation(CAMPAIGN_URL "$dir_name/complete.php"));
  131.                         exit;
  132.                     }
  133.                 }
  134.             }
  135.             break;
  136.         default :
  137.             break;
  138.         }
  139.         // 入力情報を渡す
  140.         $this->arrForm $_POST;
  141.         $this->dir_name $dir_name;
  142.         $this->tpl_dir_name CAMPAIGN_TEMPLATE_PATH $dir_name  "/" $status;
  143.  
  144.         //---- ページ表示
  145.         $objView->assignobj($this);
  146.         $objView->display($this->tpl_mainpage);
  147.     }
  148.  
  149.     /**
  150.      * デストラクタ.
  151.      *
  152.      * @return void 
  153.      */
  154.     function destroy({
  155.         parent::destroy();
  156.     }
  157.  
  158.     /*
  159.      * 関数名:lfInitLoginFormParam()
  160.      * 説明  :ログインフォームを初期化
  161.      * 戻り値:無し
  162.      */
  163.     function lfInitLoginFormParam(&$objLoginFormParam{
  164.  
  165.         $objLoginFormParam->addParam("記憶する""login_memory"INT_LEN"n"array("MAX_LENGTH_CHECK""NUM_CHECK"));
  166.         $objLoginFormParam->addParam("メールアドレス""login_email"STEXT_LEN"KVa"array("EXIST_CHECK""MAX_LENGTH_CHECK"));
  167.         $objLoginFormParam->addParam("パスワード""login_pass"STEXT_LEN"KVa"array("EXIST_CHECK""MAX_LENGTH_CHECK"));
  168.     }
  169.  
  170.     /*
  171.      * 関数名:lfCheckActive()
  172.      * 引数1 :ディレクトリ名
  173.      * 説明 :キャンペーン中かチェック
  174.      * 戻り値:キャンペーン中なら true 終了なら false
  175.      */
  176.     function lfCheckActive($directory_name&$objQuery{
  177.  
  178.         $is_active false;
  179.  
  180.         $col "limit_count, total_count, start_date, end_date";
  181.         $arrRet $objQuery->select($col"dtb_campaign""directory_name = ? AND del_flg = 0"array($directory_name));
  182.  
  183.         // 開始日時・停止日時を成型
  184.         $start_date (date("YmdHis"strtotime($arrRet[0]['start_date'])));
  185.         $end_date (date("YmdHis"strtotime($arrRet[0]['end_date'])));
  186.         $now_date (date("YmdHis"));
  187.  
  188.         // キャンペーンが開催期間で、かつ申込制限内である
  189.         if($now_date $start_date && $now_date $end_date
  190.            && ($arrRet[0]['limit_count'$arrRet[0]['total_count'|| $arrRet[0]['limit_count'1)) {
  191.             $is_active true;
  192.         }
  193.  
  194.         return $is_active;
  195.     }
  196.  
  197.     /*
  198.      * 関数名:lfRegistCampaignOrder()
  199.      * 説明 :キャンペーン受注情報を保存
  200.      * 引数1 :顧客ID
  201.      * 戻り値:無し
  202.      */
  203.     function lfRegistCampaignOrder($customer_id&$objQuery{
  204.         global $objCampaignSess;
  205.  
  206.         $campaign_id $objCampaignSess->getCampaignId();
  207.  
  208.         // 受注データを取得
  209.         $cols "
  210.             customer_id,
  211.             name01 as order_name01,
  212.             name02 as order_name02,
  213.             kana01 as order_kana01,
  214.             kana02 as order_kana02,
  215.             zip01 as order_zip01,
  216.             zip02 as order_zip02,
  217.             pref as order_pref,
  218.             addr01 as order_addr01,
  219.             addr02 as order_addr02,
  220.             email as order_email,
  221.             tel01 as order_tel01,
  222.             tel02 as order_tel02,
  223.             tel03 as order_tel03,
  224.             fax01 as order_fax01,
  225.             fax02 as order_fax02,
  226.             fax03 as order_fax03,
  227.             sex as order_sex,
  228.             job as order_job,
  229.             birth as order_birth
  230.             ";
  231.  
  232.         $arrCustomer $objQuery->select($cols"dtb_customer""customer_id = ?"array($customer_id));
  233.  
  234.         $sqlval $arrCustomer[0];
  235.         $sqlval['campaign_id'$campaign_id;
  236.         $sqlval['create_date''now()';
  237.  
  238.         // INSERTの実行
  239.         $objQuery->insert("dtb_campaign_order"$sqlval);
  240.  
  241.         // 申し込み数の更新
  242.         $total_count $objQuery->get("dtb_campaign""total_count""campaign_id = ?"array($campaign_id));
  243.         $arrCampaign['total_count'$total_count += 1;
  244.         $objQuery->update("dtb_campaign"$arrCampaign"campaign_id = ?"array($campaign_id));
  245.  
  246.     }
  247.  
  248.     /*
  249.      * 関数名:lfOverlappingCheck()
  250.      * 説明 :重複応募チェック
  251.      * 引数1 :顧客ID
  252.      * 戻り値:フラグ (重複があったら true 重複がなかったら false)
  253.      */
  254.     function lfOverlappingCheck($customer_id&$objQuery{
  255.         $count $objQuery->count("dtb_campaign_order""customer_id = ?"array($customer_id));
  256.         if($count 0{
  257.             return true;
  258.         }
  259.  
  260.         return false;
  261.     }
  262. }
  263. ?>

Documentation generated on Tue, 28 Apr 2009 18:11:59 +0900 by phpDocumentor 1.4.2