/**
  * アンインストール
  * uninstallはアンインストール時に実行されます.
  * 引数にはdtb_pluginのプラグイン情報が渡されます.
  *
  * @param array $arrPlugin プラグイン情報の連想配列(dtb_plugin)
  * @return void
  */
 function uninstall($arrPlugin)
 {
     // ファイル削除
     if (SC_Helper_FileManager_Ex::deleteFile(PLUGIN_HTML_REALDIR . "SessionNotUsingDB/logo.png") === false) {
     }
     print_r("失敗");
 }
 function update(array $arrPlugin, SC_Plugin_Installer $installer)
 {
     $base_dir = dirname(__FILE__);
     GC_Utils_Ex::gfPrintLog("[" . $arrPlugin["plugin_code"] . "]更新処理を実行します。", PLUGIN_LOG_REALFILE, FALSE);
     $log = "";
     $xdir = PLUGIN_UPLOAD_REALDIR . $arrPlugin["plugin_code"];
     if (!is_dir($xdir . "_" . date("Ymd") . "/")) {
         rename($xdir . "/", $xdir . "_" . date("Ymd") . "/");
     }
     SC_Helper_FileManager_Ex::deleteFile($xdir . "/", false);
     $log .= SC_Utils_Ex::sfCopyDir("{$base_dir}/", PLUGIN_UPLOAD_REALDIR . $arrPlugin["plugin_code"] . "/", '', true);
     // logo コピー
     $installer->copyDirectory("copy/plugin_dir/", "");
     GC_Utils_Ex::gfPrintLog($log, PLUGIN_LOG_REALFILE, false);
     $core = new SupportDeviceCore($arrPlugin);
     $plugin_version = $arrPlugin["plugin_version"];
     switch ($plugin_version) {
         case "0.0.0":
         case "0.0.1":
             // 再インストール
             $core->install($arrPlugin, $installer);
             $core->update($arrPlugin, $installer, "0.0.0");
             break;
         default:
             $core->update($arrPlugin, $installer, $plugin_version);
             break;
     }
     $core->createCash();
     $objQuery = SC_Query_Ex::getSingletonInstance();
     $objQuery->begin();
     GC_Utils_Ex::gfPrintLog("[" . $arrPlugin["plugin_code"] . "]更新処理を実行完了しました。", PLUGIN_LOG_REALFILE, FALSE);
 }
