forked from science-ation/science-ation
144 lines
4.6 KiB
PHP
144 lines
4.6 KiB
PHP
<?
|
|
include "../common.inc.php";
|
|
|
|
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;
|
|
}
|
|
|
|
// ok, the request checks out, let's go ahead and do the rollover
|
|
echo rolloverfiscalyear($year);
|
|
break;
|
|
default:
|
|
|
|
}
|
|
exit;
|
|
}
|
|
|
|
send_header("Fiscal Rollover");
|
|
//echo "not implemented yet";
|
|
draw_body();
|
|
send_footer();
|
|
exit;
|
|
|
|
|
|
function draw_body(){
|
|
global $config;
|
|
?>
|
|
|
|
<script language="javascript" type="text/javascript">
|
|
function confirmYearRollover(){
|
|
var currentyear = <?=$config['FISCALYEAR']?>;
|
|
var nextyear = document.forms.rollover.nextfiscalyear.value;
|
|
|
|
var okay=confirm('Are you sure you want to roll the FISCALYEAR from '+currentyear+' to '+nextyear+'? This can not be undone and should only be done if you are absolutely sure!');
|
|
if(okay){
|
|
$.post('rolloverfiscal.php', {'action':'rollover', 'year':$('#nextfiscalyear').val()}, function(result){
|
|
$('#results').html(result);
|
|
});
|
|
}
|
|
return false;
|
|
}
|
|
</script>
|
|
<?
|
|
echo "<br />";
|
|
echo "<a href=\"backuprestore.php\">".i18n("You should consider making a database backup before rolling over, just in case!")."</a><br />\n";
|
|
echo "<br />";
|
|
echo "<form name=\"rollover\" method=\"post\" action=\"rolloverfiscal.php\" onsubmit=\"return confirmYearRollover()\">";
|
|
echo i18n("Current Fiscal Year").": <b>".$config['FISCALYEAR']."</b><br />";
|
|
$nextfiscalyear = $config['FISCALYEAR'] + 1;
|
|
echo i18n("Next Fiscal Year").": <input size=\"8\" type=\"text\" id=\"nextfiscalyear\" value=\"$nextfiscalyear\" />";
|
|
echo "<br />";
|
|
echo "<input type=\"submit\" value=\"".i18n("Rollover Fiscal Year")."\" />";
|
|
echo "</form>";
|
|
echo "<div id=\"results\"></div>";
|
|
}
|
|
|
|
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());
|
|
}
|
|
|
|
}
|