/**
  * Page のアクション.
  *
  * @return void
  */
 public function action()
 {
     $objMailHelper = new SC_Helper_Mail_Ex();
     switch ($this->getMode()) {
         case 'edit':
             // 編集
             if (SC_Utils_Ex::sfIsInt($_GET['template_id']) === true) {
                 $arrMail = $objMailHelper->sfGetMailmagaTemplate($_GET['template_id']);
                 $this->arrForm = $arrMail[0];
             }
             break;
         case 'regist':
             // 新規登録
             $objFormParam = new SC_FormParam_Ex();
             $this->lfInitParam($objFormParam);
             $objFormParam->setParam($_POST);
             $this->arrErr = $objFormParam->checkError();
             $this->arrForm = $objFormParam->getHashArray();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 // エラーが無いときは登録・編集
                 $this->lfRegistData($objFormParam, $objFormParam->getValue('template_id'));
                 // 自分を再読込して、完了画面へ遷移
                 $this->objDisplay->reload(array('mode' => 'complete'));
             } else {
                 $this->arrForm['template_id'] = $objFormParam->getValue('template_id');
             }
             break;
         case 'complete':
             // 完了画面表示
             $this->tpl_mainpage = 'mail/template_complete.tpl';
             break;
         default:
             break;
     }
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     if (strpos(HTTPS_URL, 'https://') !== FALSE) {
         $this->tpl_enable_ssl = TRUE;
     }
     $objFormParam = new SC_FormParam_Ex();
     // パラメーターの初期化
     $this->initParam($objFormParam, $_POST);
     if (count($_POST) > 0) {
         // エラーチェック
         $arrErr = $objFormParam->checkError();
         $this->arrForm = $objFormParam->getHashArray();
         //設定ファイルの権限チェック
         if (!is_writable(CONFIG_REALFILE)) {
             $arrErr['all'] = t('c_You do not have access to change T_ARG1._01', array('T_ARG1' => CONFIG_REALFILE));
         }
         //管理画面ディレクトリのチェック
         $this->lfCheckAdminArea($this->arrForm, $arrErr);
         if (SC_Utils_Ex::isBlank($arrErr) && $this->lfUpdateAdminData($this->arrForm)) {
             $this->tpl_onload = "window.alert('" . t('c_Management area settings were revised. If the URL was changed, access the new URL._01') . "');";
         } else {
             $this->tpl_onload = "window.alert('" . t('c_There is an error in the settings details. Check the settings details._01') . "');";
             $this->arrErr = array_merge($arrErr, $this->arrErr);
         }
     } else {
         $admin_dir = str_replace('/', '', ADMIN_DIR);
         $this->arrForm = array('admin_dir' => $admin_dir, 'admin_force_ssl' => ADMIN_FORCE_SSL, 'admin_allow_hosts' => '');
         if (defined('ADMIN_ALLOW_HOSTS')) {
             $allow_hosts = unserialize(ADMIN_ALLOW_HOSTS);
             $this->arrForm['admin_allow_hosts'] = implode("\n", $allow_hosts);
         }
     }
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 public function action()
 {
     // パラメーター管理クラス
     $objFormParam = new SC_FormParam_Ex();
     // パラメーター設定
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_POST);
     $objFormParam->setParam($_GET);
     $objFormParam->convParam();
     // CSV_IDの読み込み
     $this->tpl_subno_csv = $objFormParam->getValue('tpl_subno_csv');
     $this->tpl_csv_id = $this->lfGetCsvId($this->tpl_subno_csv);
     switch ($this->getMode()) {
         case 'confirm':
             // 入力パラメーターチェック
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 // 更新
                 $this->tpl_is_update = $this->lfUpdCsvOutput($this->tpl_csv_id, $objFormParam->getValue('output_list'));
             }
             break;
         case 'defaultset':
             //初期値に戻す
             $this->tpl_is_update = $this->lfSetDefaultCsvOutput($this->tpl_csv_id);
             break;
         default:
             break;
     }
     $this->arrSelected = $this->lfGetSelected($this->tpl_csv_id);
     $this->arrOptions = $this->lfGetOptions($this->tpl_csv_id);
     $this->tpl_subtitle .= '>' . $this->arrSubnaviName[$this->tpl_csv_id];
     if ($this->tpl_is_update) {
         $this->tpl_onload = "window.alert('正常に更新されました。');";
     }
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 public function action()
 {
     // パラメーター情報の初期化
     $objFormParam = new SC_FormParam_Ex();
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_POST);
     $objFormParam->convParam();
     // 検索ワードの引き継ぎ
     $this->arrSearchHidden = $objFormParam->getSearchArray();
     $this->arrForm = $objFormParam->getHashArray();
     switch ($this->getMode()) {
         // 登録
         case 'complete':
             $this->arrErr = $objFormParam->checkError();
             // エラー無し
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 // レビュー情報の更新
                 $this->lfRegistReviewData($this->arrForm['review_id'], $objFormParam);
                 // レビュー情報のDB取得
                 $this->arrForm = $this->lfGetReviewData($this->arrForm['review_id']);
                 $this->tpl_onload = "alert('登録が完了しました。');";
             }
             break;
         default:
             // レビュー情報のDB取得
             $this->arrForm = $this->lfGetReviewData($this->arrForm['review_id']);
             break;
     }
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 public function action()
 {
     // パラメーター管理クラス
     $objFormParam = new SC_FormParam_Ex();
     // パラメーター設定
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_POST);
     $objFormParam->convParam();
     // パラメーター読み込み
     $this->arrForm = $objFormParam->getFormParamList();
     // 入力パラメーターチェック
     $this->arrErr = $this->lfCheckError($objFormParam);
     if (SC_Utils_Ex::isBlank($this->arrErr)) {
         // POSTのモードがsearchなら会員検索開始
         switch ($this->getMode()) {
             case 'search':
                 list($this->tpl_linemax, $this->arrCustomer, $this->objNavi) = $this->lfDoSearch($objFormParam->getHashArray());
                 $this->tpl_strnavi = $this->objNavi->strnavi;
                 break;
             default:
                 break;
         }
     }
     $this->setTemplate($this->tpl_mainpage);
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 public function action()
 {
     if (strpos(HTTPS_URL, 'https://') !== FALSE) {
         $this->tpl_enable_ssl = TRUE;
     }
     $objFormParam = new SC_FormParam_Ex();
     // パラメーターの初期化
     $this->initParam($objFormParam, $_POST);
     if (count($_POST) > 0) {
         // エラーチェック
         $arrErr = $objFormParam->checkError();
         $this->arrForm = $objFormParam->getHashArray();
         //設定ファイルの権限チェック
         if (!is_writable(CONFIG_REALFILE)) {
             $arrErr['all'] = CONFIG_REALFILE . ' を変更する権限がありません。';
         }
         //管理画面ディレクトリのチェック
         $this->lfCheckAdminArea($this->arrForm, $arrErr);
         if (SC_Utils_Ex::isBlank($arrErr) && $this->lfUpdateAdminData($this->arrForm)) {
             $this->tpl_onload = "window.alert('管理機能の設定を変更しました。URLを変更した場合は、新しいURLにアクセスしてください。');";
         } else {
             $this->tpl_onload = "window.alert('設定内容に誤りがあります。設定内容を確認してください。');";
             $this->arrErr = array_merge($arrErr, $this->arrErr);
         }
     } else {
         $admin_dir = str_replace('/', '', ADMIN_DIR);
         $this->arrForm = array('admin_dir' => $admin_dir, 'admin_force_ssl' => ADMIN_FORCE_SSL, 'admin_allow_hosts' => '');
         if (defined('ADMIN_ALLOW_HOSTS')) {
             $allow_hosts = unserialize(ADMIN_ALLOW_HOSTS);
             $this->arrForm['admin_allow_hosts'] = implode("\n", $allow_hosts);
         }
     }
 }
 function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     $objFormParam->addParam("加盟店ID", "memberId", 5, "n", explode(",", "NUM_CHECK,EXIST_CHECK,NUM_COUNT_CHECK"));
     $objFormParam->addParam("サービスID", "serviceId", 5, "n", explode(",", "NUM_CHECK,EXIST_CHECK,NUM_COUNT_CHECK"));
     $objFormParam->addParam("セキュアキー", "secureKey", 32, "n", explode(",", "ALNUM_CHECK,EXIST_CHECK,NUM_COUNT_CHECK"));
     $objFormParam2 = new SC_FormParam_Ex();
     $objFormParam2->addParam("加盟店ID", "cpid", 10, "n", explode(",", "ALNUM_CHECK,EXIST_CHECK,NUM_COUNT_CHECK"));
     $objFormParam2->addParam("サイトID", "siteid", 10, "n", explode(",", "ALNUM_CHECK,EXIST_CHECK,NUM_COUNT_CHECK"));
     $objFormParam2->addParam("セキュアキー", "secureKey1", 20, "n", explode(",", "ALNUM_CHECK,EXIST_CHECK,NUM_COUNT_CHECK"));
     switch ($this->getMode()) {
         case "edit":
             $objFormParam->setParam($_POST);
             $objFormParam->convParam();
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $arrConfig = $objFormParam->getHashArray(array("memberId", "serviceId", "secureKey"));
                 SC_AuonePayment_Ex::saveConfig($arrConfig);
             }
             // キセカエタッチの
             $config2 = SC_AuonePayment_Ex::getConfig("free_field2");
             $objFormParam2->setParam($config2);
             break;
         case "edit_kisekae":
             $objFormParam2->setParam($_POST);
             $objFormParam2->convParam();
             $this->arrErr = $objFormParam2->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $arrConfig = $objFormParam2->getHashArray(array("cpid", "siteid", "secureKey1"));
                 SC_AuonePayment_Ex::saveConfig($arrConfig, "free_field2");
             }
             // au かんたん決済の設定は 再読み込み
             $config = SC_AuonePayment_Ex::getConfig();
             $objFormParam->setParam($config);
             break;
         default:
             $config = SC_AuonePayment_Ex::getConfig();
             $objFormParam->setParam($config);
             $config2 = SC_AuonePayment_Ex::getConfig("free_field2");
             $objFormParam2->setParam($config2);
             break;
     }
     $form = $this->createForm1($objFormParam);
     $form2 = $this->createForm2($objFormParam2);
     switch ($this->getMode()) {
         case "edit":
             $form->validate();
             break;
         case "edit_kisekae":
             $form2->validate();
             break;
     }
     $this->form = $form->toHtml();
     $this->form2 = $form2->toHtml();
     $this->tpl_mainpage = dirname(__FILE__) . "/config.tpl";
     $this->setTemplate($this->tpl_mainpage);
 }
 static function saveConfig($value = array(), $key = "free_field1", $plugin_code = "KisekaeTouch")
 {
     $objPlugin = new SC_Plugin_Util_Ex();
     $arrPlugin = $objPlugin->getPluginByPluginCode($plugin_code);
     if (!SC_Utils_Ex::isBlank($value) && is_array($value)) {
         $objQuery =& SC_Query_Ex::getSingletonInstance();
         $table = 'dtb_plugin';
         $where = 'plugin_code = ?';
         $objQuery->update($table, array($key => serialize($value)), $where, array("KisekaeTouch"));
     }
     $config = unserialize($arrPlugin[$key]);
     return $config;
 }
 public function doAction($arrParam)
 {
     $arrRequest = $this->doInitParam($arrParam);
     if (!$this->isParamError()) {
         $zipcode = $arrRequest['zip1'] . $arrRequest['zip2'];
         $arrAddrList = SC_Utils_Ex::sfGetAddress($zipcode);
         if (!SC_Utils_Ex::isBlank($arrAddrList)) {
             $this->setResponse('Address', array('State' => $arrAddrList[0]['state'], 'City' => $arrAddrList[0]['city'], 'Town' => $arrAddrList[0]['town']));
             return true;
         }
     }
     return false;
 }
 /**
  * ページのレイアウト情報を取得し, 設定する.
  *
  * 現在の URL に応じたページのレイアウト情報を取得し, LC_Page インスタンスに
  * 設定する.
  *
  * @access public
  * @param LC_Page $objPage LC_Page インスタンス
  * @param boolean $preview プレビュー表示の場合 true
  * @param string $url ページのURL($_SERVER['PHP_SELF'] の情報)
  * @param integer $device_type_id 端末種別ID
  * @return void
  */
 function sfGetPageLayout(&$objPage, $preview = false, $url = "", $device_type_id = DEVICE_TYPE_PC)
 {
     // URLを元にページ情報を取得
     if ($preview === false) {
         $url = preg_replace('|^' . preg_quote(ROOT_URLPATH) . '|', '', $url);
         $arrPageData = $this->getPageProperties($device_type_id, null, 'url = ?', array($url));
     } else {
         $arrPageData = $this->getPageProperties($device_type_id, 0);
     }
     $objPage->tpl_mainpage = $this->getTemplatePath($device_type_id) . $arrPageData[0]['filename'] . ".tpl";
     $objPage->arrPageLayout =& $arrPageData[0];
     $objBlob = new SC_Helper_Blob_Ex();
     $containerName = $objBlob->getTemplateContainerName($device_type_id);
     /** pageのテンプレートがなければBlobから取得する */
     if (!is_file($objPage->tpl_mainpage)) {
         $objBlob->getBlob($containerName, $arrPageData[0]['filename'] . ".tpl", $objPage->tpl_mainpage);
     }
     // ページタイトルを設定
     if (SC_Utils_Ex::isBlank($objPage->tpl_title)) {
         $objPage->tpl_title = $objPage->arrPageLayout['page_name'];
     }
     // 該当ページのブロックを取得し, 配置する
     $masterData = new SC_DB_MasterData();
     $arrTarget = $masterData->getMasterData("mtb_target");
     $arrBlocs = $this->getBlocPositions($device_type_id, $objPage->arrPageLayout['page_id']);
     // php_path, tpl_path が存在するものを, 各ターゲットに配置
     foreach (array_keys($arrTarget) as $target_id) {
         foreach ($arrBlocs as $arrBloc) {
             if ($arrBloc['target_id'] != $target_id) {
                 continue;
             }
             /* Blobからすでにファイルを取得している場合*/
             if (is_file($arrBloc['tpl_path'])) {
                 $objPage->arrPageLayout[$arrTarget[$target_id]][] = $arrBloc;
             } else {
                 if ($objBlob->blobExists($containerName, $arrBloc['filename'] . ".tpl")) {
                     $localFilename = $arrBloc['tpl_path'];
                     $objBlob->getBlob($containerName, $arrBloc['filename'] . ".tpl", $localFilename);
                     $objPage->arrPageLayout[$arrTarget[$target_id]][] = $arrBloc;
                 } else {
                     $error = "ブロックが見つかりません\n" . "tpl_path: " . $arrBloc['tpl_path'] . "\n" . "php_path: " . $arrBloc['php_path'];
                     GC_Utils_Ex::gfPrintLog($error);
                 }
             }
         }
     }
     // カラム数を取得する
     $objPage->tpl_column_num = $this->getColumnNum($objPage->arrPageLayout);
 }