示例#3
0
 /**
  * アンインストール
  * uninstallはアンインストール時に実行されます.
  * 引数にはdtb_pluginのプラグイン情報が渡されます.
  *
  * @param array $arrPlugin プラグイン情報の連想配列(dtb_plugin)
  * @return void
  */
 function uninstall($arrPlugin)
 {
     VideoPlayer::uninsertFreeField();
     // ファイル削除
     if (SC_Helper_FileManager_Ex::deleteFile(PLUGIN_HTML_REALDIR . "VideoPlayer/logo.png") === false) {
     }
     print_r("失敗");
     if (SC_Helper_FileManager_Ex::deleteFile(PLUGIN_HTML_REALDIR . "VideoPlayer/VideoPlayer.php") === false) {
     }
     print_r("失敗");
 }
 function install(array $arrPlugin, SC_Plugin_Installer $installer)
 {
     $plugin_dir = dirname(__FILE__) . DIRECTORY_SEPARATOR;
     $upload_plugin_dir = PLUGIN_UPLOAD_REALDIR . $arrPlugin["plugin_code"] . DIRECTORY_SEPARATOR;
     $backup_plugin_dir = PLUGIN_UPLOAD_REALDIR . $arrPlugin["plugin_code"] . "_" . date("Ymd") . DIRECTORY_SEPARATOR;
     if (!is_dir($backup_plugin_dir)) {
         SC_Utils_Ex::sfCopyDir($upload_plugin_dir, $backup_plugin_dir);
     }
     SC_Helper_FileManager_Ex::deleteFile($upload_plugin_dir, false);
     SC_Utils_Ex::sfCopyDir($plugin_dir . "/", $upload_plugin_dir);
     SC_Utils_Ex::sfCopyDir($plugin_dir . "/copy/Smarty/templates/admin/", TEMPLATE_ADMIN_REALDIR);
     SC_Utils_Ex::sfCopyDir($plugin_dir . "/copy/modules/", DATA_REALDIR . "module/");
     // logo コピー
     $installer->copyDirectory("copy/plugin_dir/", "");
     $table = "dtb_products";
     $fields = array('auto_display_status' => $this->intColumn('自動公開'), 'auto_display_start_date' => $this->timestampColumn('公開開始日'), 'auto_display_end_date' => $this->timestampColumn('公開終了日'));
     $type = "timestamp";
     $definition = compact("type");
     foreach ($fields as $name => $define) {
         $this->objDb->sfColumnExists($table, $name, $define["type"], "", true);
         $this->fieldComment($installer, $table, $name, $define["comment"]);
         switch ($define["type"]) {
             case "timestamp":
                 break;
             default:
                 continue;
         }
         $change = array();
         $change[$name] = compact('definition');
         $this->objManager->alterTable($table, compact("change"), false);
     }
     $this->objQuery->update("dtb_products", array(), "auto_display_start_date IS NULL", array(), array("auto_display_start_date" => "create_date"));
     $masterfields = array("id" => $this->intColumn("ID"), "name" => $this->textColumn("NAME"), "rank" => $this->intColumn("RANK"));
     $table = "atd_mtb_auto_display_status";
     if ($this->objDb->sfColumnExists($table, "id") == false) {
         $this->objManager->createTable($table, $masterfields);
     }
     foreach ($masterfields as $name => $define) {
         $this->objDb->sfColumnExists($table, $name, $define["type"], "", true);
         $this->fieldComment($installer, $table, $name, $define["comment"]);
     }
     $this->masterdata->deleteMasterData($table);
     $this->masterdata->clearCache($table);
     $this->masterdata->registMasterData($table, array(), explode(",", "常時公開,時限公開"));
     // $this->insertMasterData ( "PRODUCTS_RESULT_ROWSPAN", 1, '管理画面/商品管理一覧 行結合数' );
     // $this->insertMasterData ( "PRODUCTS_RESULT_COLUMN", 5, '管理画面/商品管理一覧 列位置' );
     // $this->insertMasterData ( "PRODUCTS_SEARCH_AUTO_DISPLAY", 1, '検索画面表示設定(1: ON/ 0:OFF)' );
     // $this->insertMasterData ( "PRODUCTS_DETAIL_AUTO_DISPLAY", 1, '検索画面表示設定(1: ON/ 0:OFF)' );
 }
 /**
  * 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;
     }
 }
 function update(array $arrPlugin, SC_Plugin_Installer $installer)
 {
     require_once DOWNLOADS_TEMP_PLUGIN_UPDATE_DIR . "KisekaeTouchCore.php";
     $plugin_code = $arrPlugin["plugin_code"];
     $date = date("Ymd");
     define("KTC_PLG_ORG_DIR", PLUGIN_UPLOAD_REALDIR . "{$plugin_code}/");
     define("KTC_PLG_UPD_DIR", DOWNLOADS_TEMP_PLUGIN_UPDATE_DIR);
     define("KTC_PLG_BKU_DIR", PLUGIN_UPLOAD_REALDIR . "{$plugin_code}_{$date}/");
     if (file_exists(KTC_PLG_BKU_DIR)) {
         // nop
     } else {
         SC_Utils_Ex::recursiveMkdir(KTC_PLG_BKU_DIR);
         $log = SC_Utils_Ex::sfCopyDir(KTC_PLG_ORG_DIR, KTC_PLG_BKU_DIR, "", TRUE);
         GC_Utils_Ex::gfPrintLog($log, PLUGIN_LOG_REALFILE, FALSE);
     }
     SC_Helper_FileManager_Ex::deleteFile(KTC_PLG_ORG_DIR, FALSE);
     $log = SC_Utils_Ex::sfCopyDir(KTC_PLG_UPD_DIR, KTC_PLG_ORG_DIR, "", TRUE);
     GC_Utils_Ex::gfPrintLog($log, PLUGIN_LOG_REALFILE, FALSE);
     $installer->copyDirectory("copy/plugin_dir/", "");
     $core = new KisekaeTouchCore($arrPlugin);
     $plugin_version = $arrPlugin["plugin_version"];
     $core->update($arrPlugin, $installer, $plugin_version);
     $core->createCash();
 }
 /**
  * ダウンロードを実行する.
  *
  * 指定のテンプレートをアーカイブし, ブラウザに出力する.
  * 失敗した場合は, エラーメッセージを出力し, false を返す.
  *
  * @param  string  $template_code テンプレートコード
  * @return boolean 成功した場合 true; 失敗した場合 false
  */
 public function doDownload($template_code)
 {
     $from_dir = USER_TEMPLATE_REALDIR . $template_code . '/';
     $to_dir = SMARTY_TEMPLATES_REALDIR . $template_code . '/_packages/';
     if (SC_Utils_Ex::recursiveMkdir($to_dir) === false) {
         $this->arrErr['err'] = '※ ディレクトリの作成に失敗しました<br />';
         return false;
     }
     SC_Utils_Ex::sfCopyDir($from_dir, $to_dir);
     if (SC_Helper_FileManager_Ex::downloadArchiveFiles(SMARTY_TEMPLATES_REALDIR . $template_code, $template_code) === false) {
         $this->arrErr['err'] = '※ アーカイブファイルの作成に失敗しました<br />';
         return false;
     }
     return true;
 }
 /**
  * plugin_idをキーにdtb_plugin, dtb_plugin_hookpointから物理削除します.
  *
  * @param  int    $plugin_id   プラグインID.
  * @param  string $plugin_code プラグインコード.
  * @return array  $arrErr エラー情報を格納した連想配列.
  */
 public function deletePlugin($plugin_id, $plugin_code)
 {
     $arrErr = array();
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objQuery->begin();
     SC_Plugin_Util_Ex::deletePluginByPluginId($plugin_id);
     if (SC_Helper_FileManager_Ex::deleteFile($this->getPluginDir($plugin_code)) === false) {
         // TODO エラー処理
     }
     if (SC_Helper_FileManager_Ex::deleteFile($this->getHtmlPluginDir($plugin_code)) === false) {
         // TODO エラー処理
     }
     $objQuery->commit();
     return $arrErr;
 }
 /**
  * プラグインをアップロードする.
  * 
  * @param object $objUpFile
  * @param string $plugin_dir
  * @param string $plugin_code
  * @param string $plugin_file_name
  * @return array エラー情報を格納した連想配列.
  * 
  */
 function lfUploadPlugin(&$objUpFile, $plugin_dir, $plugin_code, $plugin_file_name)
 {
     $arrErr = array();
     // 必須チェック
     $arrErr = $objUpFile->checkEXISTS('plugin_file');
     if (count($arrErr) == 0) {
         // プラグイン保存ディレクトリ作成
         if (file_exists($plugin_dir)) {
             $arrErr['plugin_file'] = "※ 同名のディレクトリがすでに存在します。<br/>";
         } else {
             mkdir($plugin_dir);
         }
         if (count($arrErr) == 0) {
             // 一時ディレクトリからプラグイン保存ディレクトリへ移動
             $objUpFile->moveTempFile();
             // プラグイン保存ディレクトリへ解凍
             SC_Helper_FileManager_Ex::unpackFile($plugin_dir . $plugin_file_name);
             // プラグイン情報をDB登録
             $this->lfRegistData($plugin_dir, $plugin_code);
         }
     }
     return $arrErr;
 }
 /**
  * ファイル内容を表示する
  *
  * @return void
  */
 public function execFileView($objFormParam)
 {
     $file = $objFormParam->getValue('file');
     // ソースとして表示するファイルを定義(直接実行しないファイル)
     $arrViewFile = array('html', 'htm', 'tpl', 'php', 'css', 'js');
     $extension = pathinfo($file, PATHINFO_EXTENSION);
     if (in_array($extension, $arrViewFile)) {
         $objFileManager = new SC_Helper_FileManager_Ex();
         // ファイルを読み込んで表示
         header("Content-type: text/plain\n\n");
         echo $objFileManager->sfReadFile(USER_REALDIR . $file);
     } else {
         SC_Response_Ex::sendRedirect(USER_URL . $file);
     }
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     // フォーム操作クラス
     $objFormParam = new SC_FormParam_Ex();
     // パラメーター情報の初期化
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($this->createSetParam($_POST));
     $objFormParam->convParam();
     // ファイル管理クラス
     $objUpFile = new SC_UploadFile_Ex($objFormParam->getValue('now_dir'), $objFormParam->getValue('now_dir'));
     // ファイル情報の初期化
     $this->lfInitFile($objUpFile);
     // ファイル操作クラス
     $objFileManager = new SC_Helper_FileManager_Ex();
     switch ($this->getMode()) {
         // フォルダ移動
         case 'move':
             $objFormParam = new SC_FormParam_Ex();
             $this->lfInitParamModeMove($objFormParam);
             $objFormParam->setParam($this->createSetParam($_POST));
             $objFormParam->convParam();
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $now_dir = $this->lfCheckSelectDir($objFormParam, $objFormParam->getValue('tree_select_file'));
                 $objFormParam->setValue('now_dir', $now_dir);
             }
             break;
             // ファイル表示
         // ファイル表示
         case 'view':
             $objFormParam = new SC_FormParam_Ex();
             $this->lfInitParamModeView($objFormParam);
             $objFormParam->setParam($this->createSetParam($_POST));
             $objFormParam->convParam();
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 if ($this->tryView($objFormParam)) {
                     $pattern = '/' . preg_quote($objFormParam->getValue('top_dir'), '/') . '/';
                     $file_url = htmlspecialchars(preg_replace($pattern, '', $objFormParam->getValue('select_file')));
                     $tpl_onload = "win02('./file_view.php?file=" . $file_url . "', 'user_data', '600', '400');";
                     $this->setTplOnLoad($tpl_onload);
                 }
             }
             break;
             // ファイルダウンロード
         // ファイルダウンロード
         case 'download':
             $objFormParam = new SC_FormParam_Ex();
             $this->lfInitParamModeView($objFormParam);
             $objFormParam->setParam($this->createSetParam($_POST));
             $objFormParam->convParam();
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 if (is_dir($objFormParam->getValue('select_file'))) {
                     $disp_error = t('c_* It is not possible to download the directory.<br/>_01');
                     $this->setDispError('select_file', $disp_error);
                 } else {
                     $path_exists = SC_Utils::checkFileExistsWithInBasePath($objFormParam->getValue('select_file'), USER_REALDIR);
                     if ($path_exists) {
                         // ファイルダウンロード
                         $objFileManager->sfDownloadFile($objFormParam->getValue('select_file'));
                         SC_Response_Ex::actionExit();
                     }
                 }
             }
             break;
             // ファイル削除
         // ファイル削除
         case 'delete':
             $objFormParam = new SC_FormParam_Ex();
             $this->lfInitParamModeView($objFormParam);
             $objFormParam->setParam($this->createSetParam($_POST));
             $objFormParam->convParam();
             $this->arrErr = $objFormParam->checkError();
             $path_exists = SC_Utils::checkFileExistsWithInBasePath($objFormParam->getValue('select_file'), USER_REALDIR);
             if (SC_Utils_Ex::isBlank($this->arrErr) && $path_exists) {
                 $objFileManager->deleteFile($objFormParam->getValue('select_file'));
             }
             break;
             // ファイル作成
         // ファイル作成
         case 'create':
             $objFormParam = new SC_FormParam_Ex();
             $this->lfInitParamModeCreate($objFormParam);
             $objFormParam->setParam($this->createSetParam($_POST));
             $objFormParam->convParam();
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 if (!$this->tryCreateDir($objFileManager, $objFormParam)) {
                     $disp_error = t('c_* T_ARG1 creation failed.<br/>_01', array('T_FILED', htmlspecialchars($objFormParam->getValue('create_file'), ENT_QUOTES)));
                     $this->setDispError('create_file', $disp_error);
                 } else {
                     $tpl_onload = "alert('" . t('c_The folder was created._01') . "');";
                     $this->setTplOnLoad($tpl_onload);
                 }
             }
             break;
             // ファイルアップロード
         // ファイルアップロード
         case 'upload':
             // 画像保存処理
             $ret = $objUpFile->makeTempFile('upload_file', false);
             if (SC_Utils_Ex::isBlank($ret)) {
                 $tpl_onload = "alert('" . t('c_The file was uploaded._01') . "');";
                 $this->setTplOnLoad($tpl_onload);
             } else {
                 $this->setDispError('upload_file', $ret);
             }
             break;
             // 初期表示
         // 初期表示
         default:
             break;
     }
     // 値をテンプレートに渡す
     $this->arrParam = $objFormParam->getHashArray();
     // 現在の階層がルートディレクトリかどうかテンプレートに渡す
     $this->setIsTopDir($objFormParam);
     // 現在の階層より一つ上の階層をテンプレートに渡す
     $this->setParentDir($objFormParam);
     // 現在いる階層(表示用)をテンプレートに渡す
     $this->setDispPath($objFormParam);
     // 現在のディレクトリ配下のファイル一覧を取得
     $this->arrFileList = $objFileManager->sfGetFileList($objFormParam->getValue('now_dir'));
     // 現在の階層のディレクトリをテンプレートに渡す
     $this->setDispParam('tpl_now_file', $objFormParam->getValue('now_dir'));
     // ディレクトリツリー表示
     $this->setDispTree($objFileManager, $objFormParam);
 }
 /**
  * 指定されたパスの配下を再帰的に削除.
  *
  * @param string  $path       削除対象のディレクトリまたはファイルのパス
  * @param boolean $del_myself $pathそのものを削除するか. true なら削除する.
  * @return void
  */
 function deleteFile($path, $del_myself = true)
 {
     $flg = false;
     // 対象が存在するかを検証.
     if (file_exists($path) === false) {
         GC_Utils_Ex::gfPrintLog($path . ' が存在しません.');
     } elseif (is_dir($path)) {
         // ディレクトリが指定された場合
         $handle = opendir($path);
         if (!$handle) {
             GC_Utils_Ex::gfPrintLog($path . ' が開けませんでした.');
         }
         while (($item = readdir($handle)) !== false) {
             if ($item === '.' || $item === '..') {
                 continue;
             }
             $cur_path = $path . '/' . $item;
             if (is_dir($cur_path)) {
                 // ディレクトリの場合、再帰処理
                 $flg = SC_Helper_FileManager_Ex::deleteFile($cur_path);
             } else {
                 // ファイルの場合、unlink
                 $flg = @unlink($cur_path);
             }
         }
         closedir($handle);
         // ディレクトリを削除
         GC_Utils_Ex::gfPrintLog($path . ' を削除します.');
         if ($del_myself) {
             $flg = @rmdir($path);
         }
     } else {
         // ファイルが指定された場合.
         GC_Utils_Ex::gfPrintLog($path . ' を削除します.');
         $flg = @unlink($path);
     }
     return $flg;
 }
 /**
  * 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;
 }
 function lfCreateTemplate($dir, $file, &$objFormParam)
 {
     $objFileManager = new SC_Helper_FileManager_Ex();
     $arrRet = $objFormParam->getHashArray();
     // 作成ファイルディレクトリ
     $create_dir = $dir . $file;
     $create_active_dir = $create_dir . "/" . CAMPAIGN_TEMPLATE_ACTIVE;
     $create_end_dir = $create_dir . "/" . CAMPAIGN_TEMPLATE_END;
     // デフォルトファイルディレクトリ
     $default_dir = TEMPLATE_DIR . CAMPAIGN_TEMPLATE_DIR;
     $default_active_dir = $default_dir . "/" . CAMPAIGN_TEMPLATE_ACTIVE;
     $default_end_dir = $default_dir . "/" . CAMPAIGN_TEMPLATE_END;
     $ret = $objFileManager->sfCreateFile($create_dir, 0755);
     $ret = $objFileManager->sfCreateFile($create_active_dir, 0755);
     $ret = $objFileManager->sfCreateFile($create_end_dir, 0755);
     // キャンペーン実行PHPをコピー
     $ret = $objFileManager->sfCreateFile(CAMPAIGN_PATH . $file);
     copy(HTML_PATH . CAMPAIGN_TEMPLATE_DIR . "index.php", CAMPAIGN_PATH . $file . "/index.php");
     copy(HTML_PATH . CAMPAIGN_TEMPLATE_DIR . "application.php", CAMPAIGN_PATH . $file . "/application.php");
     copy(HTML_PATH . CAMPAIGN_TEMPLATE_DIR . "complete.php", CAMPAIGN_PATH . $file . "/complete.php");
     copy(HTML_PATH . CAMPAIGN_TEMPLATE_DIR . "entry.php", CAMPAIGN_PATH . $file . "/entry.php");
     // デフォルトテンプレート作成(キャンペーン中)
     $header = $this->lfGetFileContents($default_active_dir . "header.tpl");
     SC_Utils_Ex::sfWriteFile($header, $create_active_dir . "header.tpl", "w");
     $contents = $this->lfGetFileContents($default_active_dir . "contents.tpl");
     if (!$arrRet['cart_flg']) {
         $contents .= "\n" . '<!--{*ログインフォーム*}-->' . "\n";
         $contents .= $this->lfGetFileContents(CAMPAIGN_BLOC_PATH . "login.tpl");
         $contents .= '<!--{*会員登録フォーム*}-->' . "\n";
         $contents .= $this->lfGetFileContents(CAMPAIGN_BLOC_PATH . "entry.tpl");
     }
     SC_Utils_Ex::sfWriteFile($contents, $create_active_dir . "contents.tpl", "w");
     $footer = $this->lfGetFileContents($default_active_dir . "footer.tpl");
     SC_Utils_Ex::sfWriteFile($footer, $create_active_dir . "footer.tpl", "w");
     // サイトフレーム作成
     $site_frame = $header . "\n";
     $site_frame .= '<script type="text/javascript" src="<!--{$TPL_DIR}-->js/navi.js"></script>' . "\n";
     $site_frame .= '<script type="text/javascript" src="<!--{$TPL_DIR}-->js/site.js"></script>' . "\n";
     $site_frame .= '<!--{include file=$tpl_mainpage}-->' . "\n";
     $site_frame .= $footer . "\n";
     SC_Utils_Ex::sfWriteFile($site_frame, $create_active_dir . "site_frame.tpl", "w");
     /* デフォルトテンプレート作成(キャンペーン終了) */
     $header = $this->lfGetFileContents($default_end_dir . "header.tpl");
     SC_Utils_Ex::sfWriteFile($header, $create_end_dir . "header.tpl", "w");
     $contents = $this->lfGetFileContents($default_end_dir . "contents.tpl");
     SC_Utils_Ex::sfWriteFile($contents, $create_end_dir . "contents.tpl", "w");
     $footer = $this->lfGetFileContents($default_end_dir . "footer.tpl");
     SC_Utils_Ex::sfWriteFile($footer, $create_end_dir . "footer.tpl", "w");
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     // フォーム操作クラス
     $objFormParam = new SC_FormParam_Ex();
     // パラメーター情報の初期化
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($this->createSetParam($_POST));
     $objFormParam->convParam();
     // ファイル管理クラス
     $objUpFile = new SC_UploadFile_Ex($objFormParam->getValue('now_dir'), $objFormParam->getValue('now_dir'));
     // ファイル情報の初期化
     $this->lfInitFile($objUpFile);
     // ファイル操作クラス
     $objFileManager = new SC_Helper_FileManager_Ex();
     switch ($this->getMode()) {
         // フォルダ移動
         case 'move':
             $objFormParam = new SC_FormParam_Ex();
             $this->lfInitParamModeMove($objFormParam);
             $objFormParam->setParam($this->createSetParam($_POST));
             $objFormParam->convParam();
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $now_dir = $this->lfCheckSelectDir($objFormParam, $objFormParam->getValue('tree_select_file'));
                 $objFormParam->setValue('now_dir', $now_dir);
             }
             break;
             // ファイル表示
         // ファイル表示
         case 'view':
             $objFormParam = new SC_FormParam_Ex();
             $this->lfInitParamModeView($objFormParam);
             $objFormParam->setParam($this->createSetParam($_POST));
             $objFormParam->convParam();
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 if ($this->tryView($objFormParam)) {
                     $file_url = htmlspecialchars(ereg_replace($objFormParam->getValue('top_dir'), "", $objFormParam->getValue('select_file')));
                     $tpl_onload = "win02('./file_view.php?file=" . $file_url . "', 'user_data', '600', '400');";
                     $this->setTplOnLoad($tpl_onload);
                 }
             }
             break;
             // ファイルダウンロード
         // ファイルダウンロード
         case 'download':
             $objFormParam = new SC_FormParam_Ex();
             $this->lfInitParamModeView($objFormParam);
             $objFormParam->setParam($this->createSetParam($_POST));
             $objFormParam->convParam();
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 if (is_dir($objFormParam->getValue('select_file'))) {
                     $disp_error = "※ ディレクトリをダウンロードすることは出来ません。<br/>";
                     $this->setDispError('select_file', $disp_error);
                 } else {
                     // ファイルダウンロード
                     $objFileManager->sfDownloadFile($objFormParam->getValue('select_file'));
                     exit;
                 }
             }
             break;
             // ファイル削除
         // ファイル削除
         case 'delete':
             $objFormParam = new SC_FormParam_Ex();
             $this->lfInitParamModeView($objFormParam);
             $objFormParam->setParam($this->createSetParam($_POST));
             $objFormParam->convParam();
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 $objFileManager->sfDeleteDir($objFormParam->getValue('select_file'));
             }
             break;
             // ファイル作成
         // ファイル作成
         case 'create':
             $objFormParam = new SC_FormParam_Ex();
             $this->lfInitParamModeCreate($objFormParam);
             $objFormParam->setParam($this->createSetParam($_POST));
             $objFormParam->convParam();
             $this->arrErr = $objFormParam->checkError();
             if (SC_Utils_Ex::isBlank($this->arrErr)) {
                 if (!$this->tryCreateDir($objFileManager, $objFormParam)) {
                     $disp_error = "※ " . htmlspecialchars($objFormParam->getValue('create_file'), ENT_QUOTES) . "の作成に失敗しました。<br/>";
                     $this->setDispError('create_file', $disp_error);
                 } else {
                     $tpl_onload = "alert('フォルダを作成しました。');";
                     $this->setTplOnLoad($tpl_onload);
                 }
             }
             break;
             // ファイルアップロード
         // ファイルアップロード
         case 'upload':
             // 画像保存処理
             $ret = $objUpFile->makeTempFile('upload_file', false);
             if (SC_Utils_Ex::isBlank($ret)) {
                 $tpl_onload = "alert('ファイルをアップロードしました。');";
                 $this->setTplOnLoad($tpl_onload);
             } else {
                 $this->setDispError('upload_file', $ret);
             }
             break;
             // 初期表示
         // 初期表示
         default:
             break;
     }
     // 値をテンプレートに渡す
     $this->arrParam = $objFormParam->getHashArray();
     // 現在の階層がルートディレクトリかどうかテンプレートに渡す
     $this->setIsTopDir($objFormParam);
     // 現在の階層より一つ上の階層をテンプレートに渡す
     $this->setParentDir($objFormParam);
     // 現在いる階層(表示用)をテンプレートに渡す
     $this->setDispPath($objFormParam);
     // 現在のディレクトリ配下のファイル一覧を取得
     $this->arrFileList = $objFileManager->sfGetFileList($objFormParam->getValue('now_dir'));
     // 現在の階層のディレクトリをテンプレートに渡す
     $this->setDispParam('tpl_now_file', $objFormParam->getValue('now_dir'));
     // ディレクトリツリー表示
     $this->setDispTree($objFileManager, $objFormParam);
 }
 /**
  * ディレクトリツリー生成
  *
  * @param  SC_Helper_FileManager_Ex       $objFileManager SC_Helper_FileManager_Exインスタンス
  * @param  SC_FormParam $objFormParam   SC_FormParamインスタンス
  * @return void
  */
 public function setDispTree($objFileManager, $objFormParam)
 {
     $tpl_onload = '';
     // ツリーを表示する divタグid, ツリー配列変数名, 現在ディレクトリ, 選択ツリーhidden名, ツリー状態hidden名, mode hidden名
     $now_dir = $objFormParam->getValue('now_dir');
     $treeView = "eccube.fileManager.viewFileTree('tree', arrTree, '{$now_dir}', 'tree_select_file', 'tree_status', 'move');";
     if (!empty($this->tpl_onload)) {
         $tpl_onload .= $treeView;
     } else {
         $tpl_onload = $treeView;
     }
     $this->setTplOnLoad($tpl_onload);
     $tpl_javascript = '';
     $arrTree = $objFileManager->sfGetFileTree($objFormParam->getValue('top_dir'), $objFormParam->getValue('tree_status'));
     $tpl_javascript .= "arrTree = new Array();\n";
     foreach ($arrTree as $arrVal) {
         $tpl_javascript .= 'arrTree[' . $arrVal['count'] . '] = new Array(' . $arrVal['count'] . ", '" . $arrVal['type'] . "', '" . $arrVal['path'] . "', " . $arrVal['rank'] . ',';
         if ($arrVal['open']) {
             $tpl_javascript .= "true);\n";
         } else {
             $tpl_javascript .= "false);\n";
         }
     }
     $this->setDispParam('tpl_javascript', $tpl_javascript);
 }
 /**
  * Page のプロセス.
  *
  * @return void
  */
 function process()
 {
     //---- 認証可否の判定
     $objSess = new SC_Session();
     SC_Utils_Ex::sfIsSuccess($objSess);
     // ルートディレクトリ
     $top_dir = USER_PATH;
     $objView = new SC_AdminView();
     $objQuery = new SC_Query();
     $objFileManager = new SC_Helper_FileManager_Ex();
     if (!isset($_POST['mode'])) {
         $_POST['mode'] = "";
     }
     // 現在の階層を取得
     if ($_POST['mode'] != "") {
         $now_dir = $_POST['now_file'];
     } else {
         // 初期表示はルートディレクトリ(user_data/)を表示
         $now_dir = $top_dir;
     }
     // ファイル管理クラス
     $objUpFile = new SC_UploadFile($now_dir, $now_dir);
     // ファイル情報の初期化
     $this->lfInitFile($objUpFile);
     switch ($_POST['mode']) {
         // ファイル表示
         case 'view':
             // エラーチェック
             $arrErr = $this->lfErrorCheck();
             if (!is_array($arrErr)) {
                 // 選択されたファイルがディレクトリなら移動
                 if (is_dir($_POST['select_file'])) {
                     ///$now_dir = $_POST['select_file'];
                     // ツリー遷移用のjavascriptを埋め込む
                     $arrErr['select_file'] = "※ ディレクトリを表示することは出来ません。<br/>";
                 } else {
                     // javascriptで別窓表示(テンプレート側に渡す)
                     // FIXME XSS対策すること
                     $file_url = ereg_replace(USER_PATH, "", $_POST['select_file']);
                     $this->tpl_onload = "win02('./file_view.php?file=" . $file_url . "', 'user_data', '600', '400');";
                 }
             }
             break;
             // ファイルダウンロード
         // ファイルダウンロード
         case 'download':
             // エラーチェック
             $arrErr = $this->lfErrorCheck();
             if (!is_array($arrErr)) {
                 if (is_dir($_POST['select_file'])) {
                     // ディレクトリの場合はjavascriptエラー
                     $arrErr['select_file'] = "※ ディレクトリをダウンロードすることは出来ません。<br/>";
                 } else {
                     // ファイルダウンロード
                     $objFileManager->sfDownloadFile($_POST['select_file']);
                     exit;
                 }
             }
             break;
             // ファイル削除
         // ファイル削除
         case 'delete':
             // エラーチェック
             $arrErr = $this->lfErrorCheck();
             if (!is_array($arrErr)) {
                 $objFileManager->sfDeleteDir($_POST['select_file']);
             }
             break;
             // ファイル作成
         // ファイル作成
         case 'create':
             // エラーチェック
             $arrErr = $this->lfCreateErrorCheck();
             if (!is_array($arrErr)) {
                 $create_dir = ereg_replace("/\$", "", $now_dir);
                 // ファイル作成
                 if (!$objFileManager->sfCreateFile($create_dir . "/" . $_POST['create_file'], 0755)) {
                     // 作成エラー
                     $arrErr['create_file'] = "※ " . $_POST['create_file'] . "の作成に失敗しました。<br/>";
                 } else {
                     $this->tpl_onload .= "alert('フォルダを作成しました。');";
                 }
             }
             break;
             // ファイルアップロード
         // ファイルアップロード
         case 'upload':
             // 画像保存処理
             $ret = $objUpFile->makeTempFile('upload_file', false);
             if ($ret != "") {
                 $arrErr['upload_file'] = $ret;
             } else {
                 $this->tpl_onload .= "alert('ファイルをアップロードしました。');";
             }
             break;
             // フォルダ移動
         // フォルダ移動
         case 'move':
             $now_dir = $this->lfCheckSelectDir($_POST['tree_select_file']);
             break;
             // 初期表示
         // 初期表示
         default:
             break;
     }
     // トップディレクトリか調査
     $is_top_dir = false;
     // 末尾の/をとる
     $top_dir_check = ereg_replace("/\$", "", $top_dir);
     $now_dir_check = ereg_replace("/\$", "", $now_dir);
     if ($top_dir_check == $now_dir_check) {
         $is_top_dir = true;
     }
     // 現在の階層より一つ上の階層を取得
     $parent_dir = $this->lfGetParentDir($now_dir);
     // 現在のディレクトリ配下のファイル一覧を取得
     $this->arrFileList = $objFileManager->sfGetFileList($now_dir);
     $this->tpl_is_top_dir = $is_top_dir;
     $this->tpl_parent_dir = $parent_dir;
     $this->tpl_now_dir = $now_dir;
     $this->tpl_now_file = basename($now_dir);
     $this->arrErr = isset($arrErr) ? $arrErr : "";
     $this->arrParam = $_POST;
     // ツリーを表示する divタグid, ツリー配列変数名, 現在ディレクトリ, 選択ツリーhidden名, ツリー状態hidden名, mode hidden名
     $treeView = "fnTreeView('tree', arrTree, '{$now_dir}', 'tree_select_file', 'tree_status', 'move');";
     if (!empty($this->tpl_onload)) {
         $this->tpl_onload .= $treeView;
     } else {
         $this->tpl_onload = $treeView;
     }
     // ツリー配列作成用 javascript
     if (!isset($_POST['tree_status'])) {
         $_POST['tree_status'] = "";
     }
     $arrTree = $objFileManager->sfGetFileTree($top_dir, $_POST['tree_status']);
     $this->tpl_javascript .= "arrTree = new Array();\n";
     foreach ($arrTree as $arrVal) {
         $this->tpl_javascript .= "arrTree[" . $arrVal['count'] . "] = new Array(" . $arrVal['count'] . ", '" . $arrVal['type'] . "', '" . $arrVal['path'] . "', " . $arrVal['rank'] . ",";
         if ($arrVal['open']) {
             $this->tpl_javascript .= "true);\n";
         } else {
             $this->tpl_javascript .= "false);\n";
         }
     }
     // 画面の表示
     $objView->assignobj($this);
     $objView->display(MAIN_FRAME);
 }
 /**
  * ダウンロードを実行する.
  *
  * 指定のテンプレートをアーカイブし, ブラウザに出力する.
  * 失敗した場合は, エラーメッセージを出力し, false を返す.
  *
  * @param string $template_code テンプレートコード
  * @return boolean 成功した場合 true; 失敗した場合 false
  */
 function doDownload($template_code)
 {
     $from_dir = USER_TEMPLATE_REALDIR . $template_code . '/';
     $to_dir = SMARTY_TEMPLATES_REALDIR . $template_code . '/_packages/';
     if (SC_Utils_Ex::recursiveMkdir($to_dir) === false) {
         $this->arrErr['err'] = t('c_* Directory creation failed<br />_01');
         return false;
     }
     SC_Utils_Ex::sfCopyDir($from_dir, $to_dir);
     if (SC_Helper_FileManager_Ex::downloadArchiveFiles(SMARTY_TEMPLATES_REALDIR . $template_code, $template_code) === false) {
         $this->arrErr['err'] = t('c_* Archive file creation failed<br />_01');
         return false;
     }
     return true;
 }
 /**
  * 登録を実行する.
  *
  * ファイルの作成に失敗した場合は, エラーメッセージを出力する.
  *
  * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  * @return integer|boolean 登録が成功した場合 true; 失敗した場合 false
  */
 function doRegister(&$objFormParam)
 {
     $division = $objFormParam->getValue('division');
     $contents = $objFormParam->getValue($division);
     $tpl_path = $this->getTemplatePath($objFormParam->getValue('device_type_id'), $division);
     if ($tpl_path === false || !SC_Helper_FileManager_Ex::sfWriteFile($tpl_path, $contents)) {
         $this->arrErr['err'] = t('c_* File writing failed<br />_01');
         return false;
     }
     return true;
 }
 /**
  * DBおよびファイルシステムにテンプレートパッケージを追加する.
  *
  * エラーが発生した場合は, エラーを出力し, false を返す.
  *
  * @param object $objFormParam SC_FormParamのインスタンス
  * @param object $objUpFile SC_UploadFileのインスタンス
  * @return boolean 成功した場合 true; 失敗した場合 false
  */
 function doUpload($objFormParam, $objUpFile)
 {
     $template_code = $objFormParam->getValue('template_code');
     $template_name = $objFormParam->getValue('template_name');
     $device_type_id = $objFormParam->getValue('device_type_id');
     $template_dir = SMARTY_TEMPLATES_REALDIR . $template_code;
     $compile_dir = DATA_REALDIR . 'Smarty/templates_c/' . $template_code;
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objQuery->begin();
     $arrValues = array('template_code' => $template_code, 'device_type_id' => $device_type_id, 'template_name' => $template_name, 'create_date' => 'CURRENT_TIMESTAMP', 'update_date' => 'CURRENT_TIMESTAMP');
     $objQuery->insert('dtb_templates', $arrValues);
     $is_error = false;
     // フォルダ作成
     if (!file_exists($template_dir)) {
         if (!mkdir($template_dir)) {
             $this->arrErr['err'] = t('c_* The template folder could not be created.<br/>_01');
             $objQuery->rollback();
             return false;
         }
     }
     if (!file_exists($compile_dir)) {
         if (!mkdir($compile_dir)) {
             $this->arrErr['err'] = t('c_* Smarty compile folder could not be created.<br/>_01');
             $objQuery->rollback();
             return false;
         }
     }
     // 一時フォルダから保存ディレクトリへ移動
     $objUpFile->moveTempFile();
     // 解凍
     if (!SC_Helper_FileManager_Ex::unpackFile($template_dir . '/' . $_FILES['template_file']['name'])) {
         $this->arrErr['err'] = t('c_* Decompression of the template file failed.<br/>_01');
         $objQuery->rollback();
         return false;
     }
     // ユーザデータの下のファイルをコピーする
     $from_dir = SMARTY_TEMPLATES_REALDIR . $template_code . '/_packages/';
     $to_dir = USER_REALDIR . 'packages/' . $template_code . '/';
     if (!SC_Utils_Ex::recursiveMkdir($to_dir)) {
         $this->arrErr['err'] = t('c_* T_ARG1 creation failed.<br/>_01', array('T_ARG1' => $to_dir));
         $objQuery->rollback();
         return false;
     }
     SC_Utils_Ex::sfCopyDir($from_dir, $to_dir);
     $objQuery->commit();
     return true;
 }
 /**
  * 登録を実行する.
  *
  * ファイルの作成に失敗した場合は, エラーメッセージを出力する.
  *
  * @param  SC_FormParam    $objFormParam SC_FormParam インスタンス
  * @return boolean 登録が成功した場合 true; 失敗した場合 false
  */
 public function doRegister(&$objFormParam)
 {
     $division = $objFormParam->getValue('division');
     $contents = $objFormParam->getValue($division);
     $tpl_path = $this->getTemplatePath($objFormParam->getValue('device_type_id'), $division);
     if ($tpl_path === false || !SC_Helper_FileManager_Ex::sfWriteFile($tpl_path, $contents)) {
         $this->arrErr['err'] = '※ ファイルの書き込みに失敗しました<br />';
         return false;
     }
     return true;
 }
 /**
  * プラグイン用コアファイルを削除
  * @param array $arrPlugin dtb_pluginの情報配列
  * @return void 
  */
 static function deleteFiles($arrPlugin)
 {
     //html
     SC_Helper_FileManager_Ex::deleteFile(PLUGIN_HTML_REALDIR . 'AddProductColumns/');
 }
 /**
  * 登録を実行する.
  *
  * ファイルの作成に失敗した場合は, エラーメッセージを出力し,
  * データベースをロールバックする.
  *
  * @param SC_FormParam $objFormParam SC_FormParam インスタンス
  * @param SC_Helper_PageLayout $objLayout SC_Helper_PageLayout インスタンス
  * @return integer|boolean 登録が成功した場合, 登録したブロックID;
  *                         失敗した場合 false
  */
 function doRegister(&$objFormParam, &$objLayout)
 {
     $arrParams = $objFormParam->getHashArray();
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objQuery->begin();
     // blod_id が空の場合は新規登録
     $is_new = SC_Utils_Ex::isBlank($arrParams['bloc_id']);
     $bloc_dir = $objLayout->getTemplatePath($arrParams['device_type_id']) . BLOC_DIR;
     // 既存データの重複チェック
     if (!$is_new) {
         $arrExists = $objLayout->getBlocs($arrParams['device_type_id'], 'bloc_id = ?', array($arrParams['bloc_id']));
         // 既存のファイルが存在する場合は削除しておく
         $exists_file = $bloc_dir . $arrExists[0]['filename'] . '.tpl';
         if (file_exists($exists_file)) {
             unlink($exists_file);
         }
     }
     $table = 'dtb_bloc';
     $arrValues = $objQuery->extractOnlyColsOf($table, $arrParams);
     $arrValues['tpl_path'] = $arrParams['filename'] . '.tpl';
     $arrValues['update_date'] = 'CURRENT_TIMESTAMP';
     // 新規登録
     if ($is_new || SC_Utils_Ex::isBlank($arrExists)) {
         $objQuery->setOrder('');
         $arrValues['bloc_id'] = 1 + $objQuery->max('bloc_id', $table, 'device_type_id = ?', array($arrValues['device_type_id']));
         $arrValues['create_date'] = 'CURRENT_TIMESTAMP';
         $objQuery->insert($table, $arrValues);
     } else {
         $objQuery->update($table, $arrValues, 'bloc_id = ? AND device_type_id = ?', array($arrValues['bloc_id'], $arrValues['device_type_id']));
     }
     $bloc_path = $bloc_dir . $arrValues['tpl_path'];
     if (!SC_Helper_FileManager_Ex::sfWriteFile($bloc_path, $arrParams['bloc_html'])) {
         $this->arrErr['err'] = '※ ブロックの書き込みに失敗しました<br />';
         $objQuery->rollback();
         return false;
     }
     $objQuery->commit();
     return $arrValues['bloc_id'];
 }
 /**
  * PHP ファイルを生成する.
  *
  * 既に同名の PHP ファイルが存在する場合は何もせず true を返す.(#831)
  *
  * @param string $filename フォームパラメーターの filename
  * @return boolean 作成に成功した場合 true
  */
 function createPHPFile($filename)
 {
     $path = USER_REALDIR . $filename . '.php';
     if (file_exists($path)) {
         return true;
     }
     if (file_exists(USER_DEF_PHP_REALFILE)) {
         $php_contents = file_get_contents(USER_DEF_PHP_REALFILE);
     } else {
         return false;
     }
     // require.php の PATH を書き換える
     $defaultStrings = "exit; // Don't rewrite. This line is rewritten by EC-CUBE.";
     $replaceStrings = "require_once '" . str_repeat('../', substr_count($filename, '/')) . "../require.php';";
     $php_contents = str_replace($defaultStrings, $replaceStrings, $php_contents);
     return SC_Helper_FileManager_Ex::sfWriteFile($path, $php_contents);
 }
 /**
  * CSSファイルのリストを取得.
  *
  * @param  string $css_dir CSSディレクトリ
  * @return array ファイルリスト
  */
 public function getCSSList($css_dir)
 {
     $objFileManager = new SC_Helper_FileManager_Ex();
     $arrFileList = $objFileManager->sfGetFileList($css_dir);
     foreach ($arrFileList as $val) {
         if (!$val['is_dir']) {
             $arrCSSList[] = array('file_name' => $val['file_name'], 'css_name' => preg_replace('/(.+)\\.(.+?)$/', '$1', $val['file_name']));
         }
     }
     return $arrCSSList;
 }
 /**
  * DBおよびファイルシステムにテンプレートパッケージを追加する.
  *
  * エラーが発生した場合は, エラーを出力し, false を返す.
  *
  * @param  SC_FormParam  $objFormParam SC_FormParamのインスタンス
  * @param  SC_UploadFile_Ex  $objUpFile    SC_UploadFileのインスタンス
  * @return boolean 成功した場合 true; 失敗した場合 false
  */
 public function doUpload($objFormParam, $objUpFile)
 {
     $template_code = $objFormParam->getValue('template_code');
     $template_name = $objFormParam->getValue('template_name');
     $device_type_id = $objFormParam->getValue('device_type_id');
     $template_dir = SMARTY_TEMPLATES_REALDIR . $template_code;
     $compile_dir = DATA_REALDIR . 'Smarty/templates_c/' . $template_code;
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objQuery->begin();
     $arrValues = array('template_code' => $template_code, 'device_type_id' => $device_type_id, 'template_name' => $template_name, 'create_date' => 'CURRENT_TIMESTAMP', 'update_date' => 'CURRENT_TIMESTAMP');
     $objQuery->insert('dtb_templates', $arrValues);
     // フォルダ作成
     if (!file_exists($template_dir)) {
         if (!mkdir($template_dir)) {
             $this->arrErr['err'] = '※ テンプレートフォルダが作成できませんでした。<br/>';
             $objQuery->rollback();
             return false;
         }
     }
     if (!file_exists($compile_dir)) {
         if (!mkdir($compile_dir)) {
             $this->arrErr['err'] = '※ Smarty コンパイルフォルダが作成できませんでした。<br/>';
             $objQuery->rollback();
             return false;
         }
     }
     // 一時フォルダから保存ディレクトリへ移動
     $objUpFile->moveTempFile();
     // 解凍
     if (!SC_Helper_FileManager_Ex::unpackFile($template_dir . '/' . $_FILES['template_file']['name'])) {
         $this->arrErr['err'] = '※ テンプレートファイルの解凍に失敗しました。<br/>';
         $objQuery->rollback();
         return false;
     }
     // ユーザデータの下のファイルをコピーする
     $from_dir = SMARTY_TEMPLATES_REALDIR . $template_code . '/_packages/';
     $to_dir = USER_REALDIR . 'packages/' . $template_code . '/';
     if (!SC_Utils_Ex::recursiveMkdir($to_dir)) {
         $this->arrErr['err'] = '※ ' . $to_dir . ' の作成に失敗しました。<br/>';
         $objQuery->rollback();
         return false;
     }
     SC_Utils_Ex::sfCopyDir($from_dir, $to_dir);
     $objQuery->commit();
     return true;
 }
 /**
  * ファイル削除
  *
  * @param string $targetPath
  * @return void
  */
 static function lfDeleteFile($targetPath)
 {
     if (SC_Helper_FileManager_Ex::deleteFile($targetPath) === false) {
         AddProduct::lfTriggerError('[' . $targetPath . ']の削除に失敗しました');
     }
 }
 /**
  * SQL文からクエリ実行し CSVファイルを送信する
  *
  * @param integer $sql SQL文
  * @param array $arrVal プリペアドステートメントの実行時に使用される配列。配列の要素数は、クエリ内のプレースホルダの数と同じでなければなりません。
  * @param string $file_head ファイル名の頭に付ける文字列
  * @param array $arrHeader ヘッダ出力列配列
  * @param boolean $is_download true:ダウンロード用出力までさせる false:CSVの内容を返す(旧方式、メモリを食います。)
  * @return mixed $is_download = true時 成功失敗フラグ(boolean) 、$is_downalod = false時 string
  */
 function sfDownloadCsvFromSql($sql, $arrVal = array(), $file_head = 'csv', $arrHeader = array(), $is_download = false)
 {
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     // ヘッダ構築
     if (is_array($arrHeader)) {
         $header = $this->sfArrayToCSV($arrHeader);
         $header = mb_convert_encoding($header, 'SJIS-Win');
         $header .= "\r\n";
     }
     //テンポラリファイル作成
     // TODO: パフォーマンス向上には、ストリームを使うようにすると良い
     //  環境要件がPHPバージョン5.1以上になったら使うように変えても良いかと
     //  fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+');
     $tmp_filename = tempnam(CSV_TEMP_REALDIR, $file_head . '_csv');
     $this->fpOutput = fopen($tmp_filename, 'w+');
     fwrite($this->fpOutput, $header);
     $objQuery->doCallbackAll(array(&$this, 'cbOutputCSV'), $sql, $arrVal);
     fclose($this->fpOutput);
     if ($is_download) {
         // CSVを送信する。
         $this->lfDownloadCSVFile($tmp_filename, $file_head . '_');
         $res = true;
     } else {
         $res = SC_Helper_FileManager_Ex::sfReadFile($tmp_filename);
     }
     //テンポラリファイル削除
     unlink($tmp_filename);
     return $res;
 }
