/** * 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"); }
/** * 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); }