Пример #1
0
 /**
  * Page を初期化する.
  *
  * @return void
  */
 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) {
             SC_Utils_Ex::sfDispError(AUTH_ERROR);
         }
     }
     //SSL制限チェック
     if (ADMIN_FORCE_SSL == TRUE) {
         if (SC_Utils_Ex::sfIsHTTPS() === false) {
             SC_Response_Ex::sendRedirect($_SERVER["REQUEST_URI"], $_GET, FALSE, TRUE);
         }
     }
     $this->tpl_authority = $_SESSION['authority'];
     // ディスプレイクラス生成
     $this->objDisplay = new SC_Display_Ex();
     // プラグインクラス生成
     $this->objPlagin = new SC_Helper_Plugin_Ex();
     $this->objPlagin->preProcess($this);
     // トランザクショントークンの検証と生成
     $this->doValidToken(true);
     $this->setTokenTo();
 }
Пример #2
0
 /**
  * Page のアクション.
  *
  * @return void
  */
 public function action()
 {
     // パラメーター管理クラス
     $objFormParam = new SC_FormParam_Ex();
     switch ($this->getMode()) {
         case 'login':
             //ログイン処理
             $this->lfInitParam($objFormParam);
             $objFormParam->setParam($_POST);
             $this->arrErr = $this->lfCheckError($objFormParam);
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $this->lfDoLogin($objFormParam->getValue('login_id'));
                 SC_Response_Ex::sendRedirect(ADMIN_HOME_URLPATH);
             } else {
                 // ブルートフォースアタック対策
                 // ログイン失敗時に遅延させる
                 sleep(LOGIN_RETRY_INTERVAL);
                 SC_Utils_Ex::sfDispError(LOGIN_ERROR);
             }
             break;
         default:
             break;
     }
     // 管理者ログインテンプレートフレームの設定
     $this->setTemplate(LOGIN_FRAME);
 }
 /**
  * CSVファイルを送信する
  *
  * @param integer $csv_id
  *            CSVフォーマットID
  * @param string $where
  *            WHERE条件文
  * @param array $arrVal
  *            プリペアドステートメントの実行時に使用される配列。配列の要素数は、クエリ内のプレースホルダの数と同じでなければなりません。
  * @param string $order
  *            ORDER文
  * @param boolean $is_download
  *            true:ダウンロード用出力までさせる false:CSVの内容を返す(旧方式、メモリを食います。)
  * @return boolean|string $is_download = true時 成功失敗フラグ(boolean) 、$is_downalod = false時 string
  */
 public function sfDownloadCsv($csv_id, $where = '', $arrVal = array(), $order = '', $is_download = false)
 {
     switch ($csv_id) {
         case 1:
         case 2:
         case 3:
         case 4:
         case 5:
             return parent::sfDownloadCsv($csv_id, $where, $arrVal, $order, $is_download);
     }
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     // CSV出力タイトル行の作成
     $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfGetCsvOutput($csv_id, 'status = ' . CSV_COLUMN_STATUS_FLG_ENABLE));
     if (count($arrOutput) <= 0) {
         SC_Utils_Ex::sfDispError("");
         return false;
         // 失敗終了
     }
     $arrOutputCols = $arrOutput['col'];
     $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols, true);
     switch ($csv_id) {
         case 6:
             // キャラクター
             $from = 'cp_dtb_character';
             break;
         case 7:
             // 端末
             $from = 'cp_dtb_device';
             break;
     }
     $objQuery->setOrder($order);
     $sql = $objQuery->getSql($cols, $from, $where);
     return $this->sfDownloadCsvFromSql($sql, $arrVal, $this->arrSubnavi[$csv_id], $arrOutput['disp_name'], $is_download);
 }