Beispiel #11
0
 public function doAction($arrParam)
 {
     $arrRequest = $this->doInitParam($arrParam);
     if (!$this->isParamError()) {
         $category_id = $arrRequest['BrowseNodeId'];
         if ($category_id && !SC_Helper_DB_Ex::sfIsRecord('dtb_category', 'category_id', (array) $category_id, 'del_flg = 0')) {
             $category_id = '0';
         } else {
             if (SC_Utils_Ex::isBlank($category_id)) {
                 $category_id = '0';
             }
         }
         // LC_Page_Products_CategoryList::lfGetCategories() と相当類似しているので共通化したい
         $arrCategory = null;
         // 選択されたカテゴリ
         $arrChildren = array();
         // 子カテゴリ
         $arrAll = SC_Helper_DB_Ex::sfGetCatTree($category_id, true);
         foreach ($arrAll as $category) {
             if ($category_id != 0 && $category['category_id'] == $category_id) {
                 $arrCategory = $category;
                 continue;
             }
             if ($category['parent_category_id'] != $category_id) {
                 continue;
             }
             $arrGrandchildrenID = SC_Utils_Ex::sfGetUnderChildrenArray($arrAll, 'parent_category_id', 'category_id', $category['category_id']);
             $category['has_children'] = count($arrGrandchildrenID) > 0;
             $arrChildren[] = $category;
         }
         if (!SC_Utils_Ex::isBlank($arrCategory)) {
             $arrData = array('BrowseNodeId' => $category_id, 'Name' => $arrCategory['category_name'], 'PageURL' => HTTP_URL . 'products/list.php?category_id=' . $arr['category_id'], 'has_children' => count($arrChildren) > 0);
         } else {
             $arrData = array('BrowseNodeId' => $category_id, 'Name' => 'ホーム', 'PageURL' => HTTP_URL, 'has_children' => count($arrChildren) > 0);
         }
         if (!SC_Utils_Ex::isBlank($arrChildren)) {
             $arrData['Children'] = array();
             foreach ($arrChildren as $category) {
                 $arrData['Children']['BrowseNode'][] = array('BrowseNodeId' => $category['category_id'], 'Name' => $category['category_name'], 'PageURL' => HTTP_URL . 'products/list.php?category_id=' . $category['category_id'], 'has_children' => $category['has_children']);
             }
         }
         $this->setResponse('BrowseNode', $arrData);
         // TODO: Ancestors 親ノード
         return true;
     }
     return false;
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 public function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_REQUEST);
     $objFormParam->convParam();
     $this->arrErr = $objFormParam->checkError();
     $is_error = !SC_Utils_Ex::isBlank($this->arrErr);
     $this->device_type_id = $objFormParam->getValue('device_type_id', DEVICE_TYPE_PC);
     switch ($this->getMode()) {
         // 登録
         case 'regist':
             $this->arrErr = $this->lfCheckError($objFormParam, $this->arrErr);
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 if ($this->doRegister($objFormParam)) {
                     $this->tpl_onload = "alert('登録が完了しました。');";
                 }
             }
             break;
         default:
             break;
     }
     if (!$is_error) {
         // テキストエリアに表示
         $header_path = $this->getTemplatePath($this->device_type_id, 'header');
         $footer_path = $this->getTemplatePath($this->device_type_id, 'footer');
         if ($header_path === false || $footer_path === false) {
             $this->arrErr['err'] = '※ ファイルの取得に失敗しました<br />';
         } else {
             $this->header_data = file_get_contents($header_path);
             $this->footer_data = file_get_contents($footer_path);
         }
     } else {
         // 画面にエラー表示しないため, ログ出力
         GC_Utils_Ex::gfPrintLog('Error: ' . print_r($this->arrErr, true));
     }
     //サブタイトルの追加
     $this->tpl_subtitle = $this->arrDeviceType[$this->device_type_id] . '>' . $this->tpl_subtitle;
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $objDb = new SC_Helper_DB_Ex();
     $objFormParam = new SC_FormParam_Ex();
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_POST);
     $objFormParam->convParam();
     $rank = intval($_GET['rank']);
     switch ($this->getMode()) {
         case 'search':
             // POST値の引き継ぎ
             $this->arrErr = $this->lfCheckError($objFormParam);
             $arrPost = $objFormParam->getHashArray();
             // 入力された値にエラーがない場合、検索処理を行う。
             // 検索結果の数に応じてページャの処理も入れる。
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $objProduct = new SC_Product_Ex();
                 $wheres = $this->createWhere($objFormParam, $objDb);
                 $this->tpl_linemax = $this->getLineCount($wheres, $objProduct);
                 $page_max = SC_Utils_Ex::sfGetSearchPageMax($arrPost['search_page_max']);
                 // ページ送りの取得
                 $objNavi = new SC_PageNavi_Ex($arrPost['search_pageno'], $this->tpl_linemax, $page_max, 'fnNaviSearchOnlyPage', NAVI_PMAX);
                 $this->tpl_strnavi = $objNavi->strnavi;
                 // 表示文字列
                 $startno = $objNavi->start_row;
                 $arrProduct_id = $this->getProducts($wheres, $objProduct, $page_max, $startno);
                 $this->arrProducts = $this->getProductList($arrProduct_id, $objProduct);
                 $this->arrForm = $arrPost;
             }
             break;
         default:
             break;
     }
     // カテゴリ取得
     $this->arrCatList = $objDb->sfGetCategoryList();
     $this->rank = $rank;
     $this->setTemplate('contents/recommend_search.tpl');
 }
 /**
  * Page のAction.
  *
  * @return void
  */
 public function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_GET);
     $arrErr = $objFormParam->checkError();
     if (SC_Utils_Ex::isBlank($arrErr)) {
         $arrForm = $objFormParam->getHashArray();
         // TODO: ファイル名を直接指定するような処理は避けるべき
         // NO_IMAGE_REALFILE以外のファイル名が直接渡された場合、ファイル名のチェックを行う
         if (strlen($arrForm['image']) >= 1 && $arrForm['image'] !== NO_IMAGE_REALFILE) {
             if (!$this->lfCheckFileName($arrForm['image'])) {
                 GC_Utils_Ex::gfPrintLog('invalid access :resize_image.php image=' . $arrForm['image']);
             }
             $file = SC_Utils_Ex::getSaveImagePath($arrForm['image']);
         } else {
             // 商品画像を取得する
             $file = $this->lfGetProductImage($arrForm);
         }
         // リサイズ画像の出力
         $this->lfOutputImage($file, $arrForm['width'], $arrForm['height']);
     }
 }
 function hasValue($keyname)
 {
     if (isset($_SESSION['customer'][$keyname])) {
         return !SC_Utils_Ex::isBlank($_SESSION['customer'][$keyname]);
     }
     return false;
 }
 /**
  * エラーチェックを行う.
  *
  * @param  SC_FormParam $objFormParam SC_FormParam インスタンス
  * @return array        エラーメッセージの配列
  */
 public function lfCheckError(&$objFormParam, &$arrErr, SC_Helper_Bloc_Ex &$objBloc)
 {
     $arrParams = $objFormParam->getHashArray();
     $objErr = new SC_CheckError_Ex($arrParams);
     $objErr->arrErr =& $arrErr;
     $objErr->doFunc(array('ブロック名', 'bloc_name', STEXT_LEN), array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
     $objErr->doFunc(array('ファイル名', 'filename', STEXT_LEN), array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'FILE_NAME_CHECK_BY_NOUPLOAD'));
     $where = 'filename = ?';
     $arrValues = array($arrParams['filename']);
     // 変更の場合は自ブロックを除外
     if (!SC_Utils_Ex::isBlank($arrParams['bloc_id'])) {
         $where .= ' AND bloc_id <> ?';
         $arrValues[] = $arrParams['bloc_id'];
     }
     $arrBloc = $objBloc->getWhere($where, $arrValues);
     if (!SC_Utils_Ex::isBlank($arrBloc)) {
         $objErr->arrErr['filename'] = '※ 同じファイル名のデータが存在しています。別のファイル名を入力してください。<br />';
     }
     return $objErr->arrErr;
 }
 /**
  * Page のAction.
  *
  * @return void
  */
 public function action()
 {
     $objCustomer = new SC_Customer_Ex();
     $objAddress = new SC_Helper_Address_Ex();
     $ParentPage = MYPAGE_DELIVADDR_URLPATH;
     // GETでページを指定されている場合には指定ページに戻す
     if (isset($_GET['page'])) {
         $ParentPage = htmlspecialchars($_GET['page'], ENT_QUOTES);
     } elseif (isset($_POST['ParentPage'])) {
         $ParentPage = htmlspecialchars($_POST['ParentPage'], ENT_QUOTES);
     }
     // 正しい遷移かをチェック
     $arrParentPageList = array(DELIV_URLPATH, MYPAGE_DELIVADDR_URLPATH, MULTIPLE_URLPATH);
     if (!SC_Utils_Ex::isBlank($ParentPage) && !in_array($ParentPage, $arrParentPageList)) {
         // 遷移が正しくない場合、デフォルトであるマイページの配送先追加の画面を設定する
         $ParentPage = MYPAGE_DELIVADDR_URLPATH;
     }
     $this->ParentPage = $ParentPage;
     /*
      * ログイン判定 及び 退会判定
      * 未ログインでも, 複数配送設定ページからのアクセスの場合は表示する
      *
      * TODO 購入遷移とMyPageで別クラスにすべき
      */
     if (!$objCustomer->isLoginSuccess(true) && $ParentPage != MULTIPLE_URLPATH) {
         $this->tpl_onload = "eccube.changeParentUrl('" . $ParentPage . "'); window.close();";
     }
     // other_deliv_id のあるなしで追加か編集か判定しているらしい
     $_SESSION['other_deliv_id'] = $_REQUEST['other_deliv_id'];
     // パラメーター管理クラス,パラメーター情報の初期化
     $objFormParam = new SC_FormParam_Ex();
     $objAddress->setFormParam($objFormParam);
     $objFormParam->setParam($_POST);
     switch ($this->getMode()) {
         // 入力は必ずedit
         case 'edit':
             $this->arrErr = $objAddress->errorCheck($objFormParam);
             // 入力エラーなし
             if (empty($this->arrErr)) {
                 // TODO ここでやるべきではない
                 if (in_array($_POST['ParentPage'], $this->validUrl)) {
                     $this->tpl_onload = "eccube.changeParentUrl('" . $this->getLocation($_POST['ParentPage']) . "'); window.close();";
                 } else {
                     SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
                 }
                 if ($objCustomer->isLoginSuccess(true)) {
                     $this->lfRegistData($objAddress, $objFormParam, $objCustomer->getValue('customer_id'));
                 } else {
                     $this->lfRegistDataNonMember($objFormParam);
                 }
                 if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_MOBILE) {
                     // モバイルの場合、元のページに遷移
                     SC_Response_Ex::sendRedirect($this->getLocation($_POST['ParentPage']));
                     SC_Response_Ex::actionExit();
                 }
             }
             break;
         case 'multiple':
             // 複数配送先用
             break;
         default:
             if ($_GET['other_deliv_id'] != '') {
                 $arrOtherDeliv = $objAddress->getAddress($_SESSION['other_deliv_id'], $objCustomer->getValue('customer_id'));
                 //不正アクセス判定
                 if (!$objCustomer->isLoginSuccess(true) || !$arrOtherDeliv) {
                     SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
                 }
                 //別のお届け先情報取得
                 $objFormParam->setParam($arrOtherDeliv);
             }
             break;
     }
     $this->arrForm = $objFormParam->getFormParamList();
     if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_MOBILE) {
         $this->tpl_mainpage = 'mypage/delivery_addr.tpl';
     } else {
         $this->setTemplate('mypage/delivery_addr.tpl');
     }
 }
 /**
  * 登録を実行する.
  *
  * ファイルの作成に失敗した場合は, エラーメッセージを出力し,
  * データベースをロールバックする.
  *
  * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  * @param SC_Helper_PageLayout $objLayout SC_Helper_PageLayout インスタンス
  * @return integer|boolean 登録が成功した場合, 登録したページID;
  *                         失敗した場合 false
  */
 function doRegister(&$objFormParam, &$objLayout)
 {
     $filename = $objFormParam->getValue('filename');
     $arrParams['device_type_id'] = $objFormParam->getValue('device_type_id');
     $arrParams['page_id'] = $objFormParam->getValue('page_id');
     $arrParams['header_chk'] = intval($objFormParam->getValue('header_chk')) === 1 ? 1 : 2;
     $arrParams['footer_chk'] = intval($objFormParam->getValue('footer_chk')) === 1 ? 1 : 2;
     $arrParams['tpl_data'] = $objFormParam->getValue('tpl_data');
     $arrParams['page_name'] = $objFormParam->getValue('page_name');
     $arrParams['url'] = USER_DIR . $filename . '.php';
     $arrParams['filename'] = USER_DIR . $filename;
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objQuery->begin();
     $page_id = $this->registerPage($arrParams, $objLayout);
     $objBlob = new SC_Helper_Blob_Ex();
     $containerName = $objBlob->getTemplateContainerName($arrParams['device_type_id']);
     /*
      * 新規登録時
      * or 編集可能な既存ページ編集時かつ, PHP ファイルが存在しない場合に,
      * PHP ファイルを作成する.
      */
     if (SC_Utils_Ex::isBlank($arrParams['page_id']) || $objLayout->isEditablePage($arrParams['device_type_id'], $arrParams['page_id'])) {
         if (!$this->createPHPFile($filename)) {
             $this->arrErr['err'] = '※ PHPファイルの作成に失敗しました<br />';
             $objQuery->rollback();
             return false;
         }
         // 新規登録時のみ $page_id を代入
         $arrParams['page_id'] = $page_id;
     }
     if ($objLayout->isEditablePage($arrParams['device_type_id'], $page_id)) {
         $tpl_path = $objLayout->getTemplatePath($arrParams['device_type_id']) . $arrParams['filename'] . '.tpl';
     } else {
         $tpl_path = $objLayout->getTemplatePath($arrParams['device_type_id']) . $filename . '.tpl';
     }
     if (!$objBlob->putBlobData($containerName, $arrParams['filename'] . '.tpl', $arrParams['tpl_data'])) {
         $this->arrErr['err'] = '※ TPLファイルの書き込みに失敗しました<br />';
         $objQuery->rollback();
         return false;
     }
     //既存のTPLが存在する場合は削除しておく
     if (file_exists($tpl_path)) {
         unlink($tpl_path);
     }
     $objQuery->commit();
     return $arrParams['page_id'];
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     // パラメーターの初期化
     $this->initParam($objFormParam, $_POST);
     $arrErrTmp = array();
     $arrForm = array();
     $this->mode = $this->getMode();
     switch ($this->mode) {
         // バックアップを作成する
         case 'bkup':
             // データ型エラーチェック
             $arrErrTmp[1] = $objFormParam->checkError();
             // データ型に問題がない場合
             if (SC_Utils_Ex::isBlank($arrErrTmp[1])) {
                 // データ型以外のエラーチェック
                 $arrErrTmp[2] = $this->lfCheckError($objFormParam->getHashArray(), $this->mode);
             }
             // エラーがなければバックアップ処理を行う
             if (SC_Utils_Ex::isBlank($arrErrTmp[1]) && SC_Utils_Ex::isBlank($arrErrTmp[2])) {
                 $arrData = $objFormParam->getHashArray();
                 $work_dir = $this->bkup_dir . $arrData['bkup_name'] . '/';
                 // バックアップデータの事前削除
                 SC_Helper_FileManager_Ex::deleteFile($work_dir);
                 // バックアップファイル作成
                 $res = $this->lfCreateBkupData($arrData['bkup_name'], $work_dir);
                 // バックアップデータの事後削除
                 SC_Helper_FileManager_Ex::deleteFile($work_dir);
                 $arrErrTmp[3] = array();
                 if ($res !== true) {
                     $arrErrTmp[3]['bkup_name'] = 'バックアップに失敗しました。(' . $res . ')';
                 }
                 // DBにデータ更新
                 if (SC_Utils_Ex::isBlank($arrErrTmp[3])) {
                     $this->lfUpdBkupData($arrData);
                 } else {
                     $arrForm = $arrData;
                     $arrErr = $arrErrTmp[3];
                 }
                 $this->tpl_onload = "alert('バックアップ完了しました');";
             } else {
                 $arrForm = $objFormParam->getHashArray();
                 $arrErr = array_merge((array) $arrErrTmp[1], (array) $arrErrTmp[2]);
             }
             break;
             // リストア
         // リストア
         case 'restore_config':
         case 'restore':
             // データベースに存在するかどうかチェック
             $arrErr = $this->lfCheckError($objFormParam->getHashArray(), $this->mode);
             // エラーがなければリストア処理を行う
             if (SC_Utils_Ex::isBlank($arrErr)) {
                 $arrData = $objFormParam->getHashArray();
                 $msg = '「' . $arrData['list_name'] . '」のリストアを開始します。';
                 GC_Utils_Ex::gfPrintLog($msg);
                 $success = $this->lfRestore($arrData['list_name'], $this->bkup_dir, $this->bkup_ext, $this->mode);
                 $msg = '「' . $arrData['list_name'] . '」の';
                 $msg .= $success ? 'リストアを終了しました。' : 'リストアに失敗しました。';
                 $this->tpl_restore_msg .= $msg . "\n";
                 GC_Utils_Ex::gfPrintLog($msg);
             }
             break;
             // 削除
         // 削除
         case 'delete':
             // データベースに存在するかどうかチェック
             $arrErr = $this->lfCheckError($objFormParam->getHashArray(), $this->mode);
             // エラーがなければリストア処理を行う
             if (SC_Utils_Ex::isBlank($arrErr)) {
                 $arrData = $objFormParam->getHashArray();
                 // DBとファイルを削除
                 $this->lfDeleteBackUp($arrData, $this->bkup_dir, $this->bkup_ext);
             }
             break;
             // ダウンロード
         // ダウンロード
         case 'download':
             // データベースに存在するかどうかチェック
             $arrErr = $this->lfCheckError($objFormParam->getHashArray(), $this->mode);
             // エラーがなければダウンロード処理を行う
             if (SC_Utils_Ex::isBlank($arrErr)) {
                 $arrData = $objFormParam->getHashArray();
                 $filename = $arrData['list_name'] . $this->bkup_ext;
                 $dl_file = $this->bkup_dir . $arrData['list_name'] . $this->bkup_ext;
                 // ダウンロード開始
                 Header("Content-disposition: attachment; filename={$filename}");
                 Header("Content-type: application/octet-stream; name={$filename}");
                 header('Content-Length: ' . filesize($dl_file));
                 readfile($dl_file);
                 exit;
                 break;
             }
         default:
             break;
     }
     // 不要になった変数を解放
     unset($arrErrTmp);
     // バックアップリストを取得する
     $arrBkupList = $this->lfGetBkupData('ORDER BY create_date DESC');
     // テンプレートファイルに渡すデータをセット
     $this->arrErr = isset($arrErr) ? $arrErr : array();
     $this->arrForm = isset($arrForm) ? $arrForm : array();
     $this->arrBkupList = $arrBkupList;
 }
 /**
  * エラーチェックを行う.
  *
  * @param  SC_FormParam $objFormParam SC_FormParam インスタンス
  * @return array        エラーメッセージの配列
  */
 public function lfCheckError(&$objFormParam, &$arrErr)
 {
     $arrParams = $objFormParam->getHashArray();
     $objErr = new SC_CheckError_Ex($arrParams);
     $objErr->arrErr =& $arrErr;
     $objErr->doFunc(array('CSSファイル名', 'css_name', STEXT_LEN), array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK', 'FILE_NAME_CHECK_BY_NOUPLOAD'));
     $css_name = $objFormParam->getValue('css_name');
     $old_css_name = $objFormParam->getValue('old_css_name');
     $device_type_id = $objFormParam->getValue('device_type_id', DEVICE_TYPE_PC);
     $is_error = false;
     // 重複チェック
     if (SC_Utils_Ex::isBlank($objErr->arrErr['css_name'])) {
         $arrCSSList = $this->getCSSList($this->getCSSDir($device_type_id));
         foreach ($arrCSSList as $val) {
             if ($val['css_name'] == $css_name) {
                 if (SC_Utils_Ex::isBlank($old_css_name) || $old_css_name != $css_name) {
                     $is_error = true;
                 }
             }
         }
         if ($is_error) {
             $objErr->arrErr['css_name'] = '※ 同じファイル名のデータが存在しています。別の名称を付けてください。<br />';
         }
     }
     return $objErr->arrErr;
 }
 /**
  * 支払い方法の画像があるかどうか.
  *
  * @param array $arrPayment 支払い方法の配列
  * @return boolean 支払い方法の画像がある場合 true
  */
 function hasPaymentImage($arrPayment)
 {
     foreach ($arrPayment as $val) {
         if (!SC_Utils_Ex::isBlank($val['payment_image'])) {
             return true;
         }
     }
     return false;
 }
 /**
  * 受注データを取得して, SC_FormParam へ設定する.
  *
  * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  * @param integer $order_id 取得元の受注ID
  * @return void
  */
 function setOrderToFormParam(&$objFormParam, $order_id)
 {
     $objPurchase = new SC_Helper_Purchase_Ex();
     // 受注詳細を設定
     $arrOrderDetail = $objPurchase->getOrderDetail($order_id, false);
     $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrOrderDetail));
     $arrShippingsTmp = $objPurchase->getShippings($order_id);
     $arrShippings = array();
     foreach ($arrShippingsTmp as $row) {
         // お届け日の処理
         if (!SC_Utils_Ex::isBlank($row['shipping_date'])) {
             $ts = strtotime($row['shipping_date']);
             $row['shipping_date_year'] = date('Y', $ts);
             $row['shipping_date_month'] = date('n', $ts);
             $row['shipping_date_day'] = date('j', $ts);
         }
         $arrShippings[$row['shipping_id']] = $row;
     }
     $objFormParam->setValue('shipping_quantity', count($arrShippings));
     $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrShippings));
     /*
      * 配送商品を設定
      *
      * $arrShipmentItem['shipment_(key)'][$shipping_id][$item_index] = 値
      * $arrProductQuantity[$shipping_id] = 配送先ごとの配送商品数量
      */
     $arrProductQuantity = array();
     $arrShipmentItem = array();
     foreach ($arrShippings as $shipping_id => $arrShipping) {
         $arrProductQuantity[$shipping_id] = count($arrShipping['shipment_item']);
         foreach ($arrShipping['shipment_item'] as $item_index => $arrItem) {
             foreach ($arrItem as $item_key => $item_val) {
                 $arrShipmentItem['shipment_' . $item_key][$shipping_id][$item_index] = $item_val;
             }
         }
     }
     $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity);
     $objFormParam->setParam($arrShipmentItem);
     /*
      * 受注情報を設定
      * $arrOrderDetail と項目が重複しており, $arrOrderDetail は連想配列の値
      * が渡ってくるため, $arrOrder で上書きする.
      */
     $arrOrder = $objPurchase->getOrder($order_id);
     $objFormParam->setParam($arrOrder);
     // ポイントを設定
     list($db_point, $rollback_point) = SC_Helper_DB_Ex::sfGetRollbackPoint($order_id, $arrOrder['use_point'], $arrOrder['add_point'], $arrOrder['status']);
     $objFormParam->setValue('total_point', $db_point);
     $objFormParam->setValue('point', $rollback_point);
     if (!SC_Utils_Ex::isBlank($objFormParam->getValue('customer_id'))) {
         $arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($objFormParam->getValue('customer_id'));
         $objFormParam->setValue('customer_point', $arrCustomer['point']);
     }
 }
