- new: system to notify and upgrade database among developers

git-svn-id: http://piwigo.org/svn/trunk@953 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
plegall
2005-11-24 21:37:29 +00:00
parent a6c4effc72
commit 935b69d868
6 changed files with 211 additions and 1 deletions
+41 -1
View File
@@ -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
'<p>'
.'Some database upgrades are missing, '
.'<a href="'.PHPWG_ROOT_PATH.'upgrade_feed.php">upgrade now</a>'
.'</p>'
;
}
}
//
// Setup gallery wide options, if this fails then we output a CRITICAL_ERROR
// since basic gallery information is not available
+8
View File
@@ -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 |
// +-----------------------------------------------------------------------+
+1
View File
@@ -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');
?>
+46
View File
@@ -0,0 +1,46 @@
<?php
// +-----------------------------------------------------------------------+
// | PhpWebGallery - a PHP based picture gallery |
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
// | Copyright (C) 2003-2005 PhpWebGallery Team - http://phpwebgallery.net |
// +-----------------------------------------------------------------------+
// | branch : BSF (Best So Far)
// | file : $RCSfile$
// | last update : $Date: 2005-09-21 00:04:57 +0200 (mer, 21 sep 2005) $
// | last modifier : $Author: plg $
// | revision : $Revision: 870 $
// +-----------------------------------------------------------------------+
// | This program is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation |
// | |
// | This program is distributed in the hope that it will be useful, but |
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
// | General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with this program; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
// | USA. |
// +-----------------------------------------------------------------------+
if (!defined('PHPWG_ROOT_PATH'))
{
die('Hacking attempt!');
}
$upgrade_description = 'Just a beginning test';
// +-----------------------------------------------------------------------+
// | Upgrade content |
// +-----------------------------------------------------------------------+
list($now) = mysql_fetch_row(pwg_query('SELECT NOW()'));
echo
$now
."\n"
.'This upgrade script is for test purpose only'
."\n"
;
?>
+12
View File
@@ -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`
--
+103
View File
@@ -0,0 +1,103 @@
<?php
// +-----------------------------------------------------------------------+
// | PhpWebGallery - a PHP based picture gallery |
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
// | Copyright (C) 2003-2005 PhpWebGallery Team - http://phpwebgallery.net |
// +-----------------------------------------------------------------------+
// | branch : BSF (Best So Far)
// | file : $RCSfile$
// | last update : $Date: 2005-09-21 00:04:57 +0200 (mer, 21 sep 2005) $
// | last modifier : $Author: plg $
// | revision : $Revision: 870 $
// +-----------------------------------------------------------------------+
// | This program is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation |
// | |
// | This program is distributed in the hope that it will be useful, but |
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
// | General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with this program; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
// | USA. |
// +-----------------------------------------------------------------------+
define('PHPWG_ROOT_PATH', './');
include_once(PHPWG_ROOT_PATH.'include/functions.inc.php');
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
include(PHPWG_ROOT_PATH.'include/template.php');
include(PHPWG_ROOT_PATH.'include/mysql.inc.php');
define('PREFIX_TABLE', $prefixeTable);
define('UPGRADES_PATH', PHPWG_ROOT_PATH.'install/db');
// +-----------------------------------------------------------------------+
// | Database connection |
// +-----------------------------------------------------------------------+
mysql_connect($cfgHote, $cfgUser, $cfgPassword)
or die("Could not connect to database server");
mysql_select_db($cfgBase)
or die("Could not connect to database");
// +-----------------------------------------------------------------------+
// | Upgrades |
// +-----------------------------------------------------------------------+
// 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?
$to_apply = array_diff($existing, $applied);
echo '<pre>';
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 '</pre>';
?>