/**
  * Page を初期化する.
  *
  * @return void
  */
 function init()
 {
     parent::init();
     $this->tpl_mainpage = 'mail/index.tpl';
     $this->tpl_mainno = 'mail';
     $this->tpl_subno = 'index';
     $this->tpl_pager = 'pager.tpl';
     $this->tpl_maintitle = 'メルマガ管理';
     $this->tpl_subtitle = '配信内容設定';
     $masterData = new SC_DB_MasterData_Ex();
     $this->arrPref = $masterData->getMasterData('mtb_pref');
     $this->arrJob = $masterData->getMasterData('mtb_job');
     $this->arrJob['不明'] = '不明';
     $this->arrSex = $masterData->getMasterData('mtb_sex');
     $this->arrPageRows = $masterData->getMasterData('mtb_page_max');
     $this->arrHtmlmail = array('' => '両方', 1 => 'HTML', 2 => 'TEXT');
     $this->arrMailType = $masterData->getMasterData('mtb_mail_type');
     // 日付プルダウン設定
     $objDate = new SC_Date_Ex(BIRTH_YEAR);
     $this->arrBirthYear = $objDate->getYear();
     $this->arrRegistYear = $objDate->getYear();
     $this->arrMonth = $objDate->getMonth();
     $this->arrDay = $objDate->getDay();
     $this->objDate = $objDate;
     // カテゴリ一覧設定
     $objDb = new SC_Helper_DB_Ex();
     $this->arrCatList = $objDb->sfGetCategoryList();
     // テンプレート一覧設定
     $this->arrTemplate = $this->lfGetMailTemplateList(SC_Helper_Mail_Ex::sfGetMailmagaTemplate());
     $this->httpCacheControl('nocache');
 }
 /**
  * Page を初期化する.
  *
  * @return void
  */
 function init()
 {
     parent::init();
     $this->tpl_mainpage = 'mail/index.tpl';
     $this->tpl_mainno = 'mail';
     $this->tpl_subno = 'index';
     $this->tpl_pager = 'pager.tpl';
     $this->tpl_maintitle = t('c_Mail magazine_02');
     $this->tpl_subtitle = t('c_Delivery content settings_01');
     $masterData = new SC_DB_MasterData_Ex();
     $this->arrPref = $masterData->getMasterData('mtb_pref');
     $this->arrJob = $masterData->getMasterData('mtb_job');
     $this->arrJob[t('c_Unknown_01')] = t('c_Unknown_01');
     $this->arrSex = $masterData->getMasterData('mtb_sex');
     $this->arrPageRows = $masterData->getMasterData('mtb_page_max');
     $this->arrHtmlmail = array('' => t('c_Both_01'), 1 => t('c_HTML_01'), 2 => t('c_TEXT_02'));
     $this->arrMailType = $masterData->getMasterData('mtb_mail_type');
     // 日付プルダウン設定
     $objDate = new SC_Date_Ex(BIRTH_YEAR);
     $this->arrBirthYear = $objDate->getYear();
     $this->arrRegistYear = $objDate->getYear();
     $this->arrMonth = $objDate->getMonth();
     $this->arrDay = $objDate->getDay();
     $this->objDate = $objDate;
     // カテゴリ一覧設定
     $objDb = new SC_Helper_DB_Ex();
     $this->arrCatList = $objDb->sfGetCategoryList();
     // テンプレート一覧設定
     $this->arrTemplate = $this->lfGetMailTemplateList(SC_Helper_Mail_Ex::sfGetMailmagaTemplate());
     $this->httpCacheControl('nocache');
 }
 /**
  * Page を初期化する.
  *
  * @return void
  */
 public function init()
 {
     parent::init();
     $this->tpl_mainpage = 'customer/index.tpl';
     $this->tpl_mainno = 'customer';
     $this->tpl_subno = 'index';
     $this->tpl_pager = 'pager.tpl';
     $this->tpl_maintitle = '会員管理';
     $this->tpl_subtitle = '会員マスター';
     $masterData = new SC_DB_MasterData_Ex();
     $this->arrPref = $masterData->getMasterData('mtb_pref');
     $this->arrJob = $masterData->getMasterData('mtb_job');
     $this->arrJob['不明'] = '不明';
     $this->arrSex = $masterData->getMasterData('mtb_sex');
     $this->arrPageMax = $masterData->getMasterData('mtb_page_max');
     $this->arrStatus = $masterData->getMasterData('mtb_customer_status');
     $this->arrMagazineType = $masterData->getMasterData('mtb_magazine_type');
     // 日付プルダウン設定
     $objDate = new SC_Date_Ex();
     // 登録・更新日検索用
     $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();
     // カテゴリ一覧設定
     $objDb = new SC_Helper_DB_Ex();
     $this->arrCatList = $objDb->sfGetCategoryList();
     $this->httpCacheControl('nocache');
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $arrSearch = array();
     // 検索項目表示用
     $objDb = new SC_Helper_DB_Ex();
     // 選択中のカテゴリIDを判定する
     $this->category_id = $objDb->sfGetCategoryId($_GET['product_id'], $_GET['category_id']);
     // カテゴリ検索用選択リスト
     $arrRet = $objDb->sfGetCategoryList('', true, ' ');
     if (is_array($arrRet)) {
         // 文字サイズを制限する
         foreach ($arrRet as $key => $val) {
             $arrRet[$key] = SC_Utils_Ex::sfCutString($val, SEARCH_CATEGORY_LEN, false);
         }
     }
     $this->arrCatList = $arrRet;
     $objSubView = new SC_SiteView();
     $objSubView->assignobj($this);
     $objSubView->display($this->tpl_mainpage);
 }
 /**
  * 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);
 }
 /**
  * カテゴリ検索用選択リストを取得する
  *
  * @return array $arrCategoryList カテゴリ検索用選択リスト
  */
 function lfGetCategoryList()
 {
     $objDb = new SC_Helper_DB_Ex();
     // カテゴリ検索用選択リスト
     $arrCategoryList = $objDb->sfGetCategoryList('', true, ' ');
     if (is_array($arrCategoryList)) {
         // 文字サイズを制限する
         foreach ($arrCategoryList as $key => $val) {
             $truncate_str = SC_Utils_Ex::sfCutString($val, SEARCH_CATEGORY_LEN, false);
             $arrCategoryList[$key] = preg_replace('/ /u', '  ', $truncate_str);
         }
     }
     return $arrCategoryList;
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_POST);
     $objFormParam->convParam();
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objDb = new SC_Helper_DB_Ex();
     switch ($this->getMode()) {
         case 'down':
             //商品の並び替えをする。おすすめはデータベースの登録が昇順なので、Modeを逆にする。
             $arrRet = $objQuery->select('best_id', 'dtb_best_products', 'rank = ?', array($_POST['rank']));
             //おすすめidの取得
             $best_id = $arrRet[0]['best_id'];
             $objDb->sfRankUp('dtb_best_products', 'best_id', $best_id);
             $arrPost = $objFormParam->getHashArray();
             $arrItems = $this->getRecommendProducts();
             break;
         case 'up':
             //商品の並び替えをする。おすすめのみデータベースの登録が昇順なので、Modeを逆にする。
             $arrRet = $objQuery->select('best_id', 'dtb_best_products', 'rank = ?', array($_POST['rank']));
             //おすすめidの取得
             $best_id = $arrRet[0]['best_id'];
             $objDb->sfRankDown('dtb_best_products', 'best_id', $best_id);
             $arrPost = $objFormParam->getHashArray();
             $arrItems = $this->getRecommendProducts();
             break;
         case 'regist':
             // 商品を登録する。
             $this->arrErr = $this->lfCheckError($objFormParam);
             $arrPost = $objFormParam->getHashArray();
             // 登録処理にエラーがあった場合は商品選択の時と同じ処理を行う。
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $member_id = $_SESSION['member_id'];
                 $this->insertRecommendProduct($arrPost, $member_id);
                 $arrItems = $this->getRecommendProducts();
             } else {
                 $arrItems = $this->setProducts($arrPost, $arrItems);
                 $this->checkRank = $arrPost['rank'];
             }
             $this->tpl_onload = "window.alert('編集が完了しました');";
             break;
         case 'delete':
             // 商品を削除する。
             $this->arrErr = $this->lfCheckError($objFormParam);
             $arrPost = $objFormParam->getHashArray();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $this->deleteProduct($arrPost);
                 $arrItems = $this->getRecommendProducts();
             }
             $this->tpl_onload = "window.alert('削除しました');";
             break;
         case 'set_item':
             // 商品を選択する。
             $this->arrErr = $this->lfCheckError($objFormParam);
             $arrPost = $objFormParam->getHashArray();
             if (SC_Utils_Ex::isBlank($this->arrErr['rank']) && SC_Utils_Ex::isBlank($this->arrErr['product_id'])) {
                 $arrItems = $this->setProducts($arrPost, $this->getRecommendProducts());
                 $this->checkRank = $arrPost['rank'];
             }
             break;
         default:
             $arrItems = $this->getRecommendProducts();
             break;
     }
     $this->category_id = intval($arrPost['category_id']);
     $this->arrItems = $arrItems;
     // カテゴリ取得
     $objDb = new SC_Helper_DB_Ex();
     $this->arrCatList = $objDb->sfGetCategoryList('level = 1');
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     //---- ページ初期設定
     $objQuery = new SC_Query();
     $objView = new SC_AdminView();
     $objDate = new SC_Date(1901);
     $objDb = new SC_Helper_DB_Ex();
     $this->arrYear = $objDate->getYear();
     // 日付プルダウン設定
     $this->arrMonth = $objDate->getMonth();
     $this->arrDay = $objDate->getDay();
     $this->objDate = $objDate;
     // 認証可否の判定
     $objSess = new SC_Session();
     SC_Utils_Ex::sfIsSuccess($objSess);
     // POST値の引き継ぎ
     $this->arrForm = $_POST;
     // ページ送り用
     $this->arrHidden['search_pageno'] = isset($_POST['search_pageno']) ? $_POST['search_pageno'] : "";
     // 検索ワードの引き継ぎ
     foreach ($_POST as $key => $val) {
         switch ($key) {
             case 'sex':
             case '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;
         }
     }
     if (!isset($_POST['mode'])) {
         $_POST['mode'] = "";
     }
     // 顧客削除
     if ($_POST['mode'] == "delete") {
         $sql = "SELECT status,email FROM dtb_customer WHERE customer_id = ? AND del_flg = 0";
         $result_customer = $objQuery->conn->getAll($sql, array($_POST["edit_customer_id"]));
         if ($result_customer[0]["status"] == 2) {
             //本会員削除
             $arrDel = array("del_flg" => 1, "update_date" => "NOW()");
             $objQuery->conn->autoExecute("dtb_customer", $arrDel, "customer_id = " . SC_Utils_Ex::sfQuoteSmart($_POST["edit_customer_id"]));
         } elseif ($result_customer[0]["status"] == 1) {
             //仮会員削除
             $sql = "DELETE FROM dtb_customer WHERE customer_id = ?";
             $objQuery->conn->query($sql, array($_POST["edit_customer_id"]));
         }
     }
     //if ($_POST['mode'] == "search" || $_POST['mode'] == "csv"  || $_POST['mode'] == "delete" || $_POST['mode'] == "delete_all") {
     // 登録メール再送
     if ($_POST['mode'] == "resend_mail") {
         $arrRet = $objQuery->select("name01, name02, secret_key, email", "dtb_customer", "customer_id = ? AND del_flg <> 1 AND status = 1", array($_POST["edit_customer_id"]));
         if (is_array($arrRet) === true && count($arrRet) > 0) {
             $CONF = $objDb->sf_getBasisData();
             $this->CONF = $CONF;
             $objMailText = new SC_SiteView();
             $objMailText->assignobj($this);
             $mailHelper = new SC_Helper_Mail_Ex();
             $this->name01 = $arrRet[0]['name01'];
             $this->name02 = $arrRet[0]['name02'];
             $this->uniqid = $arrRet[0]['secret_key'];
             $subject = $mailHelper->sfMakesubject($objQuery, $objMailText, $this, '会員登録のご確認');
             $toCustomerMail = $objMailText->fetch("mail_templates/customer_mail.tpl");
             $objMail = new SC_SendMail();
             $objMail->setItem('', $subject, $toCustomerMail, $CONF["email03"], $CONF["shop_name"], $CONF["email03"], $CONF["email04"], $CONF["email04"]);
             // 宛先の設定
             $name = $this->name01 . $this->name02 . " 様";
             $objMail->setTo($arrRet[0]["email"], $name);
             $objMail->sendMail();
         }
     }
     if ($_POST['mode'] == "search" || $_POST['mode'] == "csv" || $_POST['mode'] == "delete" || $_POST['mode'] == "delete_all" || $_POST['mode'] == "resend_mail") {
         // 入力文字の強制変換
         $this->lfConvertParam();
         // エラーチェック
         $this->arrErr = $this->lfCheckError($this->arrForm);
         $where = "del_flg = 0";
         /* 入力エラーなし */
         if (count($this->arrErr) == 0) {
             //-- 検索データ取得
             $objSelect = new SC_CustomerList($this->arrForm, "customer");
             // 表示件数設定
             $page_rows = $this->arrForm['page_rows'];
             if (is_numeric($page_rows)) {
                 $page_max = $page_rows;
             } else {
                 $page_max = SEARCH_PMAX;
             }
             if (!isset($this->arrForm['search_pageno'])) {
                 $this->arrForm['search_pageno'] = "";
             }
             if ($this->arrForm['search_pageno'] == 0) {
                 $this->arrForm['search_pageno'] = 1;
             }
             $offset = $page_max * ($this->arrForm['search_pageno'] - 1);
             $objSelect->setLimitOffset($page_max, $offset);
             if ($_POST["mode"] == 'csv') {
                 $searchSql = $objSelect->getListCSV($this->arrColumnCSV);
             } else {
                 $searchSql = $objSelect->getList();
             }
             $this->search_data = $objQuery->conn->getAll($searchSql, $objSelect->arrVal);
             switch ($_POST['mode']) {
                 case 'csv':
                     require_once CLASS_EX_PATH . "helper_extends/SC_Helper_CSV_Ex.php";
                     $objCSV = new SC_Helper_CSV_Ex();
                     $i = 0;
                     $header = "";
                     // CSVカラム取得
                     $arrCsvOutput = $objCSV->sfgetCsvOutput(2, " WHERE csv_id = 2 AND status = 1");
                     if (count($arrCsvOutput) <= 0) {
                         break;
                     }
                     foreach ($arrCsvOutput as $data) {
                         $arrColumn[] = $data["col"];
                         if ($i != 0) {
                             $header .= ", ";
                         }
                         $header .= $data["disp_name"];
                         $i++;
                     }
                     $header .= "\n";
                     //- 都道府県/職業の変換
                     for ($i = 0; $i < count($this->search_data); $i++) {
                         $this->search_data[$i]["pref"] = $this->arrPref[$this->search_data[$i]["pref"]];
                         $this->search_data[$i]["job"] = $this->arrJob[$this->search_data[$i]["job"]];
                     }
                     //- CSV出力
                     $data = SC_Utils_Ex::getCSVData($this->search_data, $arrColumn);
                     SC_Utils_Ex::sfCSVDownload($header . $data);
                     exit;
                     break;
                 case 'delete_all':
                     // 検索結果をすべて削除
                     $where = "product_id IN (SELECT product_id FROM vw_products_nonclass AS noncls WHERE {$where})";
                     $sqlval['del_flg'] = 1;
                     $objQuery->update("dtb_products", $sqlval, $where, $arrval);
                     $sql = "SELECT status,email FROM dtb_customer WHERE customer_id = ? AND del_flg = 0";
                     $result_customer = $objQuery->conn->getAll($sql, array($_POST["del_customer_id"]));
                     if ($result_customer[0]["status"] == 2) {
                         //本会員削除
                         $arrDel = array("del_flg" => 1, "update_date" => "NOW()");
                         $objQuery->conn->autoExecute("dtb_customer", $arrDel, "customer_id = " . SC_Utils_Ex::sfQuoteSmart($_POST["del_customer_id"]));
                     } elseif ($result_customer[0]["status"] == 1) {
                         //仮会員削除
                         $sql = "DELETE FROM dtb_customer WHERE customer_id = ?";
                         $objQuery->conn->query($sql, array($_POST["del_customer_id"]));
                     }
                     break;
                 default:
                     // 行数の取得
                     $linemax = $objQuery->conn->getOne($objSelect->getListCount(), $objSelect->arrVal);
                     $this->tpl_linemax = $linemax;
                     // 何件が該当しました。表示用
                     // ページ送りの取得
                     $objNavi = new SC_PageNavi($this->arrHidden['search_pageno'], $linemax, $page_max, "fnCustomerPage", NAVI_PMAX);
                     $startno = $objNavi->start_row;
                     $this->arrPagenavi = $objNavi->arrPagenavi;
             }
         }
     }
     $this->arrCatList = $objDb->sfGetCategoryList();
     //---- ページ表示
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_POST);
     $objFormParam->convParam();
     switch ($this->getMode()) {
         case 'regist':
             // 商品を登録する。
             $this->arrErr = $this->lfCheckError($objFormParam);
             $arrPost = $objFormParam->getHashArray();
             // 登録処理にエラーがあった場合は商品選択の時と同じ処理を行う。
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $member_id = $_SESSION['member_id'];
                 $this->insertRecommendProduct($arrPost, $member_id);
                 $arrItems = $this->getRecommendProducts();
             } else {
                 $arrItems = $this->setProducts($arrPost, $arrItems);
                 $this->checkRank = $arrPost['rank'];
             }
             $this->tpl_onload = "window.alert('編集が完了しました');";
             break;
         case 'delete':
             // 商品を削除する。
             $this->arrErr = $this->lfCheckError($objFormParam);
             $arrPost = $objFormParam->getHashArray();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $this->deleteProduct($arrPost);
                 $arrItems = $this->getRecommendProducts();
             }
             $this->tpl_onload = "window.alert('削除しました');";
             break;
         case 'set_item':
             // 商品を選択する。
             $this->arrErr = $this->lfCheckError($objFormParam);
             $arrPost = $objFormParam->getHashArray();
             if (SC_Utils_Ex::isBlank($this->arrErr['rank']) && SC_Utils_Ex::isBlank($this->arrErr['product_id'])) {
                 $arrItems = $this->setProducts($arrPost, $this->getRecommendProducts());
                 $this->checkRank = $arrPost['rank'];
             }
             break;
         default:
             $arrItems = $this->getRecommendProducts();
             break;
     }
     $this->category_id = intval($arrPost['category_id']);
     $this->arrItems = $arrItems;
     // カテゴリ取得
     $objDb = new SC_Helper_DB_Ex();
     $this->arrCatList = $objDb->sfGetCategoryList("level = 1");
 }
