function getRanking()
 {
     $objQuery = new SC_Query();
     $col = "T1.product_id, T1.product_name as name,COUNT(*) AS order_count ";
     $from = "dtb_order_detail AS T1\r\n             INNER JOIN dtb_order AS T2 ON T1.order_id = T2.order_id\r\n             INNER JOIN dtb_products AS T3 ON T1.product_id = T3.product_id";
     $objQuery->setgroupby("T1.product_id,T1.product_name");
     $objQuery->setorder("order_count DESC");
     $objQuery->setlimit(10);
     //var_dump($objQuery->setorder("order_count DESC"));
     return $objQuery->select($col, $from, 'T2.status = ?', array('5'));
 }
 /**
  * SC_DB_MasterData::getMasterData() のテストケース
  */
 function testGetMasterData()
 {
     $columns = array('id', 'name', 'rank');
     $masterData = new SC_DB_MasterData_Ex();
     $actual = $masterData->getMasterData('mtb_pref', $columns);
     $objQuery = new SC_Query();
     $objQuery->setorder($columns[2]);
     $results = $objQuery->select($columns[0] . ", " . $columns[1], 'mtb_pref');
     $expected = array();
     foreach ($results as $result) {
         $expected[$result[$columns[0]]] = $result[$columns[1]];
     }
     $this->assertEquals($expected, $actual);
 }
Пример #3
0
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $objView = new SC_SiteView();
     $objQuery = new SC_Query();
     $objCustomer = new SC_Customer();
     // レイアウトデザインを取得
     $objLayout = new SC_Helper_PageLayout_Ex();
     $objLayout->sfGetPageLayout($this, false, "mypage/index.php");
     // ログインチェック
     if (!$objCustomer->isLoginSuccess()) {
         SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
     } else {
         //マイページトップ顧客情報表示用
         $this->CustomerName1 = $objCustomer->getvalue('name01');
         $this->CustomerName2 = $objCustomer->getvalue('name02');
         $this->CustomerPoint = $objCustomer->getvalue('point');
     }
     // お気に入り削除
     if ($_POST['mode'] == 'delete_favorite') {
         $customer_id = $objCustomer->getValue('customer_id');
         $this->lfDeleteFavoriteProduct($customer_id, $_POST['product_id']);
     }
     //ページ送り用
     if (isset($_POST['pageno'])) {
         $this->tpl_pageno = htmlspecialchars($_POST['pageno'], ENT_QUOTES, CHAR_CODE);
     }
     $col = "*";
     $from = " (SELECT\r\n                        T2.product_id AS product_id_main,\r\n                        T2.del_flg ,\r\n                        T2.status ,\r\n                        T2.name ,\r\n                        T2.main_list_image ,\r\n                        T1.create_date ,\r\n                        T1.customer_id\r\n                    FROM\r\n                       (SELECT\r\n                            product_id AS product_id_c ,\r\n                            create_date ,\r\n                            customer_id\r\n                        FROM\r\n                           dtb_customer_favorite_products\r\n                        ) AS T1 INNER JOIN dtb_products AS T2 ON T1.product_id_c = T2.product_id\r\n                    ) AS T3 INNER JOIN\r\n                        (SELECT\r\n                            product_id ,\r\n                            MIN(price02) AS price02_min ,\r\n                            MAX(price02) AS price02_max ,\r\n                            MAX(stock) AS stock_max ,\r\n                            MAX(stock_unlimited) AS stock_unlimited_max\r\n                         FROM\r\n                            dtb_products_class\r\n                         GROUP BY\r\n                            product_id\r\n                    ) AS T4 ON T3.product_id_main = T4.product_id";
     $where = "customer_id = ? AND del_flg = 0 AND status = 1";
     // 在庫無し商品の非表示
     if (NOSTOCK_HIDDEN === true) {
         $where .= " AND (stock_max >= 1 OR stock_unlimited_max = 1)";
     }
     $order = "create_date DESC";
     $arrval = array($objCustomer->getvalue('customer_id'));
     //お気に入りの数を取得
     $linemax = $objQuery->count($from, $where, $arrval);
     $this->tpl_linemax = $linemax;
     // ページ送りの取得
     $objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, SEARCH_PMAX, "fnNaviPage", NAVI_PMAX);
     $this->tpl_strnavi = $objNavi->strnavi;
     // 表示文字列
     $startno = $objNavi->start_row;
     // 取得範囲の指定(開始行番号、行数のセット)
     $objQuery->setlimitoffset(SEARCH_PMAX, $startno);
     // 表示順序
     $objQuery->setorder($order);
     //お気に入りの取得
     $this->arrFavorite = $objQuery->select($col, $from, $where, $arrval);
     // パラメータ管理クラス
     $this->objFormParam = new SC_FormParam();
     // POST値の取得
     $this->objFormParam->setParam($_POST);
     // 入力情報を渡す
     $this->arrForm = $this->objFormParam->getFormParamList();
     $objView->assignobj($this);
     //$objpage内の全てのテンプレート変数をsmartyに格納
     $objView->display(SITE_FRAME);
     //パスとテンプレート変数の呼び出し、実行
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $conn = new SC_DBConn();
     $objView = new SC_AdminView();
     $objSess = new SC_Session();
     $objDb = new SC_Helper_DB_Ex();
     // 認証可否の判定
     SC_Utils_Ex::sfIsSuccess($objSess);
     if (!isset($_POST['mode'])) {
         $_POST['mode'] = "";
     }
     if ($_POST['mode'] == "search") {
         // POST値の引き継ぎ
         $this->arrForm = $_POST;
         // 入力文字の強制変換
         $this->lfConvertParam();
         $where = "del_flg = 0 AND status = 1";
         /* 入力エラーなし */
         foreach ($this->arrForm as $key => $val) {
             if ($val == "") {
                 continue;
             }
             switch ($key) {
                 case 'search_name':
                     $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 . ")";
                         $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 LIKE ? GROUP BY product_id)";
                     $arrval[] = "{$val}%";
                     break;
                 default:
                     break;
             }
         }
         $order = "update_date DESC, product_id DESC";
         // 読み込む列とテーブルの指定
         $col = "product_id, name, category_id, main_list_image, status, product_code, price01, stock, stock_unlimited";
         $from = "vw_products_nonclass AS noncls ";
         $objQuery = new SC_Query();
         // 行数の取得
         if (empty($arrval)) {
             $arrval = array();
         }
         $linemax = $objQuery->count("dtb_products", $where, $arrval);
         $this->tpl_linemax = $linemax;
         // 何件が該当しました。表示用
         // ページ送りの処理
         if (isset($_POST['search_page_max']) && is_numeric($_POST['search_page_max'])) {
             $page_max = $_POST['search_page_max'];
         } else {
             $page_max = SEARCH_PMAX;
         }
         // ページ送りの取得
         $objNavi = new SC_PageNavi($_POST['search_pageno'], $linemax, $page_max, "fnNaviSearchOnlyPage", NAVI_PMAX);
         $this->tpl_strnavi = $objNavi->strnavi;
         // 表示文字列
         $startno = $objNavi->start_row;
         // 取得範囲の指定(開始行番号、行数のセット)
         $objQuery->setlimitoffset($page_max, $startno);
         // 表示順序
         $objQuery->setorder($order);
         // 検索結果の取得
         $this->arrProducts = $objQuery->select($col, $from, $where, $arrval);
     }
     // カテゴリ取得
     $this->arrCatList = $objDb->sfGetCategoryList();
     //---- ページ表示
     $objView->assignobj($this);
     $objView->display($this->tpl_mainpage);
 }
 function lfGetOrderDetail($order_id)
 {
     $objQuery = new SC_Query();
     $col = "product_id, product_code, product_name, classcategory_name1, classcategory_name2, price, quantity, point_rate";
     $where = "order_id = ?";
     $objQuery->setorder("classcategory_id1, classcategory_id2");
     $arrRet = $objQuery->select($col, "dtb_order_detail", $where, array($order_id));
     return $arrRet;
 }
