forked from science-ation/science-ation
336 lines
11 KiB
PHP
336 lines
11 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 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.
|
|
*/
|
|
?>
|
|
<?
|
|
if($_GET['show_types'])
|
|
$NAV_IDENT=$_GET['show_types'][0];
|
|
if($_POST['show_types'])
|
|
$NAV_IDENT=$_POST['show_types'][0];
|
|
|
|
require_once('../common.inc.php');
|
|
require_once('../user.inc.php');
|
|
require_once('../judge.inc.php');
|
|
user_auth_required('admin');
|
|
|
|
require_once('judges.inc.php');
|
|
|
|
$user_what = array();
|
|
$query = mysql_query("SELECT `type`, `name` FROM roles");
|
|
while($row = mysql_fetch_assoc($query)){
|
|
$user_what[$row['type']] = $row['name'];
|
|
}
|
|
|
|
$show_types = $_GET['show_types'];
|
|
if(user_valid_role($show_types) == false) $show_types = array('judge');
|
|
|
|
$show_complete = ($_GET['show_complete'] == 'yes') ? 'yes' : 'no';
|
|
$show_all = ($_GET['show_all'] == 'yes') ? 'yes' : 'no';
|
|
$uid = intval($_GET['uid']);
|
|
|
|
if($_GET['action']=='remove') {
|
|
if(!$uid) {
|
|
echo "Invalid uid for delete";
|
|
exit;
|
|
}
|
|
user_delete($uid);
|
|
message_push(happy(i18n('User deleted.')));
|
|
}
|
|
|
|
send_header("User Editor",
|
|
array('Committee Main' => 'committee_main.php',
|
|
'Administration' => 'admin/index.php')
|
|
);
|
|
?>
|
|
<script language="javascript" type="text/javascript">
|
|
|
|
function toggleoptions()
|
|
{
|
|
if(document.getElementById('options').style.display == 'none') {
|
|
document.getElementById('options').style.display = 'block';
|
|
document.getElementById('optionstext').innerHTML = '- <?=i18n('Hide Display Options')?>';
|
|
|
|
} else {
|
|
document.getElementById('options').style.display = 'none';
|
|
document.getElementById('optionstext').innerHTML = '+ <?=i18n('Show Display Options')?>';
|
|
}
|
|
}
|
|
|
|
function togglenew()
|
|
{
|
|
if(document.getElementById('new').style.display == 'none') {
|
|
document.getElementById('new').style.display = 'block';
|
|
document.getElementById('newtext').innerHTML = '<?=i18n('Cancel New User')?>';
|
|
|
|
} else {
|
|
document.getElementById('new').style.display = 'none';
|
|
document.getElementById('newtext').innerHTML = '<?=i18n('Add New User')?>';
|
|
}
|
|
}
|
|
|
|
function neweditor()
|
|
{
|
|
var username = document.forms.newuser.new_email.value;
|
|
var usertype = document.forms.newuser.new_type.value;
|
|
window.open("../user_editor_window.php?type="+usertype+"&username="+username,"UserEditor","location=no,menubar=no,directories=no,toolbar=no,width=770,height=500,scrollbars=yes");
|
|
document.forms.newuser.new_email.value = "";
|
|
return false;
|
|
}
|
|
|
|
</script>
|
|
|
|
<?
|
|
echo "<div class=\"notice\">";
|
|
echo "<a id=\"optionstext\" onclick=\"toggleoptions();return false;\">- ".i18n('Show Display Options')."</a>";
|
|
|
|
echo "<form method=\"GET\" action=\"$PHP_SELF\">";
|
|
|
|
echo "<div id=\"options\" style=\"display: none;\" >";
|
|
echo "<table><tr><td>".i18n('Type').":</td>";
|
|
$x = 0;
|
|
foreach($user_what as $k=>$v ) {
|
|
$sel = (in_array($k, $show_types)) ? 'checked="checked"' : '';
|
|
echo "<td><input type=\"radio\" name=\"show_types[]\" value=\"$k\" $sel >".i18n($v)."</input></td>";
|
|
if($x) echo "</tr><tr><td></td>";
|
|
$x = ~$x;
|
|
}
|
|
echo "</tr>";
|
|
|
|
echo "<tr><td>".i18n('Complete').":</td><td>";
|
|
echo "<select name=\"show_complete\">";
|
|
$s = ($show_complete == 'yes') ? 'selected="selected"' : '';
|
|
echo "<option value=\"yes\" $s>".i18n('Show only complete registrations')."</option>";
|
|
$s = ($show_complete == 'no') ? 'selected="selected"' : '';
|
|
echo "<option value=\"no\" $s>".i18n('Show ALL registrations')."</option>";
|
|
echo "</select>";
|
|
|
|
echo "</tr>";
|
|
echo "<tr><td>".i18n('Conference').":</td><td>";
|
|
echo "<select name=\"show_all\">";
|
|
$s = ($show_all == 'no') ? 'selected="selected"' : '';
|
|
echo "<option value=\"no\" $s>".i18n('Show only registrations from this conference')."</option>";
|
|
$s = ($show_all == 'yes') ? 'selected="selected"' : '';
|
|
echo "<option value=\"yes\" $s>".i18n('Show ALL conferences')."</option>";
|
|
echo "</select>";
|
|
echo "</td></tr></table>";
|
|
echo "<br />";
|
|
echo "<input type=submit value=\"".i18n('Apply Filter')."\">";
|
|
echo "</div>";
|
|
echo "</form>";
|
|
|
|
echo "</div>";
|
|
|
|
|
|
echo "<br/><a id=\"newtext\" href=\"javascript:togglenew()\">".i18n('Add New User')."</a>";
|
|
echo '<div id="new" style="display: none;" class="notice">';
|
|
echo "<form name=\"newuser\" method=\"GET\" action=\"$PHP_SELF\">";
|
|
echo "<table><tr><td>".i18n('Type').":</td><td>";
|
|
echo "<select name=\"new_type\">";
|
|
$x = 0;
|
|
foreach($user_what as $k=>$v ) {
|
|
$sel = (in_array($k, $show_types)) ? 'selected="selected"' : '';
|
|
echo "<option value=\"$k\" $sel>".i18n($v)."</option>";
|
|
}
|
|
echo "</select>";
|
|
echo "</tr>";
|
|
echo "<tr><td>".i18n('Email').":</td><td>";
|
|
echo '<input type="text" name="new_email" value="" />';
|
|
echo '</td></tr>';
|
|
echo '</table>';
|
|
echo "<input type=submit onclick=\"neweditor();\" value=\"".i18n('Create New User')."\">";
|
|
|
|
echo '</form>';
|
|
|
|
echo '</div>';
|
|
echo "<br />";
|
|
echo "<br />";
|
|
|
|
/* Grab a list of users */
|
|
$clauses = array();
|
|
$showroles = array();
|
|
foreach($show_types as $t){
|
|
$showroles[] = "type = '$t'";
|
|
}
|
|
if(count($showroles) > 0) $clauses[] = 'user_roles.roles_id IN(SELECT id FROM roles WHERE ' . implode(' OR ', $showroles) . ')';
|
|
if($show_complete == 'yes') $clauses[] = 'user_roles.complete = "yes"';
|
|
if($show_all == 'no') $clauses[] = "users.conferences_id={$conference['id']}";
|
|
|
|
$querystr =
|
|
"SELECT users.*,
|
|
accounts.username,
|
|
accounts.email AS emailaddress,
|
|
user_roles.accounts_id, user_roles.roles_id, user_roles.active, user_roles.complete,
|
|
roles.type,
|
|
conferences.name AS conference_name
|
|
FROM users
|
|
JOIN user_roles ON user_roles.users_id = users.id
|
|
JOIN roles ON user_roles.roles_id=roles.id
|
|
JOIN conferences ON users.conferences_id = conferences.id
|
|
JOIN accounts ON user_roles.accounts_id=accounts.id";
|
|
|
|
if(count($clauses) > 0){
|
|
$querystr .= " WHERE " . implode(' AND ', $clauses) . " ";
|
|
}
|
|
|
|
$querystr .= "
|
|
ORDER BY lastname ASC, firstname ASC, conferences_id DESC ";
|
|
|
|
/*
|
|
echo $querystr;
|
|
echo "<br />\n";
|
|
echo "<br />\n";
|
|
*/
|
|
$q = mysql_query($querystr);
|
|
echo mysql_error();
|
|
echo "<br />\n";
|
|
$num = mysql_num_rows($q);
|
|
echo i18n("Listing %1 people total. See the bottom for breakdown by complete status",array($num));
|
|
|
|
echo mysql_error();
|
|
echo "<table class=\"tableview\">";
|
|
echo "<thead>";
|
|
echo "<tr>";
|
|
echo " <th>".i18n("Name")."</th>";
|
|
echo " <th>".i18n("Username")."</th>";
|
|
echo " <th>".i18n("Email Address")."</th>";
|
|
echo " <th>".i18n("Conference")."</th>";
|
|
// echo " <th>".i18n("Type(s)")."</th>";
|
|
echo " <th>".i18n("Active")."</th>";
|
|
echo " <th>".i18n("Complete")."</th>";
|
|
echo " <th>".i18n("Actions")."</th>";
|
|
echo "</tr>";
|
|
echo "</thead>";
|
|
echo "<tbody>";
|
|
|
|
$tally = array();
|
|
$tally['active'] = array();
|
|
$tally['inactive'] = array();
|
|
$tally['active']['complete'] = 0;
|
|
$tally['active']['incomplete'] = 0;
|
|
$tally['active']['na'] = 0;
|
|
$tally['inactive']['complete'] = 0;
|
|
$tally['inactive']['incomplete'] = 0;
|
|
$tally['inactive']['na'] = 0;
|
|
while($r=mysql_fetch_assoc($q)) {
|
|
// get the role data for this user
|
|
echo "<tr><td>";
|
|
|
|
$name = "{$r['firstname']} {$r['lastname']}";
|
|
|
|
if($r['type']=='fair') {
|
|
$qq = mysql_query("SELECT * FROM fairs WHERE id = " . $r['fairs_id']);
|
|
echo $qq.";<br/>";
|
|
$rr = mysql_fetch_assoc($qq);
|
|
$name = "{$rr['name']}".((trim($name)=='') ? '' : "<br />($name)");
|
|
}
|
|
if(strlen(trim($name)) == 0) $name = "<" . i18n("not specified") . ">";
|
|
|
|
echo "<a href=\"#\" onclick=\"return openeditor({$r['id']})\">$name</a>";
|
|
echo "</td>";
|
|
|
|
echo "<td>{$r['username']}</td>";
|
|
echo "<td>{$r['emailaddress']}</td>";
|
|
echo "<td>{$r['conference_name']}</td>";
|
|
|
|
$complete = false;
|
|
$incomplete = false;
|
|
echo "<td>";
|
|
if($r["active"] == 'yes') {
|
|
echo "<div class=\"happy\" align=\"center\">".i18n("yes")."</div>";
|
|
$userstate = 'active';
|
|
} else {
|
|
echo "<div class=\"error\" align=\"center\">".i18n("no")."</div>";
|
|
$userstate = 'inactive';
|
|
}
|
|
echo "</td>";
|
|
|
|
echo "<td>";
|
|
if(in_array($r['type'], array('parent','committee','alumni','mentor','fair','admin','config'))) {
|
|
/* Do nothing, there's nothing to complete */
|
|
} else if($r["complete"] == 'yes') {
|
|
echo "<div class=\"happy\" align=\"center\">".i18n("yes")."</div>";
|
|
$complete = true;
|
|
} else {
|
|
echo "<div class=\"error\" align=\"center\">".i18n("no")."</div>";
|
|
$incomplete = true;
|
|
}
|
|
echo "</td>";
|
|
|
|
/* Finish off the the first line */
|
|
echo "<td align=\"center\">";
|
|
echo "<a href=\"#\" onclick=\"return openeditor({$r['id']})\"><img border=0 src=\"{$config['SFIABDIRECTORY']}/images/16/edit.{$config['icon_extension']}\"></a> ";
|
|
echo "<a onclick=\"return confirmClick('Are you sure you wish to completely delete this user?')\" href=\"user_list.php?action=remove&uid={$r['id']}\"><img border=0 src=\"{$config['SFIABDIRECTORY']}/images/16/button_cancel.{$config['icon_extension']}\"></a>";
|
|
echo "</td>";
|
|
|
|
echo '</tr>';
|
|
|
|
if($complete){
|
|
$tally[$userstate]['complete']++;
|
|
}else if($incomplete){
|
|
$tally[$userstate]['incomplete']++;
|
|
}else{
|
|
$tally[$userstate]['na']++;
|
|
}
|
|
}
|
|
echo "</tbody>";
|
|
echo "</table>";
|
|
echo i18n("Note: Deleting users from this list is a permanent operation and cannot be undone. Consider editting the user and deactivating or deleting roles in their account instead.");
|
|
|
|
// let's make a table with the complete/incomplete counts and the active/inacteve states
|
|
?>
|
|
<table rules="all" style="border:solid 1px; margin:2em">
|
|
<thead>
|
|
<tr><td colspan="5" align="center">List Totals</td></tr>
|
|
<tr>
|
|
<th></th>
|
|
<th>Complete</th>
|
|
<th>Incomplete</th>
|
|
<th>N/A</th>
|
|
<th>Total</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><strong>Active</strong></td>
|
|
<td><?=$tally['active']['complete']?></td>
|
|
<td><?=$tally['active']['incomplete']?></td>
|
|
<td><?=$tally['active']['na']?></td>
|
|
<td><?=$tally['active']['complete'] + $tally['active']['incomplete'] + $tally['active']['na']?></td>
|
|
</tr><tr>
|
|
<td><strong>Inactive</strong></td>
|
|
<td><?=$tally['inactive']['complete']?></td>
|
|
<td><?=$tally['inactive']['incomplete']?></td>
|
|
<td><?=$tally['inactive']['na']?></td>
|
|
<td><?=$tally['inactive']['complete'] + $tally['inactive']['incomplete'] + $tally['inactive']['na']?></td>
|
|
</tr><tr>
|
|
<td><strong>Total</strong></td>
|
|
<td><?=$tally['active']['complete'] + $tally['inactive']['complete']?></td>
|
|
<td><?=$tally['active']['incomplete'] + $tally['inactive']['incomplete']?></td>
|
|
<td><?=$tally['active']['na'] + $tally['inactive']['na']?></td>
|
|
<td><?=$num?></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<?php
|
|
send_footer();
|
|
?>
|