Пример #4
0
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $conn = new SC_DBConn();
     $this->objSess = new SC_Session();
     $ret = false;
     if (!isset($_POST['login_id'])) {
         $_POST['login_id'] = "";
     }
     if (!isset($_POST['password'])) {
         $_POST['password'] = "";
     }
     // 入力判定
     if (strlen($_POST['login_id']) > 0 && strlen($_POST['password']) >= ID_MIN_LEN && strlen($_POST['password']) <= ID_MAX_LEN) {
         // 認証パスワードの判定
         $ret = $this->fnCheckPassword($conn);
     }
     if ($ret) {
         // 成功
         $this->sendRedirect($this->getLocation(URL_HOME));
         exit;
     } else {
         // エラーページの表示
         SC_Utils_Ex::sfDispError(LOGIN_ERROR);
         exit;
     }
 }
Пример #5
0
 /**
  * Page を初期化する.
  *
  * @return void
  */
 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) {
             SC_Utils_Ex::sfDispError(AUTH_ERROR);
         }
     }
     //SSL制限チェック
     if (ADMIN_FORCE_SSL == TRUE) {
         if (SC_Utils_Ex::sfIsHTTPS() === false) {
             SC_Response_Ex::sendRedirect($_SERVER['REQUEST_URI'], $_GET, FALSE, TRUE);
         }
     }
     $this->tpl_authority = $_SESSION['authority'];
     // ディスプレイクラス生成
     $this->objDisplay = new SC_Display_Ex();
     // スーパーフックポイントを実行.
     $objPlugin = SC_Helper_Plugin_Ex::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));
     }
 }
 /**
  * マスターデータ名チェックを行う
  *
  * @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 {
         SC_Utils_Ex::sfDispError('');
     }
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     // パラメーターの初期化
     $this->initParam($objFormParam, $_GET);
     // パラメーターの検証
     if ($objFormParam->checkError() || !SC_Utils_ex::sfIsInt($id = $objFormParam->getValue('id'))) {
         GC_Utils_Ex::gfPrintLog("error id={$id}");
         SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
     }
     $id = $objFormParam->getValue('id');
     // レコードの削除
     $this->deleteMember($id);
     // リダイレクト
     $url = $this->getLocation(ADMIN_SYSTEM_URLPATH) . '?pageno=' . $objFormParam->getValue('pageno');
     SC_Response_Ex::sendRedirect($url);
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 public function action()
 {
     switch ($this->getMode()) {
         case 'detail':
             $objForm = $this->initParam();
             if ($objForm->checkError()) {
                 SC_Utils_Ex::sfDispError('');
             }
             $this->arrLogDetail = $this->getLogDetail($objForm->getValue('log_id'));
             if (count($this->arrLogDetail) == 0) {
                 SC_Utils_Ex::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 = new SC_FormParam_Ex();
             // パラメーター情報の初期化
             $this->lfInitParam($objFormParam);
             $objFormParam->setParam($_GET);
             $objFormParam->convParam();
             // 表示するファイルにエラーチェックを行う
             if ($this->checkErrorDispFile($objFormParam)) {
                 $this->execFileView($objFormParam);
             } else {
                 SC_Utils_Ex::sfDispError('');
             }
             SC_Response_Ex::actionExit();
             break;
     }
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     // 認証可否の判定
     $objSess = new SC_Session();
     SC_Utils_Ex::sfIsSuccess($objSess);
     $this->initParam();
     // パラメータの検証
     if ($this->objForm->checkError() || !SC_Utils_ex::sfIsInt($id = $this->objForm->getValue('id'))) {
         GC_Utils_Ex::gfPrintLog("error id={$id}");
         SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
     }
     $id = $this->objForm->getValue('id');
     // レコードの削除
     $objQuery =& new SC_Query();
     $objQuery->begin();
     $this->renumberRank($objQuery, $id);
     $this->deleteRecode($objQuery, $id);
     $objQuery->commit();
     // リダイレクト
     $url = $this->getLocation(URL_SYSTEM_TOP) . '?pageno=' . $this->objForm->getValue('pageno');
     $this->sendRedirect($url);
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     // FIXME パスのチェック関数が必要
     if (preg_match('|\\./|', $_GET['file'])) {
         SC_Utils_Ex::sfDispError('');
     }
     // ユーザー認証
     SC_Utils_Ex::sfIsSuccess(new SC_Session());
     // ソースとして表示するファイルを定義(直接実行しないファイル)
     $arrViewFile = array('html', 'htm', 'tpl', 'php', 'css', 'js');
     // 拡張子取得
     $arrResult = split('\\.', $_GET['file']);
     $ext = $arrResult[count($arrResult) - 1];
     // ファイル内容表示
     if (in_array($ext, $arrViewFile)) {
         $objFileManager = new SC_Helper_FileManager_Ex();
         // ファイルを読み込んで表示
         header("Content-type: text/plain\n\n");
         print $objFileManager->sfReadFile(USER_PATH . $_GET['file']);
     } else {
         $this->sendRedirect(USER_URL . $_GET['file']);
         exit;
     }
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 public function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     $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 (SC_Utils_Ex::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()) {
                 SC_Utils_Ex::sfDispError('');
             }
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::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 (SC_Utils_Ex::isBlank($this->arrErr)) {
                 if ($this->doDownload($template_code) !== false) {
                     // ブラウザに出力し, 終了する
                     SC_Response_Ex::actionExit();
                 }
             }
             break;
         default:
             break;
     }
     $this->templates = $this->getAllTemplates($this->device_type_id);
     $this->tpl_subtitle = $this->arrDeviceType[$this->device_type_id] . '>' . $this->tpl_subtitle;
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     $conn = new SC_DBConn();
     $objView = new SC_AdminView();
     $objQuery = new SC_Query();
     $objDb = new SC_Helper_DB_Ex();
     // 認証可否の判定
     $objSess = new SC_Session();
     SC_Utils_Ex::sfIsSuccess($objSess);
     $get_check = false;
     // 規格IDのチェック
     if (SC_Utils_Ex::sfIsInt($_GET['class_id'])) {
         // 規格名の取得
         $this->tpl_class_name = $objQuery->get("dtb_class", "name", "class_id = ?", array($_GET['class_id']));
         if ($this->tpl_class_name != "") {
             // 規格IDの引き継ぎ
             $this->arrHidden['class_id'] = $_GET['class_id'];
             $get_check = true;
         }
     }
     if (!$get_check) {
         // 規格登録ページに飛ばす。
         $this->sendRedirect($this->getLocation(URL_CLASS_REGIST));
         exit;
     }
     if (!isset($_POST['mode'])) {
         $_POST['mode'] = "";
     }
     if (isset($_POST['class_id'])) {
         if (!SC_Utils_Ex::sfIsInt($_POST['class_id'])) {
             SC_Utils_Ex::sfDispError("");
         }
     }
     // 新規作成 or 編集
     switch ($_POST['mode']) {
         // 登録ボタン押下
         case 'edit':
             // POST値の引き継ぎ
             $this->arrForm = $_POST;
             // 入力文字の変換
             $_POST = $this->lfConvertParam($_POST);
             // エラーチェック
             $this->arrErr = $this->lfErrorCheck();
             if (count($this->arrErr) <= 0) {
                 if ($_POST['classcategory_id'] == "") {
                     $this->lfInsertClass();
                     // DBへの書き込み
                 } else {
                     $this->lfUpdateClass();
                     // DBへの書き込み
                 }
                 // 再表示
                 $this->reload($_GET['class_id']);
                 //sfReload("class_id=" . $_GET['class_id']);
             } else {
                 // POSTデータを引き継ぐ
                 $this->tpl_classcategory_id = $_POST['classcategory_id'];
             }
             break;
             // 削除
         // 削除
         case 'delete':
             // ランク付きレコードの削除
             $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']);
             $objDb->sfDeleteRankRecord("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where, true);
             break;
             // 編集前処理
         // 編集前処理
         case 'pre_edit':
             // 編集項目をDBより取得する。
             $where = "classcategory_id = ?";
             $name = $objQuery->get("dtb_classcategory", "name", $where, array($_POST['classcategory_id']));
             // 入力項目にカテゴリ名を入力する。
             $this->arrForm['name'] = $name;
             // POSTデータを引き継ぐ
             $this->tpl_classcategory_id = $_POST['classcategory_id'];
             break;
         case 'down':
             $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']);
             $objDb->sfRankDown("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where);
             break;
         case 'up':
             $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']);
             $objDb->sfRankUp("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where);
             break;
         default:
             break;
     }
     // 規格分類の読込
     $where = "del_flg <> 1 AND class_id = ?";
     $objQuery->setorder("rank DESC");
     $this->arrClassCat = $objQuery->select("name, classcategory_id", "dtb_classcategory", $where, array($_GET['class_id']));
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
 /**
  * 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 = SC_Utils_Ex::sfEncodeFile($filepath, CHAR_CODE, CSV_TEMP_REALDIR);
     // CSVファイルのオープン
     $fp = fopen($enc_filepath, 'r');
     // 失敗した場合はエラー表示
     if (!$fp) {
         SC_Utils_Ex::sfDispError('');
     }
     // 登録先テーブル カラム情報の初期化
     $this->lfInitTableInfo();
     // 登録フォーム カラム情報
     $this->arrFormKeyList = $objFormParam->getKeyList();
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objQuery->begin();
     // CSVからの読み込み、入力エラーチェック
     $errFlag = $this->lfReadCSVFile($objFormParam, $fp);
     if (!$errFlag) {
         rewind($fp);
         // CSVからの読み込み、保存
         $errFlag = $this->lfReadCSVFile($objFormParam, $fp, $objQuery);
     }
     // 実行結果画面を表示
     $this->tpl_mainpage = 'basis/device_android_edit_csv_complete.tpl';
     fclose($fp);
     if ($errFlag) {
         $objQuery->rollback();
         return;
     }
     $objQuery->commit();
     // 商品件数カウント関数の実行
     $this->objDb->sfCountCategory($objQuery);
     $this->objDb->sfCountMaker($objQuery);
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     $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 (SC_Utils_Ex::isBlank($this->arrErr)) {
                 if ($this->doRegister($template_code, $this->device_type_id)) {
                     $this->tpl_select = $template_code;
                     $this->tpl_onload = "alert('" . t('c_Registration is complete._01') . "');";
                 }
             }
             break;
             // 削除ボタン押下時
         // 削除ボタン押下時
         case 'delete':
             if ($objFormParam->checkError()) {
                 SC_Utils_Ex::sfDispError('');
             }
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 if ($this->doDelete($template_code, $this->device_type_id)) {
                     $this->tpl_onload = "alert('" . t('c_Deletion is complete._01') . "');";
                 }
             }
             break;
             // downloadボタン押下時
         // downloadボタン押下時
         case 'download':
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 if ($this->doDownload($template_code) !== false) {
                     // ブラウザに出力し, 終了する
                     SC_Response_Ex::actionExit();
                 }
             }
             break;
         default:
             break;
     }
     if (!$is_error) {
         $this->templates = $this->getAllTemplates($this->device_type_id);
     } 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 process()
 {
     // 認証可否の判定
     $objSession = new SC_Session();
     SC_Utils::sfIsSuccess($objSession);
     // uniqidをテンプレートへ埋め込み
     $this->uniqid = $objSession->getUniqId();
     $objView = new SC_AdminView();
     switch ($this->lfGetMode()) {
         // 登録ボタン押下時
         case 'register':
             // 画面遷移の正当性チェック
             if (!SC_Utils::sfIsValidTransition($objSession)) {
                 sfDispError('');
             }
             // パラメータ検証
             $objForm = $this->lfInitRegister();
             if ($objForm->checkError()) {
                 SC_Utils_Ex::sfDispError('');
             }
             $template_code = $objForm->getValue('template_code');
             $this->tpl_select = $template_code;
             if ($template_code == "") {
                 $template_code = "default";
             }
             // DBへ使用するテンプレートを登録
             $this->lfRegisterTemplate($template_code);
             // XXX コンパイルファイルのクリア処理を行う
             $objView->_smarty->clear_compiled_tpl();
             // common.cssの内容を更新
             $this->lfChangeCommonCss($template_code);
             // テンプレートのコピー
             $this->lfCopyTemplate($template_code);
             // ブロック位置を更新
             $this->lfChangeBloc($template_code);
             // 完了メッセージ
             $this->tpl_onload = "alert('登録が完了しました。');";
             break;
             // 削除ボタン押下時
         // 削除ボタン押下時
         case 'delete':
             // 画面遷移の正当性チェック
             if (!SC_Utils::sfIsValidTransition($objSession)) {
                 SC_Utils::sfDispError('');
             }
             // パラメータ検証
             $objForm = $this->lfInitDelete();
             if ($objForm->checkError()) {
                 SC_Utils::sfDispError('');
             }
             //現在使用中のテンプレートとデフォルトのテンプレートは削除できないようにする
             $template_code = $objForm->getValue('template_code_temp');
             if ($template_code == TEMPLATE_NAME || $template_code == DEFAULT_TEMPLATE_NAME) {
                 $this->tpl_onload = "alert('選択中のテンプレートは削除出来ません');";
                 break;
             }
             $this->lfDeleteTemplate($template_code);
             break;
             // downloadボタン押下時
         // downloadボタン押下時
         case 'download':
             // 画面遷移の正当性チェック
             if (!SC_Utils::sfIsValidTransition($objSession)) {
                 SC_Utils::sfDispError('');
             }
             // パラメータ検証
             $objForm = $this->lfInitDownload();
             $template_code = $objForm->getValue('template_code_temp');
             // ユーザデータの下のファイルも保存する。
             $from_dir = USER_TEMPLATE_PATH . $template_code . "/";
             $to_dir = SMARTY_TEMPLATES_DIR . $template_code . "/_packages/";
             SC_Utils::sfMakeDir($to_dir);
             SC_Utils::sfCopyDir($from_dir, $to_dir);
             SC_Helper_FileManager::downloadArchiveFiles(SMARTY_TEMPLATES_DIR . $template_code);
             break;
             // プレビューボタン押下時
         // プレビューボタン押下時
         case 'preview':
             break;
         default:
             break;
     }
     // defaultパラメータのセット
     $this->templates = $this->lfGetAllTemplates();
     $this->now_template = TEMPLATE_NAME;
     // 画面の表示
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
Пример #17
0
 /**
  * POST アクセスの妥当性を検証する.
  *
  * 生成されたトランザクショントークンの妥当性を検証し,
  * 不正な場合はエラー画面へ遷移する.
  *
  * この関数は, 基本的に init() 関数で呼び出され, POST アクセスの場合は自動的に
  * トランザクショントークンを検証する.
  * ページによって検証タイミングなどを制御する必要がある場合は, この関数を
  * オーバーライドし, 個別に設定を行うこと.
  *
  * @access protected
  * @param boolean $is_admin 管理画面でエラー表示をする場合 true
  * @return void
  */
 function doValidToken($is_admin = false)
 {
     if ($_SERVER["REQUEST_METHOD"] == 'POST') {
         if (!SC_Helper_Session_Ex::isValidToken(false)) {
             if ($is_admin) {
                 SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
             } else {
                 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, "", true);
             }
             exit;
         }
     }
 }
 /**
  * CSVアップロードを実行します.
  *
  * @return void
  */
 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 = SC_Utils_Ex::sfEncodeFile($filepath, CHAR_CODE, CSV_TEMP_REALDIR);
     // CSVファイルのオープン
     $fp = fopen($enc_filepath, 'r');
     // 失敗した場合はエラー表示
     if (!$fp) {
         SC_Utils_Ex::sfDispError('');
     }
     // 登録先テーブル カラム情報の初期化
     $this->lfInitTableInfo();
     // 登録フォーム カラム情報
     $this->arrFormKeyList = $objFormParam->getKeyList();
     // 登録対象の列数
     $col_max_count = $objFormParam->getCount();
     // 行数
     $line_count = 0;
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objQuery->begin();
     $errFlag = false;
     $all_line_checked = false;
     while (!feof($fp)) {
         $arrCSV = fgetcsv($fp, CSV_LINE_MAX);
         // 全行入力チェック後に、ファイルポインターを先頭に戻す
         if (feof($fp) && !$all_line_checked) {
             rewind($fp);
             $line_count = 0;
             $all_line_checked = true;
             continue;
         }
         // 行カウント
         $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);
         $arrRet = $objFormParam->getHashArray();
         $objFormParam->setParam($arrRet);
         // 入力値の変換
         $objFormParam->convParam();
         // <br>なしでエラー取得する。
         $arrCSVErr = $this->lfCheckError($objFormParam);
         // 入力エラーチェック
         if (count($arrCSVErr) > 0) {
             foreach ($arrCSVErr as $err) {
                 $this->addRowErr($line_count, $err);
             }
             $errFlag = true;
             break;
         }
         if ($all_line_checked) {
             $this->lfRegistProduct($objQuery, $line_count, $objFormParam);
             $arrParam = $objFormParam->getHashArray();
             $this->addRowResult($line_count, '商品ID:' . $arrParam['product_id'] . ' / 商品名:' . $arrParam['name']);
         }
         SC_Utils_Ex::extendTimeOut();
     }
     // 実行結果画面を表示
     $this->tpl_mainpage = 'products/upload_csv_complete.tpl';
     fclose($fp);
     if ($errFlag) {
         $objQuery->rollback();
         return;
     }
     $objQuery->commit();
     // 商品件数カウント関数の実行
     $this->objDb->sfCountCategory($objQuery);
     $this->objDb->sfCountMaker($objQuery);
 }
 /**
  * CSVアップロードを実行する
  *
  * @param SC_FormParam  $objFormParam
  * @param SC_UploadFile $objUpFile
  * @param SC_Helper_DB  $objDb
  * @return void
  */
 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 = SC_Utils_Ex::sfEncodeFile($filepath, CHAR_CODE, CSV_TEMP_REALDIR);
     // CSVファイルのオープン
     $fp = fopen($enc_filepath, 'r');
     // 失敗した場合はエラー表示
     if (!$fp) {
         SC_Utils_Ex::sfDispError('');
     }
     // 登録先テーブル カラム情報の初期化
     $this->lfInitTableInfo();
     // 登録フォーム カラム情報
     $this->arrFormKeyList = $objFormParam->getKeyList();
     // 登録対象の列数
     $col_max_count = $objFormParam->getCount();
     // 行数
     $line_count = 0;
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $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, t('c_* T_ARG1 was detected for the item quantity. The item quantity is T_ARG2._01', array('T_ARG1' => $col_count, 'T_ARG2' => $col_max_count)));
             $errFlag = true;
             break;
         }
         // シーケンス配列を格納する。
         $objFormParam->setParam($arrCSV, true);
         $arrRet = $objFormParam->getHashArray();
         $objFormParam->setParam($arrRet);
         // 入力値の変換
         $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->lfRegistCategory($objQuery, $line_count, $objFormParam);
         $this->addRowResult($line_count, t('c_Category ID: T_ARG1 /Category name: T_ARG2_01', array('T_ARG1' => $category_id, 'T_ARG2' => $objFormParam->getValue('category_name'))));
     }
     // 実行結果画面を表示
     $this->tpl_mainpage = 'products/upload_csv_category_complete.tpl';
     fclose($fp);
     if ($errFlag) {
         $objQuery->rollback();
         return;
     }
     $objQuery->commit();
     // カテゴリ件数を更新
     SC_Helper_DB_EX::sfCountCategory($objQuery);
     return;
 }
