From 935b69d868ecc7d06f8059ff7ac4ca8dc6ad4e30 Mon Sep 17 00:00:00 2001 From: plegall Date: Thu, 24 Nov 2005 21:37:29 +0000 Subject: - new: system to notify and upgrade database among developers git-svn-id: http://piwigo.org/svn/trunk@953 68402e56-0260-453c-a942-63ccdbb3a9ee --- include/common.inc.php | 42 ++++++++++++++- include/config_default.inc.php | 8 +++ include/constants.php | 1 + install/db/1-database.php | 46 ++++++++++++++++ install/phpwebgallery_structure.sql | 12 +++++ upgrade_feed.php | 103 ++++++++++++++++++++++++++++++++++++ 6 files changed, 211 insertions(+), 1 deletion(-) create mode 100644 install/db/1-database.php create mode 100644 upgrade_feed.php diff --git a/include/common.inc.php b/include/common.inc.php index 38b0e7de0..a86bbc9ac 100644 --- a/include/common.inc.php +++ b/include/common.inc.php @@ -131,7 +131,47 @@ mysql_connect( $cfgHote, $cfgUser, $cfgPassword ) or die ( "Could not connect to database server" ); mysql_select_db( $cfgBase ) 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 +;'; + $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); + + // which upgrades need to be applied? + if (count(array_diff($existing, $applied)) > 0) + { + echo + '

' + .'Some database upgrades are missing, ' + .'upgrade now' + .'

' + ; + } +} + // // Setup gallery wide options, if this fails then we output a CRITICAL_ERROR // since basic gallery information is not available diff --git a/include/config_default.inc.php b/include/config_default.inc.php index 3ad250a98..7c7ea9089 100644 --- a/include/config_default.inc.php +++ b/include/config_default.inc.php @@ -182,6 +182,14 @@ $conf['users_page'] = 20; // "options" parameter missing on mail() function execution. $conf['mail_options'] = false; +// check_upgrade_feed: check if there are database upgrade required. Set to +// true, a message will strongly encourage you to upgrade your database if +// needed. +// +// This configuration parameter is set to true in BSF branch and to false +// elsewhere. +$conf['check_upgrade_feed'] = true; + // +-----------------------------------------------------------------------+ // | metadata | // +-----------------------------------------------------------------------+ diff --git a/include/constants.php b/include/constants.php index a7823b230..bb5a1d926 100644 --- a/include/constants.php +++ b/include/constants.php @@ -59,4 +59,5 @@ define('IMAGE_METADATA_TABLE', $prefixeTable.'image_metadata'); define('RATE_TABLE', $prefixeTable.'rate'); define('USER_CACHE_TABLE', $prefixeTable.'user_cache'); define('CADDIE_TABLE', $prefixeTable.'caddie'); +define('UPGRADE_TABLE', $prefixeTable.'upgrade'); ?> diff --git a/install/db/1-database.php b/install/db/1-database.php new file mode 100644 index 000000000..5bbb59d44 --- /dev/null +++ b/install/db/1-database.php @@ -0,0 +1,46 @@ + diff --git a/install/phpwebgallery_structure.sql b/install/phpwebgallery_structure.sql index 7662746fd..9f94e28e1 100644 --- a/install/phpwebgallery_structure.sql +++ b/install/phpwebgallery_structure.sql @@ -200,6 +200,18 @@ CREATE TABLE `phpwebgallery_sites` ( UNIQUE KEY `sites_ui1` (`galleries_url`) ) TYPE=MyISAM; +-- +-- Table structure for table `phpwebgallery_upgrade` +-- + +DROP TABLE IF EXISTS `phpwebgallery_upgrade`; +CREATE TABLE `phpwebgallery_upgrade` ( + `id` varchar(20) NOT NULL default '', + `applied` datetime NOT NULL default '0000-00-00 00:00:00', + `description` varchar(255) default NULL, + PRIMARY KEY (`id`) +) TYPE=MyISAM; + -- -- Table structure for table `phpwebgallery_user_access` -- diff --git a/upgrade_feed.php b/upgrade_feed.php new file mode 100644 index 000000000..c26390a0d --- /dev/null +++ b/upgrade_feed.php @@ -0,0 +1,103 @@ +'; +echo count($to_apply).' upgrades to apply'; + +foreach ($to_apply as $upgrade_id) +{ + unset($upgrade_description); + + echo "\n\n"; + echo '=== upgrade '.$upgrade_id."\n"; + + // include & execute upgrade script. Each upgrade script must contain + // $upgrade_description variable which describe briefly what the upgrade + // script does. + include(UPGRADES_PATH.'/'.$upgrade_id.'-database.php'); + + // notify upgrade + $query = ' +INSERT INTO '.PREFIX_TABLE.'upgrade + (id, applied, description) + VALUES + (\''.$upgrade_id.'\', NOW(), \''.$upgrade_description.'\') +;'; + pwg_query($query); +} + +echo ''; +?> \ No newline at end of file -- cgit v1.2.3