/** * Page を初期化する. * * @return void */ public function init() { $this->template = MAIN_FRAME; //IP制限チェック $allow_hosts = unserialize(ADMIN_ALLOW_HOSTS); if (is_array($allow_hosts) && count($allow_hosts) > 0) { if (array_search($_SERVER['REMOTE_ADDR'], $allow_hosts) === FALSE) { Utils::sfDispError(AUTH_ERROR); } } //SSL制限チェック if (ADMIN_FORCE_SSL == TRUE) { if (Utils::sfIsHTTPS() === false) { Application::alias('eccube.response')->sendRedirect($_SERVER['REQUEST_URI'], $_GET, FALSE, TRUE); } } $this->tpl_authority = $_SESSION['authority']; // ディスプレイクラス生成 $this->objDisplay = Application::alias('eccube.display'); // スーパーフックポイントを実行. $objPlugin = PluginHelper::getSingletonInstance($this->plugin_activate_flg); $objPlugin->doAction('LC_Page_preProcess', array($this)); // トランザクショントークンの検証と生成 $this->doValidToken(true); $this->setTokenTo(); // ローカルフックポイントを実行 $parent_class_name = get_parent_class($this); $objPlugin->doAction($parent_class_name . '_action_before', array($this)); $class_name = get_class($this); if ($class_name != $parent_class_name) { $objPlugin->doAction($class_name . '_action_before', array($this)); } }
/** * Page のアクション. * * @return void */ public function action() { // パラメーター管理クラス $objFormParam = Application::alias('eccube.form_param'); switch ($this->getMode()) { case 'login': //ログイン処理 $this->lfInitParam($objFormParam); $objFormParam->setParam($_POST); $this->arrErr = $this->lfCheckError($objFormParam); if (Utils::isBlank($this->arrErr)) { $this->lfDoLogin($objFormParam->getValue('login_id')); Application::alias('eccube.response')->sendRedirect(ADMIN_HOME_URLPATH); } else { // ブルートフォースアタック対策 // ログイン失敗時に遅延させる sleep(LOGIN_RETRY_INTERVAL); Utils::sfDispError(LOGIN_ERROR); } break; default: break; } // 管理者ログインテンプレートフレームの設定 $this->setTemplate(LOGIN_FRAME); }
/** * Page のアクション. * * @return void */ public function action() { $objFormParam = Application::alias('eccube.form_param'); // パラメーターの初期化 $this->initParam($objFormParam, $_GET); // パラメーターの検証 if ($objFormParam->checkError() || !Utils::sfIsInt($id = $objFormParam->getValue('id'))) { GcUtils::gfPrintLog("error id={$id}"); Utils::sfDispError(INVALID_MOVE_ERRORR); } $id = $objFormParam->getValue('id'); // レコードの削除 $this->deleteMember($id); // リダイレクト $url = $this->getLocation(ADMIN_SYSTEM_URLPATH) . '?pageno=' . $objFormParam->getValue('pageno'); Application::alias('eccube.response')->sendRedirect($url); }
/** * Page のアクション. * * @return void */ public function action() { switch ($this->getMode()) { case 'detail': $objForm = $this->initParam(); if ($objForm->checkError()) { Utils::sfDispError(''); } $this->arrLogDetail = $this->getLogDetail($objForm->getValue('log_id')); if (count($this->arrLogDetail) == 0) { Utils::sfDispError(''); } $this->tpl_mainpage = 'ownersstore/log_detail.tpl'; break; default: break; } $this->arrInstallLogs = $this->getLogs(); }
/** * Page のアクション. * * @return void */ public function action() { switch ($this->getMode()) { default: // フォーム操作クラス $objFormParam = Application::alias('eccube.form_param'); // パラメーター情報の初期化 $this->lfInitParam($objFormParam); $objFormParam->setParam($_GET); $objFormParam->convParam(); // 表示するファイルにエラーチェックを行う if ($this->checkErrorDispFile($objFormParam)) { $this->execFileView($objFormParam); } else { Utils::sfDispError(''); } Application::alias('eccube.response')->actionExit(); break; } }
/** * Page のアクション. * * @return void */ public function action() { $objFormParam = Application::alias('eccube.form_param'); $this->lfInitParam($objFormParam); $objFormParam->setParam($_REQUEST); $objFormParam->convParam(); $this->device_type_id = $objFormParam->getValue('device_type_id', DEVICE_TYPE_PC); $this->tpl_select = $this->getTemplateName($this->device_type_id); $template_code = $objFormParam->getValue('template_code'); switch ($this->getMode()) { // 登録ボタン押下時 case 'register': $this->arrErr = $objFormParam->checkError(); if (Utils::isBlank($this->arrErr)) { if ($this->doRegister($template_code, $this->device_type_id)) { $this->tpl_select = $template_code; $this->tpl_onload = "alert('登録が完了しました。');"; } } break; // 削除ボタン押下時 // 削除ボタン押下時 case 'delete': if ($objFormParam->checkError()) { Utils::sfDispError(''); } $this->arrErr = $objFormParam->checkError(); if (Utils::isBlank($this->arrErr)) { if ($this->doDelete($template_code, $this->device_type_id)) { $this->tpl_onload = "alert('削除が完了しました。');"; } } break; // downloadボタン押下時 // downloadボタン押下時 case 'download': $this->arrErr = $objFormParam->checkError(); if (Utils::isBlank($this->arrErr)) { if ($this->doDownload($template_code) !== false) { // ブラウザに出力し, 終了する Application::alias('eccube.response')->actionExit(); } } break; default: break; } $this->templates = $this->getAllTemplates($this->device_type_id); $this->tpl_subtitle = $this->arrDeviceType[$this->device_type_id] . '>' . $this->tpl_subtitle; }
/** * CSVアップロードを実行します. * * @return void */ public function doUploadCsv(&$objFormParam, &$objUpFile) { // ファイルアップロードのチェック $this->arrErr['csv_file'] = $objUpFile->makeTempFile('csv_file'); if (strlen($this->arrErr['csv_file']) >= 1) { return; } $arrErr = $objUpFile->checkExists(); if (count($arrErr) > 0) { $this->arrErr = $arrErr; return; } // 一時ファイル名の取得 $filepath = $objUpFile->getTempFilePath('csv_file'); // CSVファイルの文字コード変換 $enc_filepath = Utils::sfEncodeFile($filepath, CHAR_CODE, CSV_TEMP_REALDIR); // CSVファイルのオープン $fp = fopen($enc_filepath, 'r'); // 失敗した場合はエラー表示 if (!$fp) { Utils::sfDispError(''); } // 登録先テーブル カラム情報の初期化 $this->lfInitTableInfo(); // 登録フォーム カラム情報 $this->arrFormKeyList = $objFormParam->getKeyList(); $objQuery = Application::alias('eccube.query'); $objQuery->begin(); // CSVからの読み込み、入力エラーチェック $errFlag = $this->lfReadCSVFile($objFormParam, $fp); if (!$errFlag) { rewind($fp); // CSVからの読み込み、保存 $errFlag = $this->lfReadCSVFile($objFormParam, $fp, $objQuery); } // 実行結果画面を表示 $this->tpl_mainpage = 'products/upload_csv_complete.tpl'; fclose($fp); if ($errFlag) { $objQuery->rollback(); return; } $objQuery->commit(); // 商品件数カウント関数の実行 $this->objDb->countCategory($objQuery); $this->objDb->countMaker($objQuery); }
/** * マスターデータ名チェックを行う * * @access private * @param array $arrMasterDataName マスターデータテーブル名のリスト * @return string $master_data_name 選択しているマスターデータのテーブル名 */ public function checkMasterDataName(&$arrParams, &$arrMasterDataName) { if (in_array($arrParams['master_data_name'], $arrMasterDataName)) { $master_data_name = $arrParams['master_data_name']; return $master_data_name; } else { Utils::sfDispError(''); } }
/** * CSVアップロードを実行する * * @param FormParam $objFormParam * @param UploadFile $objUpFile * @return void */ public function doUploadCsv(&$objFormParam, &$objUpFile) { // ファイルアップロードのチェック $objUpFile->makeTempFile('csv_file'); $arrErr = $objUpFile->checkExists(); if (count($arrErr) > 0) { $this->arrErr = $arrErr; return; } // 一時ファイル名の取得 $filepath = $objUpFile->getTempFilePath('csv_file'); // CSVファイルの文字コード変換 $enc_filepath = Utils::sfEncodeFile($filepath, CHAR_CODE, CSV_TEMP_REALDIR); // CSVファイルのオープン $fp = fopen($enc_filepath, 'r'); // 失敗した場合はエラー表示 if (!$fp) { Utils::sfDispError(''); } // 登録先テーブル カラム情報の初期化 $this->lfInitTableInfo(); // 登録フォーム カラム情報 $this->arrFormKeyList = $objFormParam->getKeyList(); // 登録対象の列数 $col_max_count = $objFormParam->getCount(); // 行数 $line_count = 0; $objQuery = Application::alias('eccube.query'); $objQuery->begin(); $errFlag = false; while (!feof($fp)) { $arrCSV = fgetcsv($fp, CSV_LINE_MAX); // 行カウント $line_count++; // ヘッダ行はスキップ if ($line_count == 1) { continue; } // 空行はスキップ if (empty($arrCSV)) { continue; } // 列数が異なる場合はエラー $col_count = count($arrCSV); if ($col_max_count != $col_count) { $this->addRowErr($line_count, '※ 項目数が' . $col_count . '個検出されました。項目数は' . $col_max_count . '個になります。'); $errFlag = true; break; } // シーケンス配列を格納する。 $objFormParam->setParam($arrCSV, true); // 入力値の変換 $objFormParam->convParam(); // <br>なしでエラー取得する。 $arrCSVErr = $this->lfCheckError($objFormParam); // 入力エラーチェック if (count($arrCSVErr) > 0) { foreach ($arrCSVErr as $err) { $this->addRowErr($line_count, $err); } $errFlag = true; break; } $category_id = $this->lfRegisterCategory($line_count, $objFormParam); $this->addRowResult($line_count, 'カテゴリID:' . $category_id . ' / カテゴリ名:' . $objFormParam->getValue('category_name')); } // 実行結果画面を表示 $this->tpl_mainpage = 'products/upload_csv_category_complete.tpl'; fclose($fp); if ($errFlag) { $objQuery->rollback(); return; } $objQuery->commit(); // カテゴリ件数を更新 /* @var $objDb DbHelper */ $objDb = Application::alias('eccube.helper.db'); $objDb->countCategory($objQuery); return; }
/** * POST アクセスの妥当性を検証する. * * 生成されたトランザクショントークンの妥当性を検証し, * 不正な場合はエラー画面へ遷移する. * * この関数は, 基本的に init() 関数で呼び出され, POST アクセスの場合は自動的に * トランザクショントークンを検証する. * ページによって検証タイミングなどを制御する必要がある場合は, この関数を * オーバーライドし, 個別に設定を行うこと. * * @access protected * @param boolean $is_admin 管理画面でエラー表示をする場合 true * @return void */ public function doValidToken($is_admin = false) { if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (!SessionHelper::isValidToken(false)) { if ($is_admin) { Utils::sfDispError(INVALID_MOVE_ERRORR); } else { Utils::sfDispSiteError(PAGE_ERROR, '', true); } $this->app['ecube.response.action_exit']; } } }