2008-10-08 16:48:11 +00:00
#!/usr/bin/env php
< ? php
// This file is part of BOINC.
// http://boinc.berkeley.edu
// Copyright (C) 2008 University of California
//
// BOINC is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
//
// BOINC 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
// Perform DB updates.
2010-08-11 20:08:13 +00:00
// Used by "upgrade".
// Can also be run manually in project/html/ops.
2008-10-08 16:48:11 +00:00
2009-09-15 18:14:37 +00:00
require_once ( " ../inc/util_ops.inc " );
2008-10-08 16:48:11 +00:00
$db_revision = 0 ;
if ( file_exists ( " ../../db_revision " )) {
$db_revision = ( int ) file_get_contents ( " ../../db_revision " );
}
require_once ( " db_update.php " );
2008-10-08 22:00:15 +00:00
$updates = array ();
2008-10-08 16:48:11 +00:00
foreach ( $db_updates as $db_update ) {
if ( $db_update [ 0 ] > $db_revision ) {
$func = $db_update [ 1 ];
echo " need update $func\n " ;
2008-10-08 22:00:15 +00:00
$updates [] = $db_update ;
2008-10-08 16:48:11 +00:00
}
}
2008-10-08 22:00:15 +00:00
if ( empty ( $updates )) {
2012-11-02 22:38:54 +00:00
echo " No updates needed \n " ;
2008-10-08 16:48:11 +00:00
exit ;
}
echo " Do you want to apply these updates? (y/n) " ;
$x = trim ( fgets ( STDIN ));
if ( $x != 'y' ) {
echo " OK - see db_update.php to do manual updates,
or run this script again later .
" ;
exit ;
}
2010-08-11 20:08:13 +00:00
if ( $argc > 1 ) {
echo " \n Warning: you are upgrading only web or server code, \n but these updates may affect the other code as well. \n We recommend that you run 'upgrade' again to upgrade both parts of the code. \n \n " ;
}
2012-01-02 07:33:08 +00:00
db_init_cli ();
2008-10-08 22:00:15 +00:00
foreach ( $updates as $update ) {
list ( $rev , $func ) = $update ;
echo " performing update $func\n " ;
call_user_func ( $func );
2014-09-04 19:00:09 +00:00
$e = _mysql_error ();
2013-04-25 07:27:35 +00:00
if ( $e ) {
echo " \n WARNING: database upgrade failed.
MySQL error message : $e
Please find the update queries in html / ops / db_update . php
and perform them manually .
When done , edit PROJECT_DIR / db_revision so that it contains the line
$rev
" ;
break ;
}
2008-10-08 22:00:15 +00:00
file_put_contents ( " ../../db_revision " , $rev );
2008-10-08 16:48:11 +00:00
}
echo " All done. \n " ;
?>