science-ation/admin/fundraising_campaigns.php

505 lines
19 KiB
PHP

<?
/*
This file is part of the 'Science Fair In A Box' project
SFIAB Website: http://www.sfiab.ca
Copyright (C) 2009 James Grant <james@lightbox.org>
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");
require_once("../user.inc.php");
user_auth_required('committee', 'admin');
require("fundraising_common.inc.php");
switch($_GET['action']){
case "campaigninfo_save":
save_campaign_info();
exit;
break;
case "modify":
echo "<div id=\"campaignaccordion\" style=\"width: 780px;\">\n";
$q=mysql_query("SELECT * FROM fundraising_campaigns WHERE fiscalyear='{$config['FISCALYEAR']}' ORDER BY name");
while($r=mysql_fetch_object($q)) {
echo "<h3><a href=\"#\">".htmlspecialchars($r->name)."</a></h3>\n";
echo "<div id=\"campaign_{$r->id}\">\n";
echo "<form id=\"campaigninfo_{$r->id}\" method=\"post\" action=\"{$_SERVER['PHP_SELF']}\" onsubmit=\"return campaigninfo_save($r->id)\">\n";
echo "<input type=\"hidden\" name=\"campaign_id\" value=\"{$r->id}\" />\n";
echo "<table>\n";
display_campaign_form($r);
?>
<tr><td colspan="6" style="text-align: center;">
<br />
<input type="submit" value="<?=i18n("Save Campaign")?>"></td>
</tr>
</table>
</form>
</div>
<?
}
?>
<h3><a href="#"><?=i18n("Create New Campaign")?></a></h3>
<div id="campaign_new">
<form id="campaigninfo_new" method="post" action="<?=$_SERVER['PHP_SELF']?>" onsubmit="return campaigninfo_save(-1)">
<input type="hidden" name="campaign_id" value="-1" />
<table>
<?
display_campaign_form();
?>
<tr><td colspan="6" style="text-align: center;">
<br />
<input type="submit" value="<?=i18n("Create Campaign")?>"></td>
</tr>
</table>
</form>
</div>
</div>
<?
exit;
break;
case "managelist":
echo i18n("Select a campaign");
?>
<table class="tableview">
<tr>
<th><?=i18n("Name")?></th>
<th><?=i18n("Type")?></th>
<th><?=i18n("Start Date")?></th>
<th><?=i18n("End Date")?></th>
<th><?=i18n("Goal")?></th>
<th><?=i18n("Target($)")?></th>
<th><?=i18n("Received")?></th>
<th><?=i18n("% to Budget")?></th>
</tr>
<?
$q=mysql_query("SELECT * FROM fundraising_campaigns WHERE fiscalyear='{$config['FISCALYEAR']}'");
while($r=mysql_fetch_object($q)) {
$goalq=mysql_query("SELECT * FROM fundraising_goals WHERE goal='{$r->fundraising_goal}' AND fiscalyear='{$config['FISCALYEAR']}'");
$goalr=mysql_fetch_object($goalq);
$recq=mysql_query("SELECT SUM(value) AS received FROM fundraising_donations WHERE fundraising_campaigns_id='$r->id' AND fiscalyear='{$config['FISCALYEAR']}' AND status='received'");
echo mysql_error();
$recr=mysql_fetch_object($recq);
$received=$recr->received;
if($r->target)
$percent=round($received/$r->target*100,1);
else
$percent=0;
$col=colour_to_percent($percent);
echo "<tr style=\"cursor:pointer;\" onclick=\"return managecampaign($r->id)\">\n";
echo " <td>$r->name</td>\n";
echo " <td>$r->type</td>\n";
echo " <td>".format_date($r->startdate)."</td>\n";
echo " <td>".format_date($r->enddate)."</td>";
echo " <td>$goalr->name</td>";
echo " <td style=\"text-align: right;\">".format_money($r->target,false)."</td>\n";
echo " <td style=\"text-align: right;\">".format_money($received,false)."</td>\n";
echo " <td style=\"text-align: center; background-color: $col;\">{$percent}%</td>\n";
echo "</tr>\n";
}
?>
</table>
<br />
<?
exit;
break;
case "manage":
if(!$_GET['id']) {
error_("Missing campaign to manage");
exit;
}
$id=intval($_GET['id']);
$q=mysql_query("SELECT * FROM fundraising_campaigns WHERE id='$id'");
$campaign=mysql_fetch_object($q);
echo "<h3>$campaign->name</h3>\n";
?>
<div id="campaign_tabs">
<ul>
<li><a href="#campaign_tab_overview"><span><?=i18n('Overview')?></span></a></li>
<li><a href="#campaign_tab_donations"><span><?=i18n('Donations/Sponsorships')?></span></a></li>
<li><a href="#campaign_tab_prospects"><span><?=i18n('Prospects')?></span></a></li>
<li><a href="#campaign_tab_communications"><span><?=i18n('Communications')?></span></a></li>
</ul>
<div id="campaign_tab_overview">
overview tab
</div>
<div id="campaign_tab_donations">
donations tab
</div>
<div id="campaign_tab_prospects">
prospects tab
</div>
<div id="campaign_tab_communications">
communications tab
</div>
</div>
<?
exit;
break;
case "manage_tab_overview":
$campaign_id=intval($_GET['id']);
$q=mysql_query("SELECT * FROM fundraising_campaigns WHERE id='$campaign_id' AND fiscalyear='{$config['FISCALYEAR']}'");
if($r=mysql_fetch_object($q)) {
$goalq=mysql_query("SELECT * FROM fundraising_goals WHERE goal='{$r->fundraising_goal}' AND fiscalyear='{$config['FISCALYEAR']}'");
$goalr=mysql_fetch_object($goalq);
$recq=mysql_query("SELECT SUM(value) AS received FROM fundraising_donations WHERE fundraising_campaigns_id='$r->id' AND fiscalyear='{$config['FISCALYEAR']}' AND status='received'");
echo mysql_error();
$recr=mysql_fetch_object($recq);
$received=$recr->received;
if($r->target)
$percent=round($received/$r->target*100,1);
else
$percent=0;
$col=colour_to_percent($percent);
echo "<table cellspacing=\"3\" cellpadding=\"3\">";
echo "<tr>\n";
echo " <td>".i18n("Type")."</td><td>$r->type</td></tr>\n";
echo " <td>".i18n("Start Date")."</td><td>".format_date($r->startdate)."</td>\n";
echo "</tr>\n";
echo " <td>".i18n("Follow-Up Date")."</td><td>".format_date($r->followupdate)."</td>";
echo "</tr>\n";
echo " <td>".i18n("End Date")."</td><td>".format_date($r->enddate)."</td>";
echo "</tr>\n";
echo " <td>".i18n("Default Goal")."</td><td>$goalr->name</td>";
echo "</tr>\n";
echo " <td>".i18n("Target")."</td><td>".format_money($r->target,false)."</td>\n";
echo "</tr>\n";
echo " <td>".i18n("Received")."</td><td>".format_money($received,false)."</td>\n";
echo "</tr>\n";
echo " <td>".i18n("% to Budget")."</td><td style=\"color: $col;\">{$percent}%</td>\n";
echo "</tr>\n";
echo "</table>\n";
}
exit;
break;
case "manage_tab_donations":
$campaign_id=intval($_GET['id']);
$q=mysql_query("SELECT * FROM fundraising_campaigns WHERE id='$campaign_id' AND fiscalyear='{$config['FISCALYEAR']}'");
if($r=mysql_fetch_object($q)) {
}
exit;
break;
case "manage_tab_prospects":
$campaign_id=intval($_GET['id']);
$q=mysql_query("SELECT * FROM fundraising_campaigns WHERE id='$campaign_id' AND fiscalyear='{$config['FISCALYEAR']}'");
?>
<h4>Choose Prospects</h4>
<form id="prospectform">
<table>
<tr><td style="width: 130px;"><?=i18n("Type")?>:</td><td>
<label><input type="radio" name="donortype" value="organization" onchange="donortypechange()" ><?=i18n("Organization")?></label><br />
<label><input type="radio" name="donortype" value="individual" onchange="donortypechange()" ><?=i18n("Individual")?></label><br />
</td></tr>
</table>
<div id="prospect_common" style="display: none;">
<hr />
<table>
<tr><td style="width: 130px;"><?=i18n("Donation History")?>:</td><td>
<label><input onchange="return prospect_search()" type="checkbox" name="donationhistory[]" value="never"><?=i18n("Never donated/sponsored")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="donationhistory[]" value="past"><?=i18n("Donated/sponsored in the past")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="donationhistory[]" value="lastyear"><?=i18n("Donated/sponsored last year")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="donationhistory[]" value="thisyear"><?=i18n("Donated/sponsored this year")?></label><br />
</td></tr>
<tr><td><?=i18n("Donation Level")?>:</td><td>
<?
$q=mysql_query("SELECT * FROM fundraising_donor_levels WHERE fiscalyear='{$config['FISCALYEAR']}' ORDER BY min");
while($r=mysql_fetch_object($q)) {
echo "<label><input onchange=\"return prospect_search()\" type=\"checkbox\" name=\"donationlevel[]\" value=\"$r->level\" >".i18n($r->level)." (".format_money($r->min,false)." - ".format_money($r->max,false).")</label><br />\n";
}
?>
</td></tr>
<tr><td><?=i18n("Email Address")?>:</td><td>
<label><input onchange="return prospect_search()" type="checkbox" name="emailaddress[]" value="available"><?=i18n("Available")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="emailaddress[]" value="notavailable"><?=i18n("Not Available")?></label><br />
</td></tr>
</table>
</div>
<div id="prospect_individual" style="display: none;">
<table>
<tr><td style="width: 130px;"><?=i18n("Role")?>:</td><td>
<label><input onchange="return prospect_search()" type="checkbox" name="individual_type[]" value="judge"><?=i18n("Judge")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="individual_type[]" value="teacher"><?=i18n("Teacher")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="individual_type[]" value="sciencehead"><?=i18n("School Science Head")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="individual_type[]" value="principal"><?=i18n("School Principal")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="individual_type[]" value="parent"><?=i18n("Parent/Guardian")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="individual_type[]" value="mentor"><?=i18n("Mentor")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="individual_type[]" value="committee"><?=i18n("Committee")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="individual_type[]" value="volunteer"><?=i18n("Volunteer")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="individual_type[]" value="students"><?=i18n("Students")?></label><br />
</td></tr></table>
</div>
<div id="prospect_organization" style="display: none;">
<table>
<tr><td style="width: 130px;"><?=i18n("Role")?>:</td><td>
<label><input onchange="return prospect_search()" type="checkbox" name="contacttype[]" value="primary"><?=i18n("Primary contacts")?></label><br />
<label><input onchange="return prospect_search()" type="checkbox" name="contacttype[]" value="secondary"><?=i18n("Secondary contacts")?></label><br />
</td></tr></table>
</div>
<hr />
<div id="prospectsearchresults"></div>
</form>
<?
exit;
break;
case "manage_tab_communications":
$campaign_id=intval($_GET['id']);
$q=mysql_query("SELECT * FROM fundraising_campaigns WHERE id='$campaign_id' AND fiscalyear='{$config['FISCALYEAR']}'");
if($r=mysql_fetch_object($q)) {
}
exit;
break;
}
function save_campaign_info(){
global $config;
if(!$_POST['name']){
error_("Campaign Name is required");
return;
}
if(!$_POST['startdate']) $startdate=date("Y-m-d"); else $startdate=$_POST['startdate'];
if(!$_GET['id']) {
$query = "INSERT INTO fundraising_campaigns (name,fiscalyear) VALUES (
'".mysql_real_escape_string($_POST['name'])."','{$config['FISCALYEAR']}')";
mysql_query($query);
$id = mysql_insert_id();
happy_("Campaign Created");
}else{
$id = $_GET["id"];
happy_("Campaign Saved");
}
mysql_query("UPDATE fundraising_campaigns SET
name='".mysql_real_escape_string($_POST['name'])."',
`type`='".mysql_real_escape_string($_POST['type'])."',
startdate='".mysql_real_escape_string($startdate)."',
followupdate='".mysql_real_escape_string($_POST['followupdate'])."',
enddate='".mysql_real_escape_string($_POST['enddate'])."',
target='".mysql_real_escape_string($_POST['target'])."',
fundraising_goal='".mysql_real_escape_string($_POST['fundraising_goal'])."'
WHERE id='$id'");
}
send_header("Campaign Management",
array('Committee Main' => 'committee_main.php',
'Administration' => 'admin/index.php',
'Fundraising' => 'admin/fundraising.php'),
"fundraising"
);
?>
<script type="text/javascript">
$(document).ready(function() {
<?
if($_GET['manage_campaign']) {
echo "managecampaign(".intval($_GET['manage_campaign']).");\n";
}
else {
echo "managecampaigns();\n";
}
?>
});
function modifycampaigns() {
$("#campaigndiv").show();
$("#campaigndiv").load("<?$_SERVER['PHP_SELF']?>?action=modify", null, function() {modifycampaignsfinish();});
}
function managecampaigns() {
$("#campaigndiv").show();
$("#campaigndiv").load("<?$_SERVER['PHP_SELF']?>?action=managelist", null, function() {managecampaignsfinish();});
}
var currentcampaignid;
function managecampaign(id) {
$("#campaigndiv").show();
$("#campaigndiv").load("<?$_SERVER['PHP_SELF']?>?action=manage&id="+id, null, function() {managecampaignfinish();});
currentcampaignid=id;
}
function modifycampaignsfinish(){
$("#campaignaccordion").accordion();
// create the date pickers for our form
$(".date").datepicker({
dateFormat: 'yy-mm-dd'
});
}
function managecampaignsfinish() {
}
function managecampaignfinish() {
$("#campaign_tabs").tabs({
show: function(event, ui) {
switch(ui.panel.id) {
case 'campaign_tab_overview':
update_tab_overview();
break;
case 'campaign_tab_donations':
update_tab_donations();
break;
case 'campaign_tab_prospects':
update_tab_prospects();
break;
case 'campaign_tab_communications':
update_tab_communications();
break;
}
},
selected: 0,
});
}
function campaigninfo_save(id) {
//if we're creating we need to do the post, and get the id it returns, so we can re-open the popup window with that id
if(id==-1) {
$("#debug").load("<?$_SERVER['PHP_SELF']?>?action=campaigninfo_save", $("#campaigninfo_new").serializeArray(), function() { modifycampaigns(); });
} else {
$("#debug").load("<?$_SERVER['PHP_SELF']?>?action=campaigninfo_save&id="+id, $("#campaigninfo_"+id).serializeArray(), function() { modifycampaigns(); });
}
return false;
}
function update_tab_overview() {
$("#campaign_tab_overview").load("<?$_SERVER['PHP_SELF']?>?action=manage_tab_overview&id="+currentcampaignid);
}
function update_tab_donations() {
$("#campaign_tab_donations").load("<?$_SERVER['PHP_SELF']?>?action=manage_tab_donations&id="+currentcampaignid);
}
function update_tab_prospects() {
$("#campaign_tab_prospects").load("<?$_SERVER['PHP_SELF']?>?action=manage_tab_prospects&id="+currentcampaignid);
}
function update_tab_communications() {
$("#campaign_tab_communications").load("<?$_SERVER['PHP_SELF']?>?action=manage_tab_communications&id="+currentcampaignid);
}
function donortypechange() {
if($("input[@name='donortype']:checked").val()=="organization") {
$("#prospect_common").show('slow');
$("#prospect_organization").show('slow');
$("#prospect_individual").hide('slow');
}
else if($("input[@name='donortype']:checked").val()=="individual") {
$("#prospect_common").show('slow');
$("#prospect_organization").hide('slow');
$("#prospect_individual").show('slow');
}
else {
$("#prospect_common").hide('slow');
}
prospect_search();
}
function prospect_search() {
$("#prospectsearchresults").load("fundraising_campaigns_prospecting.php",$("#prospectform").serializeArray());
return false;
}
</script>
<?
function display_campaign_form($r=null) {
global $config;
global $campaign_types;
?>
<tr>
<td><?=i18n("Name")?></td>
<td colspan="3"><input size="40" type="text" name="name" value="<?=$r->name?>"></td>
<td><?=i18n("Type")?></td><td>
<select name="type">
<option value=""><?=i18n("Choose")?></option>
<?
foreach($campaign_types AS $ct) {
if($r->type==$ct) $sel="selected=\"selected\""; else $sel="";
echo "<option $sel value=\"$ct\">".i18n($ct)."</option>\n";
}
?>
</select>
</td>
</tr>
<?
if($r->startdate) $sd=$r->startdate;
else $sd=date("Y-m-d");
?>
<tr>
<td><?=i18n("Start Date")?></td><td><input type="text" name="startdate" class="date" value="<?=$sd?>" /></td>
<td><?=i18n("Follow-Up Date")?></td><td><input type="text" name="followupdate" class="date" value="<?=$r->followupdate?>" /></td>
<td><?=i18n("End Date")?></td><td><input type="text" name="enddate" class="date" value="<?=$r->enddate?>" /></td>
</tr>
<tr>
<td><?=i18n("Target")?></td><td>$<input type="text" id="target" name="target" size="10" value="<?=$r->target?>" /></td>
<td><?=i18n("Default Goal")?></td><td colspan="3">
<?
$fgq=mysql_query("SELECT * FROM fundraising_goals WHERE fiscalyear='{$config['FISCALYEAR']}' ORDER BY name");
echo "<select name=\"fundraising_goal\">";
echo "<option value=\"\">".i18n("Choose Default Goal")."</option>\n";
while($fgr=mysql_fetch_object($fgq)) {
if($r->fundraising_goal==$fgr->goal) $sel="selected=\"selected\""; else $sel="";
echo "<option $sel value=\"$fgr->goal\">".i18n($fgr->name)."</option>\n";
}
echo "</select>\n";
?>
</td>
</tr>
<?
}
?>
<table cellspacing=2 width=740 border=0>
<tr><td>
<a href="#" onclick="modifycampaigns()">Create/Modify Campaigns</a>
</td><td>
<a href="#" onclick="managecampaigns()">Campaign Management</a>
</td></tr></table>
<hr />
<div id="campaigndiv" style="width: 780px; display: none;">
</div>
<?
send_footer();
?>