function unlink_dir($dir) { global $filesystem; $dir = $dir . "/"; $d = dir($dir); while (false !== ($entry = $d->read())) { if (is_subdir($dir . $entry)) { unlink_dir($dir . $entry); } if (file_exists($dir . $entry) && is_file($dir . $entry) && filemtime($dir . $entry) < time() - 60 * 60) { $filesystem->unlink($dir . $entry); } } $d->close(); }
/** * 删除文件夹 * @param string $dir 要删除的文件夹路径 * @return bool 成功删除返回true,失败则false */ function unlink_dir($dir) { $dh = opendir($dir); while ($file = readdir($dh)) { if ($file != '.' && $file != '..') { $fullpath = $dir . '/' . $file; if (is_dir($fullpath)) { unlink_dir($fullpath); } else { unlink($fullpath); } } } closedir($dh); return rmdir($dir); }
/** * Deletes a directory and all of its contents * @return unknown_type */ function unlink_dir($dir) { $dh = @opendir($dir); if (!is_resource($dh)) { return; } while (false !== ($obj = readdir($dh))) { if ($obj == '.' || $obj == '..') { continue; } $path = "{$dir}/{$obj}"; if (is_dir($path)) { unlink_dir($path); } else { @unlink($path); } } @closedir($dh); @rmdir($dir); }
/** * Execute the script * * @param void * @return boolean */ function execute() { // --------------------------------------------------- // Check MySQL version // --------------------------------------------------- $mysql_version = mysql_get_server_info($this->database_connection); if ($mysql_version && version_compare($mysql_version, '4.1', '>=')) { $constants['DB_CHARSET'] = 'utf8'; @mysql_query("SET NAMES 'utf8'", $this->database_connection); tpl_assign('default_collation', $default_collation = 'collate utf8_unicode_ci'); tpl_assign('default_charset', $default_charset = 'DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci'); } else { tpl_assign('default_collation', $default_collation = ''); tpl_assign('default_charset', $default_charset = ''); } // if tpl_assign('table_prefix', TABLE_PREFIX); if (defined('DB_ENGINE')) { tpl_assign('engine', DB_ENGINE); } else { tpl_assign('engine', 'InnoDB'); } // --------------------------------------------------- // Execute migration // --------------------------------------------------- $total_queries = 0; $executed_queries = 0; $installed_version = installed_version(); if (version_compare($installed_version, "1.2.1") <= 0) { $upgrade_script = tpl_fetch(get_template_path('db_migration/1_3_matambrito')); } else { // change from es_uy to es_la $upgrade_script = "UPDATE `" . TABLE_PREFIX . "user_ws_config_options` SET `default_value` = 'es_la' WHERE `name` = 'localization' AND `default_value` = 'es_uy';\n\t\t\tUPDATE `" . TABLE_PREFIX . "user_ws_config_option_values` `v`, `" . TABLE_PREFIX . "user_ws_config_options` `o` SET `v`.`value` = 'es_la' WHERE `o`.`name` = 'localization' AND `o`.`id` = `v`.`option_id` AND `v`.`value` = 'es_uy';\n\t\t\tALTER TABLE `" . TABLE_PREFIX . "users` MODIFY COLUMN `default_billing_id` INTEGER(10) UNSIGNED DEFAULT 0;\n\t\t\tUPDATE `" . TABLE_PREFIX . "user_ws_config_options` SET\n\t\t\t\t`config_handler_class` = 'BoolConfigHandler',\n\t\t\t\t`dev_comment` = 'Notification checkbox default value'\n\t\t\t\tWHERE `name` = 'can notify from quick add';\n\t\t\t"; } if ($this->executeMultipleQueries($upgrade_script, $total_queries, $executed_queries, $this->database_connection)) { $this->printMessage("Database schema transformations executed (total queries: {$total_queries})"); } else { $this->printMessage('Failed to execute DB schema transformations. MySQL said: ' . mysql_error(), true); return false; } // if @unlink('templates/db_migration/onion.php'); @unlink('templates/db_migration/dulceDeLeche.php'); @unlink('templates/db_migration/tortaFrita.php'); @unlink('templates/db_migration/churro.php'); @unlink('templates/db_migration/empanada.php'); @unlink('templates/db_migration/milanga.php'); @unlink('templates/db_migration/bondiola.php'); @unlink('templates/db_migration/chinchulin.php'); @unlink('templates/db_migration/matambrito.php'); @unlink('scripts/OnionUpgradeScript.class.php'); @unlink('scripts/PapayaUpgradeScript.class.php'); @unlink(INSTALLATION_PATH . '/language/es_uy.php'); @unlink_dir(INSTALLATION_PATH . '/language/es_uy'); $cookiepath = "/"; $configfile = @file_get_contents(INSTALLATION_PATH . '/config/config.php'); if ($configfile) { $configfile = str_replace("es_uy", "es_la", $configfile); $configfile = preg_replace("/[^\\(]*COOKIE_PATH[^,]*,[^\\)]*/", "'COOKIE_PATH', '/'", $configfile); @file_put_contents(INSTALLATION_PATH . '/config/config.php', $configfile); } $this->printMessage('Feng Office has been upgraded. You are now running Feng Office ' . $this->getVersionTo() . ' Enjoy!'); }
/** * Deletes a directory and all of its contents * @return unknown_type */ function unlink_dir($dir) { $dh = @opendir($dir); if (!is_resource($dh)) return; while (false !== ($obj = readdir($dh))) { if($obj == '.' || $obj == '..') continue; $path = "$dir/$obj"; if (is_dir($path)) { unlink_dir($path); } else { @unlink($path); } } @closedir($dh); @rmdir($dir); }