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) { // ファイル削除 if (SC_Helper_FileManager_Ex::deleteFile(PLUGIN_HTML_REALDIR . "SessionNotUsingDB/logo.png") === false) { } print_r("失敗"); }
/** * アンインストール * 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)' ); }
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(); }
/** * コンパイルファイルを削除します. * @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); }
/** * ファイル削除 * * @param string $targetPath * @return void */ static function lfDeleteFile($targetPath) { if (SC_Helper_FileManager_Ex::deleteFile($targetPath) === false) { AddProduct::lfTriggerError('[' . $targetPath . ']の削除に失敗しました'); } }
/** * 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; }
/** * 指定されたパスの配下を再帰的に削除. * * @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; }
/** * テンプレートパッケージの削除. * * @param string $template_code テンプレートコード * @param integer $device_type_id 端末種別ID * @return boolean 成功した場合 true; 失敗した場合 false */ public function doDelete($template_code, $device_type_id) { if ($template_code == $this->getTemplateName($device_type_id) || $template_code == $this->getTemplateName($device_type_id, true)) { $this->arrErr['err'] = '※ デフォルトテンプレートと、選択中のテンプレートは削除出来ません<br />'; return false; } else { $objQuery =& SC_Query_Ex::getSingletonInstance(); $objQuery->begin(); $objQuery->delete('dtb_templates', 'template_code = ? AND device_type_id = ?', array($template_code, $device_type_id)); $error = '※ テンプレートの削除ができませんでした<br />'; // テンプレート削除 $templates_dir = SMARTY_TEMPLATES_REALDIR . $template_code . '/'; if (SC_Helper_FileManager_Ex::deleteFile($templates_dir) === false) { $this->arrErr['err'] = $error; $objQuery->rollback(); return false; } // ユーザーデータ削除 $user_dir = USER_TEMPLATE_REALDIR . $template_code . '/'; if (SC_Helper_FileManager_Ex::deleteFile($user_dir) === false) { $this->arrErr['err'] = $error; $objQuery->rollback(); return false; } // コンパイル削除 $templates_c_dir = DATA_REALDIR . 'Smarty/templates_c/' . $template_code . '/'; if (SC_Helper_FileManager_Ex::deleteFile($templates_c_dir) === false) { $this->arrErr['err'] = $error; $objQuery->rollback(); return false; } $objQuery->commit(); 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 array $arrPlugin dtb_pluginの情報配列 * @return void */ static function deleteFiles($arrPlugin) { //html SC_Helper_FileManager_Ex::deleteFile(PLUGIN_HTML_REALDIR . 'AddProductColumns/'); }
/** * Page のアクション. * * @return void */ public 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 = "eccube.openWindow('./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 { $path_exists = SC_Utils_Ex::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) { SC_Helper_FileManager_Ex::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 = '※ ' . 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 string $template_code テンプレートコード * @param integer $device_type_id 端末種別ID * @return boolean 成功した場合 true; 失敗した場合 false */ function doDelete($template_code, $device_type_id) { if ($template_code == $this->getTemplateName($device_type_id) || $template_code == $this->getTemplateName($device_type_id, true)) { $this->arrErr['err'] = t('c_* The default template and template that is currently selected cannot be deleted<br />_01'); return false; } else { $objQuery =& SC_Query_Ex::getSingletonInstance(); $objQuery->begin(); $objQuery->delete('dtb_templates', 'template_code = ? AND device_type_id = ?', array($template_code, $device_type_id)); $error = t('c_* The template could not be deleted<br />_01'); // テンプレート削除 $templates_dir = SMARTY_TEMPLATES_REALDIR . $template_code . '/'; if (SC_Helper_FileManager_Ex::deleteFile($templates_dir) === false) { $this->arrErr['err'] = $error; $objQuery->rollback(); return false; } // ユーザーデータ削除 $user_dir = USER_TEMPLATE_REALDIR . $template_code . '/'; if (SC_Helper_FileManager_Ex::deleteFile($user_dir) === false) { $this->arrErr['err'] = $error; $objQuery->rollback(); return false; } // コンパイル削除 $templates_c_dir = DATA_REALDIR . 'Smarty/templates_c/' . $template_code . '/'; if (SC_Helper_FileManager_Ex::deleteFile($templates_c_dir) === false) { $this->arrErr['err'] = $error; $objQuery->rollback(); return false; } $objQuery->commit(); return true; } }
/** * 停止 * 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"); }
/** * アップデートに伴い、不要なファイルを削除する。 * * @param array $arrPlugin */ static function deleteFiles_2_0($arrPlugin) { //html SC_Helper_FileManager_Ex::deleteFile(HTML_REALDIR . ADMIN_DIR . 'products/plg_AddProductColumns_add_product_columns.php'); }