Beispiel #23
0
    /**
     * 商品規格詳細の SQL を取得する.
     *
     * MEMO: 2.4系 vw_product_classに相当(?)するイメージ
     *
     * @param string $where 商品詳細の WHERE 句
     * @return string 商品規格詳細の SQL
     */
    function prdclsSQL($where = '')
    {
        $where_clause = '';
        if (!SC_Utils_Ex::isBlank($where)) {
            $where_clause = ' WHERE ' . $where;
        }
        $sql = <<<__EOS__
        (
            SELECT dtb_products.*,
                dtb_products_class.product_class_id,
                dtb_products_class.product_type_id,
                dtb_products_class.product_code,
                dtb_products_class.stock,
                dtb_products_class.stock_unlimited,
                dtb_products_class.sale_limit,
                dtb_products_class.price01,
                dtb_products_class.price02,
                dtb_products_class.deliv_fee,
                dtb_products_class.point_rate,
                dtb_products_class.down_filename,
                dtb_products_class.down_realfilename,
                dtb_products_class.classcategory_id1 AS classcategory_id, /* 削除 */
                dtb_products_class.classcategory_id1,
                dtb_products_class.classcategory_id2 AS parent_classcategory_id, /* 削除 */
                dtb_products_class.classcategory_id2,
                Tcc1.class_id as class_id,
                Tcc1.name as classcategory_name,
                Tcc2.class_id as parent_class_id,
                Tcc2.name as parent_classcategory_name
            FROM dtb_products
                LEFT JOIN dtb_products_class
                    ON dtb_products.product_id = dtb_products_class.product_id
                LEFT JOIN dtb_classcategory as Tcc1
                    ON dtb_products_class.classcategory_id1 = Tcc1.classcategory_id
                LEFT JOIN dtb_classcategory as Tcc2
                    ON dtb_products_class.classcategory_id2 = Tcc2.classcategory_id
            {$where_clause}
        ) as prdcls
__EOS__;
        return $sql;
    }
 /**
  * クエリを構築する.
  *
  * 検索条件のキーに応じた WHERE 句と, クエリパラメーターを構築する.
  * クエリパラメーターは, SC_FormParam の入力値から取得する.
  *
  * 構築内容は, 引数の $where 及び $arrValues にそれぞれ追加される.
  *
  * @param string $key 検索条件のキー
  * @param string $where 構築する WHERE 句
  * @param array $arrValues 構築するクエリパラメーター
  * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  * @param SC_FormParam $objDb SC_Helper_DB_Ex インスタンス
  * @return void
  */
 function buildQuery($key, &$where, &$arrValues, &$objFormParam, &$objDb)
 {
     $dbFactory = SC_DB_DBFactory_Ex::getInstance();
     switch ($key) {
         // 商品ID
         case 'search_product_id':
             $where .= ' AND product_id = ?';
             $arrValues[] = sprintf('%d', $objFormParam->getValue($key));
             break;
             // 商品コード
         // 商品コード
         case 'search_product_code':
             $where .= ' AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ?)';
             $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
             break;
             // 商品名
         // 商品名
         case 'search_name':
             $where .= ' AND name LIKE ?';
             $arrValues[] = sprintf('%%%s%%', $objFormParam->getValue($key));
             break;
             // カテゴリ
         // カテゴリ
         case 'search_category_id':
             list($tmp_where, $tmp_Values) = $objDb->sfGetCatWhere($objFormParam->getValue($key));
             if ($tmp_where != '') {
                 $where .= ' AND product_id IN (SELECT product_id FROM dtb_product_categories WHERE ' . $tmp_where . ')';
                 $arrValues = array_merge((array) $arrValues, (array) $tmp_Values);
             }
             break;
             // 種別
         // 種別
         case 'search_status':
             $tmp_where = '';
             foreach ($objFormParam->getValue($key) as $element) {
                 if ($element != '') {
                     if (SC_Utils_Ex::isBlank($tmp_where)) {
                         $tmp_where .= ' AND (status = ?';
                     } else {
                         $tmp_where .= ' OR status = ?';
                     }
                     $arrValues[] = $element;
                 }
             }
             if (!SC_Utils_Ex::isBlank($tmp_where)) {
                 $tmp_where .= ')';
                 $where .= " {$tmp_where} ";
             }
             break;
             // 登録・更新日(開始)
         // 登録・更新日(開始)
         case 'search_startyear':
             $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_startyear'), $objFormParam->getValue('search_startmonth'), $objFormParam->getValue('search_startday'));
             $where .= ' AND update_date >= ?';
             $arrValues[] = $date;
             break;
             // 登録・更新日(終了)
         // 登録・更新日(終了)
         case 'search_endyear':
             $date = SC_Utils_Ex::sfGetTimestamp($objFormParam->getValue('search_endyear'), $objFormParam->getValue('search_endmonth'), $objFormParam->getValue('search_endday'), true);
             $where .= ' AND update_date <= ?';
             $arrValues[] = $date;
             break;
             // 商品ステータス
         // 商品ステータス
         case 'search_product_statuses':
             $arrPartVal = $objFormParam->getValue($key);
             $count = count($arrPartVal);
             if ($count >= 1) {
                 $where .= ' ' . 'AND product_id IN (' . '    SELECT product_id FROM dtb_product_status WHERE product_status_id IN (' . SC_Utils_Ex::repeatStrWithSeparator('?', $count) . ')' . ')';
                 $arrValues = array_merge($arrValues, $arrPartVal);
             }
             break;
         default:
             break;
     }
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     // ページ送りの処理 $_REQUEST['pageno']が信頼しうる値かどうかチェックする。
     $this->tpl_pageno = $this->lfCheckPageNo($_REQUEST['pageno']);
     $objFormParam = new SC_FormParam_Ex();
     $arrErr = array();
     $arrForm = array();
     switch ($this->getMode()) {
         case 'new':
             // パラメーターの初期化
             $this->initForm($objFormParam, $_POST);
             // エラーチェック
             $arrErr = $this->validateData($objFormParam, $_POST, $this->getMode());
             $this->arrForm = $objFormParam->getHashArray();
             if (SC_Utils_Ex::isBlank($arrErr)) {
                 $this->insertMemberData($this->arrForm);
                 // 親ウィンドウを更新後、自ウィンドウを閉じる。
                 $url = ADMIN_SYSTEM_URLPATH . '?pageno=' . $this->arrForm['pageno'];
                 $this->tpl_onload = "fnUpdateParent('" . $url . "'); window.close();";
             } else {
                 // 入力された値を保持する
                 $this->tpl_mode = $this->getMode();
                 $this->tpl_member_id = '';
                 $this->tpl_old_login_id = '';
                 // パスワードは保持しない
                 $this->arrForm['password'] = '';
                 $this->arrForm['password02'] = '';
                 // エラー情報をセットする
                 $this->arrErr = $arrErr;
             }
             break;
         case 'edit':
             // パラメーターの初期化
             $this->initForm($objFormParam, $_POST, $this->getMode());
             // エラーチェック
             $arrErr = $this->validateData($objFormParam, $_POST, $this->getMode());
             $this->arrForm = $objFormParam->getHashArray();
             if (SC_Utils_Ex::isBlank($arrErr)) {
                 $this->updateMemberData($this->arrForm['member_id'], $this->arrForm);
                 // 親ウィンドウを更新後、自ウィンドウを閉じる。
                 $url = ADMIN_SYSTEM_URLPATH . '?pageno=' . $this->arrForm['pageno'];
                 $this->tpl_onload = "fnUpdateParent('" . $url . "'); window.close();";
             } else {
                 // 入力された値を保持する
                 $this->tpl_mode = $this->getMode();
                 $this->tpl_member_id = $this->arrForm['member_id'];
                 $this->tpl_old_login_id = $this->arrForm['old_login_id'];
                 // パスワードは保持しない
                 $this->arrForm['password'] = '';
                 $this->arrForm['password02'] = '';
                 // エラー情報をセットする
                 $this->arrErr = $arrErr;
             }
             break;
         default:
             // $_GET['id'](member_id)が登録済みのものかチェック。
             // 登録されていない場合は不正なものとして、新規扱いとする。
             $clean_id = '';
             $clean_mode_flg = 'new';
             // idが0より大きい数字で整数の場合
             if (isset($_GET['id']) && SC_Utils_Ex::sfIsInt($_GET['id']) && $_GET['id'] > 0) {
                 if ($this->memberDataExists('member_id = ? AND del_flg = 0', $_GET['id'])) {
                     $clean_id = $_GET['id'];
                     $clean_mode_flg = 'edit';
                 }
             }
             switch ($clean_mode_flg) {
                 case 'edit':
                     $this->tpl_mode = $clean_mode_flg;
                     $this->tpl_member_id = $clean_id;
                     $this->tpl_onfocus = 'fnClearText(this.name);';
                     $this->arrForm = $this->getMemberData($clean_id);
                     $this->arrForm['password'] = DEFAULT_PASSWORD;
                     $this->arrForm['password02'] = DEFAULT_PASSWORD;
                     $this->tpl_old_login_id = $this->arrForm['login_id'];
                     break;
                 case 'new':
                 default:
                     $this->tpl_mode = $clean_mode_flg;
                     $this->arrForm['authority'] = -1;
                     break;
             }
             break;
     }
     $this->setTemplate($this->tpl_mainpage);
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $objDb = new SC_Helper_DB_Ex();
     $objFormParam = new SC_FormParam_Ex();
     $this->arrData = isset($_SESSION['customer']) ? $_SESSION['customer'] : '';
     switch ($this->getMode()) {
         case 'confirm':
             // エラーチェック
             $this->lfInitParam($objFormParam);
             $objFormParam->setParam($_POST);
             $objFormParam->convParam();
             $objFormParam->toLower('email');
             $objFormParam->toLower('email02');
             $this->arrErr = $this->lfCheckError($objFormParam);
             // 入力値の取得
             $this->arrForm = $objFormParam->getFormParamList();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 // エラー無しで完了画面
                 $this->tpl_mainpage = 'contact/confirm.tpl';
                 $this->tpl_title = 'お問い合わせ(確認ページ)';
             }
             break;
         case 'return':
             $this->lfInitParam($objFormParam);
             $objFormParam->setParam($_POST);
             $this->arrForm = $objFormParam->getFormParamList();
             break;
         case 'complete':
             $this->lfInitParam($objFormParam);
             $objFormParam->setParam($_POST);
             $this->arrErr = $objFormParam->checkError();
             $this->arrForm = $objFormParam->getFormParamList();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $this->lfSendMail($this);
                 // 完了ページへ移動する
                 SC_Response_Ex::sendRedirect('complete.php');
                 SC_Response_Ex::actionExit();
             } else {
                 SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
                 SC_Response_Ex::actionExit();
             }
             break;
         default:
             break;
     }
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     // パラメーター管理クラス
     $objFormParam = new SC_FormParam_Ex();
     $this->lfInitParamSearchCustomer($objFormParam);
     $objFormParam->setParam($_POST);
     // パラメーター読み込み
     $this->arrHidden = $objFormParam->getSearchArray();
     // 入力パラメーターチェック
     $this->arrErr = SC_Helper_Customer_Ex::sfCheckErrorSearchParam($objFormParam);
     $this->arrForm = $objFormParam->getFormParamList();
     if (!SC_Utils_Ex::isBlank($this->arrErr)) {
         return;
     }
     // モードによる処理切り替え
     switch ($this->getMode()) {
         // 配信先検索
         case 'search':
         case 'back':
             list($this->tpl_linemax, $this->arrResults, $this->objNavi) = SC_Helper_Customer_Ex::sfGetSearchData($objFormParam->getHashArray());
             $this->arrPagenavi = $this->objNavi->arrPagenavi;
             break;
             // input:検索結果画面「配信内容を設定する」押下後
         // input:検索結果画面「配信内容を設定する」押下後
         case 'input':
             $this->tpl_mainpage = 'mail/input.tpl';
             break;
             // template:テンプレート選択時
         // template:テンプレート選択時
         case 'template':
         case 'regist_back':
             $this->tpl_mainpage = 'mail/input.tpl';
             if (SC_Utils_Ex::sfIsInt($_POST['template_id']) === true) {
                 $this->lfAddParamSelectTemplate($objFormParam);
                 $this->lfGetTemplateData($objFormParam, $_POST['template_id']);
                 // regist_back時、subject,bodyにはテンプレートを読み込むのではなく、入力内容で上書き
                 if ($this->getMode() == 'regist_back') {
                     $objFormParam->setParam($_POST);
                 }
             }
             break;
         case 'regist_confirm':
             $this->tpl_mainpage = 'mail/input.tpl';
             $this->lfAddParamSelectTemplate($objFormParam);
             $objFormParam->setParam($_POST);
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $this->tpl_mainpage = 'mail/input_confirm.tpl';
             }
             break;
         case 'regist_complete':
             $this->tpl_mainpage = 'mail/input.tpl';
             $this->lfAddParamSelectTemplate($objFormParam);
             $objFormParam->setParam($_POST);
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $this->tpl_mainpage = 'mail/index.tpl';
                 SC_Helper_Mail_Ex::sfSendMailmagazine($this->lfRegisterData($objFormParam));
                 // DB登録・送信
                 SC_Response_Ex::sendRedirect('./history.php');
             }
             break;
             // query:配信履歴から「確認」
         // query:配信履歴から「確認」
         case 'query':
             if (SC_Utils_Ex::sfIsInt($_GET['send_id'])) {
                 $this->arrSearchData = $this->lfGetMailQuery();
             }
             $this->setTemplate('mail/query.tpl');
             break;
             // query:配信履歴から「再送信」
         // query:配信履歴から「再送信」
         case 'retry':
             if (SC_Utils_Ex::sfIsInt($_GET['send_id'])) {
                 SC_Helper_Mail_Ex::sfSendMailmagazine($_GET['send_id']);
                 // DB登録・送信
                 SC_Response_Ex::sendRedirect('./history.php');
             } else {
                 $this->tpl_onload = "window.alert('メール送信IDが正しくありません');";
             }
             break;
         default:
             break;
     }
     $this->arrForm = $objFormParam->getFormParamList();
 }
 /**
  * フォーム入力パラメーターエラーチェック
  *
  * @param array $objFormParam フォームパラメータークラス
  * @return array エラー配列
  */
 function lfCheckError(&$objFormParam)
 {
     $arrErr = $objFormParam->checkError();
     if (!SC_Utils_Ex::isBlank($arrErr)) {
         return $arrErr;
     }
 }
 /**
  * 会員を削除する処理
  *
  * @param  integer $customer_id 会員ID
  * @return boolean true:成功 false:失敗
  */
 public static function delete($customer_id)
 {
     $arrData = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($customer_id, 'del_flg = 0');
     if (SC_Utils_Ex::isBlank($arrData)) {
         //対象となるデータが見つからない。
         return false;
     }
     // XXXX: 仮会員は物理削除となっていたが論理削除に変更。
     $arrVal = array('del_flg' => '1');
     SC_Helper_Customer_Ex::sfEditCustomerData($arrVal, $customer_id);
     return true;
 }
Beispiel #30
0
 /**
  * メーラーバックエンドに応じたパラメーターを返す.
  *
  * @param string $backend Pear::Mail のバックエンド
  * @return array メーラーバックエンドに応じたパラメーターの配列
  */
 function getBackendParams($backend)
 {
     switch ($backend) {
         case 'mail':
             $arrParams = array();
             break;
         case 'sendmail':
             $arrParams = array('sendmail_path' => '/usr/bin/sendmail', 'sendmail_args' => '-i');
             break;
         case 'smtp':
             $arrParams = array('host' => $this->host, 'port' => $this->port);
             if (defined('SMTP_USER') && defined('SMTP_PASSWORD') && !SC_Utils_Ex::isBlank(SMTP_USER) && !SC_Utils_Ex::isBlank(SMTP_PASSWORD)) {
                 $arrParams['auth'] = true;
                 $arrParams['username'] = SMTP_USER;
                 $arrParams['password'] = SMTP_PASSWORD;
             }
             break;
         default:
             trigger_error('不明なバックエンド。[$backend = ' . var_export($backend, true) . ']', E_USER_ERROR);
             exit;
     }
     return $arrParams;
 }