Changeset 15223 for branches


Ignore:
Timestamp:
2007/08/06 22:04:26 (17 years ago)
Author:
nanasess
Message:

LC_Page のクラス化対応
決済モジュールは, プラグインとして実装予定

Location:
branches/feature-module-update
Files:
12 added
5 edited

Legend:

Unmodified
Added
Removed
  • branches/feature-module-update/html/shopping/complete.php

    r15080 r15223  
    11<?php 
    2 /*  
     2/* 
    33 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved. 
    44 * 
     
    66 */ 
    77 
     8// {{{ requires 
    89require_once("../require.php"); 
     10require_once(CLASS_PATH . "page_extends/shopping/LC_Page_Shopping_Complete_Ex.php"); 
    911 
    10 class LC_Page { 
    11     function LC_Page() { 
    12         $this->tpl_mainpage = 'shopping/complete.tpl'; 
    13         $this->tpl_css = URL_DIR.'css/layout/shopping/complete.css'; 
    14         $this->tpl_title = "ご注文完了"; 
    15         global $arrCONVENIENCE; 
    16         $this->arrCONVENIENCE = $arrCONVENIENCE; 
    17         global $arrCONVENIMESSAGE; 
    18         $this->arrCONVENIMESSAGE = $arrCONVENIMESSAGE; 
    19         global $arrCONVENIENCE; 
    20         global $arrCONVENIMESSAGE; 
    21         $objPage->arrCONVENIENCE = $arrCONVENIENCE; 
    22         $objPage->arrCONVENIMESSAGE = $arrCONVENIMESSAGE; 
    23         /* 
    24          session_start時のno-cacheヘッダーを抑制することで 
    25          「戻る」ボタン使用時の有効期限切れ表示を抑制する。 
    26          private-no-expire:クライアントのキャッシュを許可する。 
    27         */ 
    28         session_cache_limiter('private-no-expire');      
     12// }}} 
     13// {{{ generate page 
    2914 
    30     } 
    31 } 
    32  
    33 $conn = new SC_DBConn(); 
    34 $objPage = new LC_Page(); 
    35 $objView = new SC_SiteView(); 
    36 $objSiteSess = new SC_SiteSession(); 
    37 $objCartSess = new SC_CartSession(); 
    38 $objCampaignSess = new SC_CampaignSession(); 
    39 $objSiteInfo = $objView->objSiteInfo; 
    40 $arrInfo = $objSiteInfo->data; 
    41 $objCustomer = new SC_Customer(); 
    42  
    43 // 前のページで正しく登録手続きが行われたか判定 
    44 sfIsPrePage($objSiteSess); 
    45 // ユーザユニークIDの取得と購入状態の正当性をチェック 
    46 $uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess); 
    47 if ($uniqid != "") { 
    48      
    49     // 完了処理 
    50     $objQuery = new SC_Query(); 
    51     $objQuery->begin(); 
    52     $order_id = lfDoComplete($objQuery, $uniqid); 
    53     $objQuery->commit(); 
    54      
    55     // セッションに保管されている情報を更新する 
    56     $objCustomer->updateSession(); 
    57  
    58     // 完了メール送信 
    59     if($order_id != "") { 
    60         sfSendOrderMail($order_id, '1'); 
    61     } 
    62  
    63     // その他情報の取得 
    64     $arrResults = $objQuery->getall("SELECT memo02, memo05 FROM dtb_order WHERE order_id = ? ", array($order_id)); 
    65  
    66     if (count($arrResults) > 0) {    
    67         if (isset($arrResults[0]["memo02"]) || isset($arrResults[0]["memo05"])) { 
    68             // 完了画面で表示する決済内容 
    69             $arrOther = unserialize($arrResults[0]["memo02"]); 
    70             // 完了画面から送信する決済内容 
    71             $arrModuleParam = unserialize($arrResults[0]["memo05"]); 
    72              
    73             // データを編集 
    74             foreach($arrOther as $key => $val){ 
    75                 // URLの場合にはリンクつきで表示させる 
    76                 if (preg_match('/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/', $val["value"])) { 
    77                     $arrOther[$key]["value"] = "<a href='#' onClick=\"window.open('". $val["value"] . "'); \" >" . $val["value"] ."</a>"; 
    78                 } 
    79             } 
    80                      
    81             $objPage->arrOther = $arrOther; 
    82             $objPage->arrModuleParam = $arrModuleParam; 
    83         } 
    84     } 
    85      
    86     // アフィリエイト用コンバージョンタグの設定 
    87     $objPage->tpl_conv_page = AFF_SHOPPING_COMPLETE; 
    88     $objPage->tpl_aff_option = "order_id=$order_id"; 
    89     //合計価格の取得 
    90     $total = $objQuery->get("dtb_order", "total", "order_id = ? ", array($order_id)); 
    91     if($total != "") { 
    92         $objPage->tpl_aff_option.= "|total=$total"; 
    93     } 
    94 } 
    95  
    96 $objPage->arrInfo = $arrInfo; 
    97 // キャンペーンからの遷移かチェック 
    98 $objPage->is_campaign = $objCampaignSess->getIsCampaign(); 
    99 $objPage->campaign_dir = $objCampaignSess->getCampaignDir(); 
    100  
    101 $objView->assignobj($objPage); 
    102 // フレームを選択(キャンペーンページから遷移なら変更) 
    103 $objCampaignSess->pageView($objView); 
    104  
    105 // セッション開放 
    106 $objCampaignSess->delCampaign(); 
    107 //-------------------------------------------------------------------------------------------------------------------------- 
    108 // エビスタグ引渡し用データを生成する 
    109 function lfGetEbisData($order_id) { 
    110     $objQuery = new SC_Query(); 
    111     $col = "customer_id, total, order_sex, order_job, to_number(to_char(age(current_timestamp, order_birth), 'YYY'), 999) AS order_age"; 
    112     $arrRet = $objQuery->select($col, "dtb_order", "order_id = ?", array($order_id)); 
    113      
    114     if($arrRet[0]['customer_id'] > 0) { 
    115         // 会員番号 
    116         $arrEbis['m1id'] = $arrRet[0]['customer_id']; 
    117         // 非会員or会員 
    118         $arrEbis['o5id'] = '1'; 
    119     } else { 
    120         // 会員番号 
    121         $arrEbis['m1id'] = ''; 
    122         // 非会員or会員 
    123         $arrEbis['o5id'] = '2';  
    124     } 
    125      
    126     // 購入金額 
    127     $arrEbis['a1id'] = $arrRet[0]['total']; 
    128     // 性別 
    129     $arrEbis['o2id'] = $arrRet[0]['order_sex']; 
    130     // 年齢 
    131     $arrEbis['o3id'] = $arrRet[0]['order_age']; 
    132     // 職業 
    133     $arrEbis['o4id'] = $arrRet[0]['order_job']; 
    134          
    135     $objQuery->setgroupby("product_id"); 
    136     $arrRet = $objQuery->select("product_id", "dtb_order_detail", "order_id = ?", array($order_id)); 
    137     $arrProducts = sfSwapArray($arrRet); 
    138      
    139     $line = ""; 
    140     // 商品IDをアンダーバーで接続する。 
    141     foreach($arrProducts['product_id'] as $val) { 
    142         if($line != "") { 
    143             $line .= "_$val";        
    144         } else { 
    145             $line .= "$val"; 
    146         } 
    147     } 
    148      
    149     // 商品ID  
    150     $arrEbis['o1id'] = $line; 
    151      
    152     return $arrEbis; 
    153 } 
    154  
    155 // 完了処理 
    156 function lfDoComplete($objQuery, $uniqid) { 
    157     global $objCartSess; 
    158     global $objSiteSess; 
    159     global $objCampaignSess; 
    160     global $objCustomer; 
    161     global $arrInfo; 
    162      
    163     // 一時受注テーブルの読込 
    164     $arrData = sfGetOrderTemp($uniqid); 
    165  
    166     // 会員情報登録処理 
    167     if ($objCustomer->isLoginSuccess()) { 
    168         // 新お届け先の登録 
    169         lfSetNewAddr($uniqid, $objCustomer->getValue('customer_id')); 
    170         // 購入集計を顧客テーブルに反映 
    171         lfSetCustomerPurchase($objCustomer->getValue('customer_id'), $arrData, $objQuery); 
    172     } else { 
    173         //購入時強制会員登録 
    174         switch(PURCHASE_CUSTOMER_REGIST) { 
    175         //無効 
    176         case '0': 
    177             // 購入時会員登録 
    178             if($arrData['member_check'] == '1') { 
    179                 // 仮会員登録 
    180                 $customer_id = lfRegistPreCustomer($arrData, $arrInfo); 
    181                 // 購入集計を顧客テーブルに反映 
    182                 lfSetCustomerPurchase($customer_id, $arrData, $objQuery); 
    183             } 
    184             break; 
    185         //有効 
    186         case '1': 
    187             // 仮会員登録 
    188             $customer_id = lfRegistPreCustomer($arrData, $arrInfo); 
    189             // 購入集計を顧客テーブルに反映 
    190             lfSetCustomerPurchase($customer_id, $arrData, $objQuery); 
    191             break; 
    192         } 
    193          
    194     } 
    195     // 一時テーブルを受注テーブルに格納する 
    196     $order_id = lfRegistOrder($objQuery, $arrData, $objCampaignSess); 
    197     // カート商品を受注詳細テーブルに格納する 
    198     lfRegistOrderDetail($objQuery, $order_id, $objCartSess); 
    199     // 受注一時テーブルの情報を削除する。 
    200     lfDeleteTempOrder($objQuery, $uniqid); 
    201     // キャンペーンからの遷移の場合登録する。 
    202     if($objCampaignSess->getIsCampaign() and $objCartSess->chkCampaign($objCampaignSess->getCampaignId())) { 
    203         lfRegistCampaignOrder($objQuery, $objCampaignSess, $order_id); 
    204     } 
    205      
    206     // セッションカート内の商品を削除する。 
    207     $objCartSess->delAllProducts(); 
    208     // 注文一時IDを解除する。 
    209     $objSiteSess->unsetUniqId(); 
    210      
    211     return $order_id; 
    212 } 
    213  
    214 // 会員登録(仮登録) 
    215 function lfRegistPreCustomer($arrData, $arrInfo) { 
    216     // 購入時の会員登録 
    217     $sqlval['name01'] = $arrData['order_name01']; 
    218     $sqlval['name02'] = $arrData['order_name02']; 
    219     $sqlval['kana01'] = $arrData['order_kana01']; 
    220     $sqlval['kana02'] = $arrData['order_kana02']; 
    221     $sqlval['zip01'] = $arrData['order_zip01']; 
    222     $sqlval['zip02'] = $arrData['order_zip02']; 
    223     $sqlval['pref'] = $arrData['order_pref']; 
    224     $sqlval['addr01'] = $arrData['order_addr01']; 
    225     $sqlval['addr02'] = $arrData['order_addr02']; 
    226     $sqlval['email'] = $arrData['order_email']; 
    227     $sqlval['tel01'] = $arrData['order_tel01']; 
    228     $sqlval['tel02'] = $arrData['order_tel02']; 
    229     $sqlval['tel03'] = $arrData['order_tel03']; 
    230     $sqlval['fax01'] = $arrData['order_fax01']; 
    231     $sqlval['fax02'] = $arrData['order_fax02']; 
    232     $sqlval['fax03'] = $arrData['order_fax03']; 
    233     $sqlval['sex'] = $arrData['order_sex']; 
    234     $sqlval['password'] = $arrData['password']; 
    235     $sqlval['reminder'] = $arrData['reminder']; 
    236     $sqlval['reminder_answer'] = $arrData['reminder_answer']; 
    237      
    238     // メルマガ配信用フラグの判定 
    239     switch($arrData['mail_flag']) { 
    240     case '1':   // HTMLメール 
    241         $mail_flag = 4; 
    242         break; 
    243     case '2':   // TEXTメール 
    244         $mail_flag = 5; 
    245         break; 
    246     case '3':   // 希望なし 
    247         $mail_flag = 6; 
    248         break; 
    249     default: 
    250         $mail_flag = 6; 
    251         break; 
    252     } 
    253     // メルマガフラグ 
    254     $sqlval['mailmaga_flg'] = $mail_flag; 
    255          
    256     // 会員仮登録 
    257     $sqlval['status'] = 1; 
    258     // URL判定用キー 
    259     $sqlval['secret_key'] = sfGetUniqRandomId("t");  
    260      
    261     $objQuery = new SC_Query(); 
    262     $sqlval['create_date'] = "now()"; 
    263     $sqlval['update_date'] = "now()"; 
    264     $objQuery->insert("dtb_customer", $sqlval); 
    265      
    266     // 顧客IDの取得 
    267     $arrRet = $objQuery->select("customer_id", "dtb_customer", "secret_key = ?", array($sqlval['secret_key'])); 
    268     $customer_id = $arrRet[0]['customer_id']; 
    269      
    270     // 仮登録完了メール送信 
    271     $objMailPage = new LC_Page(); 
    272     $objMailPage->to_name01 = $arrData['order_name01']; 
    273     $objMailPage->to_name02 = $arrData['order_name02']; 
    274     $objMailPage->CONF = $arrInfo; 
    275     $objMailPage->uniqid = $sqlval['secret_key']; 
    276     $objMailView = new SC_SiteView(); 
    277     $objMailView->assignobj($objMailPage); 
    278     $body = $objMailView->fetch("mail_templates/customer_mail.tpl"); 
    279      
    280     $objMail = new GC_SendMail(); 
    281     $objMail->setItem( 
    282                         ''                                      // 宛先 
    283                         , sfMakeSubject("会員登録のご確認")     // サブジェクト 
    284                         , $body                                 // 本文 
    285                         , $arrInfo['email03']                   // 配送元アドレス 
    286                         , $arrInfo['shop_name']                 // 配送元 名前 
    287                         , $arrInfo["email03"]                   // reply_to 
    288                         , $arrInfo["email04"]                   // return_path 
    289                         , $arrInfo["email04"]                   //  Errors_to 
    290                         , $arrInfo["email01"]                   //  Bcc 
    291                                                         ); 
    292     // 宛先の設定 
    293     $name = $arrData['order_name01'] . $arrData['order_name02'] ." 様"; 
    294     $objMail->setTo($arrData['order_email'], $name);             
    295     $objMail->sendMail(); 
    296      
    297     return $customer_id; 
    298 } 
    299  
    300 // 受注テーブルへ登録 
    301 function lfRegistOrder($objQuery, $arrData, $objCampaignSess) { 
    302     $sqlval = $arrData; 
    303  
    304     // 受注テーブルに書き込まない列を除去 
    305     unset($sqlval['mailmaga_flg']);     // メルマガチェック 
    306     unset($sqlval['deliv_check']);      // 別のお届け先チェック 
    307     unset($sqlval['point_check']);      // ポイント利用チェック 
    308     unset($sqlval['member_check']);     // 購入時会員チェック 
    309     unset($sqlval['password']);         // ログインパスワード 
    310     unset($sqlval['reminder']);         // リマインダー質問 
    311     unset($sqlval['reminder_answer']);  // リマインダー答え 
    312     unset($sqlval['mail_flag']);        // メールフラグ 
    313     unset($sqlval['session']);          // セッション情報 
    314      
    315     // 注文ステータス:指定が無ければ新規受付に設定 
    316     if($sqlval["status"] == ""){ 
    317         $sqlval['status'] = '1';             
    318     } 
    319      
    320     // 別のお届け先を指定していない場合、配送先に登録住所をコピーする。 
    321     if($arrData["deliv_check"] == "-1") { 
    322         $sqlval['deliv_name01'] = $arrData['order_name01']; 
    323         $sqlval['deliv_name02'] = $arrData['order_name02']; 
    324         $sqlval['deliv_kana01'] = $arrData['order_kana01']; 
    325         $sqlval['deliv_kana02'] = $arrData['order_kana02']; 
    326         $sqlval['deliv_pref'] = $arrData['order_pref']; 
    327         $sqlval['deliv_zip01'] = $arrData['order_zip01']; 
    328         $sqlval['deliv_zip02'] = $arrData['order_zip02']; 
    329         $sqlval['deliv_addr01'] = $arrData['order_addr01']; 
    330         $sqlval['deliv_addr02'] = $arrData['order_addr02']; 
    331         $sqlval['deliv_tel01'] = $arrData['order_tel01']; 
    332         $sqlval['deliv_tel02'] = $arrData['order_tel02']; 
    333         $sqlval['deliv_tel03'] = $arrData['order_tel03']; 
    334     } 
    335      
    336     $order_id = $arrData['order_id'];       // オーダーID 
    337     $sqlval['create_date'] = 'now()';       // 受注日 
    338      
    339     // キャンペーンID 
    340     if($objCampaignSess->getIsCampaign()) $sqlval['campaign_id'] = $objCampaignSess->getCampaignId(); 
    341  
    342     // ゲットの値をインサート 
    343     //$sqlval = lfGetInsParam($sqlval); 
    344      
    345     // INSERTの実行 
    346     $objQuery->insert("dtb_order", $sqlval); 
    347      
    348     return $order_id; 
    349 } 
    350  
    351 // 受注詳細テーブルへ登録 
    352 function lfRegistOrderDetail($objQuery, $order_id, $objCartSess) { 
    353     // カート内情報の取得 
    354     $arrCart = $objCartSess->getCartList(); 
    355     $max = count($arrCart); 
    356      
    357     // 既に存在する詳細レコードを消しておく。 
    358     $objQuery->delete("dtb_order_detail", "order_id = $order_id"); 
    359  
    360     // 規格名一覧 
    361     $arrClassName = sfGetIDValueList("dtb_class", "class_id", "name"); 
    362     // 規格分類名一覧 
    363     $arrClassCatName = sfGetIDValueList("dtb_classcategory", "classcategory_id", "name"); 
    364              
    365     for ($i = 0; $i < $max; $i++) { 
    366         // 商品規格情報の取得     
    367         $arrData = sfGetProductsClass($arrCart[$i]['id']); 
    368          
    369         // 存在する商品のみ表示する。 
    370         if($arrData != "") { 
    371             $sqlval['order_id'] = $order_id; 
    372             $sqlval['product_id'] = $arrCart[$i]['id'][0]; 
    373             $sqlval['classcategory_id1'] = $arrCart[$i]['id'][1]; 
    374             $sqlval['classcategory_id2'] = $arrCart[$i]['id'][2]; 
    375             $sqlval['product_name'] = $arrData['name']; 
    376             $sqlval['product_code'] = $arrData['product_code']; 
    377             $sqlval['classcategory_name1'] = $arrClassCatName[$arrData['classcategory_id1']]; 
    378             $sqlval['classcategory_name2'] = $arrClassCatName[$arrData['classcategory_id2']]; 
    379             $sqlval['point_rate'] = $arrCart[$i]['point_rate'];          
    380             $sqlval['price'] = $arrCart[$i]['price']; 
    381             $sqlval['quantity'] = $arrCart[$i]['quantity']; 
    382             lfReduceStock($objQuery, $arrCart[$i]['id'], $arrCart[$i]['quantity']); 
    383             // INSERTの実行 
    384             $objQuery->insert("dtb_order_detail", $sqlval); 
    385         } else { 
    386             sfDispSiteError(CART_NOT_FOUND); 
    387         } 
    388     } 
    389 } 
    390  
    391 // キャンペーン受注テーブルへ登録 
    392 function lfRegistCampaignOrder($objQuery, $objCampaignSess, $order_id) { 
    393  
    394     // 受注データを取得 
    395     $cols = "order_id, campaign_id, customer_id, message, order_name01, order_name02,". 
    396             "order_kana01, order_kana02, order_email, order_tel01, order_tel02, order_tel03,". 
    397             "order_fax01, order_fax02, order_fax03, order_zip01, order_zip02, order_pref, order_addr01,". 
    398             "order_addr02, order_sex, order_birth, order_job, deliv_name01, deliv_name02, deliv_kana01,". 
    399             "deliv_kana02, deliv_tel01, deliv_tel02, deliv_tel03, deliv_fax01, deliv_fax02, deliv_fax03,". 
    400             "deliv_zip01, deliv_zip02, deliv_pref, deliv_addr01, deliv_addr02, payment_total"; 
    401  
    402     $arrOrder = $objQuery->select($cols, "dtb_order", "order_id = ?", array($order_id));  
    403              
    404     $sqlval = $arrOrder[0]; 
    405     $sqlval['create_date'] = 'now()'; 
    406          
    407     // INSERTの実行 
    408     $objQuery->insert("dtb_campaign_order", $sqlval); 
    409      
    410     // 申し込み数の更新 
    411     $total_count = $objQuery->get("dtb_campaign", "total_count", "campaign_id = ?", array($sqlval['campaign_id'])); 
    412     $arrCampaign['total_count'] = $total_count += 1; 
    413     $objQuery->update("dtb_campaign", $arrCampaign, "campaign_id = ?", array($sqlval['campaign_id'])); 
    414      
    415 } 
    416  
    417  
    418  
    419 /* 受注一時テーブルの削除 */ 
    420 function lfDeleteTempOrder($objQuery, $uniqid) { 
    421     $where = "order_temp_id = ?"; 
    422     $sqlval['del_flg'] = 1; 
    423     $objQuery->update("dtb_order_temp", $sqlval, $where, array($uniqid)); 
    424     // $objQuery->delete("dtb_order_temp", $where, array($uniqid)); 
    425 } 
    426  
    427 // 受注一時テーブルの住所が登録済みテーブルと異なる場合は、別のお届け先に追加する 
    428 function lfSetNewAddr($uniqid, $customer_id) { 
    429     $objQuery = new SC_Query(); 
    430     $diff = false; 
    431     $find_same = false; 
    432      
    433     $col = "deliv_name01,deliv_name02,deliv_kana01,deliv_kana02,deliv_tel01,deliv_tel02,deliv_tel03,deliv_zip01,deliv_zip02,deliv_pref,deliv_addr01,deliv_addr02"; 
    434     $where = "order_temp_id = ?"; 
    435     $arrRet = $objQuery->select($col, "dtb_order_temp", $where, array($uniqid)); 
    436      
    437     // 要素名のdeliv_を削除する。 
    438     foreach($arrRet[0] as $key => $val) { 
    439         $keyname = ereg_replace("^deliv_", "", $key); 
    440         $arrNew[$keyname] = $val; 
    441     } 
    442      
    443     // 会員情報テーブルとの比較 
    444     $col = "name01,name02,kana01,kana02,tel01,tel02,tel03,zip01,zip02,pref,addr01,addr02"; 
    445     $where = "customer_id = ?"; 
    446     $arrCustomerAddr = $objQuery->select($col, "dtb_customer", $where, array($customer_id)); 
    447      
    448     // 会員情報の住所と異なる場合 
    449     if($arrNew != $arrCustomerAddr[0]) { 
    450         // 別のお届け先テーブルの住所と比較する 
    451         $col = "name01,name02,kana01,kana02,tel01,tel02,tel03,zip01,zip02,pref,addr01,addr02"; 
    452         $where = "customer_id = ?"; 
    453         $arrOtherAddr = $objQuery->select($col, "dtb_other_deliv", $where, array($customer_id)); 
    454  
    455         foreach($arrOtherAddr as $arrval) { 
    456             if($arrNew == $arrval) { 
    457                 // すでに同じ住所が登録されている 
    458                 $find_same = true; 
    459             } 
    460         } 
    461          
    462         if(!$find_same) { 
    463             $diff = true; 
    464         } 
    465     } 
    466      
    467     // 新しいお届け先が登録済みのものと異なる場合は別のお届け先テーブルに登録する 
    468     if($diff) { 
    469         $sqlval = $arrNew; 
    470         $sqlval['customer_id'] = $customer_id; 
    471         $objQuery->insert("dtb_other_deliv", $sqlval); 
    472     } 
    473 } 
    474  
    475 /* 購入情報を会員テーブルに登録する */ 
    476 function lfSetCustomerPurchase($customer_id, $arrData, $objQuery) { 
    477     $col = "first_buy_date, last_buy_date, buy_times, buy_total, point"; 
    478     $where = "customer_id = ?"; 
    479     $arrRet = $objQuery->select($col, "dtb_customer", $where, array($customer_id)); 
    480     $sqlval = $arrRet[0]; 
    481      
    482     if($sqlval['first_buy_date'] == "") { 
    483         $sqlval['first_buy_date'] = "Now()"; 
    484     } 
    485     $sqlval['last_buy_date'] = "Now()"; 
    486     $sqlval['buy_times']++; 
    487     $sqlval['buy_total']+= $arrData['total']; 
    488     $sqlval['point'] = ($sqlval['point'] + $arrData['add_point'] - $arrData['use_point']); 
    489      
    490     // ポイントが不足している場合 
    491     if($sqlval['point'] < 0) { 
    492         $objQuery->rollback(); 
    493         sfDispSiteError(LACK_POINT); 
    494     } 
    495      
    496     $objQuery->update("dtb_customer", $sqlval, $where, array($customer_id)); 
    497 } 
    498  
    499 // 在庫を減らす処理 
    500 function lfReduceStock($objQuery, $arrID, $quantity) { 
    501     $where = "product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?"; 
    502     $arrRet = $objQuery->select("stock, stock_unlimited", "dtb_products_class", $where, $arrID); 
    503      
    504     // 売り切れエラー 
    505     if(($arrRet[0]['stock_unlimited'] != '1' && $arrRet[0]['stock'] < $quantity) || $quantity == 0) { 
    506         $objQuery->rollback(); 
    507         sfDispSiteError(SOLD_OUT, "", true); 
    508     // 無制限の場合、在庫はNULL 
    509     } elseif($arrRet[0]['stock_unlimited'] == '1') { 
    510         $sqlval['stock'] = null; 
    511         $objQuery->update("dtb_products_class", $sqlval, $where, $arrID); 
    512     // 在庫を減らす 
    513     } else { 
    514         $sqlval['stock'] = ($arrRet[0]['stock'] - $quantity); 
    515         if($sqlval['stock'] == "") { 
    516             $sqlval['stock'] = '0'; 
    517         }        
    518         $objQuery->update("dtb_products_class", $sqlval, $where, $arrID); 
    519     } 
    520 } 
    521  
    522 // GETの値をインサート用に整える 
    523 function lfGetInsParam($sqlVal){ 
    524      
    525     foreach($_GET as $key => $val){ 
    526         // カラムの存在チェック 
    527         if(sfColumnExists("dtb_order", $key)) $sqlVal[$key] = $val; 
    528     } 
    529      
    530     return $sqlVal; 
    531 } 
    532  
     15$objPage = new LC_Page_Shopping_Complete_Ex(); 
     16$objPage->init(); 
     17$objPage->process(); 
     18register_shutdown_function(array($objPage, "destroy")); 
    53319?> 
  • branches/feature-module-update/html/shopping/confirm.php

    r15080 r15223  
    66 */ 
    77 
     8// {{{ requires 
    89require_once("../require.php"); 
     10require_once(CLASS_PATH . "page_extends/shopping/LC_Page_Shopping_Confirm_Ex.php"); 
    911 
    10 class LC_Page { 
    11     var $arrSession; 
    12     var $tpl_mode; 
    13     var $tpl_total_deliv_fee; 
    14     function LC_Page() { 
    15         $this->tpl_mainpage = 'shopping/confirm.tpl'; 
    16         $this->tpl_css = URL_DIR.'css/layout/shopping/confirm.css'; 
    17         $this->tpl_title = "ご入力内容のご確認"; 
    18         global $arrPref; 
    19         $this->arrPref = $arrPref; 
    20         global $arrSex; 
    21         $this->arrSex = $arrSex; 
    22         global $arrMAILMAGATYPE; 
    23         $this->arrMAILMAGATYPE = $arrMAILMAGATYPE; 
    24         global $arrReminder; 
    25         $this->arrReminder = $arrReminder; 
    26         /* 
    27          session_start時のno-cacheヘッダーを抑制することで 
    28          「戻る」ボタン使用時の有効期限切れ表示を抑制する。 
    29          private-no-expire:クライアントのキャッシュを許可する。 
    30         */ 
    31         session_cache_limiter('private-no-expire');      
     12// }}} 
     13// {{{ generate page 
    3214 
    33     } 
    34 } 
    35  
    36 $objPage = new LC_Page(); 
    37 $objView = new SC_SiteView(); 
    38 $objCartSess = new SC_CartSession(); 
    39 $objSiteInfo = $objView->objSiteInfo; 
    40 $objSiteSess = new SC_SiteSession(); 
    41 $objCampaignSess = new SC_CampaignSession(); 
    42 $objCustomer = new SC_Customer(); 
    43 $arrInfo = $objSiteInfo->data; 
    44 $objQuery = new SC_Query(); 
    45  
    46 // 前のページで正しく登録手続きが行われた記録があるか判定 
    47 sfIsPrePage($objSiteSess); 
    48  
    49 // ユーザユニークIDの取得と購入状態の正当性をチェック 
    50 $uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess); 
    51 $objPage->tpl_uniqid = $uniqid; 
    52  
    53 // カート集計処理 
    54 $objPage = sfTotalCart($objPage, $objCartSess, $arrInfo); 
    55 // 一時受注テーブルの読込 
    56 $arrData = sfGetOrderTemp($uniqid); 
    57 // カート集計を元に最終計算 
    58 $arrData = sfTotalConfirm($arrData, $objPage, $objCartSess, $arrInfo, $objCustomer, $objCampaignSess); 
    59 // キャンペーンからの遷移で送料が無料だった場合の処理 
    60 if($objCampaignSess->getIsCampaign()) { 
    61     $deliv_free_flg = $objQuery->get("dtb_campaign", "deliv_free_flg", "campaign_id = ?", array($objCampaignSess->getCampaignId())); 
    62     // 送料無料が設定されていた場合 
    63     if($deliv_free_flg) { 
    64         $arrData['payment_total'] -= $arrData['deliv_fee']; 
    65         $arrData['deliv_fee'] = 0; 
    66     } 
    67 } 
    68  
    69  
    70 // カート内の商品の売り切れチェック 
    71 $objCartSess->chkSoldOut($objCartSess->getCartList()); 
    72  
    73 // 会員ログインチェック 
    74 if($objCustomer->isLoginSuccess()) { 
    75     $objPage->tpl_login = '1'; 
    76     $objPage->tpl_user_point = $objCustomer->getValue('point'); 
    77 } 
    78  
    79 // 決済区分を取得する 
    80 $payment_type = ""; 
    81 if(sfColumnExists("dtb_payment", "memo01")){ 
    82     // MEMO03に値が入っている場合には、モジュール追加されたものとみなす 
    83     $sql = "SELECT memo03 FROM dtb_payment WHERE payment_id = ?"; 
    84     $arrPayment = $objQuery->getall($sql, array($arrData['payment_id'])); 
    85     $payment_type = $arrPayment[0]["memo03"]; 
    86 } 
    87 $objPage->payment_type = $payment_type; 
    88  
    89  
    90 switch($_POST['mode']) { 
    91 // 前のページに戻る 
    92 case 'return': 
    93     // 正常な推移であることを記録しておく 
    94     $objSiteSess->setRegistFlag(); 
    95     header("Location: " . URL_SHOP_PAYMENT); 
    96     exit; 
    97     break; 
    98 case 'confirm': 
    99     // この時点でオーダーIDを確保しておく(クレジット、コンビニ決済で必要なため) 
    100     // postgresqlとmysqlとで処理を分ける 
    101     if (DB_TYPE == "pgsql") { 
    102         $order_id = $objQuery->nextval("dtb_order","order_id"); 
    103     }elseif (DB_TYPE == "mysql") { 
    104         $order_id = $objQuery->get_auto_increment("dtb_order"); 
    105     } 
    106     $arrData["order_id"] = $order_id; 
    107      
    108     // セッション情報を保持 
    109     $arrData['session'] = serialize($_SESSION); 
    110      
    111     // 集計結果を受注一時テーブルに反映 
    112     sfRegistTempOrder($uniqid, $arrData); 
    113     // 正常に登録されたことを記録しておく 
    114     $objSiteSess->setRegistFlag(); 
    115      
    116     // 決済方法により画面切替 
    117     if($payment_type != "") { 
    118         $_SESSION["payment_id"] = $arrData['payment_id']; 
    119         header("Location: " . URL_SHOP_MODULE); 
    120     }else{ 
    121         header("Location: " . URL_SHOP_COMPLETE); 
    122     } 
    123     break; 
    124 default: 
    125     break; 
    126 } 
    127  
    128 $objPage->arrData = $arrData; 
    129 $objPage->arrInfo = $arrInfo; 
    130 $objView->assignobj($objPage); 
    131 // フレームを選択(キャンペーンページから遷移なら変更) 
    132 $objCampaignSess->pageView($objView); 
    133 //-------------------------------------------------------------------------------------------------------------------------- 
     15$objPage = new LC_Page_Shopping_Confirm_Ex(); 
     16$objPage->init(); 
     17$objPage->process(); 
     18register_shutdown_function(array($objPage, "destroy")); 
    13419?> 
  • branches/feature-module-update/html/shopping/deliv.php

    r15080 r15223  
    66 */ 
    77 
     8// {{{ requires 
    89require_once("../require.php"); 
     10require_once(CLASS_PATH . "page_extends/shopping/LC_Page_Shopping_Deliv_Ex.php"); 
    911 
    10 class LC_Page { 
    11     var $arrSession; 
    12     var $tpl_mode; 
    13     var $arrAddr; 
    14     function LC_Page() { 
    15         $this->tpl_mainpage = 'shopping/deliv.tpl'; 
    16         $this->tpl_css = URL_DIR.'css/layout/shopping/index.css'; 
    17         global $arrPref; 
    18         $this->arrPref = $arrPref; 
    19         $this->tpl_title = "お届け先指定";        // タイトル 
     12// }}} 
     13// {{{ generate page 
    2014 
    21         /* 
    22          session_start時のno-cacheヘッダーを抑制することで 
    23          「戻る」ボタン使用時の有効期限切れ表示を抑制する。 
    24          private-no-expire:クライアントのキャッシュを許可する。 
    25         */ 
    26         session_cache_limiter('private-no-expire');      
    27  
    28     } 
    29 } 
    30  
    31 $objPage = new LC_Page(); 
    32 $objView = new SC_SiteView(); 
    33 $objSiteSess = new SC_SiteSession(); 
    34 $objCartSess = new SC_CartSession(); 
    35 $objCampaignSess = new SC_CampaignSession(); 
    36 $objCustomer = new SC_Customer(); 
    37 // クッキー管理クラス 
    38 $objCookie = new SC_Cookie(COOKIE_EXPIRE); 
    39 // パラメータ管理クラス 
    40 $objFormParam = new SC_FormParam(); 
    41 // パラメータ情報の初期化 
    42 lfInitParam(); 
    43 // POST値の取得 
    44 $objFormParam->setParam($_POST); 
    45  
    46 $objLoginFormParam = new SC_FormParam();    // ログインフォーム用 
    47 lfInitLoginFormParam();                     // 初期設定 
    48 $objLoginFormParam->setParam($_POST);       // POST値の取得 
    49  
    50 // ユーザユニークIDの取得と購入状態の正当性をチェック 
    51 $uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess); 
    52 $objPage->tpl_uniqid = $uniqid; 
    53  
    54 // ログインチェック 
    55 if($_POST['mode'] != 'login' && !$objCustomer->isLoginSuccess()) { 
    56     // 不正アクセスとみなす 
    57     sfDispSiteError(CUSTOMER_ERROR); 
    58 } 
    59  
    60 switch($_POST['mode']) { 
    61 case 'login': 
    62     $objLoginFormParam->toLower('login_email'); 
    63     $objPage->arrErr = $objLoginFormParam->checkError(); 
    64     $arrForm =  $objLoginFormParam->getHashArray(); 
    65     // クッキー保存判定 
    66     if($arrForm['login_memory'] == "1" && $arrForm['login_email'] != "") { 
    67         $objCookie->setCookie('login_email', $_POST['login_email']); 
    68     } else { 
    69         $objCookie->setCookie('login_email', ''); 
    70     } 
    71  
    72     if(count($objPage->arrErr) == 0) { 
    73         // ログイン判定 
    74         if(!$objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass'], $arrForm['login_email'])) { 
    75             // 仮登録の判定 
    76             $objQuery = new SC_Query; 
    77             $where = "email = ? AND status = 1 AND del_flg = 0"; 
    78             $ret = $objQuery->count("dtb_customer", $where, array($arrForm['login_email'])); 
    79              
    80             if($ret > 0) { 
    81                 sfDispSiteError(TEMP_LOGIN_ERROR); 
    82             } else { 
    83                 sfDispSiteError(SITE_LOGIN_ERROR); 
    84             } 
    85         }  
    86     } else { 
    87         // ログインページに戻る 
    88         header("Location: " . URL_SHOP_TOP); 
    89         exit;    
    90     } 
    91     break; 
    92 // 削除 
    93 case 'delete': 
    94     if (sfIsInt($_POST['other_deliv_id'])) { 
    95         $objQuery = new SC_Query(); 
    96         $where = "other_deliv_id = ?"; 
    97         $arrRet = $objQuery->delete("dtb_other_deliv", $where, array($_POST['other_deliv_id'])); 
    98         $objFormParam->setValue('select_addr_id', ''); 
    99     } 
    100     break; 
    101 // 会員登録住所に送る 
    102 case 'customer_addr': 
    103     // 会員登録住所がチェックされている場合 
    104     if ($_POST['deliv_check'] == '-1') { 
    105         // 会員情報の住所を受注一時テーブルに書き込む 
    106         lfRegistDelivData($uniqid, $objCustomer); 
    107         // 正常に登録されたことを記録しておく 
    108         $objSiteSess->setRegistFlag(); 
    109         // お支払い方法選択ページへ移動 
    110         header("Location: " . URL_SHOP_PAYMENT); 
    111         exit; 
    112     // 別のお届け先がチェックされている場合 
    113     } elseif($_POST['deliv_check'] >= 1) { 
    114         if (sfIsInt($_POST['deliv_check'])) { 
    115             // 登録済みの別のお届け先を受注一時テーブルに書き込む 
    116             lfRegistOtherDelivData($uniqid, $objCustomer, $_POST['deliv_check']); 
    117             // 正常に登録されたことを記録しておく 
    118             $objSiteSess->setRegistFlag(); 
    119             // お支払い方法選択ページへ移動 
    120             header("Location: " . URL_SHOP_PAYMENT); 
    121             exit; 
    122         } 
    123     }else{ 
    124         // エラーを返す 
    125         $arrErr['deli'] = '※ お届け先を選択してください。'; 
    126     }    
    127     break; 
    128 // 前のページに戻る 
    129 case 'return': 
    130     // 確認ページへ移動 
    131     header("Location: " . URL_CART_TOP); 
    132     exit; 
    133     break; 
    134 default: 
    135     $objQuery = new SC_Query(); 
    136     $where = "order_temp_id = ?"; 
    137     $arrRet = $objQuery->select("*", "dtb_order_temp", $where, array($uniqid)); 
    138     $objFormParam->setParam($arrRet[0]); 
    139     break; 
    140 } 
    141  
    142 /** 表示処理 **/ 
    143  
    144 // 会員登録住所の取得 
    145 $col = "name01, name02, pref, addr01, addr02"; 
    146 $where = "customer_id = ?"; 
    147 $objQuery = new SC_Query(); 
    148 $arrCustomerAddr = $objQuery->select($col, "dtb_customer", $where, array($_SESSION['customer']['customer_id'])); 
    149 // 別のお届け先住所の取得 
    150 $col = "other_deliv_id, name01, name02, pref, addr01, addr02"; 
    151 $objQuery->setorder("other_deliv_id DESC"); 
    152 $objOtherAddr = $objQuery->select($col, "dtb_other_deliv", $where, array($_SESSION['customer']['customer_id'])); 
    153 $objPage->arrAddr = $arrCustomerAddr; 
    154 $objPage->tpl_addrmax = count($objOtherAddr); 
    155 $cnt = 1; 
    156 foreach($objOtherAddr as $val) { 
    157     $objPage->arrAddr[$cnt] = $val; 
    158     $cnt++; 
    159 } 
    160  
    161 // 入力値の取得 
    162 $objPage->arrForm = $objFormParam->getFormParamList(); 
    163 $objPage->arrErr = $arrErr; 
    164  
    165 $objView->assignobj($objPage); 
    166 // フレームを選択(キャンペーンページから遷移なら変更) 
    167 $objCampaignSess->pageView($objView); 
    168 //-------------------------------------------------------------------------------------------------------------------------- 
    169 /* パラメータ情報の初期化 */ 
    170 function lfInitParam() { 
    171     global $objFormParam; 
    172     $objFormParam->addParam("お名前1", "deliv_name01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    173     $objFormParam->addParam("お名前2", "deliv_name02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    174     $objFormParam->addParam("フリガナ1", "deliv_kana01", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    175     $objFormParam->addParam("フリガナ2", "deliv_kana02", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    176     $objFormParam->addParam("郵便番号1", "deliv_zip01", ZIP01_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK")); 
    177     $objFormParam->addParam("郵便番号2", "deliv_zip02", ZIP02_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK")); 
    178     $objFormParam->addParam("都道府県", "deliv_pref", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
    179     $objFormParam->addParam("住所1", "deliv_addr01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    180     $objFormParam->addParam("住所2", "deliv_addr02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    181     $objFormParam->addParam("電話番号1", "deliv_tel01", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    182     $objFormParam->addParam("電話番号2", "deliv_tel02", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    183     $objFormParam->addParam("電話番号3", "deliv_tel03", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    184     $objFormParam->addParam("", "deliv_check");  
    185 } 
    186  
    187 function lfInitLoginFormParam() { 
    188     global $objLoginFormParam; 
    189     $objLoginFormParam->addParam("記憶する", "login_memory", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    190     $objLoginFormParam->addParam("メールアドレス", "login_email", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK")); 
    191     $objLoginFormParam->addParam("パスワード", "login_pass", STEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK")); 
    192 } 
    193  
    194 /* DBへデータの登録 */ 
    195 function lfRegistNewAddrData($uniqid, $objCustomer) { 
    196     global $objFormParam; 
    197     $arrRet = $objFormParam->getHashArray(); 
    198     $sqlval = $objFormParam->getDbArray(); 
    199     // 登録データの作成 
    200     $sqlval['deliv_check'] = '1'; 
    201     $sqlval['order_temp_id'] = $uniqid; 
    202     $sqlval['update_date'] = 'Now()'; 
    203     $sqlval['customer_id'] = $objCustomer->getValue('customer_id'); 
    204     $sqlval['order_birth'] = $objCustomer->getValue('birth'); 
    205      
    206     sfRegistTempOrder($uniqid, $sqlval); 
    207 } 
    208  
    209 /* 会員情報の住所を一時受注テーブルへ */ 
    210 function lfRegistDelivData($uniqid, $objCustomer) { 
    211     // 登録データの作成 
    212     $sqlval['order_temp_id'] = $uniqid; 
    213     $sqlval['update_date'] = 'Now()'; 
    214     $sqlval['customer_id'] = $objCustomer->getValue('customer_id'); 
    215     $sqlval['deliv_check'] = '-1'; 
    216     $sqlval['deliv_name01'] = $objCustomer->getValue('name01'); 
    217     $sqlval['deliv_name02'] = $objCustomer->getValue('name02'); 
    218     $sqlval['deliv_kana01'] = $objCustomer->getValue('kana01'); 
    219     $sqlval['deliv_kana02'] = $objCustomer->getValue('kana02'); 
    220     $sqlval['deliv_zip01'] = $objCustomer->getValue('zip01'); 
    221     $sqlval['deliv_zip02'] = $objCustomer->getValue('zip02'); 
    222     $sqlval['deliv_pref'] = $objCustomer->getValue('pref'); 
    223     $sqlval['deliv_addr01'] = $objCustomer->getValue('addr01'); 
    224     $sqlval['deliv_addr02'] = $objCustomer->getValue('addr02'); 
    225     $sqlval['deliv_tel01'] = $objCustomer->getValue('tel01'); 
    226     $sqlval['deliv_tel02'] = $objCustomer->getValue('tel02'); 
    227     $sqlval['deliv_tel03'] = $objCustomer->getValue('tel03'); 
    228  
    229     $sqlval['deliv_fax01'] = $objCustomer->getValue('fax01'); 
    230     $sqlval['deliv_fax02'] = $objCustomer->getValue('fax02'); 
    231     $sqlval['deliv_fax03'] = $objCustomer->getValue('fax03'); 
    232  
    233     sfRegistTempOrder($uniqid, $sqlval); 
    234 } 
    235  
    236 /* 別のお届け先住所を一時受注テーブルへ */ 
    237 function lfRegistOtherDelivData($uniqid, $objCustomer, $other_deliv_id) { 
    238     // 登録データの作成 
    239     $sqlval['order_temp_id'] = $uniqid; 
    240     $sqlval['update_date'] = 'Now()'; 
    241     $sqlval['customer_id'] = $objCustomer->getValue('customer_id'); 
    242     $sqlval['order_birth'] = $objCustomer->getValue('birth'); 
    243          
    244     $objQuery = new SC_Query(); 
    245     $where = "other_deliv_id = ?"; 
    246     $arrRet = $objQuery->select("*", "dtb_other_deliv", $where, array($other_deliv_id)); 
    247      
    248     $sqlval['deliv_check'] = $other_deliv_id; 
    249     $sqlval['deliv_name01'] = $arrRet[0]['name01']; 
    250     $sqlval['deliv_name02'] = $arrRet[0]['name02']; 
    251     $sqlval['deliv_kana01'] = $arrRet[0]['kana01']; 
    252     $sqlval['deliv_kana02'] = $arrRet[0]['kana02']; 
    253     $sqlval['deliv_zip01'] = $arrRet[0]['zip01']; 
    254     $sqlval['deliv_zip02'] = $arrRet[0]['zip02']; 
    255     $sqlval['deliv_pref'] = $arrRet[0]['pref']; 
    256     $sqlval['deliv_addr01'] = $arrRet[0]['addr01']; 
    257     $sqlval['deliv_addr02'] = $arrRet[0]['addr02']; 
    258     $sqlval['deliv_tel01'] = $arrRet[0]['tel01']; 
    259     $sqlval['deliv_tel02'] = $arrRet[0]['tel02']; 
    260     $sqlval['deliv_tel03'] = $arrRet[0]['tel03']; 
    261     sfRegistTempOrder($uniqid, $sqlval); 
    262 } 
    263  
    264 /* 入力内容のチェック */ 
    265 function lfCheckError() { 
    266     global $objFormParam; 
    267     // 入力データを渡す。 
    268     $arrRet =  $objFormParam->getHashArray(); 
    269     $objErr = new SC_CheckError($arrRet); 
    270     $objErr->arrErr = $objFormParam->checkError(); 
    271     // 複数項目チェック 
    272     if ($_POST['mode'] == 'login'){ 
    273     $objErr->doFunc(array("メールアドレス", "login_email", STEXT_LEN), array("EXIST_CHECK")); 
    274     $objErr->doFunc(array("パスワード", "login_pass", STEXT_LEN), array("EXIST_CHECK")); 
    275     } 
    276     $objErr->doFunc(array("TEL", "deliv_tel01", "deliv_tel02", "deliv_tel03", TEL_ITEM_LEN), array("TEL_CHECK")); 
    277     return $objErr->arrErr; 
    278 } 
     15$objPage = new LC_Page_Shopping_Ex(); 
     16$objPage->init(); 
     17$objPage->process(); 
     18register_shutdown_function(array($objPage, "destroy")); 
    27919?> 
  • branches/feature-module-update/html/shopping/index.php

    r15080 r15223  
    66 */ 
    77 
     8// {{{ requires 
    89require_once("../require.php"); 
     10require_once(CLASS_PATH . "page_extends/shopping/LC_Page_Shopping_Ex.php"); 
    911 
    10 class LC_Page { 
    11     var $arrSession; 
    12     var $tpl_mode; 
    13     var $tpl_login_email; 
    14     function LC_Page() { 
    15         $this->tpl_mainpage = 'shopping/index.tpl'; 
    16         global $arrPref; 
    17         $this->arrPref = $arrPref; 
    18         global $arrSex; 
    19         $this->arrSex = $arrSex; 
    20         global $arrJob; 
    21         $this->arrJob = $arrJob; 
    22         $this->tpl_onload = 'fnCheckInputDeliv();'; 
    23          
    24         /* 
    25          session_start時のno-cacheヘッダーを抑制することで 
    26          「戻る」ボタン使用時の有効期限切れ表示を抑制する。 
    27          private-no-expire:クライアントのキャッシュを許可する。 
    28         */ 
    29         session_cache_limiter('private-no-expire');              
    30     } 
    31 } 
     12// }}} 
     13// {{{ generate page 
    3214 
    33 $conn = new SC_DBConn(); 
    34 $objPage = new LC_Page(); 
    35 $objView = new SC_SiteView(); 
    36 $objSiteSess = new SC_SiteSession(); 
    37 $objCartSess = new SC_CartSession(); 
    38 $objCampaignSess = new SC_CampaignSession(); 
    39 $objCustomer = new SC_Customer(); 
    40 $objCookie = new SC_Cookie(); 
    41 $objFormParam = new SC_FormParam();         // フォーム用 
    42 lfInitParam();                              // パラメータ情報の初期化 
    43 $objFormParam->setParam($_POST);            // POST値の取得 
    44  
    45 // ユーザユニークIDの取得と購入状態の正当性をチェック 
    46 $uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess); 
    47  
    48 $objPage->tpl_uniqid = $uniqid; 
    49  
    50 // ログインチェック 
    51 if($objCustomer->isLoginSuccess()) { 
    52     // すでにログインされている場合は、お届け先設定画面に転送 
    53     header("Location: ./deliv.php"); 
    54     exit; 
    55 } 
    56  
    57 switch($_POST['mode']) { 
    58 case 'nonmember_confirm': 
    59     $objPage = lfSetNonMember($objPage); 
    60     // ※breakなし 
    61 case 'confirm': 
    62     // 入力値の変換 
    63     $objFormParam->convParam(); 
    64     $objFormParam->toLower('order_mail'); 
    65     $objFormParam->toLower('order_mail_check'); 
    66      
    67     $objPage->arrErr = lfCheckError(); 
    68  
    69     // 入力エラーなし 
    70     if(count($objPage->arrErr) == 0) { 
    71         // DBへのデータ登録 
    72         lfRegistData($uniqid); 
    73          
    74         // お届け先のコピー 
    75         lfCopyDeliv($uniqid, $_POST); 
    76          
    77         // 正常に登録されたことを記録しておく 
    78         $objSiteSess->setRegistFlag(); 
    79         // お支払い方法選択ページへ移動 
    80         header("Location: " . URL_SHOP_PAYMENT); 
    81         exit;        
    82     } 
    83      
    84     break; 
    85 // 前のページに戻る 
    86 case 'return': 
    87     // 確認ページへ移動 
    88     header("Location: " . URL_CART_TOP); 
    89     exit; 
    90     break; 
    91 case 'nonmember': 
    92     $objPage = lfSetNonMember($objPage); 
    93     // ※breakなし 
    94 default: 
    95     if($_GET['from'] == 'nonmember') { 
    96         $objPage = lfSetNonMember($objPage); 
    97     } 
    98     // ユーザユニークIDの取得 
    99     $uniqid = $objSiteSess->getUniqId(); 
    100     $objQuery = new SC_Query(); 
    101     $where = "order_temp_id = ?"; 
    102     $arrRet = $objQuery->select("*", "dtb_order_temp", $where, array($uniqid)); 
    103     // DB値の取得 
    104     $objFormParam->setParam($arrRet[0]); 
    105     $objFormParam->setValue('order_email_check', $arrRet[0]['order_email']); 
    106     $objFormParam->setDBDate($arrRet[0]['order_birth']); 
    107     break; 
    108 } 
    109  
    110 // クッキー判定 
    111 $objPage->tpl_login_email = $objCookie->getCookie('login_email'); 
    112 if($objPage->tpl_login_email != "") { 
    113     $objPage->tpl_login_memory = "1"; 
    114 } 
    115  
    116 // 選択用日付の取得 
    117 $objDate = new SC_Date(START_BIRTH_YEAR); 
    118 $objPage->arrYear = $objDate->getYear('', 1950);    // 日付プルダウン設定 
    119 $objPage->arrMonth = $objDate->getMonth(); 
    120 $objPage->arrDay = $objDate->getDay(); 
    121  
    122 if($objPage->year == '') { 
    123     $objPage->year = '----'; 
    124 } 
    125  
    126 // 入力値の取得 
    127 $objPage->arrForm = $objFormParam->getFormParamList(); 
    128  
    129 if($objPage->arrForm['year']['value'] == ""){ 
    130     $objPage->arrForm['year']['value'] = '----';     
    131 } 
    132  
    133 $objView->assignobj($objPage); 
    134 // フレームを選択(キャンペーンページから遷移なら変更) 
    135 $objCampaignSess->pageView($objView); 
    136 //-------------------------------------------------------------------------------------------------------------------------- 
    137 /* 非会員入力ページのセット */ 
    138 function lfSetNonMember($objPage) { 
    139     $objPage->tpl_mainpage = 'shopping/nonmember_input.tpl'; 
    140     $objPage->tpl_css = array(); 
    141     $objPage->tpl_css[] = URL_DIR.'css/layout/login/nonmember.css'; 
    142     return $objPage; 
    143 } 
    144  
    145 /* パラメータ情報の初期化 */ 
    146 function lfInitParam() { 
    147     global $objFormParam; 
    148     $objFormParam->addParam("お名前(姓)", "order_name01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    149     $objFormParam->addParam("お名前(名)", "order_name02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    150     $objFormParam->addParam("フリガナ(セイ)", "order_kana01", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    151     $objFormParam->addParam("フリガナ(メイ)", "order_kana02", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    152     $objFormParam->addParam("郵便番号1", "order_zip01", ZIP01_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK")); 
    153     $objFormParam->addParam("郵便番号2", "order_zip02", ZIP02_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK")); 
    154     $objFormParam->addParam("都道府県", "order_pref", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
    155     $objFormParam->addParam("住所1", "order_addr01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    156     $objFormParam->addParam("住所2", "order_addr02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    157     $objFormParam->addParam("電話番号1", "order_tel01", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    158     $objFormParam->addParam("電話番号2", "order_tel02", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    159     $objFormParam->addParam("電話番号3", "order_tel03", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    160     $objFormParam->addParam("FAX番号1", "order_fax01", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    161     $objFormParam->addParam("FAX番号2", "order_fax02", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    162     $objFormParam->addParam("FAX番号3", "order_fax03", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    163     $objFormParam->addParam("メールアドレス", "order_email", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "NO_SPTAB", "MAX_LENGTH_CHECK", "EMAIL_CHECK", "EMAIL_CHAR_CHECK")); 
    164     $objFormParam->addParam("メールアドレス(確認)", "order_email_check", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "NO_SPTAB", "MAX_LENGTH_CHECK", "EMAIL_CHECK", "EMAIL_CHAR_CHECK"), "", false); 
    165     $objFormParam->addParam("年", "year", INT_LEN, "n", array("MAX_LENGTH_CHECK"), "", false); 
    166     $objFormParam->addParam("月", "month", INT_LEN, "n", array("MAX_LENGTH_CHECK"), "", false); 
    167     $objFormParam->addParam("日", "day", INT_LEN, "n", array("MAX_LENGTH_CHECK"), "", false); 
    168     $objFormParam->addParam("性別", "order_sex", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
    169     $objFormParam->addParam("職業", "order_job", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    170     $objFormParam->addParam("別のお届け先", "deliv_check", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    171     $objFormParam->addParam("お名前(姓)", "deliv_name01", STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    172     $objFormParam->addParam("お名前(名)", "deliv_name02", STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    173     $objFormParam->addParam("フリガナ(セイ)", "deliv_kana01", STEXT_LEN, "KVCa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    174     $objFormParam->addParam("フリガナ(メイ)", "deliv_kana02", STEXT_LEN, "KVCa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    175     $objFormParam->addParam("郵便番号1", "deliv_zip01", ZIP01_LEN, "n", array("NUM_CHECK", "NUM_COUNT_CHECK")); 
    176     $objFormParam->addParam("郵便番号2", "deliv_zip02", ZIP02_LEN, "n", array("NUM_CHECK", "NUM_COUNT_CHECK")); 
    177     $objFormParam->addParam("都道府県", "deliv_pref", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    178     $objFormParam->addParam("住所1", "deliv_addr01", STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    179     $objFormParam->addParam("住所2", "deliv_addr02", STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    180     $objFormParam->addParam("電話番号1", "deliv_tel01", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    181     $objFormParam->addParam("電話番号2", "deliv_tel02", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    182     $objFormParam->addParam("電話番号3", "deliv_tel03", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 
    183     $objFormParam->addParam("メールマガジン", "mail_flag", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 
    184 } 
    185  
    186 /* DBへデータの登録 */ 
    187 function lfRegistData($uniqid) { 
    188     global $objFormParam; 
    189     $arrRet = $objFormParam->getHashArray(); 
    190     $sqlval = $objFormParam->getDbArray(); 
    191     // 登録データの作成 
    192     $sqlval['order_temp_id'] = $uniqid; 
    193     $sqlval['order_birth'] = sfGetTimestamp($arrRet['year'], $arrRet['month'], $arrRet['day']); 
    194     $sqlval['update_date'] = 'Now()'; 
    195     $sqlval['customer_id'] = '0'; 
    196      
    197     // 既存データのチェック 
    198     $objQuery = new SC_Query(); 
    199     $where = "order_temp_id = ?"; 
    200     $cnt = $objQuery->count("dtb_order_temp", $where, array($uniqid)); 
    201     // 既存データがない場合 
    202     if ($cnt == 0) { 
    203         $sqlval['create_date'] = 'Now()'; 
    204         $objQuery->insert("dtb_order_temp", $sqlval); 
    205     } else { 
    206         $objQuery->update("dtb_order_temp", $sqlval, $where, array($uniqid)); 
    207     } 
    208      
    209 } 
    210  
    211 /* 入力内容のチェック */ 
    212 function lfCheckError() { 
    213     global $objFormParam; 
    214     // 入力データを渡す。 
    215     $arrRet =  $objFormParam->getHashArray(); 
    216     $objErr = new SC_CheckError($arrRet); 
    217     $objErr->arrErr = $objFormParam->checkError(); 
    218          
    219     // 別のお届け先チェック 
    220     if($_POST['deliv_check'] == "1") {  
    221         $objErr->doFunc(array("お名前(姓)", "deliv_name01"), array("EXIST_CHECK")); 
    222         $objErr->doFunc(array("お名前(名)", "deliv_name02"), array("EXIST_CHECK")); 
    223         $objErr->doFunc(array("フリガナ(セイ)", "deliv_kana01"), array("EXIST_CHECK")); 
    224         $objErr->doFunc(array("フリガナ(メイ)", "deliv_kana02"), array("EXIST_CHECK")); 
    225         $objErr->doFunc(array("郵便番号1", "deliv_zip01"), array("EXIST_CHECK")); 
    226         $objErr->doFunc(array("郵便番号2", "deliv_zip02"), array("EXIST_CHECK")); 
    227         $objErr->doFunc(array("都道府県", "deliv_pref"), array("EXIST_CHECK")); 
    228         $objErr->doFunc(array("住所1", "deliv_addr01"), array("EXIST_CHECK")); 
    229         $objErr->doFunc(array("住所2", "deliv_addr02"), array("EXIST_CHECK")); 
    230         $objErr->doFunc(array("電話番号1", "deliv_tel01"), array("EXIST_CHECK")); 
    231         $objErr->doFunc(array("電話番号2", "deliv_tel02"), array("EXIST_CHECK")); 
    232         $objErr->doFunc(array("電話番号3", "deliv_tel03"), array("EXIST_CHECK")); 
    233     } 
    234      
    235     // 複数項目チェック 
    236     $objErr->doFunc(array("TEL", "order_tel01", "order_tel02", "order_tel03", TEL_ITEM_LEN), array("TEL_CHECK")); 
    237     $objErr->doFunc(array("FAX", "order_fax01", "order_fax02", "order_fax03", TEL_ITEM_LEN), array("TEL_CHECK")); 
    238     $objErr->doFunc(array("郵便番号", "order_zip01", "order_zip02"), array("ALL_EXIST_CHECK")); 
    239     $objErr->doFunc(array("TEL", "deliv_tel01", "deliv_tel02", "deliv_tel03", TEL_ITEM_LEN), array("TEL_CHECK")); 
    240     $objErr->doFunc(array("FAX", "deliv_fax01", "deliv_fax02", "deliv_fax03", TEL_ITEM_LEN), array("TEL_CHECK")); 
    241     $objErr->doFunc(array("郵便番号", "deliv_zip01", "deliv_zip02"), array("ALL_EXIST_CHECK")); 
    242     $objErr->doFunc(array("生年月日", "year", "month", "day"), array("CHECK_DATE")); 
    243     $objErr->doFunc(array("メールアドレス", "メールアドレス(確認)", "order_email", "order_email_check"), array("EQUAL_CHECK")); 
    244      
    245     // すでにメルマガテーブルに会員としてメールアドレスが登録されている場合 
    246     if(sfCheckCustomerMailMaga($arrRet['order_email'])) { 
    247         $objErr->arrErr['order_email'] = "このメールアドレスはすでに登録されています。<br />"; 
    248     } 
    249          
    250     return $objErr->arrErr; 
    251 } 
    252  
    253 // 受注一時テーブルのお届け先をコピーする 
    254 function lfCopyDeliv($uniqid, $arrData) { 
    255     $objQuery = new SC_Query(); 
    256      
    257     // 別のお届け先を指定していない場合、配送先に登録住所をコピーする。 
    258     if($arrData["deliv_check"] != "1") { 
    259         $sqlval['deliv_name01'] = $arrData['order_name01']; 
    260         $sqlval['deliv_name02'] = $arrData['order_name02']; 
    261         $sqlval['deliv_kana01'] = $arrData['order_kana01']; 
    262         $sqlval['deliv_kana02'] = $arrData['order_kana02']; 
    263         $sqlval['deliv_pref'] = $arrData['order_pref']; 
    264         $sqlval['deliv_zip01'] = $arrData['order_zip01']; 
    265         $sqlval['deliv_zip02'] = $arrData['order_zip02']; 
    266         $sqlval['deliv_addr01'] = $arrData['order_addr01']; 
    267         $sqlval['deliv_addr02'] = $arrData['order_addr02']; 
    268         $sqlval['deliv_tel01'] = $arrData['order_tel01']; 
    269         $sqlval['deliv_tel02'] = $arrData['order_tel02']; 
    270         $sqlval['deliv_tel03'] = $arrData['order_tel03']; 
    271         $where = "order_temp_id = ?"; 
    272         $objQuery->update("dtb_order_temp", $sqlval, $where, array($uniqid)); 
    273     } 
    274 } 
    275  
    276  
     15$objPage = new LC_Page_Shopping_Ex(); 
     16$objPage->init(); 
     17$objPage->process(); 
     18register_shutdown_function(array($objPage, "destroy")); 
    27719?> 
  • branches/feature-module-update/html/shopping/payment.php

    r15080 r15223  
    66 */ 
    77 
     8// {{{ requires 
    89require_once("../require.php"); 
     10require_once(CLASS_PATH . "page_extends/shopping/LC_Page_Shopping_Payment_Ex.php"); 
    911 
    10 class LC_Page { 
    11     var $arrSession; 
    12     var $tpl_mode; 
    13     function LC_Page() { 
    14         $this->tpl_css = URL_DIR.'css/layout/shopping/pay.css'; 
    15         $this->tpl_mainpage = 'shopping/payment.tpl'; 
    16         $this->tpl_onload = 'fnCheckInputPoint();'; 
    17         $this->tpl_title = "お支払方法・お届け時間等の指定"; 
    18         /* 
    19          session_start時のno-cacheヘッダーを抑制することで 
    20          「戻る」ボタン使用時の有効期限切れ表示を抑制する。 
    21          private-no-expire:クライアントのキャッシュを許可する。 
    22         */ 
    23         session_cache_limiter('private-no-expire');      
    24     } 
    25 } 
     12// }}} 
     13// {{{ generate page 
    2614 
    27 $objPage = new LC_Page(); 
    28 $objView = new SC_SiteView(); 
    29 $objSiteSess = new SC_SiteSession(); 
    30 $objCartSess = new SC_CartSession(); 
    31 $objCampaignSess = new SC_CampaignSession(); 
    32 $objCustomer = new SC_Customer(); 
    33 $objSiteInfo = $objView->objSiteInfo; 
    34 $arrInfo = $objSiteInfo->data; 
    35  
    36 // パラメータ管理クラス 
    37 $objFormParam = new SC_FormParam(); 
    38 // パラメータ情報の初期化 
    39 lfInitParam(); 
    40 // POST値の取得 
    41 $objFormParam->setParam($_POST); 
    42  
    43 // ユーザユニークIDの取得と購入状態の正当性をチェック 
    44 $uniqid = sfCheckNormalAccess($objSiteSess, $objCartSess); 
    45 // ユニークIDを引き継ぐ 
    46 $objPage->tpl_uniqid = $uniqid; 
    47  
    48 // 会員ログインチェック 
    49 if($objCustomer->isLoginSuccess()) { 
    50     $objPage->tpl_login = '1'; 
    51     $objPage->tpl_user_point = $objCustomer->getValue('point'); 
    52     //戻り先URL 
    53     $objPage->tpl_back_url = URL_DELIV_TOP; 
    54 } else { 
    55     $objPage->tpl_back_url = URL_SHOP_TOP . "?from=nonmember"; 
    56 } 
    57  
    58 // 金額の取得 (購入途中で売り切れた場合にはこの関数内にてその商品の個数が0になる) 
    59 $objPage = sfTotalCart($objPage, $objCartSess, $arrInfo); 
    60 $objPage->arrData = sfTotalConfirm($arrData, $objPage, $objCartSess, $arrInfo); 
    61  
    62 // カー都内の商品の売り切れチェック 
    63 $objCartSess->chkSoldOut($objCartSess->getCartList()); 
    64  
    65 switch($_POST['mode']) { 
    66 case 'confirm': 
    67     // 入力値の変換 
    68     $objFormParam->convParam(); 
    69     $objPage->arrErr = lfCheckError($objPage->arrData ); 
    70     // 入力エラーなし 
    71     if(count($objPage->arrErr) == 0) { 
    72         // DBへのデータ登録 
    73         lfRegistData($uniqid); 
    74         // 正常に登録されたことを記録しておく 
    75         $objSiteSess->setRegistFlag(); 
    76         // 確認ページへ移動 
    77         header("Location: " . URL_SHOP_CONFIRM); 
    78         exit; 
    79     }else{ 
    80         // ユーザユニークIDの取得 
    81         $uniqid = $objSiteSess->getUniqId(); 
    82         // 受注一時テーブルからの情報を格納 
    83         lfSetOrderTempData($uniqid); 
    84     } 
    85     break; 
    86 // 前のページに戻る 
    87 case 'return': 
    88     // 非会員の場合 
    89     // 正常な推移であることを記録しておく 
    90     $objSiteSess->setRegistFlag(); 
    91     header("Location: " . URL_SHOP_TOP); 
    92     exit; 
    93     break; 
    94 // 支払い方法が変更された場合 
    95 case 'payment': 
    96     // ここのbreakは、意味があるので外さないで下さい。 
    97     break; 
    98 default: 
    99     // 受注一時テーブルからの情報を格納 
    100     lfSetOrderTempData($uniqid); 
    101     break; 
    102 } 
    103  
    104 // 店舗情報の取得 
    105 $arrInfo = $objSiteInfo->data; 
    106 // 購入金額の取得得 
    107 $total_pretax = $objCartSess->getAllProductsTotal($arrInfo); 
    108 // 支払い方法の取得 
    109 $objPage->arrPayment = lfGetPayment($total_pretax); 
    110 // 配送時間の取得 
    111 $arrRet = sfGetDelivTime($objFormParam->getValue('payment_id')); 
    112 $objPage->arrDelivTime = sfArrKeyValue($arrRet, 'time_id', 'deliv_time'); 
    113 $objPage->objCustomer = $objCustomer; 
    114 // 配送日一覧の取得 
    115 $objPage->arrDelivDate = lfGetDelivDate(); 
    116  
    117 $objPage->arrForm = $objFormParam->getFormParamList(); 
    118  
    119 $objView->assignobj($objPage); 
    120 // フレームを選択(キャンペーンページから遷移なら変更) 
    121 $objCampaignSess->pageView($objView); 
    122 //-------------------------------------------------------------------------------------------------------------------------- 
    123 /* パラメータ情報の初期化 */ 
    124 function lfInitParam() { 
    125     global $objFormParam; 
    126     $objFormParam->addParam("お支払い方法", "payment_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 
    127     $objFormParam->addParam("ポイント", "use_point", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK", "ZERO_START")); 
    128     $objFormParam->addParam("配達時間", "deliv_time_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 
    129     $objFormParam->addParam("ご質問", "message", LTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 
    130     $objFormParam->addParam("ポイントを使用する", "point_check", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), '2'); 
    131     $objFormParam->addParam("配達日", "deliv_date", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 
    132 } 
    133  
    134 function lfGetPayment($total_pretax) { 
    135     $objQuery = new SC_Query(); 
    136     $objQuery->setorder("rank DESC"); 
    137     //削除されていない支払方法を取得 
    138     $arrRet = $objQuery->select("payment_id, payment_method, rule, upper_rule, note, payment_image", "dtb_payment", "del_flg = 0 AND deliv_id IN (SELECT deliv_id FROM dtb_deliv WHERE del_flg = 0) "); 
    139     //利用条件から支払可能方法を判定 
    140     foreach($arrRet as $data) { 
    141         //下限と上限が設定されている 
    142         if($data['rule'] > 0 && $data['upper_rule'] > 0) { 
    143             if($data['rule'] <= $total_pretax && $data['upper_rule'] >= $total_pretax) { 
    144                 $arrPayment[] = $data; 
    145             } 
    146         //下限のみ設定されている 
    147         } elseif($data['rule'] > 0) {    
    148             if($data['rule'] <= $total_pretax) { 
    149                 $arrPayment[] = $data; 
    150             } 
    151         //上限のみ設定されている 
    152         } elseif($data['upper_rule'] > 0) { 
    153             if($data['upper_rule'] >= $total_pretax) { 
    154                 $arrPayment[] = $data; 
    155             } 
    156         //設定なし 
    157         } else { 
    158             $arrPayment[] = $data; 
    159         }    
    160     } 
    161     return $arrPayment;  
    162 } 
    163  
    164 /* 入力内容のチェック */ 
    165 function lfCheckError($arrData) { 
    166     global $objFormParam; 
    167     global $objCustomer; 
    168     // 入力データを渡す。 
    169     $arrRet =  $objFormParam->getHashArray(); 
    170     $objErr = new SC_CheckError($arrRet); 
    171     $objErr->arrErr = $objFormParam->checkError(); 
    172      
    173     if($_POST['point_check'] == '1') { 
    174         $objErr->doFunc(array("ポイントを使用する", "point_check"), array("EXIST_CHECK")); 
    175         $objErr->doFunc(array("ポイント", "use_point"), array("EXIST_CHECK")); 
    176         $max_point = $objCustomer->getValue('point'); 
    177         if($max_point == "") { 
    178             $max_point = 0; 
    179         } 
    180         if($arrRet['use_point'] > $max_point) { 
    181             $objErr->arrErr['use_point'] = "※ ご利用ポイントが所持ポイントを超えています。<br />"; 
    182         } 
    183         if(($arrRet['use_point'] * POINT_VALUE) > $arrData['subtotal']) { 
    184             $objErr->arrErr['use_point'] = "※ ご利用ポイントがご購入金額を超えています。<br />"; 
    185         } 
    186     } 
    187     return $objErr->arrErr; 
    188 } 
    189  
    190 /* 支払い方法文字列の取得 */ 
    191 function lfGetPaymentInfo($payment_id) { 
    192     $objQuery = new SC_Query(); 
    193     $where = "payment_id = ?"; 
    194     $arrRet = $objQuery->select("payment_method, charge", "dtb_payment", $where, array($payment_id)); 
    195     return (array($arrRet[0]['payment_method'], $arrRet[0]['charge'])); 
    196 } 
    197  
    198 /* 配送時間文字列の取得 */ 
    199 function lfGetDelivTimeInfo($time_id) { 
    200     $objQuery = new SC_Query(); 
    201     $where = "time_id = ?"; 
    202     $arrRet = $objQuery->select("deliv_id, deliv_time", "dtb_delivtime", $where, array($time_id)); 
    203     return (array($arrRet[0]['deliv_id'], $arrRet[0]['deliv_time'])); 
    204 } 
    205  
    206 /* DBへデータの登録 */ 
    207 function lfRegistData($uniqid) { 
    208     global $objFormParam; 
    209     $arrRet = $objFormParam->getHashArray(); 
    210     $sqlval = $objFormParam->getDbArray(); 
    211     // 登録データの作成 
    212     $sqlval['order_temp_id'] = $uniqid; 
    213     $sqlval['update_date'] = 'Now()'; 
    214      
    215     if($sqlval['payment_id'] != "") { 
    216         list($sqlval['payment_method'], $sqlval['charge']) = lfGetPaymentInfo($sqlval['payment_id']); 
    217     } else { 
    218         $sqlval['payment_id'] = '0'; 
    219         $sqlval['payment_method'] = ""; 
    220     } 
    221      
    222     if($sqlval['deliv_time_id'] != "") { 
    223         list($sqlval['deliv_id'], $sqlval['deliv_time']) = lfGetDelivTimeInfo($sqlval['deliv_time_id']); 
    224     } else { 
    225         $sqlval['deliv_time_id'] = '0'; 
    226         $sqlval['deliv_id'] = '0'; 
    227         $sqlval['deliv_time'] = ""; 
    228     } 
    229      
    230     // 使用ポイントの設定 
    231     if($sqlval['point_check'] != '1') { 
    232         $sqlval['use_point'] = 0; 
    233     } 
    234      
    235     sfRegistTempOrder($uniqid, $sqlval); 
    236 } 
    237  
    238 /* 配達日一覧を取得する */ 
    239 function lfGetDelivDate() { 
    240     $objCartSess = new SC_CartSession(); 
    241     $objQuery = new SC_Query(); 
    242     // 商品IDの取得 
    243     $max = $objCartSess->getMax(); 
    244     for($i = 1; $i <= $max; $i++) { 
    245         if($_SESSION[$objCartSess->key][$i]['id'][0] != "") { 
    246             $arrID['product_id'][$i] = $_SESSION[$objCartSess->key][$i]['id'][0]; 
    247         } 
    248     } 
    249     if(count($arrID['product_id']) > 0) { 
    250         $id = implode(",", $arrID['product_id']); 
    251         //商品から発送目安の取得 
    252         $deliv_date = $objQuery->get("dtb_products", "MAX(deliv_date_id)", "product_id IN (".$id.")"); 
    253         //発送目安 
    254         switch($deliv_date) { 
    255         //即日発送 
    256         case '1': 
    257             $start_day = 1; 
    258             break; 
    259         //1-2日後 
    260         case '2': 
    261             $start_day = 3; 
    262             break; 
    263         //3-4日後 
    264         case '3': 
    265             $start_day = 5; 
    266             break; 
    267         //1週間以内 
    268         case '4': 
    269             $start_day = 8; 
    270             break; 
    271         //2週間以内 
    272         case '5': 
    273             $start_day = 15; 
    274             break; 
    275         //3週間以内 
    276         case '6': 
    277             $start_day = 22; 
    278             break; 
    279         //1ヶ月以内 
    280         case '7': 
    281             $start_day = 32; 
    282             break; 
    283         //2ヶ月以降 
    284         case '8': 
    285             $start_day = 62;             
    286             break; 
    287         //お取り寄せ(商品入荷後) 
    288         case '9': 
    289             $start_day = ""; 
    290             break; 
    291         default: 
    292             //お届け日が設定されていない場合 
    293             $start_day = ""; 
    294             break; 
    295         } 
    296         //配達可能日のスタート値から、配達日の配列を取得する 
    297         $arrDelivDate = lfGetDateArray($start_day, DELIV_DATE_END_MAX); 
    298     } 
    299     return $arrDelivDate; 
    300 } 
    301  
    302 //配達可能日のスタート値から、配達日の配列を取得する 
    303 function lfGetDateArray($start_day, $end_day) { 
    304     global $arrWDAY; 
    305     //配達可能日のスタート値がセットされていれば 
    306     if($start_day >= 1) { 
    307         $now_time = time(); 
    308         $max_day = $start_day + $end_day; 
    309         // 集計 
    310         for ($i = $start_day; $i < $max_day; $i++) { 
    311             // 基本時間から日数を追加していく 
    312             $tmp_time = $now_time + ($i * 24 * 3600); 
    313             list($y, $m, $d, $w) = split(" ", date("y m d w", $tmp_time));   
    314             $val = sprintf("%02d/%02d/%02d(%s)", $y, $m, $d, $arrWDAY[$w]); 
    315             $arrDate[$val] = $val; 
    316         } 
    317     } else { 
    318         $arrDate = false; 
    319     } 
    320     return $arrDate; 
    321 } 
    322  
    323 //一時受注テーブルからの情報を格納する 
    324 function lfSetOrderTempData($uniqid) { 
    325     global $objQuery; 
    326     global $objFormParam; 
    327      
    328     $objQuery = new SC_Query(); 
    329     $col = "payment_id, use_point, deliv_time_id, message, point_check, deliv_date"; 
    330     $from = "dtb_order_temp"; 
    331     $where = "order_temp_id = ?"; 
    332     $arrRet = $objQuery->select($col, $from, $where, array($uniqid)); 
    333     // DB値の取得 
    334     $objFormParam->setParam($arrRet[0]); 
    335     return $objFormParam; 
    336 } 
    337  
    338  
     15$objPage = new LC_Page_Shopping_Payment_Ex(); 
     16$objPage->init(); 
     17$objPage->process(); 
     18register_shutdown_function(array($objPage, "destroy")); 
    33919?> 
Note: See TracChangeset for help on using the changeset viewer.