Пример #6
0
 /**
  * 新着情報を取得する
  *
  * @param SC_Query $objQuery DB操作クラス
  * @return array $arrNews 取得結果を配列で返す
  */
 function lfGetNews(&$objQuery)
 {
     $col = "";
     $col .= "     news_id ";
     //新着情報ID
     $col .= "     ,news_title ";
     //新着情報タイトル
     $col .= "     ,news_comment ";
     //新着情報本文
     if (DB_TYPE == "pgsql") {
         $col .= "     ,to_char(news_date, 'YYYY') AS YEAR ";
         //日付(年)
         $col .= "     ,to_char(news_date, 'MM') AS MONTH ";
         //日付(月)
         $col .= "     ,to_char(news_date, 'DD') AS DAY ";
         //日付(日)
         $col .= "     ,to_char(news_date, 'HH24') AS HOUR ";
         //日付(時間)
         $col .= "     ,to_char(news_date, 'MI') AS MINUTE ";
         //日付(分)
         $col .= "     ,to_char(news_date, 'SS') AS SECOND ";
         //日付(秒)
     } else {
         if (DB_TYPE == "mysql") {
             $col .= "     ,DATE_FORMAT(news_date, '%Y') AS YEAR ";
             //日付(年)
             $col .= "     ,DATE_FORMAT(news_date, '%m') AS MONTH ";
             //日付(月)
             $col .= "     ,DATE_FORMAT(news_date, '%d') AS DAY ";
             //日付(日)
             $col .= "     ,DATE_FORMAT(news_date, '%H') AS HOUR ";
             //日付(時間)
             $col .= "     ,DATE_FORMAT(news_date, '%i') AS MINUTE ";
             //日付(分)
             $col .= "     ,DATE_FORMAT(news_date, '%s') AS SECOND ";
             //日付(秒)
         }
     }
     $col .= "     ,news_url ";
     //新着情報URL
     $col .= "     ,news_select ";
     //新着情報の区分(1:URL、2:本文)
     $col .= "     ,(SELECT shop_name FROM dtb_baseinfo limit 1) AS shop_name  ";
     //店名
     $col .= "     ,(SELECT email04 FROM dtb_baseinfo limit 1) AS email ";
     //代表Emailアドレス
     $from = "dtb_news";
     $where = "del_flg = '0'";
     $order = "rank DESC";
     $objQuery->setorder($order);
     $arrNews = $objQuery->select($col, $from, $where);
     return $arrNews;
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $conn = new SC_DBConn();
     $objView = new SC_AdminView();
     $objQuery = new SC_Query();
     $objDb = new SC_Helper_DB_Ex();
     // 認証可否の判定
     $objSess = new SC_Session();
     SC_Utils_Ex::sfIsSuccess($objSess);
     $get_check = false;
     // 規格IDのチェック
     if (SC_Utils_Ex::sfIsInt($_GET['class_id'])) {
         // 規格名の取得
         $this->tpl_class_name = $objQuery->get("dtb_class", "name", "class_id = ?", array($_GET['class_id']));
         if ($this->tpl_class_name != "") {
             // 規格IDの引き継ぎ
             $this->arrHidden['class_id'] = $_GET['class_id'];
             $get_check = true;
         }
     }
     if (!$get_check) {
         // 規格登録ページに飛ばす。
         $this->sendRedirect($this->getLocation(URL_CLASS_REGIST));
         exit;
     }
     if (!isset($_POST['mode'])) {
         $_POST['mode'] = "";
     }
     if (isset($_POST['class_id'])) {
         if (!SC_Utils_Ex::sfIsInt($_POST['class_id'])) {
             SC_Utils_Ex::sfDispError("");
         }
     }
     // 新規作成 or 編集
     switch ($_POST['mode']) {
         // 登録ボタン押下
         case 'edit':
             // POST値の引き継ぎ
             $this->arrForm = $_POST;
             // 入力文字の変換
             $_POST = $this->lfConvertParam($_POST);
             // エラーチェック
             $this->arrErr = $this->lfErrorCheck();
             if (count($this->arrErr) <= 0) {
                 if ($_POST['classcategory_id'] == "") {
                     $this->lfInsertClass();
                     // DBへの書き込み
                 } else {
                     $this->lfUpdateClass();
                     // DBへの書き込み
                 }
                 // 再表示
                 $this->reload($_GET['class_id']);
                 //sfReload("class_id=" . $_GET['class_id']);
             } else {
                 // POSTデータを引き継ぐ
                 $this->tpl_classcategory_id = $_POST['classcategory_id'];
             }
             break;
             // 削除
         // 削除
         case 'delete':
             // ランク付きレコードの削除
             $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']);
             $objDb->sfDeleteRankRecord("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where, true);
             break;
             // 編集前処理
         // 編集前処理
         case 'pre_edit':
             // 編集項目をDBより取得する。
             $where = "classcategory_id = ?";
             $name = $objQuery->get("dtb_classcategory", "name", $where, array($_POST['classcategory_id']));
             // 入力項目にカテゴリ名を入力する。
             $this->arrForm['name'] = $name;
             // POSTデータを引き継ぐ
             $this->tpl_classcategory_id = $_POST['classcategory_id'];
             break;
         case 'down':
             $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']);
             $objDb->sfRankDown("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where);
             break;
         case 'up':
             $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']);
             $objDb->sfRankUp("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where);
             break;
         default:
             break;
     }
     // 規格分類の読込
     $where = "del_flg <> 1 AND class_id = ?";
     $objQuery->setorder("rank DESC");
     $this->arrClassCat = $objQuery->select("name, classcategory_id", "dtb_classcategory", $where, array($_GET['class_id']));
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
 /**
  * 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);
 }
 function lfGetPayment($total_pretax)
 {
     $objQuery = new SC_Query();
     $objQuery->setorder("rank DESC");
     //削除されていない支払方法を取得
     $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) ");
     //利用条件から支払可能方法を判定
     foreach ($arrRet as $data) {
         //下限と上限が設定されている
         if ($data['rule'] > 0 && $data['upper_rule'] > 0) {
             if ($data['rule'] <= $total_pretax && $data['upper_rule'] >= $total_pretax) {
                 $arrPayment[] = $data;
             }
             //下限のみ設定されている
         } elseif ($data['rule'] > 0) {
             if ($data['rule'] <= $total_pretax) {
                 $arrPayment[] = $data;
             }
             //上限のみ設定されている
         } elseif ($data['upper_rule'] > 0) {
             if ($data['upper_rule'] >= $total_pretax) {
                 $arrPayment[] = $data;
             }
             //設定なし
         } else {
             $arrPayment[] = $data;
         }
     }
     return $arrPayment;
 }
 function lfGetProduct($category_id)
 {
     $objQuery = new SC_Query();
     $col = "T2.product_id, name, main_list_image, T2.rank, product_code";
     $table = "vw_products_nonclass AS noncls " . " LEFT JOIN dtb_product_categories AS T2 USING (product_id)";
     $where = "del_flg = 0 AND T2.category_id = ?";
     // 行数の取得
     $linemax = $objQuery->count($table, $where, array($category_id));
     // 該当件数表示用
     $this->tpl_linemax = $linemax;
     $objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, SEARCH_PMAX, "fnNaviPage", NAVI_PMAX);
     $startno = $objNavi->start_row;
     $this->tpl_start_row = $objNavi->start_row;
     $this->tpl_strnavi = $objNavi->strnavi;
     // Navi表示文字列
     $this->tpl_pagemax = $objNavi->max_page;
     // ページ最大数(「上へ下へ」表示判定用)
     $this->tpl_disppage = $objNavi->now_page;
     // 表示ページ番号(「上へ下へ」表示判定用)
     // 取得範囲の指定(開始行番号、行数のセット)
     if (DB_TYPE != "mysql") {
         $objQuery->setlimitoffset(SEARCH_PMAX, $startno);
     }
     $objQuery->setorder("rank DESC");
     $arrRet = $objQuery->select($col, $table, $where, array($category_id));
     return $arrRet;
 }
Пример #11
0
 /**
  * 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 lfStatusDisp($status, $pageno)
 {
     $objQuery = new SC_Query();
     $select = "*";
     $from = "dtb_order";
     $where = "del_flg = 0 AND status = ?";
     $arrval[] = $status;
     $order = "order_id DESC";
     $linemax = $objQuery->count($from, $where, $arrval);
     $this->tpl_linemax = $linemax;
     // ページ送りの処理
     $page_max = ORDER_STATUS_MAX;
     // ページ送りの取得
     $objNavi = new SC_PageNavi($pageno, $linemax, $page_max, "fnNaviSearchOnlyPage", NAVI_PMAX);
     $this->tpl_strnavi = $objNavi->strnavi;
     // 表示文字列
     $startno = $objNavi->start_row;
     $this->tpl_pageno = $pageno;
     // 取得範囲の指定(開始行番号、行数のセット)
     $objQuery->setlimitoffset($page_max, $startno);
     //表示順序
     $objQuery->setorder($order);
     //検索結果の取得
     $this->arrStatus = $objQuery->select($select, $from, $where, $arrval);
 }
    /**
     * デストラクタ.
     *
     * @return void
     */
    function lfGetRecommendProducts($product_id)
    {
        $objQuery = new SC_Query();
        $cols = '*, (SELECT COUNT(*) FROM dtb_order_detail WHERE product_id = alldtl.product_id) AS cnt';
        $from = 'vw_products_allclass_detail AS alldtl';
        $where = <<<__EOS__
            del_flg = 0
            AND status = 1
            AND product_id IN (
                SELECT product_id
                FROM
                    dtb_order_detail
                    INNER JOIN dtb_order
                        ON dtb_order_detail.order_id = dtb_order.order_id
                WHERE 0=0
                    AND dtb_order.del_flg = 0
                    AND dtb_order.order_id IN (
                        SELECT order_id
                        FROM dtb_order_detail
                        WHERE 0=0
                            AND product_id = ?
                    )
                    AND dtb_order_detail.product_id <> ?
            )
__EOS__;
        $objQuery->setorder('cnt DESC, RANDOM()');
        $objQuery->setlimit($this->max);
        $recommendProducts = $objQuery->select($cols, $from, $where, array($product_id, $product_id));
        return $recommendProducts;
    }
 function lfGetHoliday()
 {
     $objQuery = new SC_Query();
     $objQuery->setorder("rank DESC");
     $where = "del_flg <> 1";
     $arrRet = $objQuery->select("month, day", "dtb_holiday", $where);
     foreach ($arrRet as $key => $val) {
         $arrHoliday[$val['month']][] = $val['day'];
     }
     return $arrHoliday;
 }
Пример #15
0
 function lfGetOrderDetail($order_id)
 {
     $objQuery = new SC_Query();
     $objCustomer = new SC_Customer();
     //customer_idを検証
     $customer_id = $objCustomer->getValue("customer_id");
     $order_count = $objQuery->count("dtb_order", "order_id = ? and customer_id = ?", array($order_id, $customer_id));
     if ($order_count != 1) {
         return array();
     }
     $col = "product_id, classcategory_id1, classcategory_id2, quantity";
     $where = "order_id = ?";
     $objQuery->setorder("classcategory_id1, classcategory_id2");
     $arrRet = $objQuery->select($col, "dtb_order_detail", $where, array($order_id));
     return $arrRet;
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $objView = new SC_AdminView();
     $objSess = new SC_Session();
     $objDate = new SC_Date();
     $objQuery = new SC_Query();
     // 登録・更新検索開始年
     $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();
     // 認証可否の判定
     SC_Utils_Ex::sfIsSuccess($objSess);
     //レビュー情報のカラムの取得
     $select = "review_id, A.product_id, reviewer_name, sex, recommend_level, ";
     $select .= "reviewer_url, title, comment, A.status, A.create_date, A.update_date, name";
     $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id ";
     // 検索ワードの引き継ぎ
     foreach ($_POST as $key => $val) {
         if (ereg("^search_", $key)) {
             switch ($key) {
                 case 'search_sex':
                     $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val);
                     if (!is_array($val)) {
                         $this->arrForm[$key] = split("-", $val);
                     }
                     break;
                 default:
                     $this->arrHidden[$key] = $val;
                     break;
             }
         }
     }
     if (!isset($_POST['mode'])) {
         $_POST['mode'] = "";
     }
     if ($_POST['mode'] == "delete") {
         //レビューの削除
         $objQuery->exec("UPDATE dtb_review SET del_flg=1 WHERE review_id=?", array($_POST['review_id']));
     }
     if ($_POST['mode'] == 'search' || $_POST['mode'] == 'csv' || $_POST['mode'] == 'delete') {
         //削除されていない商品を検索
         $where = "A.del_flg = 0 AND B.del_flg = 0";
         $this->arrForm = $_POST;
         if (isset($_POST['search_sex']) && !is_array($_POST['search_sex'])) {
             $this->arrForm['search_sex'] = split("-", $_POST['search_sex']);
         }
         //エラーチェック
         $this->arrErr = $this->lfCheckError();
         if (!$this->arrErr) {
             foreach ($_POST as $key => $val) {
                 $val = SC_Utils_Ex::sfManualEscape($val);
                 if ($val == "") {
                     continue;
                 }
                 switch ($key) {
                     case 'search_reviewer_name':
                         $val = ereg_replace(" ", "%", $val);
                         $val = ereg_replace(" ", "%", $val);
                         $where .= " AND reviewer_name ILIKE ? ";
                         $arrval[] = "%{$val}%";
                         break;
                     case 'search_reviewer_url':
                         $val = ereg_replace(" ", "%", $val);
                         $val = ereg_replace(" ", "%", $val);
                         $where .= " AND reviewer_url ILIKE ? ";
                         $arrval[] = "%{$val}%";
                         break;
                     case 'search_name':
                         $val = ereg_replace(" ", "%", $val);
                         $val = ereg_replace(" ", "%", $val);
                         $where .= " AND name ILIKE ? ";
                         $arrval[] = "%{$val}%";
                         break;
                     case 'search_product_code':
                         $val = ereg_replace(" ", "%", $val);
                         $val = ereg_replace(" ", "%", $val);
                         $where .= " AND A.product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? )";
                         $arrval[] = "%{$val}%";
                         break;
                     case 'search_sex':
                         $tmp_where = "";
                         //$val=配列の中身,$element=各キーの値(1,2)
                         if (is_array($val)) {
                             foreach ($val as $element) {
                                 if ($element != "") {
                                     if ($tmp_where == "") {
                                         $tmp_where .= " AND (sex = ?";
                                     } else {
                                         $tmp_where .= " OR sex = ?";
                                     }
                                     $arrval[] = $element;
                                 }
                             }
                             if ($tmp_where != "") {
                                 $tmp_where .= ")";
                                 $where .= " {$tmp_where} ";
                             }
                         }
                         break;
                     case 'search_recommend_level':
                         $where .= " AND recommend_level = ? ";
                         $arrval[] = $val;
                         break;
                     case 'search_startyear':
                         if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])) {
                             $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_startyear'], $_POST['search_startmonth'], $_POST['search_startday']);
                             $where .= " AND A.create_date >= ? ";
                             $arrval[] = $date;
                         }
                         break;
                     case 'search_endyear':
                         if (isset($_POST['search_startyear']) && isset($_POST['search_startmonth']) && isset($_POST['search_startday'])) {
                             $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_endyear'], $_POST['search_endmonth'], $_POST['search_endday']);
                             $end_date = date("Y/m/d", strtotime("1 day", strtotime($date)));
                             $where .= " AND A.create_date <= cast('{$end_date}' as date) ";
                         }
                         break;
                 }
             }
         }
         $order = "A.create_date DESC";
         // ページ送りの処理
         if (is_numeric($_POST['search_page_max'])) {
             $page_max = $_POST['search_page_max'];
         } else {
             $page_max = SEARCH_PMAX;
         }
         if (!isset($arrval)) {
             $arrval = array();
         }
         $linemax = $objQuery->count($from, $where, $arrval);
         $this->tpl_linemax = $linemax;
         $this->tpl_pageno = isset($_POST['search_pageno']) ? $_POST['search_pageno'] : "";
         // ページ送りの取得
         $objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, $page_max, "fnNaviSearchPage", NAVI_PMAX);
         $this->arrPagenavi = $objNavi->arrPagenavi;
         $startno = $objNavi->start_row;
         // 取得範囲の指定(開始行番号、行数のセット)
         $objQuery->setlimitoffset($page_max, $startno);
         // 表示順序
         $objQuery->setorder($order);
         //検索結果の取得
         $this->arrReview = $objQuery->select($select, $from, $where, $arrval);
         //CSVダウンロード
         if ($_POST['mode'] == 'csv') {
             $objCSV = new SC_Helper_CSV_Ex();
             // オプションの指定
             $option = "ORDER BY review_id";
             // CSV出力タイトル行の作成
             $head = SC_Utils_Ex::sfGetCSVList($objCSV->arrREVIEW_CVSTITLE);
             $data = $objCSV->lfGetReviewCSV($where, '', $arrval);
             // CSVを送信する。
             SC_Utils_Ex::sfCSVDownload($head . $data);
             exit;
         }
     }
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
 function lfGetRanking()
 {
     $objQuery = new SC_Query();
     $col = "DISTINCT A.*, name, price02_min, price01_min, main_list_image ";
     $from = "dtb_best_products AS A INNER JOIN vw_products_allclass AS allcls using(product_id)";
     $where = "status = 1";
     $order = "rank";
     $objQuery->setorder($order);
     $arrBestProducts = $objQuery->select($col, $from, $where);
     return $arrBestProducts;
 }
