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 " "; + echo " "; echo " "; 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 @@ "; - 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 "".i18n("You should consider making a database backup before rolling over, just in case!")."
\n"; + echo "
"; + echo ""; + echo i18n("Current Fiscal Year").": ".$config['FISCALYEAR']."
"; + $nextfiscalyear = $config['FISCALYEAR'] + 1; + echo i18n("Next Fiscal Year").": "; + echo "
"; + 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
".theme_icon("rollover_fair_year")."
".i18n("Rollover Fair Year")."
".theme_icon("rollover_fiscal_year")."
".i18n("Rollover Fiscal Year")."
".theme_icon("backup_restore")."
".i18n("Database Backup/Restore")."