From 0b1aeddc31ef3474ed80e9445ed2746276cca26a Mon Sep 17 00:00:00 2001 From: Ian Date: Tue, 1 Oct 2013 18:58:56 +0200 Subject: [PATCH] Automatic upgrade removal of old Smarty2 files (2.0-alpha2) --- docs/NEWS | 3 + include/admin/upgrader.inc.php | 6 ++ include/functions_upgrader.inc.php | 111 +++++++++++++++++++++++++++++ serendipity_config.inc.php | 4 +- 4 files changed, 122 insertions(+), 2 deletions(-) diff --git a/docs/NEWS b/docs/NEWS index b68b17da..152809a3 100644 --- a/docs/NEWS +++ b/docs/NEWS @@ -4,6 +4,9 @@ Version 2.0 () ------------------------------------------------------------------------ + * Automatic upgrade removal of old Smarty2 files (2.0-alpha2) + function uses SPL + * Implemented patch https://github.com/s9y/Serendipity/pull/15 * When switching templates, both the backend and the frontend diff --git a/include/admin/upgrader.inc.php b/include/admin/upgrader.inc.php index ce4aa96f..9a2a8e9e 100644 --- a/include/admin/upgrader.inc.php +++ b/include/admin/upgrader.inc.php @@ -198,6 +198,12 @@ $tasks = array(array('version' => '0.5.1', 'title' => 'Remove obsolete plugin', 'desc' => 'The "browsercompatibility" plugin is no longer supported (and no longer required with recent browsers), so it will be automatically uninstalled.'), + array('version' => '2.0-alpha2', + 'function' => 'serendipity_removeDeadFiles_SPL', + 'title' => 'Removal of obsolete and dead Smarty 2.6.x files', + 'arguments' => array($serendipity['serendipityPath'] . 'bundled-libs/Smarty', $dead_smarty_files, array('internals'), true), + 'desc' => 'Smarty 3.x brought a new file structure. The following dead files will be removed from "bundled-libs/Smarty/libs".
' . implode(', ', $dead_smarty_files) . '
'), + ); /* Fetch SQL files which needs to be run */ diff --git a/include/functions_upgrader.inc.php b/include/functions_upgrader.inc.php index cfa73447..640c7e89 100644 --- a/include/functions_upgrader.inc.php +++ b/include/functions_upgrader.inc.php @@ -66,6 +66,63 @@ $obsolete_files = array( 'templates/default/layout.php' ); +/* A list of smarty 2.6.x lib files which got obsoleted in >= 1.7 */ +$dead_smarty_files = array( + 'BUGS', + 'ChangeLog', + 'FAQ', + 'INSTALL', + 'libs/config_file.class.php', + 'libs/smarty_compiler.class.php', + 'libs/internals/core.assemble_plugin_filepath.php', + 'libs/internals/core.assign_smarty_interface.php', + 'libs/internals/core.create_dir_structure.php', + 'libs/internals/core.display_debug_console.php', + 'libs/internals/core.get_include_path.php', + 'libs/internals/core.get_microtime.php', + 'libs/internals/core.get_php_resource.php', + 'libs/internals/core.is_secure.php', + 'libs/internals/core.is_trusted.php', + 'libs/internals/core.load_plugins.php', + 'libs/internals/core.load_resource_plugin.php', + 'libs/internals/core.process_cached_inserts.php', + 'libs/internals/core.process_compiled_include.php', + 'libs/internals/core.read_cache_file.php', + 'libs/internals/core.rm_auto.php', + 'libs/internals/core.rmdir.php', + 'libs/internals/core.run_insert_handler.php', + 'libs/internals/core.smarty_include_php.php', + 'libs/internals/core.write_cache_file.php', + 'libs/internals/core.write_compiled_include.php', + 'libs/internals/core.write_compiled_resource.php', + 'libs/internals/core.write_file.php', + 'libs/plugins/compiler.assign.php', + 'libs/plugins/function.assign_debug_info.php', + 'libs/plugins/function.config_load.php', + 'libs/plugins/function.debug.php', + 'libs/plugins/function.eval.php', + 'libs/plugins/function.popup.php', + 'libs/plugins/function.popup_init.php', + 'libs/plugins/modifier.cat.php', + 'libs/plugins/modifier.count_characters.php', + 'libs/plugins/modifier.count_paragraphs.php', + 'libs/plugins/modifier.count_sentences.php', + 'libs/plugins/modifier.count_words.php', + 'libs/plugins/modifier.default.php', + 'libs/plugins/modifier.indent.php', + 'libs/plugins/modifier.lower.php', + 'libs/plugins/modifier.nl2br.php', + 'libs/plugins/modifier.string_format.php', + 'libs/plugins/modifier.strip.php', + 'libs/plugins/modifier.strip_tags.php', + 'libs/plugins/modifier.upper.php', + 'libs/plugins/modifier.wordwrap.php', + 'QUICK_START', + 'NEWS', + 'RELEASE_NOTES', + 'TODO' +); + /** * Fix inpropper plugin constant names * @@ -171,3 +228,57 @@ function serendipity_killPlugin($name) { serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}plugins WHERE name LIKE '" . serendipity_db_escape_string($name) . "%'"); } + +/** + * Empty a given directory recursively using the Standard PHP Library (SPL) iterator + * Use as full purge by serendipity_removeDeadFiles_SPL(/path/to/dir) + * Or strict by serendipity_removeDeadFiles_SPL('/path/to/dir', $filelist, $directorylist, true) + * + * @access private + * + * @param string directory + * @param array dead files list + * @param array dead directories list + * @param boolean run list only else recursive default + * + * @return + */ +function serendipity_removeDeadFiles_SPL($dir=null, $deadfiles=null, $purgedir=null, $list_only=false) { + $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::CHILD_FIRST); + $search = array("\\", '//'); + $replace = array('/'); + foreach ($iterator as $file) { + $thisfile = str_replace($search, $replace, $file->__toString()); + if ($file->isFile()) { + if (is_array($deadfiles) && !empty($deadfiles)) { + foreach ($deadfiles AS $deadfile) { + #if( basename($deadfile) == basename($thisfile) ) echo 'LIST FILE: '.$dir . '/' . $deadfile . ' == ' . $thisfile . ' && basename(file) == ' . basename($thisfile) . "
\n"; + if ($dir . '/' . $deadfile === $thisfile) { + #echo 'LIST & REMOVE FILE: '.basename($deadfile) . ' == REAL FILE: ' . basename($thisfile) . '
Remove: '.$thisfile."
\n"; + @unlink($thisfile); + continue; + } + } + } else { + // this is original file purge + #echo 'FULL PURGE EACH FILE: '.$thisfile."
\n"; + @unlink($thisfile); + } + } else { + if (is_array($purgedir) && !empty($purgedir) ) { + foreach ($purgedir AS $pdir) { + if (basename($thisfile) == $pdir) { + //echo 'LIST & REMOVE EMPTY DIRECTORY: '.$thisfile."

\n"; + @rmdir($thisfile); + continue; + } + } + } + // this is original directory purge + if (!$list_only) { + #echo 'FULL PURGE DIRECTORY: '.$thisfile."
\n"; + @rmdir($thisfile); + } + } + } +} diff --git a/serendipity_config.inc.php b/serendipity_config.inc.php index 596a45d9..dc05d9ff 100644 --- a/serendipity_config.inc.php +++ b/serendipity_config.inc.php @@ -45,9 +45,9 @@ if (defined('USE_MEMSNAP')) { } // The version string -$serendipity['version'] = '2.0-alpha1'; +$serendipity['version'] = '2.0-alpha2'; -// Setting this to 'false' will enable debugging output. All alpa/beta/cvs snapshot versions will emit debug information by default. To increase the debug level (to enable Smarty debugging), set this flag to 'debug'. +// Setting this to 'false' will enable debugging output. All alpha/beta/cvs snapshot versions will emit debug information by default. To increase the debug level (to enable Smarty debugging), set this flag to 'debug'. if (!isset($serendipity['production'])) { $serendipity['production'] = (preg_match('@\-(alpha|beta|cvs|rc)@', $serendipity['version']) ? false : true); }