Пример #18
0
        lfLoadUpdateList();
        // モジュール郡のインストール
        lfInstallModule();
        break;
        // アンインストール
    // アンインストール
    case 'uninstall':
        // 更新情報を最新にする
        lfLoadUpdateList();
        // モジュール郡のインストール
        lfUninstallModule();
        break;
    default:
        break;
}
$objQuery->setorder("module_id");
$arrUpdate = $objQuery->select("*", "dtb_module");
$objPage->arrUpdate = $arrUpdate;
$objView->assignobj($objPage);
//変数をテンプレートにアサインする
$objView->display(MAIN_FRAME);
//テンプレートの出力
//-------------------------------------------------------------------------------------------------------
// 更新ファイルの取得
function lfCopyUpdateFile($file)
{
    global $objPage;
    $src_path = sfRmDupSlash(UPDATE_HTTP . $file . ".txt");
    $dst_path = sfRmDupSlash(MODULE_PATH . $file);
    $flg_ok = true;
    // 処理の成功判定
Пример #19
0
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $objView = new SC_AdminView();
     $objSess = new SC_Session();
     SC_Utils_Ex::sfIsSuccess($objSess);
     // 検索パラメータの引き継ぎ
     foreach ($_POST as $key => $val) {
         if (ereg("^search_", $key)) {
             $this->arrSearchHidden[$key] = $val;
         }
     }
     $this->tpl_order_id = $_POST['order_id'];
     // パラメータ管理クラス
     $objFormParam = new SC_FormParam();
     // パラメータ情報の初期化
     $this->lfInitParam($objFormParam);
     $objMail = new SC_Helper_Mail_Ex();
     switch ($_POST['mode']) {
         case 'pre_edit':
             break;
         case 'return':
             // POST値の取得
             $objFormParam->setParam($_POST);
             break;
         case 'send':
             // POST値の取得
             $objFormParam->setParam($_POST);
             // 入力値の変換
             $objFormParam->convParam();
             $this->arrErr = $objFormParam->checkerror();
             // メールの送信
             if (count($this->arrErr) == 0) {
                 // 注文受付メール
                 $objMail->sfSendOrderMail($_POST['order_id'], $_POST['template_id'], $_POST['subject'], $_POST['header'], $_POST['footer']);
             }
             $this->sendRedirect($this->getLocation(URL_SEARCH_ORDER));
             exit;
             break;
         case 'confirm':
             // POST値の取得
             $objFormParam->setParam($_POST);
             // 入力値の変換
             $objFormParam->convParam();
             // 入力値の引き継ぎ
             $this->arrHidden = $objFormParam->getHashArray();
             $this->arrErr = $objFormParam->checkerror();
             // メールの送信
             if (count($this->arrErr) == 0) {
                 // 注文受付メール(送信なし)
                 $objSendMail = $objMail->sfSendOrderMail($_POST['order_id'], $_POST['template_id'], $_POST['subject'], $_POST['header'], $_POST['footer'], false);
                 // 確認ページの表示
                 $this->tpl_subject = $_POST['subject'];
                 $this->tpl_body = mb_convert_encoding($objSendMail->body, CHAR_CODE, "auto");
                 $this->tpl_to = $objSendMail->tpl_to;
                 $this->tpl_mainpage = 'order/mail_confirm.tpl';
                 $objView->assignobj($this);
                 $objView->display(MAIN_FRAME);
                 exit;
             }
             break;
         case 'change':
             // POST値の取得
             $objFormParam->setValue('template_id', $_POST['template_id']);
             if (SC_Utils_Ex::sfIsInt($_POST['template_id'])) {
                 $objQuery = new SC_Query();
                 $where = "template_id = ?";
                 $arrRet = $objQuery->select("subject, header, footer", "dtb_mailtemplate", $where, array($_POST['template_id']));
                 $objFormParam->setParam($arrRet[0]);
             }
             break;
     }
     $objQuery = new SC_Query();
     $col = "send_date, subject, template_id, send_id";
     $where = "order_id = ?";
     $objQuery->setorder("send_date DESC");
     if (SC_Utils_Ex::sfIsInt($_POST['order_id'])) {
         $this->arrMailHistory = $objQuery->select($col, "dtb_mail_history", $where, array($_POST['order_id']));
     }
     $this->arrForm = $objFormParam->getFormParamList();
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
Пример #20
0
 /**
  * 配送時間を取得する.
  *
  * @param integer $payment_id 支払い方法ID
  * @return array 配送時間の配列
  */
 function sfGetDelivTime($payment_id = "")
 {
     $objQuery = new SC_Query();
     $deliv_id = "";
     $arrRet = array();
     if ($payment_id != "") {
         $where = "del_flg = 0 AND payment_id = ?";
         $arrRet = $objQuery->select("deliv_id", "dtb_payment", $where, array($payment_id));
         $deliv_id = $arrRet[0]['deliv_id'];
     }
     if ($deliv_id != "") {
         $objQuery->setorder("time_id");
         $where = "deliv_id = ?";
         $arrRet = $objQuery->select("time_id, deliv_time", "dtb_delivtime", $where, array($deliv_id));
     }
     return $arrRet;
 }
 function lfPreGetRecommendProducts($product_id)
 {
     $arrRecommend = array();
     $objQuery = new SC_Query();
     $objQuery->setorder("rank DESC");
     $arrRet = $objQuery->select("recommend_product_id, comment", "dtb_recommend_products", "product_id = ?", array($product_id));
     $max = count($arrRet);
     $no = 1;
     for ($i = 0; $i < $max; $i++) {
         $arrProductInfo = $objQuery->select("main_list_image, product_code_min, name", "vw_products_allclass AS allcls", "product_id = ?", array($arrRet[$i]['recommend_product_id']));
         $arrRecommend[$no] = $arrProductInfo[0];
         $arrRecommend[$no]['product_id'] = $arrRet[$i]['recommend_product_id'];
         $arrRecommend[$no]['comment'] = $arrRet[$i]['comment'];
         $no++;
     }
     return $arrRecommend;
 }
Пример #22
0
 /**
  * 利用規約を取得し、ページオブジェクトに格納する。
  *
  * @param integer $index 規約のインデックス
  * @param object &$objPage ページオブジェクト
  * @return void
  */
 function lfGetKiyaku($index, &$objPage)
 {
     $objQuery = new SC_Query();
     $objQuery->setorder('rank DESC');
     $arrRet = $objQuery->select('kiyaku_title, kiyaku_text', 'dtb_kiyaku', 'del_flg <> 1');
     $number = count($arrRet);
     if ($number > 0) {
         $last = $number - 1;
     } else {
         $last = 0;
     }
     if ($index < 0) {
         $index = 0;
     } elseif ($index > $last) {
         $index = $last;
     }
     $objPage->tpl_kiyaku_title = @$arrRet[$index]['kiyaku_title'];
     $objPage->tpl_kiyaku_text = @$arrRet[$index]['kiyaku_text'];
     $objPage->tpl_kiyaku_index = $index;
     $objPage->tpl_kiyaku_last_index = $last;
     $objPage->tpl_kiyaku_is_first = $index <= 0;
     $objPage->tpl_kiyaku_is_last = $index >= $last;
 }
Пример #23
0
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $conn = new SC_DBConn();
     $objView = new SC_AdminView();
     $objDb = new SC_Helper_DB_Ex();
     $objSess = new SC_Session();
     // パラメータ管理クラス
     $this->objFormParam = new SC_FormParam();
     // パラメータ情報の初期化
     $this->lfInitParam();
     $this->objFormParam->setParam($_POST);
     $this->objFormParam->splitParamCheckBoxes('search_order_sex');
     $this->objFormParam->splitParamCheckBoxes('search_payment_id');
     // 検索ワードの引き継ぎ
     foreach ($_POST as $key => $val) {
         if (ereg("^search_", $key)) {
             switch ($key) {
                 case 'search_order_sex':
                 case 'search_payment_id':
                     $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val);
                     break;
                 default:
                     $this->arrHidden[$key] = $val;
                     break;
             }
         }
     }
     // ページ送り用
     $this->arrHidden['search_pageno'] = isset($_POST['search_pageno']) ? $_POST['search_pageno'] : "";
     // 認証可否の判定
     SC_Utils_Ex::sfIsSuccess($objSess);
     if (!isset($_POST['mode'])) {
         $_POST['mode'] = "";
     }
     if (!isset($arrRet)) {
         $arrRet = array();
     }
     if ($_POST['mode'] == 'delete') {
         if (SC_Utils_Ex::sfIsInt($_POST['order_id'])) {
             $objQuery = new SC_Query();
             $where = "order_id = ?";
             $sqlval['del_flg'] = '1';
             $objQuery->update("dtb_order", $sqlval, $where, array($_POST['order_id']));
         }
     }
     switch ($_POST['mode']) {
         case 'delete':
         case 'csv':
         case 'pdf':
         case 'delete_all':
         case 'search':
             // 入力値の変換
             $this->objFormParam->convParam();
             $this->arrErr = $this->lfCheckError($arrRet);
             $arrRet = $this->objFormParam->getHashArray();
             // 入力なし
             if (count($this->arrErr) == 0) {
                 $where = "del_flg = 0";
                 foreach ($arrRet as $key => $val) {
                     if ($val == "") {
                         continue;
                     }
                     $val = SC_Utils_Ex::sfManualEscape($val);
                     switch ($key) {
                         case 'search_order_name':
                             if (DB_TYPE == "pgsql") {
                                 $where .= " AND order_name01||order_name02 ILIKE ?";
                             } elseif (DB_TYPE == "mysql") {
                                 $where .= " AND concat(order_name01,order_name02) ILIKE ?";
                             }
                             $nonsp_val = mb_ereg_replace("[  ]+", "", $val);
                             $arrval[] = "%{$nonsp_val}%";
                             break;
                         case 'search_order_kana':
                             if (DB_TYPE == "pgsql") {
                                 $where .= " AND order_kana01||order_kana02 ILIKE ?";
                             } elseif (DB_TYPE == "mysql") {
                                 $where .= " AND concat(order_kana01,order_kana02) ILIKE ?";
                             }
                             $nonsp_val = mb_ereg_replace("[  ]+", "", $val);
                             $arrval[] = "%{$nonsp_val}%";
                             break;
                         case 'search_order_id1':
                             $where .= " AND order_id >= ?";
                             $arrval[] = $val;
                             break;
                         case 'search_order_id2':
                             $where .= " AND order_id <= ?";
                             $arrval[] = $val;
                             break;
                         case 'search_order_sex':
                             $tmp_where = "";
                             foreach ($val as $element) {
                                 if ($element != "") {
                                     if ($tmp_where == "") {
                                         $tmp_where .= " AND (order_sex = ?";
                                     } else {
                                         $tmp_where .= " OR order_sex = ?";
                                     }
                                     $arrval[] = $element;
                                 }
                             }
                             if ($tmp_where != "") {
                                 $tmp_where .= ")";
                                 $where .= " {$tmp_where} ";
                             }
                             break;
                         case 'search_order_tel':
                             if (DB_TYPE == "pgsql") {
                                 $where .= " AND (order_tel01 || order_tel02 || order_tel03) LIKE ?";
                             } elseif (DB_TYPE == "mysql") {
                                 $where .= " AND concat(order_tel01,order_tel02,order_tel03) LIKE ?";
                             }
                             $nonmark_val = ereg_replace("[()-]+", "", $val);
                             $arrval[] = "%{$nonmark_val}%";
                             break;
                         case 'search_order_email':
                             $where .= " AND order_email ILIKE ?";
                             $arrval[] = "%{$val}%";
                             break;
                         case 'search_payment_id':
                             $tmp_where = "";
                             foreach ($val as $element) {
                                 if ($element != "") {
                                     if ($tmp_where == "") {
                                         $tmp_where .= " AND (payment_id = ?";
                                     } else {
                                         $tmp_where .= " OR payment_id = ?";
                                     }
                                     $arrval[] = $element;
                                 }
                             }
                             if ($tmp_where != "") {
                                 $tmp_where .= ")";
                                 $where .= " {$tmp_where} ";
                             }
                             break;
                         case 'search_total1':
                             $where .= " AND total >= ?";
                             $arrval[] = $val;
                             break;
                         case 'search_total2':
                             $where .= " AND total <= ?";
                             $arrval[] = $val;
                             break;
                         case 'search_sorderyear':
                             $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_sorderyear'], $_POST['search_sordermonth'], $_POST['search_sorderday']);
                             $where .= " AND create_date >= ?";
                             $arrval[] = $date;
                             break;
                         case 'search_eorderyear':
                             $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_eorderyear'], $_POST['search_eordermonth'], $_POST['search_eorderday'], true);
                             $where .= " AND create_date <= ?";
                             $arrval[] = $date;
                             break;
                         case 'search_supdateyear':
                             $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_supdateyear'], $_POST['search_supdatemonth'], $_POST['search_supdateday']);
                             $where .= " AND update_date >= ?";
                             $arrval[] = $date;
                             break;
                         case 'search_eupdateyear':
                             $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_eupdateyear'], $_POST['search_eupdatemonth'], $_POST['search_eupdateday'], true);
                             $where .= " AND update_date <= ?";
                             $arrval[] = $date;
                             break;
                         case 'search_sbirthyear':
                             $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_sbirthyear'], $_POST['search_sbirthmonth'], $_POST['search_sbirthday']);
                             $where .= " AND order_birth >= ?";
                             $arrval[] = $date;
                             break;
                         case 'search_ebirthyear':
                             $date = SC_Utils_Ex::sfGetTimestamp($_POST['search_ebirthyear'], $_POST['search_ebirthmonth'], $_POST['search_ebirthday'], true);
                             $where .= " AND order_birth <= ?";
                             $arrval[] = $date;
                             break;
                         case 'search_order_status':
                             $where .= " AND status = ?";
                             $arrval[] = $val;
                             break;
                         default:
                             if (!isset($arrval)) {
                                 $arrval = array();
                             }
                             break;
                     }
                 }
                 $order = "update_date DESC";
                 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出力タイトル行の作成
                         $arrCsvOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfgetCsvOutput(3, " WHERE csv_id = 3 AND status = 1"));
                         if (count($arrCsvOutput) <= 0) {
                             break;
                         }
                         $arrCsvOutputCols = $arrCsvOutput['col'];
                         $arrCsvOutputTitle = $arrCsvOutput['disp_name'];
                         $head = SC_Utils_Ex::sfGetCSVList($arrCsvOutputTitle);
                         $data = $objCSV->lfGetCSV("dtb_order", $where, $option, $arrval, $arrCsvOutputCols);
                         // CSVを送信する。
                         SC_Utils_Ex::sfCSVDownload($head . $data);
                         exit;
                         break;
                     case 'pdf':
                         $objFpdf = new SC_Fpdf(1, '納品書');
                         $objFpdf->setData($arrRet);
                         $objFpdf->createPdf();
                         break;
                     case 'delete_all':
                         // 検索結果をすべて削除
                         $sqlval['del_flg'] = 1;
                         $objQuery = new SC_Query();
                         $objQuery->update("dtb_order", $sqlval, $where, $arrval);
                         break;
                     default:
                         // 読み込む列とテーブルの指定
                         $col = "*";
                         $from = "dtb_order";
                         $objQuery = new SC_Query();
                         // 行数の取得
                         $linemax = $objQuery->count($from, $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;
                         // 取得範囲の指定(開始行番号、行数のセット)
                         $objQuery->setlimitoffset($page_max, $startno);
                         // 表示順序
                         $objQuery->setorder($order);
                         // 検索結果の取得
                         $this->arrResults = $objQuery->select($col, $from, $where, $arrval);
                 }
             }
             break;
         default:
             break;
     }
     $objDate = new SC_Date();
     // 登録・更新日検索用
     $objDate->setStartYear(RELEASE_YEAR);
     $objDate->setEndYear(DATE("Y"));
     $this->arrRegistYear = $objDate->getYear();
     // 生年月日検索用
     $objDate->setStartYear(BIRTH_YEAR);
     $objDate->setEndYear(DATE("Y"));
     $this->arrBirthYear = $objDate->getYear();
     // 月日の設定
     $this->arrMonth = $objDate->getMonth();
     $this->arrDay = $objDate->getDay();
     // 入力値の取得
     $this->arrForm = $this->objFormParam->getFormParamList();
     // 支払い方法の取得
     $arrRet = $objDb->sfGetPayment();
     $this->arrPayment = SC_Utils_Ex::sfArrKeyValue($arrRet, 'payment_id', 'payment_method');
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
 /**
  * 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 'delete':
             // ランク付きレコードの削除
             $objDb->sfDeleteRankRecord("dtb_deliv", "deliv_id", $_POST['deliv_id']);
             // 再表示
             SC_Utils_Ex::sfReload();
             break;
         case 'up':
             $objDb->sfRankUp("dtb_deliv", "deliv_id", $_POST['deliv_id']);
             // 再表示
             SC_Utils_Ex::sfReload();
             break;
         case 'down':
             $objDb->sfRankDown("dtb_deliv", "deliv_id", $_POST['deliv_id']);
             // 再表示
             SC_Utils_Ex::sfReload();
             break;
         default:
             break;
     }
     // 配送業者一覧の取得
     $col = "deliv_id, name, service_name";
     $where = "del_flg = 0";
     $table = "dtb_deliv";
     $objQuery->setorder("rank DESC");
     $this->arrDelivList = $objQuery->select($col, $table, $where);
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
Пример #25
0
 function lfGetPayment()
 {
     $objQuery = new SC_Query();
     $col = "payment_id, rule, payment_method";
     $from = "dtb_payment";
     $where = "del_flg = 0";
     $order = "payment_id";
     $objQuery->setorder($order);
     $arrRet = $objQuery->select($col, $from, $where);
     return $arrRet;
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $objView = new SC_AdminView();
     // POSTのモードがsearchなら顧客検索開始
     if ($_POST['mode'] == 'search') {
         $this->objFormParam = new SC_FormParam();
         // 値の初期化
         $this->lfInitParam();
         // POST値の取得
         $this->objFormParam->setParam($_POST);
         // 入力値の変換
         $this->objFormParam->convParam();
         // 入力された値を取得する
         $arrForm = $this->objFormParam->getHashArray();
         // エラーチェック
         $this->arrErr = $this->lfCheckError();
         if (is_array($this->arrErr) === true && 0 < count($this->arrErr)) {
             $is_select = false;
         } else {
             $where = "del_flg = 0";
             // 検索
             foreach ($arrForm as $tmp_key => $val) {
                 if (is_array($val) === false && 0 < strlen($val)) {
                     $key = strtr($tmp_key, array('search_' => ''));
                     switch ($key) {
                         case 'customer_id':
                             $where .= " AND customer_id = ? ";
                             $sqlval[$key] = $val;
                             break;
                         case 'name01':
                             $where .= " AND name01 ILIKE ? ";
                             $sqlval[$key] = '%' . $val . '%';
                             break;
                         case 'name02':
                             $where .= " AND name02 ILIKE ? ";
                             $sqlval[$key] = '%' . $val . '%';
                             break;
                         case 'kana01':
                             $where .= " AND kana01 ILIKE ? ";
                             $sqlval[$key] = '%' . $val . '%';
                             break;
                         case 'kana02':
                             $where .= " AND kana02 ILIKE ? ";
                             $sqlval[$key] = '%' . $val . '%';
                             break;
                         default:
                             break;
                     }
                 }
             }
             $is_select = true;
         }
         if ($is_select === true) {
             $objQuery = new SC_Query();
             // 既に購入した事がある顧客を取得
             $col = '*';
             $from = 'dtb_customer';
             $order = 'customer_id';
             $arrCustomer = $objQuery->select($col, $from, $where, $sqlval);
             // 顧客情報を取得できたら、テンプレートに
             if (is_array($arrCustomer) === true && count($arrCustomer) > 0) {
                 $customer_count = count($arrCustomer);
                 if ($customer_count != 0) {
                     $this->tpl_linemax = $customer_count;
                 }
             } else {
                 $this->tpl_linemax = null;
             }
             // ページ送りの処理
             if (isset($_POST['search_page_max']) && is_numeric($_POST['search_page_max'])) {
                 $page_max = $_POST['search_page_max'];
             } else {
                 $page_max = SEARCH_PMAX;
             }
             // ページ送りの取得
             $objNavi = new SC_PageNavi($_POST['search_pageno'], $customer_count, $page_max, "fnNaviSearchOnlyPage", NAVI_PMAX);
             $this->tpl_strnavi = $objNavi->strnavi;
             // 表示文字列
             $startno = $objNavi->start_row;
             // 取得範囲の指定(開始行番号、行数のセット)
             $objQuery->setlimitoffset($page_max, $startno);
             // 表示順序
             $objQuery->setorder($order);
             // 検索結果の取得
             $this->arrCustomer = $objQuery->select($col, $from, $where, $sqlval);
         }
     }
     // 画面の表示
     $this->arrForm = $arrForm;
     $objView->assignobj($this);
     $objView->display($this->tpl_mainpage);
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     //---- ページ初期設定
     $conn = new SC_DBConn();
     $objView = new SC_AdminView();
     $objSess = new SC_Session();
     $objDate = new SC_Date();
     // 認証可否の判定
     SC_Utils_Ex::sfIsSuccess($objSess);
     if (!isset($_GET['send_id'])) {
         $_GET['send_id'] = "";
     }
     if (!isset($_GET['mode'])) {
         $_GET['mode'] = "";
     }
     if (!isset($_POST['search_pageno'])) {
         $_POST['search_pageno'] = "";
     }
     // 削除時
     if (SC_Utils_Ex::sfCheckNumLength($_GET['send_id']) && $_GET['mode'] == 'delete') {
         $sql = "UPDATE dtb_send_history SET del_flg = 1 WHERE send_id = ?";
         $conn->query($sql, array($_GET['send_id']));
         $_SERVER['QUERY_STRING'] = "";
         $this->reload();
     }
     $col = "*";
     $from = "dtb_send_history";
     $where = " del_flg = ?";
     $arrval[] = "0";
     $objQuery = new SC_Query();
     // 行数の取得
     $linemax = $objQuery->count($from, $where, $arrval);
     $this->tpl_linemax = $linemax;
     // 何件が該当しました。表示用
     // ページ送りの取得
     $objNavi = new SC_PageNavi($_POST['search_pageno'], $linemax, SEARCH_PMAX, "fnNaviSearchPage", NAVI_PMAX);
     $this->tpl_strnavi = $objNavi->strnavi;
     // 表示文字列
     $startno = $objNavi->start_row;
     // 取得範囲の指定(開始行番号、行数のセット)
     $objQuery->setlimitoffset(SEARCH_PMAX, $startno);
     // 表示順序
     $order = "start_date DESC, send_id DESC";
     $objQuery->setorder($order);
     // 検索結果の取得
     $this->arrDataList = $objQuery->select($col, $from, $where, $arrval);
     //---- ページ表示
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
Пример #28
0
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $objView = new SC_SiteView();
     $objQuery = new SC_Query();
     $objCustomer = new SC_Customer();
     // レイアウトデザインを取得
     $objLayout = new SC_Helper_PageLayout_Ex();
     $objLayout->sfGetPageLayout($this, false, "mypage/index.php");
     // ログインチェック
     if (!$objCustomer->isLoginSuccess()) {
         SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
     } else {
         //マイページトップ顧客情報表示用
         $this->CustomerName1 = $objCustomer->getvalue('name01');
         $this->CustomerName2 = $objCustomer->getvalue('name02');
         $this->CustomerPoint = $objCustomer->getvalue('point');
     }
     //ページ送り用
     if (isset($_POST['pageno'])) {
         $this->tpl_pageno = htmlspecialchars($_POST['pageno'], ENT_QUOTES, CHAR_CODE);
     }
     $col = "order_id, create_date, payment_id, payment_total";
     $from = "dtb_order";
     $where = "del_flg = 0 AND customer_id=?";
     $arrval = array($objCustomer->getvalue('customer_id'));
     $order = "order_id DESC";
     $linemax = $objQuery->count($from, $where, $arrval);
     $this->tpl_linemax = $linemax;
     // ページ送りの取得
     $objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, SEARCH_PMAX, "fnNaviPage", NAVI_PMAX);
     $this->tpl_strnavi = $objNavi->strnavi;
     // 表示文字列
     $startno = $objNavi->start_row;
     // 取得範囲の指定(開始行番号、行数のセット)
     $objQuery->setlimitoffset(SEARCH_PMAX, $startno);
     // 表示順序
     $objQuery->setorder($order);
     //購入履歴の取得
     $this->arrOrder = $objQuery->select($col, $from, $where, $arrval);
     // 支払い方法の取得
     $objDb = new SC_Helper_DB_Ex();
     $this->arrPayment = $objDb->sfGetIDValueList("dtb_payment", "payment_id", "payment_method");
     $objView->assignobj($this);
     //$objpage内の全てのテンプレート変数をsmartyに格納
     $objView->display(SITE_FRAME);
     //パスとテンプレート変数の呼び出し、実行
 }
Пример #29
0
 /**
  * Page のプロセス(モバイル).
  *
  * @return void
  */
 function mobileProcess()
 {
     $objView = new SC_MobileView();
     $objCustomer = new SC_Customer();
     $offset = isset($_REQUEST['offset']) ? $_REQUEST['offset'] : 0;
     $next = $offset;
     // レイアウトデザインを取得
     $objLayout = new SC_Helper_PageLayout_Ex();
     $objLayout->sfGetPageLayout($this, false, DEF_LAYOUT);
     // 規約内容の取得
     $objQuery = new SC_Query();
     $count = $objQuery->count("dtb_kiyaku", "del_flg <> 1");
     $objQuery->setorder("rank DESC");
     $objQuery->setlimitoffset(1, $offset);
     $arrRet = $objQuery->select("kiyaku_title, kiyaku_text", "dtb_kiyaku", "del_flg <> 1");
     if ($count > $offset + 1) {
         $next++;
     } else {
         $next = -1;
     }
     $max = count($arrRet);
     $this->tpl_kiyaku_text = "";
     for ($i = 0; $i < $max; $i++) {
         $this->tpl_kiyaku_text .= $arrRet[$i]['kiyaku_title'] . "\n\n";
         $this->tpl_kiyaku_text .= $arrRet[$i]['kiyaku_text'] . "\n\n";
     }
     $objView->assign("offset", $next);
     $objView->assignobj($this);
     $objView->display(SITE_FRAME);
 }