Пример #20
0
 /**
  * POST アクセスの妥当性を検証する.
  *
  * 生成されたトランザクショントークンの妥当性を検証し,
  * 不正な場合はエラー画面へ遷移する.
  *
  * この関数は, 基本的に init() 関数で呼び出され, POST アクセスの場合は自動的に
  * トランザクショントークンを検証する.
  * ページによって検証タイミングなどを制御する必要がある場合は, この関数を
  * オーバーライドし, 個別に設定を行うこと.
  *
  * @access protected
  * @param  boolean $is_admin 管理画面でエラー表示をする場合 true
  * @return void
  */
 public function doValidToken($is_admin = false)
 {
     if ($is_admin) {
         $mode = $this->getMode();
         if ($_SERVER['REQUEST_METHOD'] == 'POST' || !SC_Utils::isBlank($mode)) {
             if (!SC_Helper_Session_Ex::isValidToken(false)) {
                 SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
                 SC_Response_Ex::actionExit();
             }
         }
     } else {
         if ($_SERVER['REQUEST_METHOD'] == 'POST') {
             if (!SC_Helper_Session_Ex::isValidToken(false)) {
                 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true);
                 SC_Response_Ex::actionExit();
             }
         }
     }
 }
 /**
  * レビュー情報のDB取得
  *
  * @param integer $review_id レビューID
  * @return array レビュー情報
  */
 function lfGetReviewData($review_id)
 {
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $select = 'review_id, A.product_id, reviewer_name, sex, recommend_level, ';
     $select .= 'reviewer_url, title, comment, A.status, A.create_date, A.update_date, name';
     $from = 'dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id ';
     $where = 'A.del_flg = 0 AND B.del_flg = 0 AND review_id = ? ';
     $arrReview = $objQuery->select($select, $from, $where, array($review_id));
     if (empty($arrReview)) {
         SC_Utils_Ex::sfDispError('');
     }
     return $arrReview[0];
 }
