2005-11-21 19:36:48 +00:00
< ?
/*
This file is part of the 'Science Fair In A Box' project
SFIAB Website : http :// www . sfiab . ca
Copyright ( C ) 2005 Sci - Tech Ontario Inc < info @ scitechontario . org >
2009-09-09 01:44:55 +00:00
Copyright ( C ) 2005 - 2009 James Grant < james @ lightbox . org >
2005-11-21 19:36:48 +00:00
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 , version 2.
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 ; see the file COPYING . If not , write to
the Free Software Foundation , Inc . , 59 Temple Place - Suite 330 ,
Boston , MA 02111 - 1307 , USA .
*/
?>
< ?
require ( " ../common.inc.php " );
2007-11-21 17:04:35 +00:00
require_once ( " ../user.inc.php " );
2007-11-25 19:53:15 +00:00
require_once ( " ../config_editor.inc.php " );
2007-11-19 00:33:38 +00:00
user_auth_required ( 'committee' , 'config' );
send_header ( " Year Rollover " ,
array ( 'Committee Main' => 'committee_main.php' ,
'SFIAB Configuration' => 'config/index.php' )
2008-08-22 20:34:38 +00:00
, " rollover_fair_year "
2007-11-19 00:33:38 +00:00
);
2005-11-21 19:36:48 +00:00
?>
< script language = " javascript " type = " text/javascript " >
function confirmYearRollover ()
{
var currentyear =< ? = $config [ 'FAIRYEAR' ] ?> ;
var nextyear = document . forms . rollover . nextfairyear . value ;
if ( nextyear < currentyear )
alert ( 'You cannot roll backwards in years!' );
else if ( nextyear == currentyear )
alert ( 'You cannot roll to the same year!' );
else
{
var okay = confirm ( 'Are you sure you want to roll the FAIRYEAR from ' + currentyear + ' to ' + nextyear + '? This can not be undone and should only be done if you are absolutely sure!' );
if ( okay )
return true ;
}
return false ;
}
</ script >
< ?
2010-04-16 09:43:26 +00:00
function roll ( $currentfairyear , $newfairyear , $table , $where = '' , $replace = array ())
2009-09-09 00:26:12 +00:00
{
2010-04-16 09:43:26 +00:00
/* Field Type Null Key Default Extra
* id int ( 10 ) unsigned NO PRI NULL auto_increment
* sponsors_id int ( 10 ) unsigned NO MUL 0
* award_source_fairs_id int ( 10 ) unsigned YES NULL
*/
/* Get field list for this table */
$q = mysql_query ( " SHOW COLUMNS IN ` $table ` " );
while (( $c = mysql_fetch_assoc ( $q ))) {
$col [ $c [ 'Field' ]] = $c ;
}
/* Record fields we care about */
$fields = array ();
$keys = array_keys ( $col );
foreach ( $keys as $k ) {
/* Skip id field */
if ( $col [ $k ][ 'Extra' ] == 'auto_increment' ) continue ;
/* Skip year field */
if ( $k == 'year' ) continue ;
$fields [] = $k ;
}
if ( $where == '' ) $where = '1' ;
/* Get data */
$q = mysql_query ( " SELECT * FROM $table WHERE year=' $currentfairyear ' AND $where " );
2009-09-09 00:26:12 +00:00
echo mysql_error ();
$names = '`' . join ( '`,`' , $fields ) . '`' ;
2010-04-16 09:43:26 +00:00
/* Process data */
2009-09-09 00:26:12 +00:00
while ( $r = mysql_fetch_assoc ( $q )) {
$vals = '' ;
foreach ( $fields as $f ) {
2010-04-16 09:43:26 +00:00
if ( array_key_exists ( $f , $replace ))
$vals .= " ,' " . mysql_real_escape_string ( $replace [ $f ]) . " ' " ;
else if ( $col [ $f ][ 'Null' ] == 'YES' && $r [ $f ] == NULL )
$vals .= ',NULL' ;
else
$vals .= " ,' " . mysql_real_escape_string ( $r [ $f ]) . " ' " ;
2009-09-09 00:26:12 +00:00
}
2010-04-16 09:43:26 +00:00
mysql_query ( " INSERT INTO ` $table `(`year`, $names ) VALUES (' $newfairyear ' $vals ) " );
echo " INSERT INTO ` $table `(`year`, $names ) VALUES (' $newfairyear ' $vals )<br/> " ;
2009-09-09 00:26:12 +00:00
echo mysql_error ();
}
}
2005-11-21 19:36:48 +00:00
if ( $_POST [ 'action' ] == " rollover " && $_POST [ 'nextfairyear' ])
{
2008-09-02 17:34:32 +00:00
$newfairyear = intval ( $_POST [ 'nextfairyear' ]);
$currentfairyear = intval ( $config [ 'FAIRYEAR' ]);
2005-11-21 19:36:48 +00:00
2010-04-16 09:43:26 +00:00
$cy = $currentfairyear ;
$ny = $newfairyear ;
2005-11-21 19:36:48 +00:00
if ( $newfairyear < $currentfairyear )
echo error ( i18n ( " You cannot roll backwards in years! " ));
else if ( $newfairyear == $currentfairyear )
echo error ( i18n ( " You cannot roll to the same year! " ));
else
{
//okay here we go! this is going to get to be a pretty big script me thinks!
//first, lets do all of the configuration variables
echo i18n ( " Rolling configuration variables " ) . " <br /> " ;
2007-11-25 19:53:15 +00:00
config_update_variables ( $newfairyear , $currentfairyear );
2005-11-21 19:36:48 +00:00
//now the dates
echo i18n ( " Rolling dates " ) . " <br /> " ;
$q = mysql_query ( " SELECT DATE_ADD(date,INTERVAL 365 DAY) AS newdate,name,description FROM dates WHERE year=' $currentfairyear ' " );
echo mysql_error ();
while ( $r = mysql_fetch_object ( $q ))
mysql_query ( " INSERT INTO dates (date,name,description,year) VALUES (
2009-09-09 01:44:55 +00:00
'".mysql_real_escape_string($r->newdate)."' ,
'".mysql_real_escape_string($r->name)."' ,
'".mysql_real_escape_string($r->description)."' ,
'".mysql_real_escape_string($newfairyear)."' ) " );
2005-11-21 19:36:48 +00:00
//page text
echo i18n ( " Rolling page texts " ) . " <br /> " ;
$q = mysql_query ( " SELECT * FROM pagetext WHERE year=' $currentfairyear ' " );
echo mysql_error ();
while ( $r = mysql_fetch_object ( $q ))
2008-08-27 20:01:07 +00:00
mysql_query ( " INSERT INTO pagetext (textname,textdescription,text,lastupdate,year,lang) VALUES (
2009-09-09 01:44:55 +00:00
'".mysql_real_escape_string($r->textname)."' ,
'".mysql_real_escape_string($r->textdescription)."' ,
'".mysql_real_escape_string($r->text)."' ,
'".mysql_real_escape_string($r->lastupdate)."' ,
'".mysql_real_escape_string($newfairyear)."' ,
'".mysql_real_escape_string($r->lang)."' ) " );
2005-11-21 19:36:48 +00:00
echo i18n ( " Rolling project categories " ) . " <br /> " ;
//project categories
$q = mysql_query ( " SELECT * FROM projectcategories WHERE year=' $currentfairyear ' " );
echo mysql_error ();
while ( $r = mysql_fetch_object ( $q ))
2008-08-27 19:33:56 +00:00
mysql_query ( " INSERT INTO projectcategories (id,category,category_shortform,mingrade,maxgrade,year) VALUES (
2009-09-09 01:44:55 +00:00
'".mysql_real_escape_string($r->id)."' ,
'".mysql_real_escape_string($r->category)."' ,
'".mysql_real_escape_string($r->category_shortform)."' ,
'".mysql_real_escape_string($r->mingrade)."' ,
'".mysql_real_escape_string($r->maxgrade)."' ,
'".mysql_real_escape_string($newfairyear)."' ) " );
2005-11-21 19:36:48 +00:00
echo i18n ( " Rolling project divisions " ) . " <br /> " ;
//project divisions
$q = mysql_query ( " SELECT * FROM projectdivisions WHERE year=' $currentfairyear ' " );
echo mysql_error ();
while ( $r = mysql_fetch_object ( $q ))
2008-08-27 19:33:56 +00:00
mysql_query ( " INSERT INTO projectdivisions (id,division,division_shortform,cwsfdivisionid,year) VALUES (
2009-09-09 01:44:55 +00:00
'".mysql_real_escape_string($r->id)."' ,
'".mysql_real_escape_string($r->division)."' ,
'".mysql_real_escape_string($r->division_shortform)."' ,
'".mysql_real_escape_string($r->cwsfdivisionid)."' ,
'".mysql_real_escape_string($newfairyear)."' ) " );
2005-11-21 19:36:48 +00:00
2007-12-07 22:12:16 +00:00
echo i18n ( " Rolling project category-division links " ) . " <br /> " ;
//project categories divisions links
$q = mysql_query ( " SELECT * FROM projectcategoriesdivisions_link WHERE year=' $currentfairyear ' " );
echo mysql_error ();
while ( $r = mysql_fetch_object ( $q ))
mysql_query ( " INSERT INTO projectcategoriesdivisions_link (projectdivisions_id,projectcategories_id,year) VALUES (
2009-09-09 01:44:55 +00:00
'".mysql_real_escape_string($r->projectdivisions_id)."' ,
'".mysql_real_escape_string($r->projectcategories_id)."' ,
'".mysql_real_escape_string($newfairyear)."' ) " );
2007-12-07 22:12:16 +00:00
2005-11-21 19:36:48 +00:00
echo i18n ( " Rolling project sub-divisions " ) . " <br /> " ;
//project subdivisions
$q = mysql_query ( " SELECT * FROM projectsubdivisions WHERE year=' $currentfairyear ' " );
echo mysql_error ();
while ( $r = mysql_fetch_object ( $q ))
mysql_query ( " INSERT INTO projectsubdivisions (id,projectdivisions_id,subdivision,year) VALUES (
2009-09-09 01:44:55 +00:00
'".mysql_real_escape_string($r->id)."' ,
'".mysql_real_escape_string($r->projectsubdivisions_id)."' ,
'".mysql_real_escape_string($r->subdivision)."' ,
'".mysql_real_escape_string($newfairyear)."' ) " );
2005-11-21 19:36:48 +00:00
echo i18n ( " Rolling safety questions " ) . " <br /> " ;
//safety questions
$q = mysql_query ( " SELECT * FROM safetyquestions WHERE year=' $currentfairyear ' " );
echo mysql_error ();
while ( $r = mysql_fetch_object ( $q ))
mysql_query ( " INSERT INTO safetyquestions (question,type,required,ord,year) VALUES (
2009-09-09 01:44:55 +00:00
'".mysql_real_escape_string($r->question)."' ,
'".mysql_real_escape_string($r->type)."' ,
'".mysql_real_escape_string($r->required)."' ,
'".mysql_real_escape_string($r->ord)."' ,
'".mysql_real_escape_string($newfairyear)."' ) " );
2005-11-21 19:36:48 +00:00
echo i18n ( " Rolling awards " ) . " <br /> " ;
//awards
2010-04-16 09:43:26 +00:00
2005-11-21 19:36:48 +00:00
$q = mysql_query ( " SELECT * FROM award_awards WHERE year=' $currentfairyear ' " );
echo mysql_error ();
2010-04-16 09:43:26 +00:00
while ( $r = mysql_fetch_object ( $q )) {
/* Roll the one award */
roll ( $cy , $ny , 'award_awards' , " id=' { $r -> id } ' " );
2005-11-21 19:36:48 +00:00
$award_awards_id = mysql_insert_id ();
2010-04-16 09:43:26 +00:00
roll ( $cy , $ny , 'award_awards_projectcategories' , " award_awards_id=' { $r -> id } ' " ,
array ( 'award_awards_id' => $award_awards_id ));
2005-11-21 19:36:48 +00:00
2010-04-16 09:43:26 +00:00
roll ( $cy , $ny , 'award_awards_projectdivisions' , " award_awards_id=' { $r -> id } ' " ,
array ( 'award_awards_id' => $award_awards_id ));
2006-07-26 14:38:21 +00:00
echo i18n ( " Rolling award prizes " ) . " <br /> " ;
2010-04-16 09:43:26 +00:00
roll ( $cy , $ny , 'award_prizes' , " award_awards_id=' { $r -> id } ' " ,
array ( 'award_awards_id' => $award_awards_id ));
2005-11-21 19:36:48 +00:00
}
echo i18n ( " Rolling award types " ) . " <br /> " ;
//award types
$q = mysql_query ( " SELECT * FROM award_types WHERE year=' $currentfairyear ' " );
echo mysql_error ();
while ( $r = mysql_fetch_object ( $q ))
mysql_query ( " INSERT INTO award_types (id,type,`order`,year) VALUES (
2009-09-09 01:44:55 +00:00
'".mysql_real_escape_string($r->id)."' ,
'".mysql_real_escape_string($r->type)."' ,
'".mysql_real_escape_string($r->order)."' ,
'".mysql_real_escape_string($newfairyear)."' ) " );
2005-11-21 19:36:48 +00:00
2005-11-24 20:12:43 +00:00
echo i18n ( " Rolling schools " ) . " <br /> " ;
//award types
$q = mysql_query ( " SELECT * FROM schools WHERE year=' $currentfairyear ' " );
echo mysql_error ();
2009-11-30 19:10:14 +00:00
while ( $r = mysql_fetch_object ( $q )) {
2009-10-11 03:32:14 +00:00
$puid = ( $r -> principal_uid == null ) ? 'NULL' : ( " ' " . intval ( $r -> principal_uid ) . " ' " );
$shuid = ( $r -> sciencehead_uid == null ) ? 'NULL' : ( " ' " . intval ( $r -> sciencehead_uid ) . " ' " );
mysql_query ( " INSERT INTO schools (school,schoollang,schoollevel,board,district,phone,fax,address,city,province_code,postalcode,principal_uid,schoolemail,sciencehead_uid,accesscode,lastlogin,junior,intermediate,senior,registration_password,projectlimit,projectlimitper,year) VALUES (
2009-09-09 01:44:55 +00:00
'".mysql_real_escape_string($r->school)."' ,
'".mysql_real_escape_string($r->schoollang)."' ,
'".mysql_real_escape_string($r->schoollevel)."' ,
'".mysql_real_escape_string($r->board)."' ,
'".mysql_real_escape_string($r->district)."' ,
'".mysql_real_escape_string($r->phone)."' ,
'".mysql_real_escape_string($r->fax)."' ,
'".mysql_real_escape_string($r->address)."' ,
'".mysql_real_escape_string($r->city)."' ,
'".mysql_real_escape_string($r->province_code)."' ,
2009-10-11 03:32:14 +00:00
'".mysql_real_escape_string($r->postalcode)."' , $puid ,
'".mysql_real_escape_string($r->schoolemail)."' , $shuid ,
2009-09-09 01:44:55 +00:00
'".mysql_real_escape_string($r->accesscode)."' ,
2005-11-24 20:12:43 +00:00
NULL ,
2009-09-09 01:44:55 +00:00
'".mysql_real_escape_string($r->junior)."' ,
'".mysql_real_escape_string($r->intermediate)."' ,
'".mysql_real_escape_string($r->senior)."' ,
'".mysql_real_escape_string($r->registration_password)."' ,
'".mysql_real_escape_string($r->projectlimit)."' ,
'".mysql_real_escape_string($r->projectlimitper)."' ,
'".mysql_real_escape_string($newfairyear)."' ) " );
2009-11-30 19:10:14 +00:00
}
2005-11-24 20:12:43 +00:00
2006-07-11 20:22:42 +00:00
echo i18n ( " Rolling questions " ) . " <br /> " ;
$q = mysql_query ( " SELECT * FROM questions WHERE year=' $currentfairyear ' " );
while ( $r = mysql_fetch_object ( $q ))
mysql_query ( " INSERT INTO questions (id,year,section,db_heading,question,type,required,ord) VALUES (
'' ,
'$newfairyear' ,
2009-09-09 01:44:55 +00:00
'".mysql_real_escape_string($r->section)."' ,
'".mysql_real_escape_string($r->db_heading)."' ,
'".mysql_real_escape_string($r->question)."' ,
'".mysql_real_escape_string($r->type)."' ,
'".mysql_real_escape_string($r->required)."' ,
'".mysql_real_escape_string($r->ord)."' ) " );
2006-07-11 20:22:42 +00:00
2008-01-23 19:00:26 +00:00
//regfee items
2010-04-16 09:43:26 +00:00
echo i18n ( " Rolling registration fee items " ) . " <br /> " ;
roll ( $cy , $ny , 'regfee_items' );
2009-09-09 00:26:12 +00:00
//volunteer positions
echo i18n ( 'Rolling volunteer positions' ) . " <br /> " ;
2010-04-16 09:43:26 +00:00
roll ( $cy , $ny , 'volunteer_positions' );
2009-09-09 00:26:12 +00:00
//timeslots and rounds
echo i18n ( 'Rolling judging timeslots and rounds' ) . " <br /> " ;
$q = mysql_query ( " SELECT * FROM judges_timeslots WHERE year=' $currentfairyear ' AND round_id='0' " );
echo mysql_error ();
while ( $r = mysql_fetch_assoc ( $q )) {
$d = $newfairyear - $currentfairyear ;
2009-09-09 01:57:22 +00:00
mysql_query ( " INSERT INTO judges_timeslots (`year`,`round_id`,`type`,`date`,`starttime`,`endtime`,`name`)
2009-09-09 00:26:12 +00:00
VALUES ( '$newfairyear' , '0' , '{$r[' type ']}' , DATE_ADD ( '{$r[' date ']}' , INTERVAL $d YEAR ),
2009-09-09 01:57:22 +00:00
'{$r[' starttime ']}' , '{$r[' endtime ']}' , '{$r[' name ']}' ) " );
2009-09-09 00:26:12 +00:00
echo mysql_error ();
$round_id = mysql_insert_id ();
$qq = mysql_query ( " SELECT * FROM judges_timeslots WHERE round_id=' { $r [ 'id' ] } ' " );
echo mysql_error ();
while ( $rr = mysql_fetch_assoc ( $qq )) {
mysql_query ( " INSERT INTO judges_timeslots (`year`,`round_id`,`type`,`date`,`starttime`,`endtime`)
VALUES ( '$newfairyear' , '$round_id' , 'timeslot' , DATE_ADD ( '{$rr[' date ']}' , INTERVAL $d YEAR ),
'{$rr[' starttime ']}' , '{$rr[' endtime ']}' ) " );
}
}
2008-01-23 18:40:59 +00:00
2009-09-09 00:26:12 +00:00
echo " <br /><br /> " ;
2005-11-21 19:36:48 +00:00
mysql_query ( " UPDATE config SET val=' $newfairyear ' WHERE var='FAIRYEAR' AND year=0 " );
echo happy ( i18n ( " Fair year has been rolled over from %1 to %2 " , array ( $currentfairyear , $newfairyear )));
2005-11-21 21:30:10 +00:00
send_footer ();
exit ;
2005-11-21 19:36:48 +00:00
}
}
2009-09-09 02:50:00 +00:00
echo " <br /> " ;
echo " <a href= \" backuprestore.php \" > " . i18n ( " You should consider making a database backup before rolling over, just in case! " ) . " </a><br /> \n " ;
2005-11-21 19:36:48 +00:00
echo " <br /> " ;
echo " <form name= \" rollover \" method= \" post \" action= \" rollover.php \" onsubmit= \" return confirmYearRollover() \" > " ;
echo " <input type= \" hidden \" name= \" action \" value= \" rollover \" /> " ;
echo i18n ( " Current Fair Year " ) . " : <b> " . $config [ 'FAIRYEAR' ] . " </b><br /> " ;
$nextfairyear = $config [ 'FAIRYEAR' ] + 1 ;
echo i18n ( " Next Fair Year " ) . " : <input size= \" 8 \" type= \" text \" name= \" nextfairyear \" value= \" $nextfairyear\ " /> " ;
echo " <br /> " ;
echo " <input type= \" submit \" value= \" " . i18n ( " Rollover Fair Year " ) . " \" /> " ;
echo " </form> " ;
send_footer ();
?>