Пример #30
0
 function sfPrePoint($price, $point_rate, $rule = POINT_RULE, $product_id = "")
 {
     if (SC_Utils::sfIsInt($product_id)) {
         $objQuery = new SC_Query();
         $where = "now() >= cast(start_date as date) AND ";
         $where .= "now() < cast(end_date as date) AND ";
         $where .= "del_flg = 0 AND campaign_id IN (SELECT campaign_id FROM dtb_campaign_detail where product_id = ? )";
         //登録(更新)日付順
         $objQuery->setorder('update_date DESC');
         //キャンペーンポイントの取得
         $arrRet = $objQuery->select("campaign_name, campaign_point_rate", "dtb_campaign", $where, array($product_id));
     }
     //複数のキャンペーンに登録されている商品は、最新のキャンペーンからポイントを取得
     if (isset($arrRet[0]['campaign_point_rate']) && $arrRet[0]['campaign_point_rate'] != "") {
         $campaign_point_rate = $arrRet[0]['campaign_point_rate'];
         $real_point = $campaign_point_rate / 100;
     } else {
         $real_point = $point_rate / 100;
     }
     $ret = $price * $real_point;
     switch ($rule) {
         // 四捨五入
         case 1:
             $ret = round($ret);
             break;
             // 切り捨て
         // 切り捨て
         case 2:
             $ret = floor($ret);
             break;
             // 切り上げ
         // 切り上げ
         case 3:
             $ret = ceil($ret);
             break;
             // デフォルト:切り上げ
         // デフォルト:切り上げ
         default:
             $ret = ceil($ret);
             break;
     }
     //キャンペーン商品の場合
     if (isset($campaign_point_rate) && $campaign_point_rate != "") {
         $ret = "(" . $arrRet[0]['campaign_name'] . "ポイント率" . $campaign_point_rate . "%)" . $ret;
     }
     return $ret;
 }