From 79c440d8bbd9c36778d421e6348fa43091efaadf Mon Sep 17 00:00:00 2001 From: plegall Date: Thu, 6 Jan 2005 22:16:21 +0000 Subject: - upgrade scripts added for releases 1.3.x - my_error function moved from admin/include/functions.php to include/functions.inc.php - because MySQL temporary tables are not always authorized on creation, use a temporary table name (with the current microsecond) on a non temporary table (in mass_updates function) - ability to retrieve distant full directories (usefull in upgrade scripts) - global variables $count_queries and $queries_time moved into global array $page - get_cat_display_name displays category names in correct order : the one given by uppercats - function setup_style simplified - default value for configuration parameter "show_nb_comments" set to false (less queries by default) git-svn-id: http://piwigo.org/svn/trunk@672 68402e56-0260-453c-a942-63ccdbb3a9ee --- upgrade.php | 187 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 upgrade.php (limited to 'upgrade.php') diff --git a/upgrade.php b/upgrade.php new file mode 100644 index 000000000..748832617 --- /dev/null +++ b/upgrade.php @@ -0,0 +1,187 @@ +'."\n"; +flush(); +// +-----------------------------------------------------------------------+ +// | functions | +// +-----------------------------------------------------------------------+ + +/** + * loads an sql file and executes all queries + * + * Before executing a query, $replaced is... replaced by $replacing. This is + * useful when the SQL file contains generic words. Drop table queries are + * not executed. + * + * @param string filepath + * @param string replaced + * @param string replacing + * @return void + */ +function execute_sqlfile($filepath, $replaced, $replacing) +{ + $sql_lines = file($filepath); + $query = ''; + foreach ($sql_lines as $sql_line) + { + $sql_line = trim($sql_line); + if (preg_match('/(^--|^$)/', $sql_line)) + { + continue; + } + $query.= ' '.$sql_line; + // if we reached the end of query, we execute it and reinitialize the + // variable "query" + if (preg_match('/;$/', $sql_line)) + { + $query = trim($query); + $query = str_replace($replaced, $replacing, $query); + // we don't execute "DROP TABLE" queries + if (!preg_match('/^DROP TABLE/i', $query)) + { + mysql_query($query); + } + $query = ''; + } + } +} +// +-----------------------------------------------------------------------+ +// | template initialization | +// +-----------------------------------------------------------------------+ +$template = setup_style('default'); +$template->set_filenames(array('upgrade'=>'upgrade.tpl')); +$template->assign_vars(array('RELEASE'=>PHPWG_VERSION)); +// +-----------------------------------------------------------------------+ +// | versions upgradable | +// +-----------------------------------------------------------------------+ +$versions = array(); +$path = PHPWG_ROOT_PATH.'install'; +if ($contents = opendir($path)) +{ + while (($node = readdir($contents)) !== false) + { + if (is_file($path.'/'.$node) + and preg_match('/^upgrade_(.*?)\.php$/', $node, $match)) + { + array_push($versions, $match[1]); + } + } +} +natcasesort($versions); +// +-----------------------------------------------------------------------+ +// | upgrade choice | +// +-----------------------------------------------------------------------+ +if (!isset($_GET['version'])) +{ + $template->assign_block_vars('choices', array()); + foreach ($versions as $version) + { + $template->assign_block_vars( + 'choices.choice', + array( + 'URL' => PHPWG_ROOT_PATH.'upgrade.php?version='.$version, + 'VERSION' => $version + )); + } +} +// +-----------------------------------------------------------------------+ +// | upgrade launch | +// +-----------------------------------------------------------------------+ +else +{ + $upgrade_file = $path.'/upgrade_'.$_GET['version'].'.php'; + if (is_file($upgrade_file)) + { + $page['upgrade_start'] = get_moment(); + include($upgrade_file); + $page['upgrade_end'] = get_moment(); + + $template->assign_block_vars( + 'upgrade', + array( + 'VERSION' => $_GET['version'], + 'TOTAL_TIME' => get_elapsed_time($page['upgrade_start'], + $page['upgrade_end']), + 'SQL_TIME' => number_format($page['queries_time'], 3, '.', ' ').' s', + 'NB_QUERIES' => $page['count_queries'] + )); + + if (!isset($infos)) + { + $infos = array(); + } + array_push( + $infos, + '[security] delete files "upgrade.php", "install.php" and "install" +directory'); + + $template->assign_block_vars('upgrade.infos', array()); + + foreach ($infos as $info) + { + $template->assign_block_vars('upgrade.infos.info', + array('CONTENT' => $info)); + } + } + else + { + die('Hacking attempt'); + } +} +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ +$template->pparse('upgrade'); +?> \ No newline at end of file -- cgit v1.2.3