Ignore:
Timestamp:
2009/11/29 13:35:37 (14 years ago)
Author:
Seasoft
Message:

PCサイト「購入履歴一覧」画面の改訂

  • 商品が存在しない場合、商品名のリンクを外す。
  • テンプレート変数を他の画面と同等に変更。
  • リファクタリングを実施。
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/comu-ver2/data/class/pages/mypage/LC_Page_Mypage_History.php

    r18276 r18399  
    5454        $masterData = new SC_DB_MasterData_Ex(); 
    5555        $this->arrMAILTEMPLATE = $masterData->getMasterData("mtb_mail_template"); 
     56        $this->arrPref = $masterData->getMasterData("mtb_pref", array("pref_id", "pref_name", "rank")); 
    5657   } 
    5758 
     
    7172        $objLayout->sfGetPageLayout($this, false, "mypage/index.php"); 
    7273 
     74        // FIXME 他の画面と同様のバリデーションを行なう 
     75        if (!SC_Utils_Ex::sfIsInt($_GET['order_id'])) { 
     76            SC_Utils_Ex::sfDispException(); 
     77        } 
     78 
     79        $orderId = $_GET['order_id']; 
     80 
    7381        //不正アクセス判定 
    7482        $from = "dtb_order"; 
    7583        $where = "del_flg = 0 AND customer_id = ? AND order_id = ? "; 
    76         $arrval = array($objCustomer->getValue('customer_id'), $_GET['order_id']); 
     84        $arrval = array($objCustomer->getValue('customer_id'), $orderId); 
    7785        //DBに情報があるか判定 
    7886        $cnt = $objQuery->count($from, $where, $arrval); 
     
    8088        if (!$objCustomer->isLoginSuccess() || $cnt == 0){ 
    8189            SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR); 
    82         } else { 
    83             //受注詳細データの取得 
    84             $this->arrDisp = $this->lfGetOrderData($_GET['order_id']); 
    85             // 支払い方法の取得 
    86             $this->arrPayment = $objDb->sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 
    87             // お届け時間の取得 
    88             $arrRet = $objDb->sfGetDelivTime($this->arrDisp['payment_id']); 
    89             $this->arrDelivTime = SC_Utils_Ex::sfArrKeyValue($arrRet, 'time_id', 'deliv_time'); 
    90  
    91             //マイページトップ顧客情報表示用 
    92             $this->CustomerName1 = $objCustomer->getvalue('name01'); 
    93             $this->CustomerName2 = $objCustomer->getvalue('name02'); 
    94             $this->CustomerPoint = $objCustomer->getvalue('point'); 
    95         } 
    96  
    97         if(SC_Utils_Ex::sfIsInt($_GET['order_id'])) { 
    98             $col = "send_date, subject, template_id, send_id"; 
    99             $where = "order_id = ?"; 
    100             $objQuery->setorder("send_date DESC"); 
    101             $this->arrMailHistory = $objQuery->select($col, "dtb_mail_history", $where, array($_GET['order_id'])); 
    102         } 
    103  
    104         $masterData = new SC_DB_MasterData_Ex(); 
    105         $this->arrPref = $masterData->getMasterData("mtb_pref", 
    106                                  array("pref_id", "pref_name", "rank")); 
     90        } 
     91 
     92        //受注詳細データの取得 
     93        $this->arrDisp = $this->lfGetOrderData($orderId); 
     94        // 支払い方法の取得 
     95        $this->arrPayment = $objDb->sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 
     96        // お届け時間の取得 
     97        $arrRet = $objDb->sfGetDelivTime($this->arrDisp['payment_id']); 
     98        $this->arrDelivTime = SC_Utils_Ex::sfArrKeyValue($arrRet, 'time_id', 'deliv_time'); 
     99 
     100        //マイページトップ顧客情報表示用 
     101        $this->CustomerName1 = $objCustomer->getvalue('name01'); 
     102        $this->CustomerName2 = $objCustomer->getvalue('name02'); 
     103        $this->CustomerPoint = $objCustomer->getvalue('point'); 
     104 
     105        // 受注商品明細の取得 
     106        $this->tpl_arrOrderDetail = $this->lfGetOrderDetail($orderId); 
     107 
     108        // 受注メール送信履歴の取得 
     109        $this->tpl_arrMailHistory = $this->lfGetMailHistory($orderId); 
     110 
    107111        $objView->assignobj($this); 
    108112        $objView->display(SITE_FRAME); 
     
    192196    } 
    193197 
    194     //受注詳細データの取得 
    195     function lfGetOrderData($order_id) { 
    196         //注文番号が数字であれば 
    197         if(SC_Utils_Ex::sfIsInt($order_id)) { 
    198             // DBから受注情報を読み込む 
    199             $objQuery = new SC_Query(); 
    200             $col = "order_id, create_date, payment_id, subtotal, tax, use_point, add_point, discount, "; 
    201             $col .= "deliv_fee, charge, payment_total, deliv_name01, deliv_name02, deliv_kana01, deliv_kana02, "; 
    202             $col .= "deliv_zip01, deliv_zip02, deliv_pref, deliv_addr01, deliv_addr02, deliv_tel01, deliv_tel02, deliv_tel03, deliv_time_id, deliv_date "; 
    203             $from = "dtb_order"; 
    204             $where = "order_id = ?"; 
    205             $arrRet = $objQuery->select($col, $from, $where, array($order_id)); 
    206             $arrOrder = $arrRet[0]; 
    207             // 受注詳細データの取得 
    208             $arrRet = $this->lfGetOrderDetail($order_id); 
    209             $arrOrderDetail = SC_Utils_Ex::sfSwapArray($arrRet); 
    210             $arrData = array_merge($arrOrder, $arrOrderDetail); 
    211         } 
    212         return $arrData; 
    213     } 
    214  
    215     // 受注詳細データの取得 
    216     function lfGetOrderDetail($order_id) { 
     198    /** 
     199     * 受注の取得 
     200     * 
     201     * @param integer $orderId 注文番号 
     202     * @return array 受注の内容 
     203     */ 
     204    function lfGetOrderData($orderId) { 
     205        // DBから受注情報を読み込む 
     206        $objQuery = new SC_Query(); 
     207        $col = "order_id, create_date, payment_id, subtotal, tax, use_point, add_point, discount, "; 
     208        $col .= "deliv_fee, charge, payment_total, deliv_name01, deliv_name02, deliv_kana01, deliv_kana02, "; 
     209        $col .= "deliv_zip01, deliv_zip02, deliv_pref, deliv_addr01, deliv_addr02, deliv_tel01, deliv_tel02, deliv_tel03, deliv_time_id, deliv_date "; 
     210        $from = "dtb_order"; 
     211        $where = "order_id = ?"; 
     212        $arrRet = $objQuery->select($col, $from, $where, array($orderId)); 
     213        return $arrRet[0]; 
     214    } 
     215 
     216    /** 
     217     * 受注商品明細の取得 
     218     * 
     219     * @param integer $orderId 注文番号 
     220     * @return array 受注商品明細の内容 
     221     */ 
     222    function lfGetOrderDetail($orderId) { 
    217223        $objQuery = new SC_Query(); 
    218224        $col = "product_id, product_code, product_name, classcategory_name1, classcategory_name2, price, quantity, point_rate"; 
     225        $col .= ",CASE WHEN EXISTS(SELECT * FROM dtb_products WHERE product_id = dtb_order_detail.product_id AND del_flg = 0) THEN '1' ELSE '0' END AS enable"; 
    219226        $where = "order_id = ?"; 
    220227        $objQuery->setorder("classcategory_id1, classcategory_id2"); 
    221         $arrRet = $objQuery->select($col, "dtb_order_detail", $where, array($order_id)); 
     228        $arrRet = $objQuery->select($col, "dtb_order_detail", $where, array($orderId)); 
    222229        return $arrRet; 
     230    } 
     231 
     232    /** 
     233     * 受注メール送信履歴の取得 
     234     * 
     235     * @param integer $orderId 注文番号 
     236     * @return array 受注メール送信履歴の内容 
     237     */ 
     238    function lfGetMailHistory($orderId) { 
     239        $objQuery = new SC_Query(); 
     240        $col = 'send_date, subject, template_id, send_id'; 
     241        $where = 'order_id = ?'; 
     242        $objQuery->setorder('send_date DESC'); 
     243        $this->arrMailHistory = $objQuery->select($col, 'dtb_mail_history', $where, array($orderId)); 
    223244    } 
    224245} 
Note: See TracChangeset for help on using the changeset viewer.