diff --git a/config/index.php b/config/index.php
index 2d3a9bb..95fc9e5 100644
--- a/config/index.php
+++ b/config/index.php
@@ -65,6 +65,7 @@
echo "
";
echo " ";
echo " ".theme_icon("rollover_fair_year")." ".i18n("Rollover Fair Year")." | ";
+ echo " ".theme_icon("rollover_fiscal_year")." ".i18n("Rollover Fiscal Year")." | ";
echo " ".theme_icon("backup_restore")." ".i18n("Database Backup/Restore")." | ";
echo " | \n";
echo " | \n";
diff --git a/config/rolloverfiscal.php b/config/rolloverfiscal.php
index c323b51..d839186 100644
--- a/config/rolloverfiscal.php
+++ b/config/rolloverfiscal.php
@@ -1,22 +1,147 @@
//FIXME: I just ripped these out of the fair year rollover since they are no longer tied to the fair year, they are now tied to the FISCAL year, we'll need to implement a new fiscal year rollover mechanism similar to the fairyear rollover
//FIXME: The table names are also wrong since i've now renamed htem all, will fix when the fiscal rollover is implemented
- echo i18n("Rolling fundraising goals")."
";
- roll($currentfairyear, $newfairyear, "fundraising",
- array("type","name","description","system","goal"));
+include "../common.inc.php";
- echo i18n("Rolling sponsorship levels")."
";
- roll($currentfairyear, $newfairyear, "sponsorships_levels",
- array("level","min","max","description"));
+if(array_key_exists('action', $_POST)){
+ switch($_POST['action']){
+ case 'rollover':
+ // error check the data that's getting posted
+ $year = $_POST['year'];
+ if(!is_numeric($year)){
+ error_("Not a valid year");
+ break;
+ }
+ if($year <= $config['FISCALYEAR']){
+ error_("The new fiscal year must be after the current one");
+ break;
+ }
- echo i18n("Rolling sponsorships")."
";
- roll($currentfairyear, $newfairyear, "sponsorships",
- array("sponsors_id","fundraising_type","value")); //no need to roll status or probability, because we're about to reset them..
- mysql_query("UPDATE sponsorships SET status='pending', probability=25 WHERE year='$newfairyear'");
- $q=mysql_query("SELECT * FROM sponsorships WHERE year='$newfairyear'");
- while($r=mysql_fetch_object($q)) {
- mysql_query("INSERT INTO sponsors_logs (sponsors_id,dt,users_id,log) VALUES ('$r->sponsors_id',NOW(),'{$_SESSION['auth_user_id']}','Fair year rollover - reset status=pending, probability=25\%')");
- }
+ // ok, the request checks out, let's go ahead and do the rollover
+// echo "Updating to the year $year";
+ echo rolloverfiscalyear($year);
+ break;
+ default:
+ }
+ exit;
+}
+ send_header("Fiscal Year Rollover",
+ array('Committee Main' => 'committee_main.php',
+ 'SFIAB Configuration' => 'config/index.php')
+ ,"rollover_fiscal_year"
+ );
+draw_body();
+send_footer();
+exit;
+function draw_body(){
+ global $config;
?>
+
+
+
+ echo "
";
+ echo "".i18n("You should consider making a database backup before rolling over, just in case!")."
\n";
+ echo "
";
+ echo "";
+ echo "";
+}
+
+function rolloverfiscalyear($newYear){
+ global $config;
+ $oldYear = $config['FISCALYEAR'];
+ $yearDiff = $newYear - $oldYear;
+
+ // first we'll roll over fundraising_campaigns:
+ $fields = "`name`,`type`,`startdate`,`enddate`,`followupdate`,`active`,`target`,`fundraising_goal`,`filterparameters`";
+ $q = mysql_query("SELECT $fields FROM fundraising_campaigns WHERE fiscalyear = $oldYear");
+ while(mysql_error() == null && $r = mysql_fetch_assoc($q)){
+ foreach(array('startdate','enddate','followupdate') as $dateField){
+ $dateval = $r[$dateField];
+ $parts = explode('-', $dateval);
+ if($parts[0] != '0000')
+ $parts[0] += $yearDiff;
+ $r[$dateField] = implode('-', $parts);
+ }
+ $r['fiscalyear'] = $newYear;
+
+ $fields = array_keys($r);
+ $values = array_values($r);
+ foreach($values as $idx => $val){
+ $values[$idx] = mysql_real_escape_string($val);
+ }
+ $query = "INSERT INTO fundraising_campaigns (`" . implode("`,`", $fields) . "`) VALUES('" . implode("','", $values) . "')";
+ mysql_query($query);
+ }
+
+ // next we'll hit findraising_donor_levels
+ $fields = "`level`,`min`,`max`,`description`";
+ if(mysql_error() == null)
+ $q = mysql_query("SELECT $fields FROM fundraising_donor_levels WHERE fiscalyear = $oldYear");
+ while(mysql_error() == null && $r = mysql_fetch_assoc($q)){
+ $r['fiscalyear'] = $newYear;
+ $fields = array_keys($r);
+ $values = array_values($r);
+ foreach($values as $idx => $val){
+ $values[$idx] = mysql_real_escape_string($val);
+ }
+ $query = "INSERT INTO fundraising_donor_levels (`" . implode("`,`", $fields) . "`) VALUES('" . implode("','", $values) . "')";
+ mysql_query($query);
+ }
+
+ // and now we'll do findraising_goals
+ $fields = "`goal`,`name`,`description`,`system`,`budget`,`deadline`";
+ if(mysql_error() == null){
+ $q = mysql_query("SELECT $fields FROM fundraising_goals WHERE fiscalyear = $oldYear");
+ }
+ while(mysql_error() == null && $r = mysql_fetch_assoc($q)){
+ $dateval = $r['deadline'];
+ $parts = explode('-', $dateval);
+ if($parts[0] != '0000')
+ $parts[0] += $yearDiff;
+ $r['deadline'] = implode('-', $parts);
+
+ $r['fiscalyear'] = $newYear;
+
+ $fields = array_keys($r);
+ $values = array_values($r);
+ foreach($values as $idx => $val){
+ $values[$idx] = mysql_real_escape_string($val);
+ }
+ $query = "INSERT INTO fundraising_goals (`" . implode("`,`", $fields) . "`) VALUES('" . implode("','", $values) . "')";
+ mysql_query($query);
+ }
+
+ // finally, let's update the fiscal year itself:
+ if(mysql_error() == null){
+ mysql_query("UPDATE config SET val='$newYear' WHERE var='FISCALYEAR'");
+ }
+
+ if(mysql_error() == null){
+ $config['FISCALYEAR'] = $newYear;
+ echo happy(i18n("Fiscal year has been rolled over from %1 to %2", array($oldYear, $newYear)));
+ }else{
+ echo error(mysql_error());
+ }
+
+}
diff --git a/theme/icons_default/icons.php b/theme/icons_default/icons.php
index 1454313..5ed44d8 100644
--- a/theme/icons_default/icons.php
+++ b/theme/icons_default/icons.php
@@ -71,6 +71,7 @@
$theme_icons['icons']['language_pack_installer']="kanagram.png";
$theme_icons['icons']['new_version_checker']="numbers.png";
$theme_icons['icons']['rollover_fair_year']="svn_switch.png";
+ $theme_icons['icons']['rollover_fiscal_year']="rollover_fiscal.png";
$theme_icons['icons']['backup_restore']="rebuild.png";
?>
diff --git a/theme/icons_default/rollover_fiscal.png b/theme/icons_default/rollover_fiscal.png
new file mode 100644
index 0000000..6394938
Binary files /dev/null and b/theme/icons_default/rollover_fiscal.png differ