science-ation/common.inc.php

542 lines
19 KiB
PHP

<?
/*
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>
Copyright (C) 2005-2010 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.
*/
?>
<?
//bootstrap sets up the session, loads config params, etc, etc.
require_once("common.inc.bootstrap.php");
//functions contains all the common functions besides the header/footer functions
require_once("common.inc.functions.php");
$HEADER_SENT=false;
function send_header($title="", $nav=null, $icon=null, $titletranslated=false) {
global $HEADER_SENT;
global $config;
global $roles;
global $prependdir;
global $conference;
//do this so we can use send_header() a little more loosly and not worry about it being sent more than once.
if($HEADER_SENT) return;
else $HEADER_SENT=true;
?>
<!doctype html>
<html>
<head><title><? if($title && !$titletranslated) echo i18n($title); else if($title) echo $title; else echo i18n($config['fairname']); ?></title>
<link rel="stylesheet" href="<?=$config['SFIABDIRECTORY']?>/theme/<?=$config['theme']?>/jquery-ui-1.7.2.custom.css" type="text/css" media="all" />
<link rel="stylesheet" href="<?=$config['SFIABDIRECTORY']?>/theme/<?=$config['theme']?>/sfiab.css" type="text/css" media="all" />
<link rel="stylesheet" href="<?=$config['SFIABDIRECTORY']?>/tableeditor.css" type="text/css" media="all" />
</head>
<body>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/sfiab.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/validate/jquery.validate.pack.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.tableview').tablesorter();
if($("#importantdatesbox").length)
$("#importantdatesbox").load("important_dates.php?display=box");
});
function taskNav(id,pid,level) {
switch(level) {
case 0: //clicked on a top-level nav, so populate the secondary menu
$("#secondarymenu").load("<?=$config['SFIABDIRECTORY']?>/nav.php?level=1&id="+id);
$("#secondarymenu").show();
$("#tertiarymenu").hide();
$(".primarynav-selected").removeClass("primarynav-selected");
$("#primary_nav_"+id).addClass("primarynav-selected");
break;
case 1: //clicked on a secondary nav, so populate the left-menu
$(".secondarynav-selected").removeClass("secondarynav-selected");
$("#secondary_nav_"+id).addClass("secondarynav-selected");
$("#tertiarymenu_accordion").accordion("destroy");
$("#tertiarymenu_accordion").load("<?=$config['SFIABDIRECTORY']?>/nav.php?level=2&id="+id,null,function() {
$("#tertiarymenu_accordion").accordion({clearStyle: true, collapsible: true, active: false}); //"option", "collapsible", true);
$("#tertiarymenu_accordion").accordion("activate",false);
$("#tertiarymenu").show();
});
break;
}
return false;
}
function taskNavLevel(l1,l2,l3,l4) {
if(l2) {
$("#secondarymenu").load("<?=$config['SFIABDIRECTORY']?>/nav.php?level=1&id="+l1);
$("#secondarymenu").show();
$("#tertiarymenu_accordion").accordion("destroy");
$("#tertiarymenu_accordion").load("<?=$config['SFIABDIRECTORY']?>/nav.php?level=2&id="+l2,null,function() {
$("#tertiarymenu_accordion").accordion({clearStyle: true, collapsible: true, active: false}); //"option", "collapsible", true);
$("#tertiarymenu").show();
$(".primarynav-selected").removeClass("primarynav-selected");
$("#primary_nav_"+l1).addClass("primarynav-selected");
$(".secondarynav-selected").removeClass("secondarynav-selected");
$("#secondary_nav_"+l2).addClass("secondarynav-selected");
if(l3) {
$("#tertiarymenu_accordion").accordion("activate",$("#tertiary_nav_"+l3));
}
if(l4) {
$(".tertiarylinknav-selected").removeClass("tertiarylinknav-selected");
$("#tertiarylink_nav_"+l4).addClass("tertiarylinknav-selected");
}
});
}
}
</script>
<?
//if we're under /admin or /config we also want the translation editor
if(substr(getcwd(),-6)=="/admin" || substr(getcwd(),-7)=="/config")
require_once("../translationseditor.inc.php");
?>
<div id="notice_area" class="notice_area"></div>
<div id="topnav">
<?
echo "<form name=\"languageselect\" method=\"get\" action=\"".$_SERVER['PHP_SELF']."\">";
echo "<a href=\"{$config["SFIABDIRECTORY"]}/contact.php\">".i18n("Contact Us")."</a> &nbsp; | &nbsp; \n";
if(count($config['languages'])>1) {
echo i18n("Language").": ";
echo "<select name=\"switchlanguage\" onchange=\"document.forms.languageselect.submit()\">\n";
foreach($config['languages'] AS $key=>$val) {
if($_SESSION['lang']==$key) $selected="selected=\"selected\""; else $selected="";
echo "<option $selected value=\"$key\">$val</option>";
}
echo "</select>";
}
echo "</form>";
?>
</div>
<div id="header">
<div id="header_logo">
<?
echo "<a href=\"{$config['SFIABDIRECTORY']}/index.php\">";
if(file_exists($prependdir."data/{$conference['id']}-logo-100.gif")) {
echo "<img style=\"border: 0px;\" height=\"70\" src=\"".$config['SFIABDIRECTORY']."/data/{$conference['id']}-logo-100.gif\">";
} else if(file_exists($prependdir."data/logo-100.gif")) {
echo "<img style=\"border: 0px;\" height=\"70\" src=\"".$config['SFIABDIRECTORY']."/data/logo-100.gif\">";
} else {
echo i18n("Home Page");
}
echo "</a>";
?>
</div>
<div id="header_title">
<?
if(!$_SESSION['conferences_id']) {
echo "<h1>".i18n($config['fairname'])."</h1>";
} else {
global $conference;
echo "<h1>".i18n($conference['name'])."</h1>";
}
?>
</div>
<div id="header_conferences">
<?
$q=mysql_query("SELECT * FROM conferences WHERE status='running' ORDER BY name");
if(mysql_num_rows($q)) {
echo "<ul class=\"conferencenav\">";
while($r=mysql_fetch_object($q)) {
if($_SESSION['conferences_id']==$r->id)
$cl="class=\"selected\"";
else
$cl="";
echo "<li $cl><a $cl href=\"{$config['SFIABDIRECTORY']}/user_login.php?action=switchconference&switchconference=$r->id\">$r->name</a></li>\n";
}
echo "</ul>\n";
}
?>
</div>
<div id="header_login">
<?
if(isset($_SESSION['roles']) && $_SESSION['username']) {
echo i18n("Logged in as %1",array($_SESSION['username']))."<br />";
echo "<div style=\"margin-top: 8px;\">\n";
echo "My: <a href=\"{$config['SFIABDIRECTORY']}/user_account.php\">".i18n("Account")."</a>";
echo "&nbsp;|&nbsp;";
echo "<a href=\"{$config['SFIABDIRECTORY']}/user_personal.php\">".i18n("Profile")."</a>";
echo "&nbsp;|&nbsp;";
echo "<a href=\"{$config['SFIABDIRECTORY']}/user_main.php\">".i18n("Main")."</a>";
echo "</div>";
echo "<div style=\"margin-top: 5px;\">\n";
echo "<a href=\"{$config['SFIABDIRECTORY']}/user_login.php?action=logout\">".i18n("Logout")."</a>";
echo "</div>";
} else if(isset($_SESSION['email'])) {
/* Backwards compatible login settings */
if(isset($_SESSION['registration_id'])) {
echo i18n('Participant');
echo " {$_SESSION['email']}: ";
echo "<a href=\"{$config['SFIABDIRECTORY']}/register_participants.php?action=logout\">[".i18n("Logout")."]</a>";
} else {
echo "&nbsp;";
}
} else {
?>
<form method="post" action="user_login.php">
<input type="hidden" name="action" value="login" />
<table cellspacing=1 cellpadding=1><tr><td>
<?=i18n("Username")?>:</td><td><input type="text" size="14" name="username" />
</td></tr><tr><td>
<?=i18n("Password")?>:</td><td><input type="password" size="14" name="password" />
</td></tr>
<tr><td align="center" colspan="2">
<a href="register.php"><?=i18n("Register")?></a>
&nbsp; &nbsp; &nbsp;
<input type="submit" value=<?=i18n("Login")?> />
</td></tr>
</table>
</form>
<?
}
?>
</div>
</div>
<div id="primarymenu">
<?
if(is_array($nav)) {
$navkeys=array_keys($nav);
switch($navkeys[2]) {
case "Fundraising":
echo "<ul class=\"primarynav\">\n";
echo "<li><h4 style=\"text-align: center;\">".i18n("Fundraising")."</h4></li>\n";
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/admin/fundraising.php\">".i18n("Fundraising Dashboard").'</a></li>';
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/admin/fundraising_setup.php\">".i18n("Fundraising Setup").'</a></li>';
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/admin/fundraising_campaigns.php\">".i18n("Manage Appeals").'</a></li>';
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/admin/donors.php\">".i18n("Manage Donors/Sponsors").'</a></li>';
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/admin/fundraising_reports.php\">".i18n("Fundraising Reports").'</a></li>';
echo "</ul><br />\n";
break;
default:
//no special menu
break;
}
}
?>
<ul class="primarynav">
<?
if ($config['website']) {
if ($config['website_name']) {
echo "<li><a href=\"{$config['website']}\">{$config['website_name']}</a></li>";
} else {
echo "<li><a href=\"{$config['website']}\">".i18n("Fair Home").'</a></li>';
}
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/index.php\">".i18n("Registration Home").'</a></li>';
} else {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/index.php\">".i18n("Home").'</a></li>';
}
//if the date is greater than the date/time that the confirmed participants gets posted,
//then we will show the registration confirmation page as a link in the menu,
$registrationconfirmationlink="";
//only display it if a date is set to begin with.
if($config['dates']['postparticipants'] && $config['dates']['postparticipants']!="0000-00-00 00:00:00") {
$q=mysql_query("SELECT (NOW()>'".$config['dates']['regclose']."') AS test");
$r=mysql_fetch_object($q);
if($r->test==1) {
$registrationconfirmationlink="<li><a href=\"".$config['SFIABDIRECTORY']."/confirmed_participants.php\">".i18n("Confirmed Participants")."</a></li>";
}
}
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/important_dates.php\">".i18n("Important Dates").'</a></li>';
echo $registrationconfirmationlink;
/*
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/register_participants.php\">".i18n("Participant Registration").'</a></li>';
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/user_login.php?type=judge\">".i18n("Judges Registration").'</a></li>';
if($config['volunteer_enable'] == 'yes') {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/user_login.php?type=volunteer\">".i18n("Volunteer Registration").'</a></li>';
}
*/
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/committees.php\">".i18n("Committee").'</a></li>';
if($config['show_winners'] == "yes") {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/winners.php\">".i18n("Winners").'</a></li>';
}
if(is_array($_SESSION['roles'])) {
foreach($_SESSION['roles'] AS $roletype) {
$roleid=$roles[$roletype]['id'];
$q=mysql_query("SELECT * FROM rolestasks WHERE roles_id='$roleid' AND pid=0 ORDER BY task");
if(mysql_num_rows($q)==1) {
$setPrimaryNav=true;
}
$cl="";
while($r=mysql_fetch_object($q)) {
if($setPrimarynav) {
$_SESSION['nav']['primary']=$r->id;
$cl="class=\"selected\"";
}
echo "<li id=\"primary_nav_{$r->id}\" $cl>";
echo "<a href=\"#\" onclick=\"return taskNav($r->id,$r->pid,$r->level)\">".i18n($r->task)."</a>";
echo "</li>\n";
}
}
}
?>
<?
if(array_key_exists('users_id', $_SESSION)) {
if(in_array('admin', $_SESSION['roles'])) {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/admin/\">".i18n("Administration").' (old) </a></li>';
}
if(in_array('config', $_SESSION['roles'])) {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/config/\">".i18n("Configuration").' (old) </a></li>';
}
if($_SESSION['superuser'] == 'yes') {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/super/\">".i18n("System Setup").'</a></li>';
}
if(in_array('volunteer', $_SESSION['roles'])) {
// echo "<li><a href=\"{$config['SFIABDIRECTORY']}/volunteer_main.php\">".i18n("Volunteer Home").'</a></li>';
}
if(in_array('sponsor', $_SESSION['roles'])) {
// echo "<li><a href=\"{$config['SFIABDIRECTORY']}/sponsor_main.php\">".i18n("Sponsor Home").'</a></li>';
}
/* FIXME: setting the schoolid should move to the user_login routine, so we can just test for
* the presence of the school/teacher/principal role here */
if($_SESSION['schoolid'] && $_SESSION['schoolaccesscode']) {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/schoolaccess.php\">".i18n("School Home").'</a></li>';
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/schoolaccess.php?action=logout\">".i18n("Logout").'</a></li>';
}
if(in_array('student', $_SESSION['roles'])) {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/register_participants_main.php\">".i18n("Participant Home").'</a></li>';
}
}
?>
</ul>
</div>
<div id="secondarymenu">
</div>
<div id="tertiarymenu">
<div id="tertiarymenu_accordion">
</div>
</div>
<?
//take SFIABDIRECTORY off of the current URL
$pageurl=substr($_SERVER['PHP_SELF'],strlen($config['SFIABDIRECTORY']));
$q=mysql_query("SELECT * FROM rolestasks WHERE link='".mysql_real_escape_string($pageurl)."'");
if($r=mysql_fetch_object($q)) {
//okay we found it, now what do we do?
//FIXME: we need to populate the secondarynva, tertiarynav, and select the right thing in the accordion,
//because we cannot assume that the user navigated to this page via the pri/sec/ter nav menus
$navTree=array();
upTree($r->id,&$navTree);
$_SESSION['nav']['primary']=0;
$_SESSION['nav']['secondary']=0;
$_SESSION['nav']['tertiary']=0;
$_SESSION['nav']['tertiarylink']=0;
foreach($navTree AS $t) {
switch($t['level']) {
case 0: //primary nav
$_SESSION['nav']['primary']=$t['id'];
// echo "$(\"#primary_nav_".$t['id']."\").addClass('primarynav-selected');";
break;
case 1: //secondary nav
$_SESSION['nav']['secondary']=$t['id'];
// echo "$(\"#secondary_nav_".$t['id']."\").addClass('secondarynav-selected');";
break;
case 2: //tertiary nav heading
$_SESSION['nav']['tertiary']=$t['id'];
break;
case 3: //tertiary nav link
$_SESSION['nav']['tertiarylink']=$t['id'];
break;
}
}
echo "<script type=\"text/javascript\">";
echo " $(document).ready(function() {\n";
echo "taskNavLevel({$_SESSION['nav']['primary']},
{$_SESSION['nav']['secondary']},
{$_SESSION['nav']['tertiary']},
{$_SESSION['nav']['tertiarylink']}
);";
echo " });";
echo "</script>\n";
}
/*
if(is_array($nav)) {
echo "<div id=\"mainwhere\">".i18n('You are here:').' ';
foreach($nav as $t=>$l) {
echo "<a href=\"{$config['SFIABDIRECTORY']}/$l\">".i18n($t).'</a> &raquo; ';
}
if(!$titletranslated)
echo i18n($title);
else
echo $title;
echo '</div>';
}
*/
?>
<div id="main">
<?
if(is_array($_SESSION['roles'])) {
$has_config = array_key_exists('config', $_SESSION['roles']);
$has_admin = array_key_exists('admin', $_SESSION['roles']);
if($has_config || $has_admin)
committee_warnings();
if($has_config)
config_warnings();
if($has_admin)
admin_warnings();
}
if(substr(getcwd(),-6)!="/admin" && substr(getcwd(),-7)!="/config" && substr(getcwd(),-6)!="/super") {
?>
<div id="importantdatesbox">
</div>
<?
}
if($icon && theme_icon($icon)) {
echo "<div style=\"float: left; margin-right: 5px;\">";
echo theme_icon($icon);
echo "</div>";
}
//if we're under /admin or /config then we want to show the ? help icon
if(substr(getcwd(),-6)=="/admin" || substr(getcwd(),-7)=="/config" || substr(getcwd(),-6)=="/super") {
if($_SERVER['REDIRECT_SCRIPT_URL'])
$fname=substr($_SERVER['REDIRECT_SCRIPT_URL'],strlen($config['SFIABDIRECTORY'])+1);
else
$fname=substr($_SERVER['PHP_SELF'],strlen($config['SFIABDIRECTORY'])+1);
echo "<div style=\"float: right;\"<a target=\"_sfiabhelp\" href=\"http://www.sfiab.ca/wiki/index.php/Help_$fname\"><img border=\"0\" src=\"".$config['SFIABDIRECTORY']."/images/32/help.".$config['icon_extension']."\"></a></div>";
}
if($title && !$titletranslated)
echo "<h2>".i18n($title)."</h2>";
else if($title)
echo "<h2>".$title."</h2>";
display_messages();
}
/* END OF send_header */
function send_footer() {
global $config;
?>
</div>
<div id="footer">
<?
//we only show the debug session variables if we have an ODD numbered version.
if(substr($config['version'], -1) % 2 != 0)
{
$revision=exec("svn info |grep Revision");
$extra=" (Development $revision)";
if($_SESSION['debug']=="true")
$extra.=" DEBUG: ".print_r($_SESSION,true);
}
echo "<a target=\"blank\" href=\"http://www.sfiab.ca\">SFIAB Version ".$config['version']."{$extra}</a>";
?>
</div>
<div id="debug" style="display:<?=($_SESSION['debug']=='true')?'block':'none'?>; font-family:monospace; white-space:pre; " >Debug...</div>
<iframe id="content" src="" style="visibility:hidden; width:0px; height:0px"></iframe>
</body>
</html>
<?
}
function send_popup_header($title="") {
global $HEADER_SENT;
global $config;
//do this so we can use send_header() a little more loosly and not worry about it being sent more than once.
if($HEADER_SENT) return;
else $HEADER_SENT=true;
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head><title><?=i18n($title)?></title>
<link rel="stylesheet" href="<?=$config['SFIABDIRECTORY']?>/theme/<?=$config['theme']?>/jquery-ui-1.7.2.custom.css" type="text/css" media="all" />
<link rel="stylesheet" href="<?=$config['SFIABDIRECTORY']?>/theme/<?=$config['theme']?>/sfiab.css" type="text/css" media="all" />
<link media=all href="<?=$config['SFIABDIRECTORY']?>/tableeditor.css" type=text/css rel=stylesheet>
</head>
<body onload="window.focus()">
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/sfiab.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/validate/jquery.validate.pack.js"></script>
<div id="notice_area" class="notice_area"></div>
<?
if($title)
echo "<h2>".i18n($title)."</h2>";
}
function send_popup_footer() {
?>
<br />
<br />
<div id="footer">
<?
global $config;
$lastdigit=$config['version'][strlen($config['version'])-1];
if($lastdigit%2!=0)
{
echo "DEBUG:";
print_r($_SESSION);
}
echo "SFIAB Version ".$config['version'];
?>
</div>
<div id="debug" style="display:<?=($_SESSION['debug']=='true')?'block':'none'?>">Debug...</div>
<iframe id="content" src="" style="visibility:hidden; width:0px; height:0px"></iframe>
</body>
</html>
<?
}
?>