Пример #22
0
 /**
  * POST アクセスの妥当性を検証する.
  *
  * 生成されたトランザクショントークンの妥当性を検証し,
  * 不正な場合はエラー画面へ遷移する.
  *
  * この関数は, 基本的に init() 関数で呼び出され, POST アクセスの場合は自動的に
  * トランザクショントークンを検証する.
  * ページによって検証タイミングなどを制御する必要がある場合は, この関数を
  * オーバーライドし, 個別に設定を行うこと.
  *
  * @access protected
  * @param boolean $is_admin 管理画面でエラー表示をする場合 true
  * @return void
  */
 function doValidToken($is_admin = false)
 {
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         if (!SC_Helper_Session_Ex::isValidToken(false)) {
             if ($is_admin) {
                 SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
             } else {
                 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true);
             }
             SC_Response_Ex::actionExit();
         }
     }
 }
 /**
  * registerアクションの実行.
  * 入力内容をDBへ登録する.
  *
  * @param void
  * @return void
  */
 function execRegisterMode()
 {
     if ($this->isValidToken() !== true) {
         SC_Utils_Ex::sfDispError('');
     }
     // パラメータオブジェクトの初期化
     $this->initRegisterMode();
     // POSTされたパラメータの検証
     $arrErr = $this->validateRegistermode();
     // エラー時の処理
     if (!empty($arrErr)) {
         $this->arrErr = $arrErr;
         $this->arrForm = $this->objForm->getHashArray();
         $this->transactionid = $this->getToken();
         return;
     }
     // エラーがなければDBへ登録
     $arrForm = $this->objForm->getHashArray();
     $this->registerOwnersStoreSettings($arrForm);
     $this->arrForm = $arrForm;
     $this->tpl_onload = "alert('登録しました。')";
     $this->transactionid = $this->getToken();
 }
 /**
  * レビュー情報のDB取得
  *
  */
 function lfGetReviewData($review_id)
 {
     $select = "review_id, A.product_id, reviewer_name, sex, recommend_level, ";
     $select .= "reviewer_url, title, comment, A.status, A.create_date, A.update_date, name";
     $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id ";
     $where = "A.del_flg = 0 AND B.del_flg = 0 AND review_id = ? ";
     $arrReview = $this->objQuery->select($select, $from, $where, array($review_id));
     if (empty($arrReview)) {
         SC_Utils_Ex::sfDispError("");
     }
     return $arrReview[0];
 }
