function lfIsValidMovement(&$objSiteSess)
 {
     // 確認ページからの遷移かどうかをチェック
     SC_Utils_Ex::sfIsPrePage($objSiteSess);
     // uniqid がPOSTされているかをチェック
     $uniqid = $objSiteSess->getUniqId();
     if (!empty($_POST['uniqid']) && $_POST['uniqid'] === $uniqid) {
         return;
     } else {
         SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, $objSiteSess);
     }
 }
 /**
  * Page のプロセス(モバイル).
  *
  * @return void
  */
 function mobileProcess()
 {
     $conn = new SC_DBConn();
     $objView = new SC_MobileView();
     $this->objSiteSess = new SC_SiteSession();
     $this->objCartSess = new SC_CartSession();
     $objSiteInfo = $objView->objSiteInfo;
     $this->arrInfo = $objSiteInfo->data;
     $this->objCustomer = new SC_Customer();
     $mailHelper = new SC_Helper_Mail_Ex();
     // 前のページで正しく登録手続きが行われたか判定
     SC_Utils_Ex::sfIsPrePage($this->objSiteSess, true);
     // ユーザユニークIDの取得と購入状態の正当性をチェック
     $uniqid = SC_Utils_Ex::sfCheckNormalAccess($this->objSiteSess, $this->objCartSess);
     if ($uniqid != "") {
         // 完了処理
         $objQuery = new SC_Query();
         $objQuery->begin();
         $order_id = $this->lfDoComplete($objQuery, $uniqid);
         $objQuery->commit();
         // セッションに保管されている情報を更新する
         $this->objCustomer->updateSession();
         // 完了メール送信
         if ($order_id != "") {
             $mailHelper->sfSendOrderMail($order_id, '2');
         }
         //その他情報の取得
         $other_data = $objQuery->get("dtb_order", "memo02", "order_id = ? ", array($order_id));
         if ($other_data != "") {
             $arrOther = unserialize($other_data);
             // データを編集
             foreach ($arrOther as $key => $val) {
                 // URLの場合にはリンクつきで表示させる
                 if (preg_match('/^(https?|ftp)(:\\/\\/[-_.!~*\'()a-zA-Z0-9;\\/?:\\@&=+\\$,%#]+)$/', $val["value"])) {
                     $arrOther[$key]["value"] = "<a href='" . $val["value"] . "'>" . $val["value"] . "</a>";
                 }
             }
             $this->arrOther = $arrOther;
         }
         // アフィリエイト用コンバージョンタグの設定
         $this->tpl_conv_page = AFF_SHOPPING_COMPLETE;
         $this->tpl_aff_option = "order_id={$order_id}";
         //合計価格の取得
         $total = $objQuery->get("dtb_order", "total", "order_id = ? ", array($order_id));
         if ($total != "") {
             $this->tpl_aff_option .= "|total={$total}";
         }
         // TS連携モジュールの実行
         if (function_exists('sfTSRequest')) {
             sfTSRequest($order_id);
         }
     }
     $objView->assignobj($this);
     $objView->display(SITE_FRAME);
 }
 /**
  * Page のプロセス(モバイル).
  *
  * @return void
  */
 function mobileProcess()
 {
     $objView = new SC_MobileView();
     $objCartSess = new SC_CartSession();
     $objSiteInfo = $objView->objSiteInfo;
     $objSiteSess = new SC_SiteSession();
     $objCustomer = new SC_Customer();
     $arrInfo = $objSiteInfo->data;
     $objQuery = new SC_Query();
     $objDb = new SC_Helper_DB_Ex();
     // 前のページで正しく登録手続きが行われた記録があるか判定
     SC_Utils_Ex::sfIsPrePage($objSiteSess, true);
     // ユーザユニークIDの取得と購入状態の正当性をチェック
     $uniqid = SC_Utils_Ex::sfCheckNormalAccess($objSiteSess, $objCartSess);
     $this->tpl_uniqid = $uniqid;
     // カート集計処理
     $objDb->sfTotalCart($this, $objCartSess, $arrInfo);
     // 一時受注テーブルの読込
     $arrData = $objDb->sfGetOrderTemp($uniqid);
     // カート集計を元に最終計算
     $arrData = $objDb->sfTotalConfirm($arrData, $this, $objCartSess, $arrInfo, $objCustomer);
     // カート内の商品の売り切れチェック
     $objCartSess->chkSoldOut($objCartSess->getCartList());
     // 会員ログインチェック
     if ($objCustomer->isLoginSuccess(true)) {
         $this->tpl_login = '******';
         $this->tpl_user_point = $objCustomer->getValue('point');
     }
     // 決済区分を取得する
     $payment_type = "";
     if ($objDb->sfColumnExists("dtb_payment", "memo01")) {
         // MEMO03に値が入っている場合には、モジュール追加されたものとみなす
         $sql = "SELECT memo03 FROM dtb_payment WHERE payment_id = ?";
         $arrPayment = $objQuery->getall($sql, array($arrData['payment_id']));
         $payment_type = $arrPayment[0]["memo03"];
     }
     $this->payment_type = $payment_type;
     if (!isset($_POST['mode'])) {
         $_POST['mode'] = "";
     }
     switch ($_POST['mode']) {
         // 前のページに戻る
         case 'return':
             // 正常な推移であることを記録しておく
             $objSiteSess->setRegistFlag();
             $this->sendRedirect($this->getLocation(MOBILE_URL_SHOP_PAYMENT), true);
             exit;
             break;
         case 'confirm':
             // この時点で注文番号を確保しておく(クレジット、コンビニ決済で必要なため)
             // postgresqlとmysqlとで処理を分ける
             if (DB_TYPE == "pgsql") {
                 $order_id = $objQuery->nextval("dtb_order", "order_id");
             } elseif (DB_TYPE == "mysql") {
                 $order_id = $objQuery->get_auto_increment("dtb_order");
             }
             $arrData["order_id"] = $order_id;
             // セッション情報を保持
             $arrData['session'] = serialize($_SESSION);
             // 集計結果を受注一時テーブルに反映
             $objDb->sfRegistTempOrder($uniqid, $arrData);
             // 正常に登録されたことを記録しておく
             $objSiteSess->setRegistFlag();
             // 決済方法により画面切替
             if ($payment_type != "") {
                 $_SESSION["payment_id"] = $arrData['payment_id'];
                 $this->sendRedirect($this->getLocation(MOBILE_URL_SHOP_MODULE), true);
             } else {
                 $this->sendRedirect($this->getLocation(MOBILE_URL_SHOP_COMPLETE), true);
             }
             exit;
             break;
         default:
             break;
     }
     $this->arrData = $arrData;
     $this->arrInfo = $arrInfo;
     $objView->assignobj($this);
     $objView->display(SITE_FRAME);
 }