Esempio n. 10
0
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     //---- ページ初期設定
     $conn = new SC_DBConn();
     $objView = new SC_AdminView();
     $objDate = new SC_Date();
     $objQuery = new SC_Query();
     $objDb = new SC_Helper_DB_Ex();
     $this->objDate = $objDate;
     $this->arrTemplate = $this->getTemplateList($conn);
     $objSess = new SC_Session();
     // 認証可否の判定
     SC_Utils_Ex::sfIsSuccess($objSess);
     /*
      query:配信履歴「確認」
     */
     if ($_GET["mode"] == "query" && SC_Utils_Ex::sfCheckNumLength($_GET["send_id"])) {
         // 送信履歴より、送信条件確認画面
         $sql = "SELECT search_data FROM dtb_send_history WHERE send_id = ?";
         $result = $conn->getOne($sql, array($_GET["send_id"]));
         $tpl_path = "mail/query.tpl";
         $list_data = unserialize($result);
         // 都道府県を変換
         $list_data['pref_disp'] = $this->arrPref[$list_data['pref']];
         // 配信形式
         $list_data['htmlmail_disp'] = $this->arrHtmlmail[$list_data['htmlmail']];
         // 性別の変換
         if (count($list_data['sex']) > 0) {
             foreach ($list_data['sex'] as $key => $val) {
                 $list_data['sex'][$key] = $this->arrSex[$val];
                 $sex_disp .= $list_data['sex'][$key] . " ";
             }
             $list_data['sex_disp'] = $sex_disp;
         }
         // 職業の変換
         if (count($list_data['job']) > 0) {
             foreach ($list_data['job'] as $key => $val) {
                 $list_data['job'][$key] = $this->arrJob[$val];
                 $job_disp .= $list_data['job'][$key] . " ";
             }
             $list_data['job_disp'] = $job_disp;
         }
         // カテゴリ変換
         $arrCatList = $objDb->sfGetCategoryList();
         $list_data['category_name'] = $arrCatList[$list_data['category_id']];
         $this->list_data = $list_data;
         $this->arrCampaignList = $this->lfGetCampaignList($objQuery);
         $objView->assignobj($this);
         $objView->display($tpl_path);
         exit;
     }
     if ($_POST['mode'] == 'delete') {
     }
     switch ($_POST['mode']) {
         /*
          search:「検索」ボタン
          back:検索結果画面「戻る」ボタン
         */
         case 'delete':
         case 'search':
         case 'back':
             //-- 入力値コンバート
             $this->list_data = $this->lfConvertParam($_POST, $this->arrSearchColumn);
             //-- 入力エラーのチェック
             $this->arrErr = $this->lfErrorCheck($this->list_data);
             //-- 検索開始
             if (!is_array($this->arrErr)) {
                 $this->list_data['name'] = isset($this->list_data['name']) ? SC_Utils_Ex::sfManualEscape($this->list_data['name']) : "";
                 // hidden要素作成
                 $this->arrHidden = $this->lfGetHidden($this->list_data);
                 //-- 検索データ取得
                 $objSelect = new SC_CustomerList($this->list_data, "magazine");
                 // 生成されたWHERE文を取得する
                 list($where, $arrval) = $objSelect->getWhere();
                 // 「WHERE」部分を削除する。
                 $where = ereg_replace("^WHERE", "", $where);
                 // 検索結果の取得
                 $from = "dtb_customer";
                 // 行数の取得
                 $linemax = $objQuery->count($from, $where, $arrval);
                 $this->tpl_linemax = $linemax;
                 // 何件が該当しました。表示用
                 // ページ送りの取得
                 $objNavi = new SC_PageNavi($this->tpl_pageno, $linemax, SEARCH_PMAX, "fnResultPageNavi", NAVI_PMAX);
                 $this->arrPagenavi = $objNavi->arrPagenavi;
                 $startno = $objNavi->start_row;
                 // 取得範囲の指定(開始行番号、行数のセット)
                 $objQuery->setlimitoffset(SEARCH_PMAX, $startno);
                 // 表示順序
                 $objQuery->setorder("customer_id DESC");
                 // 検索結果の取得
                 $col = $objSelect->getMailMagazineColumn($this->lfGetIsMobile($_POST['mail_type']));
                 $this->arrResults = $objQuery->select($col, $from, $where, $arrval);
                 //現在時刻の取得
                 $this->arrNowDate = $this->lfGetNowDate();
             }
             break;
             /*
              input:検索結果画面「htmlmail内容設定」ボタン
             */
         /*
          input:検索結果画面「htmlmail内容設定」ボタン
         */
         case 'input':
             //-- 入力値コンバート
             $this->list_data = $this->lfConvertParam($_POST, $this->arrSearchColumn);
             //-- 入力エラーのチェック
             $this->arrErr = $this->lfErrorCheck($this->list_data);
             //-- エラーなし
             if (!is_array($this->arrErr)) {
                 //-- 現在時刻の取得
                 $this->arrNowDate = $this->lfGetNowDate();
                 $this->arrHidden = $this->lfGetHidden($this->list_data);
                 // hidden要素作成
                 $this->tpl_mainpage = 'mail/input.tpl';
             }
             break;
             /*
              template:テンプレート選択
             */
         /*
          template:テンプレート選択
         */
         case 'template':
             //-- 入力値コンバート
             $this->list_data = $this->lfConvertParam($_POST, $this->arrSearchColumn);
             //-- 時刻設定の取得
             $this->arrNowDate['year'] = isset($_POST['send_year']) ? $_POST['send_year'] : "";
             $this->arrNowDate['month'] = isset($_POST['send_month']) ? $_POST['send_month'] : "";
             $this->arrNowDate['day'] = isset($_POST['send_day']) ? $_POST['send_day'] : "";
             $this->arrNowDate['hour'] = isset($_POST['send_hour']) ? $_POST['send_hour'] : "";
             $this->arrNowDate['minutes'] = isset($_POST['send_minutes']) ? $_POST['send_minutes'] : "";
             //-- 入力エラーのチェック
             $this->arrErr = $this->lfErrorCheck($this->list_data);
             //-- 検索開始
             if (!is_array($this->arrErr)) {
                 $this->list_data['name'] = isset($this->list_data['name']) ? SC_Utils_Ex::sfManualEscape($this->list_data['name']) : "";
                 $this->arrHidden = $this->lfGetHidden($this->list_data);
                 // hidden要素作成
                 $this->tpl_mainpage = 'mail/input.tpl';
                 $template_data = $this->getTemplateData($conn, $_POST['template_id']);
                 if ($template_data) {
                     foreach ($template_data as $key => $val) {
                         $this->list_data[$key] = $val;
                     }
                 }
                 //-- HTMLテンプレートを使用する場合は、HTMLソースを生成してBODYへ挿入
                 if ($this->list_data["mail_method"] == 3) {
                     $objTemplate = new LC_HTMLtemplate();
                     $objTemplate->list_data = lfGetHtmlTemplateData($_POST['template_id']);
                     $objSiteInfo = new SC_SiteInfo();
                     $objTemplate->arrInfo = $objSiteInfo->data;
                     //メール担当写真の表示
                     $objUpFile = new SC_UploadFile(IMAGE_TEMP_URL, IMAGE_SAVE_URL);
                     $objUpFile->addFile("メール担当写真", 'charge_image', array('jpg'), IMAGE_SIZE, true, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT);
                     $objUpFile->setDBFileList($objTemplate->list_data);
                     $objTemplate->arrFile = $objUpFile->getFormFileList(IMAGE_TEMP_URL, IMAGE_SAVE_URL);
                     $objMakeTemplate = new SC_AdminView();
                     $objMakeTemplate->assignobj($objTemplate);
                     $this->list_data["body"] = $objMakeTemplate->fetch("mail/html_template.tpl");
                 }
             }
             break;
             /*
              regist_confirm:「入力内容を確認」
              regist_back:「テンプレート設定画面へ戻る」
              regist_complete:「登録」
             */
         /*
          regist_confirm:「入力内容を確認」
          regist_back:「テンプレート設定画面へ戻る」
          regist_complete:「登録」
         */
         case 'regist_confirm':
         case 'regist_back':
         case 'regist_complete':
             //-- 入力値コンバート
             $this->arrCheckColumn = array_merge($this->arrSearchColumn, $this->arrRegistColumn);
             $this->list_data = $this->lfConvertParam($_POST, $this->arrCheckColumn);
             //現在時刻の取得
             $this->arrNowDate = $this->lfGetNowDate();
             //-- 入力エラーのチェック
             $this->arrErr = $this->lfErrorCheck($this->list_data, 1);
             $this->tpl_mainpage = 'mail/input.tpl';
             $this->arrHidden = $this->lfGetHidden($this->list_data);
             // hidden要素作成
             //-- 検索開始
             if (!is_array($this->arrErr)) {
                 $this->list_data['name'] = isset($this->list_data['name']) ? SC_Utils_Ex::sfManualEscape($this->list_data['name']) : "";
                 if ($_POST['mode'] == 'regist_confirm') {
                     $this->tpl_mainpage = 'mail/input_confirm.tpl';
                 } else {
                     if ($_POST['mode'] == 'regist_complete') {
                         $this->lfRegistData($conn, $this->list_data);
                         if (MELMAGA_SEND == true) {
                             if (MELMAGA_BATCH_MODE) {
                                 $this->sendRedirect($this->getLocation(URL_DIR . "admin/mail/history.php"));
                             } else {
                                 $this->sendRedirect($this->getLocation(URL_DIR . "admin/mail/sendmail.php", array("mode" => "now")));
                             }
                             exit;
                         } else {
                             SC_Utils_Ex::sfErrorHeader(">> 本サイトではメルマガ配信は行えません。");
                         }
                     }
                 }
             }
             break;
         default:
             $this->list_data['mail_type'] = 1;
             break;
     }
     // 配信時間の年を、「現在年~現在年+1」の範囲に設定
     for ($year = date("Y"); $year <= date("Y") + 1; $year++) {
         $arrYear[$year] = $year;
     }
     $this->arrYear = $arrYear;
     $this->arrCustomerOrderId = $this->lfGetCustomerOrderId($_POST['buy_product_code']);
     $this->arrCatList = $objDb->sfGetCategoryList();
     $this->arrCampaignList = $this->lfGetCampaignList($objQuery);
     //---- ページ表示
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $conn = new SC_DBConn();
     $objView = new SC_AdminView();
     $objSess = new SC_Session();
     $arrRegistColumn = array(array("column" => "product_id", "convert" => "n"), array("column" => "category_id", "convert" => "n"), array("column" => "rank", "convert" => "n"), array("column" => "title", "convert" => "aKV"), array("column" => "comment", "convert" => "aKV"));
     // 認証可否の判定
     SC_Utils_Ex::sfIsSuccess($objSess);
     //最大登録数の表示
     $this->tpl_disp_max = RECOMMEND_NUM;
     if (!isset($_POST['mode'])) {
         $_POST['mode'] = "";
     }
     if (!isset($_POST['category_id'])) {
         $_POST['category_id'] = "";
     }
     // 登録時
     if ($_POST['mode'] == 'regist') {
         // 入力文字の強制変換
         $this->arrForm = $_POST;
         $this->arrForm = $this->lfConvertParam($this->arrForm, $arrRegistColumn);
         // エラーチェック
         $this->arrErr[$this->arrForm['rank']] = $this->lfErrorCheck();
         if (!$this->arrErr[$this->arrForm['rank']]) {
             // 古いのを消す
             $sql = "DELETE FROM dtb_best_products WHERE category_id = ? AND rank = ?";
             $conn->query($sql, array($this->arrForm['category_id'], $this->arrForm['rank']));
             // DB登録
             $this->arrForm['creator_id'] = $_SESSION['member_id'];
             $this->arrForm['update_date'] = "NOW()";
             $this->arrForm['create_date'] = "NOW()";
             $objQuery = new SC_Query();
             $objQuery->insert("dtb_best_products", $this->arrForm);
             //		$conn->autoExecute("dtb_best_products", $this->arrForm );
         }
     } elseif ($_POST['mode'] == 'delete') {
         // 削除時
         $sql = "DELETE FROM dtb_best_products WHERE category_id = ? AND rank = ?";
         $conn->query($sql, array($_POST['category_id'], $_POST['rank']));
     }
     // カテゴリID取得 無いときはトップページ
     if (SC_Utils_Ex::sfCheckNumLength($_POST['category_id'])) {
         $this->category_id = $_POST['category_id'];
     } else {
         $this->category_id = 0;
     }
     // 既に登録されている内容を取得する
     $sql = "SELECT B.name, B.main_list_image, A.* FROM dtb_best_products as A INNER JOIN dtb_products as B USING (product_id)\n\t\t WHERE A.del_flg = 0 ORDER BY rank";
     $arrItems = $conn->getAll($sql);
     foreach ($arrItems as $data) {
         $this->arrItems[$data['rank']] = $data;
     }
     // 商品変更時は、選択された商品に一時的に置き換える
     if ($_POST['mode'] == 'set_item') {
         $sql = "SELECT product_id, name, main_list_image FROM dtb_products WHERE product_id = ? AND del_flg = 0";
         $result = $conn->getAll($sql, array($_POST['product_id']));
         if ($result) {
             $data = $result[0];
             foreach ($data as $key => $val) {
                 $this->arrItems[$_POST['rank']][$key] = $val;
             }
             $this->arrItems[$_POST['rank']]['rank'] = $_POST['rank'];
         }
         $this->checkRank = $_POST['rank'];
     }
     //各ページ共通
     $this->cnt_question = 6;
     $this->arrActive = isset($arrActive) ? $arrActive : "";
     $this->arrQuestion = isset($arrQuestion) ? $arrQuestion : "";
     // カテゴリ取得
     $objDb = new SC_Helper_DB_Ex();
     $this->arrCatList = $objDb->sfGetCategoryList("level = 1");
     //---- ページ表示
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $conn = new SC_DBConn();
     $objView = new SC_AdminView();
     $objSess = new SC_Session();
     $objDb = new SC_Helper_DB_Ex();
     $objQuery = new SC_Query();
     // 認証可否の判定
     SC_Utils_Ex::sfIsSuccess($objSess);
     if (!isset($_POST['mode'])) {
         $_POST['mode'] = "";
     }
     if ($_GET['no'] != '') {
         $this->tpl_no = strval($_GET['no']);
     } elseif ($_POST['no'] != '') {
         $this->tpl_no = strval($_POST['no']);
     }
     if ($_POST['mode'] == "search") {
         // POST値の引き継ぎ
         $this->arrForm = $_POST;
         // 入力文字の強制変換
         $this->lfConvertParam();
         $where = "del_flg = 0";
         /* 入力エラーなし */
         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 ";
         */
         $col = "DISTINCT T1.product_id, product_code_min, product_code_max," . " price01_min, price01_max, price02_min, price02_max," . " stock_min, stock_max, stock_unlimited_min," . " stock_unlimited_max, del_flg, status, name, comment1," . " comment2, comment3, main_list_comment, main_image," . " main_list_image, product_flag, deliv_date_id, sale_limit," . " point_rate, sale_unlimited, create_date, deliv_fee, " . " T4.product_rank, T4.category_rank";
         $from = "vw_products_allclass AS T1" . " JOIN (" . " SELECT max(T3.rank) AS category_rank," . "        max(T2.rank) AS product_rank," . "        T2.product_id" . "   FROM dtb_product_categories T2" . "   JOIN dtb_category T3 USING (category_id)" . " GROUP BY product_id) AS T4 USING (product_id)";
         $order = "T4.category_rank DESC, T4.product_rank DESC";
         $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;
         // 取得範囲の指定(開始行番号、行数のセット)
         if (DB_TYPE != "mysql") {
             $objQuery->setlimitoffset($page_max, $startno);
         }
         // 表示順序
         $objQuery->setorder($order);
         // viewも絞込みをかける(mysql用)
         //sfViewWhere("&&noncls_where&&", $where, $arrval, $objQuery->order . " " .  $objQuery->setlimitoffset($page_max, $startno, true));
         // 検索結果の取得
         $this->arrProducts = $objQuery->select($col, $from, $where, $arrval);
         // 規格名一覧
         $arrClassName = $objDb->sfGetIDValueList("dtb_class", "class_id", "name");
         // 規格分類名一覧
         $arrClassCatName = $objDb->sfGetIDValueList("dtb_classcategory", "classcategory_id", "name");
         // 規格セレクトボックス設定
         for ($i = 0; $i < count($this->arrProducts); $i++) {
             $this->lfMakeSelect($this->arrProducts[$i]['product_id'], $arrClassName, $arrClassCatName);
             // 購入制限数を取得
             $this->lfGetSaleLimit($this->arrProducts[$i]);
         }
     }
     // カテゴリ取得
     $this->arrCatList = $objDb->sfGetCategoryList();
     //---- ページ表示
     $objView->assignobj($this);
     $objView->display($this->tpl_mainpage);
 }