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); }
/** * @param array $arrPlugin * @param SC_Plugin_Installer $objPluginInstaller * @see SC_Plugin_Base::install() */ function install($arrPlugin, $objPluginInstaller = null) { // logo コピー $objPluginInstaller->copyDirectory("copy/plugin_dir/", ""); SC_Utils_Ex::copyDirectory(KTC_COPY_MOD_DIR, DATA_REALDIR . "module/"); SC_Utils_Ex::copyDirectory(KTC_COPY_CLASS_DIR, CLASS_REALDIR); SC_Utils_Ex::copyDirectory(KTC_COPY_CLASS_EX_DIR, CLASS_EX_REALDIR); SC_Utils_Ex::copyDirectory(KTC_COPY_HTML_DIR . "user_data/", HTML_REALDIR . USER_DIR); SC_Utils_Ex::copyDirectory(KTC_COPY_HTML_DIR . "au/", HTML_REALDIR . "au/"); SC_Utils_Ex::copyDirectory(KTC_COPY_HTML_DIR . "products/", HTML_REALDIR . "products/"); SC_Utils_Ex::copyDirectory(KTC_COPY_HTML_DIR . "frontparts/bloc", HTML_REALDIR . BLOC_DIR); SC_Utils_Ex::copyDirectory(KTC_COPY_HTML_DIR . "admin/", HTML_REALDIR . ADMIN_DIR); SC_Utils_Ex::copyDirectory(KTC_COPY_TMPL_DIR . "admin/", TEMPLATE_ADMIN_REALDIR); SC_Utils_Ex::copyDirectory(KTC_COPY_TMPL_DIR . "sphone/", SMARTPHONE_TEMPLATE_REALDIR); $this->initDB($arrPlugin, $objPluginInstaller); $this->updateTemplate($arrPlugin, $objPluginInstaller); $this->createCash(); }
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(); }
/** * インスタンスを生成し、指定のメソッドを実行する. * * @param object $obj インスタンス * @param string $class_name クラス名 * @param string $exec_func 実行するメソッド名. * @return array $arrErr エラー情報を格納した連想配列. * */ public function execPlugin($obj, $class_name, $exec_func) { $objPluginInstaller = new SC_Plugin_Installer($exec_func, $obj); $arrErr = array(); if (method_exists($class_name, $exec_func) === true) { $ret = call_user_func_array(array($class_name, $exec_func), array($obj, $objPluginInstaller)); if (!(is_null($ret) || $ret === true)) { $arrErr[$obj['plugin_code']] = $ret; } $arrInstallErr = $objPluginInstaller->execPlugin(); if ($arrInstallErr) { $arrErr['plugin_file'] = "プラグインのインストールに失敗しました.<br/>"; } } else { $arrErr['plugin_file'] = '※ ' . $class_name . '.php に' . $exec_func . 'が見つかりません。<br/>'; } return $arrErr; }
function tableComment(SC_Plugin_Installer $installer, $table, $column, $comment) { if (empty($comment)) { return; } switch (DB_TYPE) { case "pgsql": break; default: return; } $installer->sql(sprintf("COMMENT ON TABLE %s IS '%s'", $table, $comment)); }