/** * Page のプロセス. * * @return void */ function process() { $objView = new SC_SiteView(false); $objQuery = new SC_Query(); // 正しく値が取得できない場合はキャンペーンTOPへ if ($_GET['campaign_id'] == "" || $_GET['status'] == "") { $this->sendRedirect($this->getLocation(URL_CAMPAIGN_TOP)); exit; } // statusの判別 switch ($_GET['status']) { case 'active': $status = CAMPAIGN_TEMPLATE_ACTIVE; break; case 'end': $status = CAMPAIGN_TEMPLATE_END; break; default: $status = CAMPAIGN_TEMPLATE_ACTIVE; break; } // ディレクトリ名を取得名 $directory_name = $objQuery->get("dtb_campaign", "directory_name", "campaign_id = ?", array($_GET['campaign_id'])); $template_dir = CAMPAIGN_TEMPLATE_PATH . $directory_name . "/" . $status . "preview.tpl"; //---- ページ表示 $objView->assignobj($this); $objView->display($template_dir); }
/** * dtb_mobile_ext_session_id テーブルを検索してセッションIDを取得する。 * PCサイトでもモバイルサイトでもこのテーブルを利用する. * * @return string|null 取得したセッションIDを返す。 * 取得できなかった場合は null を返す。 */ function getExtSessionId() { if (!preg_match('|^' . URL_DIR . '(.*)$|', $_SERVER['SCRIPT_NAME'], $matches)) { return null; } $url = $matches[1]; $lifetime = $this->state->getLifeTime(); $time = date('Y-m-d H:i:s', time() - $lifetime); $objQuery = new SC_Query(); foreach ($_REQUEST as $key => $value) { $session_id = $objQuery->get('dtb_mobile_ext_session_id', 'session_id', 'param_key = ? AND param_value = ? AND url = ? AND create_date >= ?', array($key, $value, $url, $time)); if (isset($session_id)) { return $session_id; } } return null; }
/** * レコードの存在チェックを行う. * * @param string $table テーブル名 * @param string $col カラム名 * @param array $arrval 要素の配列 * @param array $addwhere SQL の AND 条件である WHERE 句 * @return bool レコードが存在する場合 true */ function sfIsRecord($table, $col, $arrval, $addwhere = "") { $objQuery = new SC_Query(); $arrCol = split("[, ]", $col); $where = "del_flg = 0"; if ($addwhere != "") { $where .= " AND {$addwhere}"; } foreach ($arrCol as $val) { if ($val != "") { if ($where == "") { $where = "{$val} = ?"; } else { $where .= " AND {$val} = ?"; } } } $ret = $objQuery->get($table, $col, $where, $arrval); if ($ret != "") { return true; } return false; }
function lfIsRootCategory($category_id) { $objQuery = new SC_Query(); $level = $objQuery->get("dtb_category", "level", "category_id = ?", array($category_id)); if ($level == 1) { return true; } return false; }
/** * カテゴリ変更時の移動処理を行う. * * ※この関数って、どこからも呼ばれていないのでは?? * * @param SC_Query $objQuery SC_Query インスタンス * @param string $table テーブル名 * @param string $id_name ID名 * @param string $cat_name カテゴリ名 * @param integer $old_catid 旧カテゴリID * @param integer $new_catid 新カテゴリID * @param integer $id ID * @return void */ public function sfMoveCatRank($objQuery, $table, $id_name, $cat_name, $old_catid, $new_catid, $id) { if ($old_catid == $new_catid) { return; } // 旧カテゴリでのランク削除処理 // 移動レコードのランクを取得する。 $sqlval = array(); $where = "{$id_name} = ?"; $rank = $objQuery->get('rank', $table, $where, array($id)); // 削除レコードのランクより上のレコードを一つ下にずらす。 $where = "rank > ? AND {$cat_name} = ?"; $arrWhereVal = array($rank, $old_catid); $arrRawSql = array('rank' => '(rank - 1)'); $objQuery->update($table, $sqlval, $where, $arrWhereVal, $arrRawSql); // 新カテゴリでの登録処理 // 新カテゴリの最大ランクを取得する。 $max_rank = $objQuery->max('rank', $table, "{$cat_name} = ?", array($new_catid)) + 1; $sqlval = array('rank' => $max_rank); $where = "{$id_name} = ?"; $arrWhereVal = array($id); $objQuery->update($table, $sqlval, $where, $arrWhereVal); }
function lfCheckError($array) { $objErr = new SC_CheckError($array); $objErr->arrErr = $this->objFormParam->checkError(); // 階層チェック if (!isset($objErr->arrErr['category_name'])) { $objQuery = new SC_Query(); $level = $objQuery->get("dtb_category", "level", "category_id = ?", array($_POST['parent_category_id'])); if ($level >= LEVEL_MAX) { $objErr->arrErr['category_name'] = "※ " . LEVEL_MAX . "階層以上の登録はできません。<br>"; } } if (!isset($_POST['category_id'])) { $_POST['category_id'] = ""; } // // 重複チェック if (!isset($objErr->arrErr['category_name'])) { $objQuery = new SC_Query(); $where = "parent_category_id = ? AND category_name = ?"; $arrRet = $objQuery->select("category_id, category_name", "dtb_category", $where, array($_POST['parent_category_id'], $array['category_name'])); if (empty($arrRet)) { $arrRet = array(array("category_id" => "", "category_name" => "")); } // 編集中のレコード以外に同じ名称が存在する場合 if ($arrRet[0]['category_id'] != $_POST['category_id'] && $arrRet[0]['category_name'] == $_POST['category_name']) { $objErr->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。<br>"; } } return $objErr->arrErr; }
/** * カテゴリ変更時の移動処理を行う. * * @param SC_Query $objQuery SC_Query インスタンス * @param string $table テーブル名 * @param string $id_name ID名 * @param string $cat_name カテゴリ名 * @param integer $old_catid 旧カテゴリID * @param integer $new_catid 新カテゴリID * @param integer $id ID * @return void */ function sfMoveCatRank($objQuery, $table, $id_name, $cat_name, $old_catid, $new_catid, $id) { if ($old_catid == $new_catid) { return; } // 旧カテゴリでのランク削除処理 // 移動レコードのランクを取得する。 $where = "{$id_name} = ?"; $rank = $objQuery->get('rank', $table, $where, array($id)); // 削除レコードのランクより上のレコードを一つ下にずらす。 $where = "rank > ? AND {$cat_name} = ?"; $sqlup = "UPDATE {$table} SET rank = (rank - 1) WHERE {$where}"; $objQuery->exec($sqlup, array($rank, $old_catid)); // 新カテゴリでの登録処理 // 新カテゴリの最大ランクを取得する。 $max_rank = $objQuery->max('rank', $table, "{$cat_name} = ?", array($new_catid)) + 1; $where = "{$id_name} = ?"; $sqlup = "UPDATE {$table} SET rank = ? WHERE {$where}"; $objQuery->exec($sqlup, array($max_rank, $id)); }
function lfDispComplete($objPage) { global $objWebParam; global $objDBParam; // hiddenに入力値を保持 $objPage->arrHidden = $objWebParam->getHashArray(); // hiddenに入力値を保持 $objPage->arrHidden = array_merge($objPage->arrHidden, $objDBParam->getHashArray()); $arrDsn = getArrayDsn($objDBParam); $sqlval['id'] = 1; $sqlval['shop_name'] = $objWebParam->getValue('shop_name'); $sqlval['email01'] = $objWebParam->getValue('admin_mail'); $sqlval['email02'] = $objWebParam->getValue('admin_mail'); $sqlval['email03'] = $objWebParam->getValue('admin_mail'); $sqlval['email04'] = $objWebParam->getValue('admin_mail'); $sqlval['email05'] = $objWebParam->getValue('admin_mail'); $sqlval['top_tpl'] = 'default1'; $sqlval['product_tpl'] = 'default1'; $sqlval['detail_tpl'] = 'default1'; $sqlval['mypage_tpl'] = 'default1'; $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; $objQuery = new SC_Query($arrDsn); $cnt = $objQuery->count('dtb_baseinfo'); if ($cnt > 0) { $objQuery->update('dtb_baseinfo', $sqlval); } else { $objQuery->insert('dtb_baseinfo', $sqlval); } // 管理者登録 $login_id = $objWebParam->getValue('login_id'); $salt = SC_Utils_Ex::sfGetRandomString(10); $login_pass = SC_Utils_Ex::sfGetHashString($objWebParam->getValue('login_pass'), $salt); $arrVal = array('login_id' => $login_id, 'password' => $login_pass, 'salt' => $salt, 'work' => 1, 'del_flg' => 0, 'update_date' => 'CURRENT_TIMESTAMP'); $member_id = $objQuery->get('member_id', 'dtb_member', 'login_id = ? AND del_flg = 0', array($login_id)); if (strlen($member_id) == 0) { $member_id = $objQuery->nextVal('dtb_member_member_id'); $arrVal['member_id'] = $member_id; $arrVal['name'] = '管理者'; $arrVal['creator_id'] = 0; $arrVal['authority'] = 0; $arrVal['rank'] = 1; $objQuery->insert('dtb_member', $arrVal); } else { $objQuery->update('dtb_member', $arrVal, 'member_id = ?', array($member_id)); } $objPage->arrHidden['db_skip'] = $_POST['db_skip']; $objPage->tpl_mainpage = 'complete.tpl'; $objPage->tpl_mode = 'complete'; $secure_url = $objWebParam->getValue('secure_url'); // 語尾に'/'をつける $secure_url = rtrim($secure_url, '/') . '/'; $objPage->tpl_sslurl = $secure_url; //EC-CUBEオフィシャルサイトからのお知らせURL $objPage->install_info_url = INSTALL_INFO_URL; return $objPage; }
/** * dtb_moduleのsub_dataを取得する. * * @access private * @param booean $force * @return mixed|null */ function _getSubData($force = false) { if (isset($this->subData)) { return $this->subData; } $moduleCode = $this->getCode(); $objQuery = new SC_Query(); $ret = $objQuery->get('dtb_module', 'sub_data', 'module_code = ?', array($moduleCode)); if (isset($ret)) { $this->subData = unserialize($ret); return $this->subData; } return null; }
/** * ランキングの振り直し. * * @param SC_Query $objQuery * @param integer $id 削除対象のmember_id * @return void|UPDATE の結果フラグ */ public function renumberRank(&$objQuery, $id) { // ランクの取得 $where1 = 'member_id = ?'; $rank = $objQuery->get('rank', 'dtb_member', $where1, array($id)); // Updateする値を作成する. $where2 = 'rank > ? AND del_flg <> 1'; // UPDATEの実行 - 削除したレコードより上のランキングを下げてRANKの空きを埋める。 return $objQuery->update('dtb_member', array(), $where2, array($rank), array('rank' => 'rank-1')); }
function sfGetProductClassId($product_id, $classcategory_id1, $classcategory_id2) { $where = "product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?"; $objQuery = new SC_Query(); $ret = $objQuery->get("dtb_products_class", "product_class_id", $where, array($product_id, $classcategory_id1, $classcategory_id2)); return $ret; }
function lfGetTotalCustomerPoint() { $objQuery = new SC_Query(); $col = "SUM(point)"; $where = "del_flg = 0"; $from = "dtb_customer"; $ret = $objQuery->get($from, $col, $where); return $ret; }
/** * Page のプロセス. * * @return void */ function process() { $objView = new SC_AdminView(); $objQuery = new SC_Query(); // 認証可否の判定 $objSess = new SC_Session(); SC_Utils_Ex::sfIsSuccess($objSess); // キャンペーンデータを引き継ぎ if ($_POST['mode'] != "") { $arrForm = $_POST; } else { $arrForm = $_GET; } // 正しく値が取得できない場合はキャンペーンTOPへ if ($arrForm['campaign_id'] == "" || $arrForm['status'] == "") { $this->sendRedirect($this->getLocation(URL_CAMPAIGN_TOP)); exit; } switch ($arrForm['status']) { case 'active': $status = CAMPAIGN_TEMPLATE_ACTIVE; $this->tpl_campaign_title = "キャンペーン中デザイン編集"; break; case 'end': $status = CAMPAIGN_TEMPLATE_END; $this->tpl_campaign_title = "キャンペーン終了デザイン編集"; break; default: break; } // ディレクトリ名を取得名 $directory_name = $objQuery->get("dtb_campaign", "directory_name", "campaign_id = ?", array($arrForm['campaign_id'])); // キャンペーンテンプレート格納ディレクトリ $campaign_dir = CAMPAIGN_TEMPLATE_PATH . $directory_name . "/" . $status; switch ($_POST['mode']) { case 'regist': // ファイルを更新 SC_Utils_Ex::sfWriteFile($arrForm['header'], $campaign_dir . "header.tpl", "w"); SC_Utils_Ex::sfWriteFile($arrForm['contents'], $campaign_dir . "contents.tpl", "w"); SC_Utils_Ex::sfWriteFile($arrForm['footer'], $campaign_dir . "footer.tpl", "w"); // サイトフレーム作成 $site_frame = $arrForm['header'] . "\n"; $site_frame .= '<script type="text/javascript" src="<!--{$TPL_DIR}-->js/site.js"></script>' . "\n"; $site_frame .= '<script type="text/javascript" src="<!--{$TPL_DIR}-->js/navi.js"></script>' . "\n"; $site_frame .= '<!--{include file=$tpl_mainpage}-->' . "\n"; $site_frame .= $arrForm['footer'] . "\n"; SC_Utils_Ex::sfWriteFile($site_frame, $campaign_dir . "site_frame.tpl", "w"); // 完了メッセージ(プレビュー時は表示しない) $this->tpl_onload = "alert('登録が完了しました。');"; break; case 'preview': // プレビューを書き出し別窓で開く SC_Utils_Ex::sfWriteFile($arrForm['header'] . $arrForm['contents'] . $arrForm['footer'], $campaign_dir . "preview.tpl", "w"); $this->tpl_onload = "win02('./campaign_preview.php?status=" . $arrForm['status'] . "&campaign_id=" . $arrForm['campaign_id'] . "', 'preview', '600', '400');"; $this->header_data = $arrForm['header']; $this->contents_data = $arrForm['contents']; $this->footer_data = $arrForm['footer']; break; case 'return': // 登録ページへ戻る $this->sendRedirect($this->getLocation(URL_CAMPAIGN_TOP)); exit; break; default: break; } if ($arrForm['header_row'] != '') { $this->header_row = $arrForm['header_row']; } if ($arrForm['contents_row'] != '') { $this->contents_row = $arrForm['contents_row']; } if ($arrForm['footer_row'] != '') { $this->footer_row = $arrForm['footer_row']; } if ($_POST['mode'] != 'preview') { // ヘッダーファイルの読み込み $this->header_data = file_get_contents($campaign_dir . "header.tpl"); // コンテンツファイルの読み込み $this->contents_data = file_get_contents($campaign_dir . "contents.tpl"); // フッターファイルの読み込み $this->footer_data = file_get_contents($campaign_dir . "footer.tpl"); } // フォームの値を格納 $this->arrForm = $arrForm; // 画面の表示 $objView->assignobj($this); $objView->display(MAIN_FRAME); }
/** * Page のプロセス. * * @return void */ function process() { global $objCampaignSess; $objView = new SC_SiteView(); $objCartSess = new SC_CartSession(); $objSiteInfo = $objView->objSiteInfo; $objSiteSess = new SC_SiteSession(); $objCampaignSess = new SC_CampaignSession(); $objCustomer = new SC_Customer(); $arrInfo = $objSiteInfo->data; $objQuery = new SC_Query(); $objDb = new SC_Helper_DB_Ex(); // 前のページで正しく登録手続きが行われた記録があるか判定 SC_Utils_Ex::sfIsPrePage($objSiteSess); // ユーザユニーク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, $objCampaignSess); // キャンペーンからの遷移で送料が無料だった場合の処理 if ($objCampaignSess->getIsCampaign()) { $deliv_free_flg = $objQuery->get("dtb_campaign", "deliv_free_flg", "campaign_id = ?", array($objCampaignSess->getCampaignId())); // 送料無料が設定されていた場合 if ($deliv_free_flg) { $arrData['payment_total'] -= $arrData['deliv_fee']; $arrData['deliv_fee'] = 0; } } // カート内の商品の売り切れチェック $objCartSess->chkSoldOut($objCartSess->getCartList()); // 会員ログインチェック if ($objCustomer->isLoginSuccess()) { $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(URL_SHOP_PAYMENT)); 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 != "") { // TODO 決済方法のモジュールは Plugin として実装したい $_SESSION["payment_id"] = $arrData['payment_id']; $this->sendRedirect($this->getLocation(URL_SHOP_MODULE)); } else { $this->sendRedirect($this->getLocation(URL_SHOP_COMPLETE)); } exit; break; default: break; } $this->arrData = $arrData; $this->arrInfo = $arrInfo; $objView->assignobj($this); // フレームを選択(キャンペーンページから遷移なら変更) $objCampaignSess->pageView($objView); }
/** * SC_Queryインスタンスに設定された検索条件をもとに対象商品数を取得する. * * 検索条件は, SC_Query::setWhere() 関数で設定しておく必要があります. * * @param SC_Query $objQuery SC_Query インスタンス * @param array $arrVal 検索パラメーターの配列 * @return array 対象商品ID数 */ public function findProductCount(&$objQuery, $arrVal = array()) { $table = <<<__EOS__ dtb_products AS alldtl JOIN dtb_products_class AS P ON P.product_id = alldtl.product_id LEFT JOIN dtb_class AS A ON P.classcategory_id1 = A.class_id LEFT JOIN dtb_class AS B ON P.classcategory_id2 = B.class_id __EOS__; $objQuery->setGroupBy('P.product_id, A.name, B.name'); return $objQuery->get('COUNT(DISTINCT(alldtl.product_id))', $table, '', $arrVal); }
/** * Page のプロセス. * * @return void */ function process() { $objView = new SC_SiteView(); $objQuery = new SC_Query(); if ($_SERVER["REQUEST_METHOD"] == "POST") { if (!$this->isValidToken()) { SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, "", true); } } //---- 登録用カラム配列 $arrRegistColumn = array(array("column" => "review_id", "convert" => "aKV"), array("column" => "product_id", "convert" => "aKV"), array("column" => "reviewer_name", "convert" => "aKV"), array("column" => "reviewer_url", "convert" => "a"), array("column" => "sex", "convert" => "n"), array("column" => "email", "convert" => "a"), array("column" => "recommend_level", "convert" => "n"), array("column" => "title", "convert" => "aKV"), array("column" => "comment", "convert" => "aKV")); if (!isset($_POST['mode'])) { $_POST['mode'] = ""; } switch ($_POST['mode']) { case 'confirm': $arrForm = $this->lfConvertParam($_POST, $arrRegistColumn); $this->arrErr = $this->lfErrorCheck($arrForm); //重複メッセージの判定 $flag = $objQuery->count("dtb_review", "product_id = ? AND title = ? ", array($arrForm['product_id'], $arrForm['title'])); if ($flag > 0) { $this->arrErr['title'] .= "重複したタイトルは登録できません。"; } //エラーチェック if ($this->arrErr == "") { //重複タイトルでない if ($flag == 0) { //商品名の取得 $arrForm['name'] = $objQuery->get("dtb_products", "name", "product_id = ? ", array($arrForm['product_id'])); $this->arrForm = $arrForm; $this->tpl_mainpage = 'products/review_confirm.tpl'; } } else { //商品名の取得 $arrForm['name'] = $objQuery->get("dtb_products", "name", "product_id = ? ", array($arrForm['product_id'])); $this->arrForm = $arrForm; } break; case 'return': foreach ($_POST as $key => $val) { $this->arrForm[$key] = $val; } //商品名の取得 $this->arrForm['name'] = $objQuery->get("dtb_products", "name", "product_id = ? ", array($this->arrForm['product_id'])); if (empty($this->arrForm['name'])) { SC_Utils_Ex::sfDispSiteError(PAGE_ERROR); } break; case 'complete': $arrForm = $this->lfConvertParam($_POST, $arrRegistColumn); $arrErr = $this->lfErrorCheck($arrForm); //重複メッセージの判定 $flag = $objQuery->count("dtb_review", "product_id = ? AND title = ? ", array($arrForm['product_id'], $arrForm['title'])); //エラーチェック if ($arrErr == "") { //重複タイトルでない if ($flag == 0) { //登録実行 $this->lfRegistRecommendData($arrForm, $arrRegistColumn); //レビュー書き込み完了ページへ $this->sendRedirect($this->getLocation("./review_complete.php", array(), true)); exit; } } else { if ($flag > 0) { SC_Utils_Ex::sfDispSiteError(PAGE_ERROR); } } break; default: if (SC_Utils_Ex::sfIsInt($_GET['product_id'])) { //商品情報の取得 $arrForm = $objQuery->select("product_id, name", "dtb_products", "del_flg = 0 AND status = 1 AND product_id=?", array($_GET['product_id'])); if (empty($arrForm)) { SC_Utils_Ex::sfDispSiteError(PAGE_ERROR); } $this->arrForm = $arrForm[0]; } break; } $this->transactionid = $this->getToken(); $objView->assignobj($this); $objView->display($this->tpl_mainpage); }
function isLoginSuccess($dont_check_email_mobile = false) { // ログイン時のメールアドレスとDBのメールアドレスが一致している場合 if (isset($_SESSION['customer']['customer_id']) && SC_Utils_Ex::sfIsInt($_SESSION['customer']['customer_id'])) { $objQuery = new SC_Query(); $email = $objQuery->get("dtb_customer", "email", "customer_id = ?", array($_SESSION['customer']['customer_id'])); if ($email == $_SESSION['customer']['email']) { // モバイルサイトの場合は携帯のメールアドレスが登録されていることもチェックする。 // ただし $dont_check_email_mobile が true の場合はチェックしない。 if (defined('MOBILE_SITE') && !$dont_check_email_mobile) { $email_mobile = $objQuery->get("dtb_customer", "email_mobile", "customer_id = ?", array($_SESSION['customer']['customer_id'])); return isset($email_mobile); } return true; } } return false; }
/** * Page のプロセス. * * @return void */ function process() { $conn = new SC_DBConn(); $objView = new SC_AdminView(); $objSess = new SC_Session(); $objQuery = new SC_Query(); $objDb = new SC_Helper_DB_Ex(); // 認証可否の判定 SC_Utils_Ex::sfIsSuccess($objSess); if (!isset($_POST['mode'])) { $_POST['mode'] = ""; } // 要求判定 switch ($_POST['mode']) { // 編集処理 case 'edit': // POST値の引き継ぎ $this->arrForm = $_POST; // 入力文字の変換 $this->arrForm = $this->lfConvertParam($this->arrForm); // エラーチェック $this->arrErr = $this->lfErrorCheck(); if (count($this->arrErr) <= 0) { if ($_POST['class_id'] == "") { $this->lfInsertClass($this->arrForm); // 新規作成 } else { $this->lfUpdateClass($this->arrForm); // 既存編集 } // 再表示 $this->reload(); } else { // POSTデータを引き継ぐ $this->tpl_class_id = $_POST['class_id']; } break; // 削除 // 削除 case 'delete': $objDb->sfDeleteRankRecord("dtb_class", "class_id", $_POST['class_id'], "", true); $objQuery = new SC_Query(); $objQuery->delete("dtb_classcategory", "class_id = ?", $_POST['class_id']); // 再表示 $this->reload(); break; // 編集前処理 // 編集前処理 case 'pre_edit': // 編集項目をDBより取得する。 $where = "class_id = ?"; $class_name = $objQuery->get("dtb_class", "name", $where, array($_POST['class_id'])); // 入力項目にカテゴリ名を入力する。 $this->arrForm['name'] = $class_name; // POSTデータを引き継ぐ $this->tpl_class_id = $_POST['class_id']; break; case 'down': $objDb->sfRankDown("dtb_class", "class_id", $_POST['class_id']); // 再表示 $this->reload(); break; case 'up': $objDb->sfRankUp("dtb_class", "class_id", $_POST['class_id']); // 再表示 $this->reload(); break; default: break; } // 規格の読込 $where = "del_flg <> 1"; $objQuery->setorder("rank DESC"); $this->arrClass = $objQuery->select("name, class_id", "dtb_class", $where); $this->arrClassCatCount = SC_Utils_Ex::sfGetClassCatCount(); $objView->assignobj($this); $objView->display(MAIN_FRAME); }
/** * Page のプロセス. * * @return void */ function process() { global $objCampaignSess; $objView = new SC_SiteView(false); $objQuery = new SC_Query(); $objCustomer = new SC_Customer(); $objCampaignSess = new SC_CampaignSession(); // クッキー管理クラス $objCookie = new SC_Cookie(COOKIE_EXPIRE); $objLoginFormParam = new SC_FormParam(); // ログインフォーム用 $this->lfInitLoginFormParam($objLoginFormParam); // 初期設定 $objLoginFormParam->setParam($_POST); // POST値の取得 // ディレクトリ名を取得 $dir_name = dirname($_SERVER['PHP_SELF']); $arrDir = split('/', $dir_name); $dir_name = $arrDir[count($arrDir) - 1]; /* セッションにキャンペーンデータを書き込む */ // キャンペーンからの遷移という情報を保持 $objCampaignSess->setIsCampaign(); // キャンペーンIDを保持 $campaign_id = $objQuery->get("dtb_campaign", "campaign_id", "directory_name = ? AND del_flg = 0", array($dir_name)); $objCampaignSess->setCampaignId($campaign_id); // キャンペーンディレクトリ名を保持 $objCampaignSess->setCampaignDir($dir_name); // キャンペーンが開催中かをチェック if ($this->lfCheckActive($dir_name, $objQuery)) { $status = CAMPAIGN_TEMPLATE_ACTIVE; $this->is_active = true; } else { $status = CAMPAIGN_TEMPLATE_END; $this->is_active = false; } switch ($_POST['mode']) { // ログインチェック case 'login': $objLoginFormParam->toLower('login_email'); $this->arrErr = $objLoginFormParam->checkError(); $arrForm = $objLoginFormParam->getHashArray(); // クッキー保存判定 if ($arrForm['login_memory'] == "1" && $arrForm['login_email'] != "") { $objCookie->setCookie('login_email', $_POST['login_email']); } else { $objCookie->setCookie('login_email', ''); } if (count($this->arrErr) == 0) { // ログイン判定 if (!$objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass'], $arrForm['login_email'])) { // 仮登録の判定 $where = "email = ? AND status = 1 AND del_flg = 0"; $ret = $objQuery->count("dtb_customer", $where, array($arrForm['login_email'])); if ($ret > 0) { SC_Utils_Ex::sfDispSiteError(TEMP_LOGIN_ERROR); } else { SC_Utils_Ex::sfDispSiteError(SITE_LOGIN_ERROR); } } else { // 重複申込チェック $orverlapping_flg = $objQuery->get("dtb_campaign", "orverlapping_flg", "campaign_id = ?", array($objCampaignSess->getCampaignId())); if ($orverlapping_flg) { if ($this->lfOverlappingCheck($objCustomer->getValue('customer_id'), $objQuery)) { $this->arrErr['login_email'] = "※ 複数回ご応募することは出来ません。"; } } if (count($this->arrErr) == 0) { // 申込情報を登録 $this->lfRegistCampaignOrder($objCustomer->getValue('customer_id'), $objQuery); // 完了ページへリダイレクト $this->sendRedirect($this->getLocation(CAMPAIGN_URL . "{$dir_name}/complete.php")); exit; } } } break; default: break; } // 入力情報を渡す $this->arrForm = $_POST; $this->dir_name = $dir_name; $this->tpl_dir_name = CAMPAIGN_TEMPLATE_PATH . $dir_name . "/" . $status; //---- ページ表示 $objView->assignobj($this); $objView->display($this->tpl_mainpage); }
/** * Page のプロセス. * * @return void */ function process() { $objView = new SC_AdminView(); $objDb = new SC_Helper_DB_Ex(); $objDate = new SC_Date(); // 登録・更新検索開始年 $objDate->setStartYear(RELEASE_YEAR); $objDate->setEndYear(DATE("Y")); $this->arrStartYear = $objDate->getYear(); $this->arrStartMonth = $objDate->getMonth(); $this->arrStartDay = $objDate->getDay(); // 登録・更新検索終了年 $objDate->setStartYear(RELEASE_YEAR); $objDate->setEndYear(DATE("Y")); $this->arrEndYear = $objDate->getYear(); $this->arrEndMonth = $objDate->getMonth(); $this->arrEndDay = $objDate->getDay(); // 認証可否の判定 $objSess = new SC_Session(); SC_Utils_Ex::sfIsSuccess($objSess); if (!isset($_POST['mode'])) { $_POST['mode'] = ""; } //キャンペーンの編集時 if (isset($_POST['campaign_id']) && SC_Utils_Ex::sfIsInt($_POST['campaign_id']) && $_POST['mode'] == "camp_search") { $objQuery = new SC_Query(); $search_data = $objQuery->get("dtb_campaign", "search_condition", "campaign_id = ? ", array($_POST['campaign_id'])); $arrSearch = unserialize($search_data); foreach ($arrSearch as $key => $val) { $_POST[$key] = $val; } } // POST値の引き継ぎ $this->arrForm = $_POST; // 検索ワードの引き継ぎ foreach ($_POST as $key => $val) { if (ereg("^search_", $key) || ereg("^campaign_", $key)) { switch ($key) { case 'search_product_flag': case 'search_status': $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val); if (!is_array($val)) { $this->arrForm[$key] = split("-", $val); } break; default: $this->arrHidden[$key] = $val; break; } } } // ページ送り用 $this->arrHidden['search_pageno'] = isset($_POST['search_pageno']) ? $_POST['search_pageno'] : ""; // 商品削除 if ($_POST['mode'] == "delete") { if ($_POST['category_id'] != "") { // ランク付きレコードの削除 $where = "category_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['category_id']); $objDb->sfDeleteRankRecord("dtb_products", "product_id", $_POST['product_id'], $where); } else { $objDb->sfDeleteRankRecord("dtb_products", "product_id", $_POST['product_id']); } // 子テーブル(商品規格)の削除 $objQuery = new SC_Query(); $objQuery->delete("dtb_products_class", "product_id = ?", array($_POST['product_id'])); // 件数カウントバッチ実行 $objDb->sfCategory_Count($objQuery); } if ($_POST['mode'] == "search" || $_POST['mode'] == "csv" || $_POST['mode'] == "delete" || $_POST['mode'] == "delete_all" || $_POST['mode'] == "camp_search") { // 入力文字の強制変換 $this->lfConvertParam(); // エラーチェック $this->arrErr = $this->lfCheckError(); $where = "del_flg = 0"; $view_where = "del_flg = 0"; // 入力エラーなし if (count($this->arrErr) == 0) { $arrval = array(); foreach ($this->arrForm as $key => $val) { $val = SC_Utils_Ex::sfManualEscape($val); if ($val == "") { continue; } switch ($key) { case 'search_product_id': // 商品ID $where .= " AND product_id = ?"; $view_where .= " AND product_id = ?"; $arrval[] = $val; break; case 'search_product_class_name': //規格名称 $where_in = " (SELECT classcategory_id FROM dtb_classcategory WHERE class_id IN (SELECT class_id FROM dtb_class WHERE name LIKE ?)) "; $where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE classcategory_id1 IN " . $where_in; $where .= " OR classcategory_id2 IN" . $where_in . ")"; $view_where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE classcategory_id1 IN " . $where_in; $view_where .= " OR classcategory_id2 IN" . $where_in . ")"; $arrval[] = "%{$val}%"; $arrval[] = "%{$val}%"; $view_where = $where; break; case 'search_name': // 商品名 $where .= " AND name ILIKE ?"; $view_where .= " AND name ILIKE ?"; $arrval[] = "%{$val}%"; break; case 'search_category_id': // カテゴリー list($tmp_where, $tmp_arrval) = $objDb->sfGetCatWhere($val); if ($tmp_where != "") { $where .= " AND product_id IN (SELECT product_id FROM dtb_product_categories WHERE " . $tmp_where . ")"; $view_where .= " AND product_id IN (SELECT product_id FROM dtb_product_categories WHERE " . $tmp_where . ")"; $arrval = array_merge((array) $arrval, (array) $tmp_arrval); } break; case 'search_product_code': // 商品コード $where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? GROUP BY product_id)"; $view_where .= " AND EXISTS (SELECT product_id FROM dtb_products_class as cls WHERE cls.product_code ILIKE ? AND dtb_products.product_id = cls.product_id GROUP BY cls.product_id )"; $arrval[] = "%{$val}%"; break; case 'search_startyear': // 登録更新日(FROM) $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_startyear'], $_POST['search_startmonth'], $_POST['search_startday']); $where .= " AND update_date >= '" . $_POST['search_startyear'] . "/" . $_POST['search_startmonth'] . "/" . $_POST['search_startday'] . "'"; $view_where .= " AND update_date >= '" . $_POST['search_startyear'] . "/" . $_POST['search_startmonth'] . "/" . $_POST['search_startday'] . "'"; break; case 'search_endyear': // 登録更新日(TO) $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_endyear'], $_POST['search_endmonth'], $_POST['search_endday']); $date = date('Y/m/d', strtotime($date) + 86400); $where .= " AND update_date < date('" . $date . "')"; $view_where .= " AND update_date < date('" . $date . "')"; break; case 'search_product_flag': //種別 global $arrSTATUS; $search_product_flag = SC_Utils_Ex::sfSearchCheckBoxes($val); if ($search_product_flag != "") { $where .= " AND product_flag LIKE ?"; $view_where .= " AND product_flag LIKE ?"; $arrval[] = $search_product_flag; } break; case 'search_status': // ステータス $tmp_where = ""; foreach ($val as $element) { if ($element != "") { if ($tmp_where == "") { $tmp_where .= "AND (status = ? "; } else { $tmp_where .= "OR status = ? "; } $arrval[] = $element; } } if ($tmp_where != "") { $tmp_where .= ")"; $where .= " {$tmp_where}"; $view_where .= " {$tmp_where}"; } break; default: break; } } $order = "update_date DESC, product_id DESC"; $objQuery = new SC_Query(); switch ($_POST['mode']) { case 'csv': require_once CLASS_EX_PATH . "helper_extends/SC_Helper_CSV_Ex.php"; $objCSV = new SC_Helper_CSV_Ex(); // オプションの指定 $option = "ORDER BY {$order}"; // CSV出力タイトル行の作成 $arrOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfgetCsvOutput(1, " WHERE csv_id = 1 AND status = 1")); if (count($arrOutput) <= 0) { break; } $arrOutputCols = $arrOutput['col']; $arrOutputTitle = $arrOutput['disp_name']; $head = SC_Utils_Ex::sfGetCSVList($arrOutputTitle); $data = $objCSV->lfGetProductsCSV($where, $option, $arrval, $arrOutputCols); // CSVを送信する。 SC_Utils_Ex::sfCSVDownload($head . $data); exit; break; case 'delete_all': // 検索結果の取得 $col = "product_id"; $from = "vw_products_nonclass AS noncls "; $arrProducts = $objQuery->select($col, $from, $where, $arrval); // 検索結果をすべて削除 $sqlval['del_flg'] = 1; $where = "product_id = ?"; if (count($arrProducts) > 0) { foreach ($arrProducts as $key => $val) { $objQuery->update("dtb_products", $sqlval, $where, array($arrProducts[$key]["product_id"])); } } break; default: // 読み込む列とテーブルの指定 $col = "product_id, name, category_id, main_list_image, status, product_code, price01, price02, stock, stock_unlimited"; $from = "vw_products_nonclass AS noncls "; // 行数の取得 $linemax = $objQuery->count("dtb_products", $view_where, $arrval); $this->tpl_linemax = $linemax; // 何件が該当しました。表示用 // ページ送りの処理 if (is_numeric($_POST['search_page_max'])) { $page_max = $_POST['search_page_max']; } else { $page_max = SEARCH_PMAX; } // ページ送りの取得 $objNavi = new SC_PageNavi($this->arrHidden['search_pageno'], $linemax, $page_max, "fnNaviSearchPage", NAVI_PMAX); $startno = $objNavi->start_row; $this->arrPagenavi = $objNavi->arrPagenavi; //キャンペーン商品検索時は、全結果の商品IDを変数に格納する if (isset($_POST['search_mode']) && $_POST['search_mode'] == 'campaign') { $arrRet = $objQuery->select($col, $from, $where, $arrval); if (count($arrRet) > 0) { $arrRet = sfSwapArray($arrRet); $pid = implode("-", $arrRet['product_id']); $this->arrHidden['campaign_product_id'] = $pid; } } // 取得範囲の指定(開始行番号、行数のセット) // if(DB_TYPE != "mysql") $objQuery->setlimitoffset($page_max, $startno); $objQuery->setlimitoffset($page_max, $startno); // 表示順序 $objQuery->setorder($order); // 検索結果の取得 $this->arrProducts = $objQuery->select($col, $from, $where, $arrval); // 各商品ごとのカテゴリIDを取得 if (count($this->arrProducts) > 0) { foreach ($this->arrProducts as $key => $val) { $this->arrProducts[$key]["categories"] = $objDb->sfGetCategoryId($val["product_id"]); $objDb->g_category_on = false; } } } } } // カテゴリの読込 list($this->arrCatKey, $this->arrCatVal) = $objDb->sfGetLevelCatList(false); $this->arrCatList = $this->lfGetIDName($this->arrCatKey, $this->arrCatVal); // 画面の表示 $objView->assignobj($this); $objView->display(MAIN_FRAME); }
function lfDispComplete($objPage) { global $objWebParam; global $objDBParam; // hiddenに入力値を保持 $objPage->arrHidden = $objWebParam->getHashArray(); // hiddenに入力値を保持 $objPage->arrHidden = array_merge($objPage->arrHidden, $objDBParam->getHashArray()); // ショップマスター情報の書き込み $arrRet = $objDBParam->getHashArray(); $dsn = array('phptype' => $arrRet['db_type'], 'username' => $arrRet['db_user'], 'password' => $arrRet['db_password'], 'protocol' => 'tcp', 'hostspec' => $arrRet['db_server'], 'port' => $arrRet['db_port'], 'database' => $arrRet['db_name']); $sqlval['id'] = 1; $sqlval['shop_name'] = $objWebParam->getValue('shop_name'); $sqlval['email01'] = $objWebParam->getValue('admin_mail'); $sqlval['email02'] = $objWebParam->getValue('admin_mail'); $sqlval['email03'] = $objWebParam->getValue('admin_mail'); $sqlval['email04'] = $objWebParam->getValue('admin_mail'); $sqlval['email05'] = $objWebParam->getValue('admin_mail'); $sqlval['top_tpl'] = "default1"; $sqlval['product_tpl'] = "default1"; $sqlval['detail_tpl'] = "default1"; $sqlval['mypage_tpl'] = "default1"; $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; $objQuery = new SC_Query($dsn); $cnt = $objQuery->count("dtb_baseinfo"); if ($cnt > 0) { $objQuery->update("dtb_baseinfo", $sqlval); } else { $objQuery->insert("dtb_baseinfo", $sqlval); } // 管理者登録 $login_id = $objWebParam->getValue('login_id'); $salt = SC_Utils_Ex::sfGetRandomString(10); $login_pass = SC_Utils_Ex::sfGetHashString($objWebParam->getValue('login_pass'), $salt); $arrVal = array('login_id' => $login_id, 'password' => $login_pass, 'salt' => $salt, 'work' => 1, 'del_flg' => 0, 'update_date' => 'CURRENT_TIMESTAMP'); $member_id = $objQuery->get('member_id', 'dtb_member', 'login_id = ? AND del_flg = 0', array($login_id)); if (strlen($member_id) == 0) { //$member_id = $objQuery->nextVal('dtb_member_member_id'); $member_id = 2; $arrVal['member_id'] = $member_id; $arrVal['name'] = '管理者'; $arrVal['creator_id'] = 0; $arrVal['authority'] = 0; $arrVal['rank'] = 1; $objQuery->insert("dtb_member", $arrVal); } else { $objQuery->update("dtb_member", $arrVal, 'member_id = ?', array($member_id)); } $objPage->arrHidden['db_skip'] = $_POST['db_skip']; $objPage->tpl_mainpage = 'complete.tpl'; $objPage->tpl_mode = 'complete'; $secure_url = $objWebParam->getValue('secure_url'); // 語尾に'/'をつける if (!ereg("/\$", $secure_url)) { $secure_url = $secure_url . "/"; } $objPage->tpl_sslurl = HTTPS_URL; //EC-CUBEオフィシャルサイトからのお知らせURL $objPage->install_info_url = INSTALL_INFO_URL; return $objPage; }
function lfInsertClass() { $objQuery = new SC_Query(); $objQuery->begin(); // 親規格IDの存在チェック $where = "del_flg <> 1 AND class_id = ?"; $ret = $objQuery->get("dtb_class", "class_id", $where, array($_POST['class_id'])); if ($ret != "") { // INSERTする値を作成する。 $sqlval['name'] = $_POST['name']; $sqlval['class_id'] = $_POST['class_id']; $sqlval['creator_id'] = $_SESSION['member_id']; $sqlval['rank'] = $objQuery->max("dtb_classcategory", "rank", $where, array($_POST['class_id'])) + 1; $sqlval['create_date'] = "now()"; $sqlval['update_date'] = "now()"; // INSERTの実行 $ret = $objQuery->insert("dtb_classcategory", $sqlval); } $objQuery->commit(); return $ret; }
/** * Page のプロセス(モバイル). * * @return void */ function mobileProcess() { $objView = new SC_MobileView(); $objSiteInfo = $objView->objSiteInfo; $objCustomer = new SC_Customer(); $objDb = new SC_Helper_DB_Ex(); $this->CONF = $objDb->sf_getBasisData(); $arrInfo = $objSiteInfo->data; //-- 本登録完了のためにメールから接続した場合 if ($_GET["mode"] == "regist") { //-- 入力チェック $this->arrErr = $this->lfErrorCheck($_GET); if ($this->arrErr) { $this->tpl_mainpage = 'regist/error.tpl'; $this->tpl_title = 'エラー'; } else { $registSecretKey = $this->lfRegistData($_GET); //本会員登録(フラグ変更) $this->lfSendRegistMail($registSecretKey); //本会員登録完了メール送信 // ログイン済みの状態にする。 $objQuery = new SC_Query(); $email = $objQuery->get("dtb_customer", "email", "secret_key = ?", array($registSecretKey)); $objCustomer->setLogin($email); $this->sendRedirect($this->getLocation("./complete.php"), true); exit; } //-- それ以外のアクセスは無効とする } else { $this->arrErr["id"] = "無効なアクセスです。"; $this->tpl_mainpage = 'regist/error.tpl'; $this->tpl_title = 'エラー'; } //---- ページ表示 $objView->assignobj($this); $objView->display(SITE_FRAME); }
/** * 入力チェックを行う. * * @return void */ function lfCheckError() { $arrRet = $this->objFormParam->getHashArray(); $objQuery = new SC_Query(); $objErr = new SC_CheckError($arrRet); $objErr->arrErr = $this->objFormParam->checkError(false); // 親カテゴリID設定 if ($arrRet['parent_category_id'] == 0) { $parent_category_id = "0"; } else { $parent_category_id = $arrRet['parent_category_id']; } // 存在する親カテゴリIDかチェック if (count($objErr->arrErr) == 0) { if ($parent_category_id != 0) { $count = $objQuery->count("dtb_category", "category_id = ?", array($parent_category_id)); if ($count == 0) { $objErr->arrErr['parent_category_id'] = "※ 指定の親カテゴリID(" . $parent_category_id . ")は、存在しません。"; } } } // 階層チェック if (!isset($objErr->arrErr['category_name']) && !isset($objErr->arrErr['parent_category_id'])) { $level = $objQuery->get("dtb_category", "level", "category_id = ?", array($parent_category_id)); if ($level >= LEVEL_MAX) { $objErr->arrErr['category_name'] = "※ " . LEVEL_MAX . "階層以上の登録はできません。<br>"; } } // 重複チェック if (!isset($objErr->arrErr['category_name']) && !isset($objErr->arrErr['parent_category_id'])) { $where = "parent_category_id = ? AND category_name = ?"; $arrCat = $objQuery->select("category_id, category_name", "dtb_category", $where, array($parent_category_id, $arrRet['category_name'])); if (empty($arrCat)) { $arrCat = array(array("category_id" => "", "category_name" => "")); } // 編集中のレコード以外に同じ名称が存在する場合 if ($arrCat[0]['category_id'] != $arrRet['category_id'] && $arrCat[0]['category_name'] == $_POST['category_name']) { $objErr->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。<br>"; } } return $objErr->arrErr; }
function lfGetDelivDate() { $objCartSess = new SC_CartSession(); $objQuery = new SC_Query(); // 商品IDの取得 $max = $objCartSess->getMax(); for ($i = 1; $i <= $max; $i++) { if ($_SESSION[$objCartSess->key][$i]['id'][0] != "") { $arrID['product_id'][$i] = $_SESSION[$objCartSess->key][$i]['id'][0]; } } if (count($arrID['product_id']) > 0) { $id = implode(",", $arrID['product_id']); //商品から発送目安の取得 $deliv_date = $objQuery->get("dtb_products", "MAX(deliv_date_id)", "product_id IN (" . $id . ")"); //発送目安 switch ($deliv_date) { //即日発送 case '1': $start_day = 1; break; //1-2日後 //1-2日後 case '2': $start_day = 3; break; //3-4日後 //3-4日後 case '3': $start_day = 5; break; //1週間以内 //1週間以内 case '4': $start_day = 8; break; //2週間以内 //2週間以内 case '5': $start_day = 15; break; //3週間以内 //3週間以内 case '6': $start_day = 22; break; //1ヶ月以内 //1ヶ月以内 case '7': $start_day = 32; break; //2ヶ月以降 //2ヶ月以降 case '8': $start_day = 62; break; //お取り寄せ(商品入荷後) //お取り寄せ(商品入荷後) case '9': $start_day = ""; break; default: //お届け日が設定されていない場合 $start_day = ""; break; } //配達可能日のスタート値から、配達日の配列を取得する $arrDelivDate = $this->lfGetDateArray($start_day, DELIV_DATE_END_MAX); } return $arrDelivDate; }
/** * Page のプロセス. * * @return void */ function process() { global $objCampaignSess; $objView = new SC_SiteView(false); $objQuery = new SC_Query(); $objCampaignSess = new SC_CampaignSession(); // ディレクトリ名を取得 $dir_name = dirname($_SERVER['PHP_SELF']); $arrDir = split('/', $dir_name); $dir_name = $arrDir[count($arrDir) - 1]; /* セッションにキャンペーンデータを書き込む */ // キャンペーンからの遷移という情報を保持 $objCampaignSess->setIsCampaign(); // キャンペーンIDを保持 $campaign_id = $objQuery->get("dtb_campaign", "campaign_id", "directory_name = ? AND del_flg = 0", array($dir_name)); $objCampaignSess->setCampaignId($campaign_id); // キャンペーンディレクトリ名を保持 $objCampaignSess->setCampaignDir($dir_name); // カートに入れないページの場合のページ(申込のみページ)へリダイレクト $cart_flg = $objQuery->get("dtb_campaign", "cart_flg", "campaign_id = ?", array($campaign_id)); if (!$cart_flg) { $this->sendRedirect($this->getLocation(CAMPAIGN_URL . "{$dir_name}/application.php")); exit; } // キャンペーンが開催中かをチェック if ($this->lfCheckActive($dir_name, $objQuery)) { $status = CAMPAIGN_TEMPLATE_ACTIVE; } else { $status = CAMPAIGN_TEMPLATE_END; } if ($_GET['init'] != "") { $this->tpl_init = 'false'; $this->lfDispProductsList($_GET['ids'], $objQuery); } else { $this->tpl_init = 'true'; } switch ($_POST['mode']) { case 'cart': $this->arrErr = $this->lfCheckError($_POST['product_id']); if (count($this->arrErr) == 0) { $objCartSess = new SC_CartSession(); $classcategory_id = "classcategory_id" . $_POST['product_id']; $classcategory_id1 = $_POST[$classcategory_id . '_1']; $classcategory_id2 = $_POST[$classcategory_id . '_2']; $quantity = "quantity" . $_POST['product_id']; // 規格1が設定されていない場合 if (!$this->tpl_classcat_find1[$_POST['product_id']]) { $classcategory_id1 = '0'; } // 規格2が設定されていない場合 if (!$this->tpl_classcat_find2[$_POST['product_id']]) { $classcategory_id2 = '0'; } $objCartSess->setPrevURL($_SERVER['REQUEST_URI']); $objCartSess->addProduct(array($_POST['product_id'], $classcategory_id1, $classcategory_id2), $_POST[$quantity], $campaign_id); $this->sendRedirect($this->getLocation(URL_CART_TOP)); exit; } break; default: break; } // 入力情報を渡す $this->arrForm = $_POST; $this->tpl_dir_name = CAMPAIGN_TEMPLATE_PATH . $dir_name . "/" . $status; //---- ページ表示 $objView->assignobj($this); $objView->display($this->tpl_mainpage); }
/** * 空メールから取得したメールアドレスを空メール管理テーブルに登録する。 * * @param string $token トークン * @param string $email メールアドレス * @return boolean 成功した場合はtrue、失敗した場合はfalseを返す。 */ function gfRegisterKaraMail($token, $email) { $objQuery = new SC_Query(); // GC $time = date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME); $objQuery->delete('dtb_mobile_kara_mail', '(email IS NULL AND create_date < ?) OR (email IS NOT NULL AND receive_date < ?)', array($time, $time)); $kara_mail_id = $objQuery->get('dtb_mobile_kara_mail', 'kara_mail_id', 'token = ?', array($token)); if (!isset($kara_mail_id)) { return false; } $arrValues = array('email' => $email); $arrRawValues = array('receive_date' => 'now()'); $objQuery->update('dtb_mobile_kara_mail', $arrValues, 'kara_mail_id = ?', array($kara_mail_id), $arrRawValues); return true; }