示例#29
0
 /**
  * コンパイルファイルを削除します.
  * @return void
  */
 function clearCompliedTemplate()
 {
     // コンパイルファイルの削除処理
     SC_Helper_FileManager_Ex::deleteFile(COMPILE_REALDIR, false);
     SC_Helper_FileManager_Ex::deleteFile(COMPILE_ADMIN_REALDIR, false);
     SC_Helper_FileManager_Ex::deleteFile(SMARTPHONE_COMPILE_REALDIR, false);
     SC_Helper_FileManager_Ex::deleteFile(MOBILE_COMPILE_REALDIR, false);
 }
 /**
  * 停止
  * disableはプラグインを無効にした際に実行されます.
  * 引数にはdtb_pluginのプラグイン情報が渡されます.
  *
  * @param array $arrPlugin プラグイン情報の連想配列(dtb_plugin)
  * @return void
  */
 function disable($arrPlugin)
 {
     // nop
     $objQuery = SC_Query_Ex::getSingletonInstance();
     $arrBlocId = $objQuery->getCol('bloc_id', "dtb_bloc", "device_type_id = ? AND filename = ?", array(DEVICE_TYPE_PC, "breadcrumblist"));
     $bloc_id = (int) $arrBlocId[0];
     // ブロックを削除する.
     $where = "bloc_id = ?";
     $objQuery->delete("dtb_bloc", $where, array($bloc_id));
     $objQuery->delete("dtb_blocposition", $where, array($bloc_id));
     SC_Helper_FileManager_Ex::deleteFile(TEMPLATE_REALDIR . "frontparts/bloc/breadcrumblist.tpl");
     SC_Helper_FileManager_Ex::deleteFile(HTML_REALDIR . "frontparts/bloc/breadcrumblist.php");
 }