From 3d0c5236e1848cefbf672df7243ff34b855f7000 Mon Sep 17 00:00:00 2001 From: plegall Date: Mon, 6 Feb 2006 21:52:16 +0000 Subject: improvement: upgrades id retrieving in include/common.inc.php and upgrade_feed.php are now made by dedicated function get_available_upgrade_ids. bug fixed: after an installation, you had to play all available upgrades, which was wrong. install.php inserts informations related to all available upgrades at installation time. Thus avoiding automatic upgrades. git-svn-id: http://piwigo.org/svn/trunk@1027 68402e56-0260-453c-a942-63ccdbb3a9ee --- include/common.inc.php | 20 ++------------------ include/functions.inc.php | 29 ++++++++++++++++++++++++++++- install.php | 14 ++++++++++++++ upgrade_feed.php | 15 +-------------- 4 files changed, 45 insertions(+), 33 deletions(-) diff --git a/include/common.inc.php b/include/common.inc.php index 3b6900000..6e8bbf697 100644 --- a/include/common.inc.php +++ b/include/common.inc.php @@ -134,31 +134,15 @@ or die ( "Could not connect to database" ); if ($conf['check_upgrade_feed']) { - define('PREFIX_TABLE', $prefixeTable); - define('UPGRADES_PATH', PHPWG_ROOT_PATH.'install/db'); - // retrieve already applied upgrades $query = ' SELECT id - FROM '.PREFIX_TABLE.'upgrade + FROM '.UPGRADE_TABLE.' ;'; $applied = array_from_query($query, 'id'); // retrieve existing upgrades - $existing = array(); - - if ($contents = opendir(UPGRADES_PATH)) - { - while (($node = readdir($contents)) !== false) - { - if (is_file(UPGRADES_PATH.'/'.$node) - and preg_match('/^(.*?)-database\.php$/', $node, $match)) - { - array_push($existing, $match[1]); - } - } - } - natcasesort($existing); + $existing = get_available_upgrade_ids(); // which upgrades need to be applied? if (count(array_diff($existing, $applied)) > 0) diff --git a/include/functions.inc.php b/include/functions.inc.php index cf865d6c8..d49317d22 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -488,7 +488,7 @@ function pwg_debug( $string ) */ function redirect( $url ) { - global $user, $template, $lang_info, $conf, $lang, $t2, $page; + global $user, $template, $lang_info, $conf, $lang, $t2, $page, $debug; // $refresh, $url_link and $title are required for creating an automated // refresh page in header.tpl @@ -972,4 +972,31 @@ SELECT '.$conf['user_fields']['email'].' return $email; } + +/** + * which upgrades are available ? + * + * @return array + */ +function get_available_upgrade_ids() +{ + $upgrades_path = PHPWG_ROOT_PATH.'install/db'; + + $available_upgrade_ids = array(); + + if ($contents = opendir($upgrades_path)) + { + while (($node = readdir($contents)) !== false) + { + if (is_file($upgrades_path.'/'.$node) + and preg_match('/^(.*?)-database\.php$/', $node, $match)) + { + array_push($available_upgrade_ids, $match[1]); + } + } + } + natcasesort($available_upgrade_ids); + + return $available_upgrade_ids; +} ?> diff --git a/install.php b/install.php index e2c2f5eca..68b98547d 100644 --- a/install.php +++ b/install.php @@ -338,6 +338,20 @@ INSERT INTO '.USER_INFOS_TABLE.' (2, \'guest\', \''.$language.'\') ;'; mysql_query($query); + + // Available upgrades must be ignored after a fresh installation. To + // make PWG avoid upgrading, we must tell it upgrades have already been + // made. + foreach (get_available_upgrade_ids() as $upgrade_id) + { + $query = ' +INSERT INTO '.UPGRADE_TABLE.' + (id, applied, description) + VALUES + ('.$upgrade_id.', NOW(), \'upgrade included in installation\') +'; + mysql_query($query); + } } } diff --git a/upgrade_feed.php b/upgrade_feed.php index c26390a0d..ca9f9d0c3 100644 --- a/upgrade_feed.php +++ b/upgrade_feed.php @@ -56,20 +56,7 @@ SELECT id $applied = array_from_query($query, 'id'); // retrieve existing upgrades -$existing = array(); - -if ($contents = opendir(UPGRADES_PATH)) -{ - while (($node = readdir($contents)) !== false) - { - if (is_file(UPGRADES_PATH.'/'.$node) - and preg_match('/^(.*?)-database\.php$/', $node, $match)) - { - array_push($existing, $match[1]); - } - } -} -natcasesort($existing); +$existing = get_available_upgrade_ids(); // which upgrades need to be applied? $to_apply = array_diff($existing, $applied); -- cgit v1.2.3