Пример #25
0
 /**
  * テキストファイルの文字エンコーディングを変換する.
  *
  * $filepath に存在するテキストファイルの文字エンコーディングを変換する.
  * 変換前の文字エンコーディングは, mb_detect_order で設定した順序で自動検出する.
  * 変換後は, 変換前のファイル名に「enc_」というプレフィクスを付与し,
  * $out_dir で指定したディレクトリへ出力する
  *
  * TODO $filepath のファイルがバイナリだった場合の扱い
  * TODO fwrite などでのエラーハンドリング
  *
  * @access public
  * @param string $filepath 変換するテキストファイルのパス
  * @param string $enc_type 変換後のファイルエンコーディングの種類を表す文字列
  * @param string $out_dir 変換後のファイルを出力するディレクトリを表す文字列
  * @return string 変換後のテキストファイルのパス
  */
 function sfEncodeFile($filepath, $enc_type, $out_dir)
 {
     $ifp = fopen($filepath, 'r');
     // 正常にファイルオープンした場合
     if ($ifp !== false) {
         $basename = basename($filepath);
         $outpath = $out_dir . 'enc_' . $basename;
         $ofp = fopen($outpath, 'w+');
         while (!feof($ifp)) {
             $line = fgets($ifp);
             $line = mb_convert_encoding($line, $enc_type, 'auto');
             fwrite($ofp, $line);
         }
         fclose($ofp);
         fclose($ifp);
     } else {
         SC_Utils_Ex::sfDispError('');
         exit;
     }
     return $outpath;
 }
 function doPreEdit(SC_Query $objQuery, SC_FormParam &$objFormParam)
 {
     if (!SC_Utils_Ex::isBlank($this->arrErr)) {
         return;
     }
     $edit_device_id = $objFormParam->getValue("edit_device_id");
     $arrHash = compact("edit_device_id");
     $objSql = new SC_DeviceAndroidSelect_Ex($arrHash);
     if ($objSql->exists()) {
         $arrRet = $objSql->getOne();
         GC_Utils_Ex::gfPrintLog(print_r($objSql, true), DEBUG_LOG_REALFILE);
         GC_Utils_Ex::gfPrintLog(print_r($arrRet, true), DEBUG_LOG_REALFILE);
         $arrRet["category_id"] = SC_Helper_Device_Ex::getCategoryIds($objQuery, $edit_device_id);
         $objFormParam->setParam($arrRet);
         GC_Utils_Ex::gfPrintLog(print_r($objFormParam->getHashArray(), true), DEBUG_LOG_REALFILE);
         GC_Utils_Ex::gfPrintLog(print_r($arrRet, true), DEBUG_LOG_REALFILE);
     } else {
         SC_Utils_Ex::sfDispError("");
     }
     $arrDateColumn = $this->ARR_DATE_COLUMN;
     foreach ($arrDateColumn as $column) {
         if ($this->is1970($arrRet, $column)) {
             continue;
         }
         $date_keys = $this->date_keys($column);
         $value = $arrRet[$column];
         $objFormParam->setDBDate($value, $date_keys["year"], $date_keys["month"], $date_keys["day"]);
     }
     GC_Utils_Ex::gfPrintLog(print_r($objFormParam->getHashArray(), true), DEBUG_LOG_REALFILE);
     $this->arrForm = $objFormParam->getHashArray();
 }