/**
  * 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));
     }
 }
Exemple #2
0
 /**
  * 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);
 }
Exemple #3
0
 /**
  * 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);
 }
Exemple #4
0
 /**
  * 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();
 }
Exemple #5
0
 /**
  * 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;
     }
 }
Exemple #6
0
 /**
  * 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;
 }
Exemple #7
0
 /**
  * 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);
 }
Exemple #8
0
 /**
  * マスターデータ名チェックを行う
  *
  * @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'];
         }
     }
 }