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));
 }