/** * アンインストール * 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); }
/** * アンインストール * 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; }
/** * コンパイルファイルを削除します. * @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"); }