2009-09-09 00:26:12 +00:00
< ?
/*
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 .
*/
2015-04-08 21:13:02 +00:00
// This file was modified March of 2015 by Sebastian Ruan
/* Flagging for judges has been added to monitor concerns .
Update User button also added ; allows super users to update
a judge to the current fair year without logging in as them . */
2009-09-09 00:26:12 +00:00
?>
< ?
require_once ( '../common.inc.php' );
require_once ( '../user.inc.php' );
2010-01-15 15:39:36 +00:00
require_once ( '../judge.inc.php' );
2009-09-09 00:26:12 +00:00
user_auth_required ( 'committee' , 'admin' );
require_once ( 'judges.inc.php' );
$show_types = $_GET [ 'show_types' ];
if ( user_valid_type ( $show_types ) == false ) $show_types = array ( 'judge' );
2024-12-18 19:27:47 +00:00
$show_complete = ( get_value_from_array ( $_GET , 'show_complete' ) == 'yes' ) ? 'yes' : 'no' ;
$show_year = get_value_from_array ( $_GET , 'show_year' ) == 'current' ? 'current' : 'all' ;
2009-09-09 00:26:12 +00:00
2024-12-17 06:34:35 +00:00
$uid = intval ( get_value_from_array ( $_GET , 'uid' ));
2009-09-09 00:26:12 +00:00
2024-12-18 19:27:47 +00:00
if ( get_value_from_array ( $_GET , 'action' ) == 'remove' ) {
2009-09-09 00:26:12 +00:00
if ( ! $uid ) {
echo " Invalid uid for delete " ;
exit ;
}
user_delete ( $uid );
message_push ( happy ( i18n ( 'User deleted.' )));
}
2015-04-08 21:13:02 +00:00
2009-09-09 00:26:12 +00:00
send_header ( " User Editor " ,
array ( 'Committee Main' => 'committee_main.php' ,
'Administration' => 'admin/index.php' )
);
?>
< script language = " javascript " type = " text/javascript " >
function openeditor ( id )
{
if ( id ) currentid = id ;
2009-10-29 17:07:56 +00:00
window . open ( " user_editor_window.php?id= " + currentid , " UserEditor " , " location=no,menubar=no,directories=no,toolbar=no,width=1000,height=640,scrollbars=yes " );
2009-09-09 00:26:12 +00:00
return false ;
}
2015-04-08 21:13:02 +00:00
2009-09-09 00:26:12 +00:00
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 ;
2009-10-29 17:07:56 +00:00
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 " );
2009-09-09 00:26:12 +00:00
document . forms . newuser . new_email . value = " " ;
return false ;
}
2015-04-08 21:13:02 +00:00
/* update ( id ) grabs the current url and appends an action called update as well as the id it is going to renew .
If there is already an action called update and an id the function will change the id to the new
id as determined by the button clicked
update ( id ) Int -> String
Effects : update ( id ) reloads the page with the adjusted url
Example : update ( 2526 ) => http :// localhost / sfiab / testfair / admin / user_list . php ? show_types [] = judge & action = update & id = 2526 */
function update ( id )
{
var url = window . location . href ;
// if a previous update button was already clicked
if ( url . indexOf ( '&action=' ) >- 1 ){
url = url . substring ( 0 , url . indexOf ( '&action=update' ));
url += '&action=update&id=' + id ;
}
// if there is no ? in the url already present
else if ( url . indexOf ( '?' ) == - 1 ) {
url += '?action=update&id=' + id ;
}
//if '?action...' is present in url
else if ( url . indexOf ( '?action=' ) >- 1 ){
url = url . substring ( 0 , url . indexOf ( '?action=update' ));
url += '?action=update&id=' + id ;
}
else {
url += '&action=update&id=' + id ;
}
// reload using adjusted url
window . location . href = url ;
}
2009-09-09 00:26:12 +00:00
</ script >
< ?
2015-04-08 21:13:02 +00:00
// Begin updating user
if ( $_GET [ 'action' ] == 'update' ) {
$id = intval ( $_GET [ 'id' ]);
//if no id print error
if ( ! $id ) {
echo " Invalid id for update " ;
exit ;
}
$user = user_load ( $id );
// Determine if there is a more recent uid that may possibly be in the current FAIRYEAR (allows refresh page to work)
2024-12-08 07:42:00 +00:00
$query = $pdo -> prepare ( " SELECT id,uid,year FROM users WHERE uid=' { $user [ 'uid' ] } '
2015-04-08 21:13:02 +00:00
ORDER BY year DESC LIMIT 1 " );
2024-12-08 07:42:00 +00:00
$query -> execute ();
2015-04-08 21:13:02 +00:00
2024-12-08 07:42:00 +00:00
$user_new = $query -> fetch ( PDO :: FETCH_ASSOC );
2015-04-08 21:13:02 +00:00
// Make sure our user is NOT in the current FAIRYEAR (again, this helps with page refresh to work )
if ( $user_new [ 'year' ] != $config [ 'FAIRYEAR' ]) {
/* Update user to new year via dupelicating row into new id .
If multiple Roles , all updated */
user_dupe ( $user , $config [ 'FAIRYEAR' ]);
message_push ( happy ( i18n ( 'User Updated' )));
//find the newly updated user
2024-12-08 07:42:00 +00:00
$q_reload = $pdo -> prepare ( " SELECT id FROM users WHERE uid=' { $user [ 'uid' ] } '
2015-04-08 21:13:02 +00:00
ORDER BY year DESC LIMIT 1 " );
2024-12-08 07:42:00 +00:00
$q_reload -> execute ();
2015-04-08 21:13:02 +00:00
2024-12-08 07:42:00 +00:00
$reload_user = $q_reload -> fetch ( PDO :: FETCH_ASSOC );
2015-04-08 21:13:02 +00:00
?>
< script language = " javascript " type = " text/javascript " >
var new_id =< ? = $reload_user [ 'id' ]; ?> ;
// open or reopen user_editor_window.php with user's new id
openeditor ( new_id );
</ script >
< ?
}
}
//End update to user
2009-09-09 00:26:12 +00:00
echo " <div class= \" notice \" > " ;
2009-09-26 17:59:50 +00:00
echo " <a id= \" optionstext \" onclick= \" toggleoptions();return false; \" >- " . i18n ( 'Hide Display Options' ) . " </a> " ;
2009-09-09 00:26:12 +00:00
echo " <form method= \" GET \" action= \" $PHP_SELF\ " > " ;
echo " <div id= \" options \" style= \" display: block; \" > " ;
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= \" checkbox \" 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 ( 'Year' ) . " :</td><td> " ;
echo " <select name= \" show_year \" > " ;
$s = ( $show_year == 'current' ) ? 'selected="selected"' : '' ;
echo " <option value= \" current \" $s > " . i18n ( 'Show only registrations from %1' , array ( $config [ 'FAIRYEAR' ])) . " </option> " ;
$s = ( $show_year == 'all' ) ? 'selected="selected"' : '' ;
echo " <option value= \" all \" $s > " . i18n ( 'Show ALL years' ) . " </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 */
$w = array ();
foreach ( $show_types as $t ) {
2010-03-12 08:05:44 +00:00
$w [] = " u1.types LIKE '% $t %' " ;
2009-09-09 00:26:12 +00:00
}
$where_types = " AND ( " . join ( " OR " , $w ) . " ) " ;
$where_complete = " " ;
if ( $show_complete == 'yes' ) {
foreach ( $show_types as $t ) {
$where_complete .= " AND ( { $t } _complete='yes' OR { $t } _complete IS NULL) " ;
}
}
if ( $show_year == 'current' )
2010-03-12 08:05:44 +00:00
$having_year = " AND u1.year= { $config [ 'FAIRYEAR' ] } " ;
2009-09-09 00:26:12 +00:00
2009-09-10 04:40:18 +00:00
echo " <table class= \" tableview \" > " ;
2009-09-26 17:59:50 +00:00
2010-03-12 08:05:44 +00:00
$querystr = " SELECT
*
2009-09-09 00:26:12 +00:00
FROM
2010-03-12 08:05:44 +00:00
users u1
LEFT JOIN `users_committee` ON `users_committee` . `users_id` = `u1` . `id`
LEFT JOIN `users_judge` ON `users_judge` . `users_id` = `u1` . `id`
LEFT JOIN `users_volunteer` ON `users_volunteer` . `users_id` = `u1` . `id`
LEFT JOIN `users_fair` ON `users_fair` . `users_id` = `u1` . `id`
LEFT JOIN `users_sponsor` ON `users_sponsor` . `users_id` = `u1` . `id`
WHERE u1 . year = ( SELECT MAX ( `year` ) FROM users u2 WHERE u1 . uid = u2 . uid )
GROUP BY uid
2009-09-26 17:59:50 +00:00
HAVING
2010-03-12 08:05:44 +00:00
u1 . deleted = 'no'
2009-09-26 17:59:50 +00:00
$having_year
2009-09-09 00:26:12 +00:00
$where_types
$where_complete
ORDER BY
lastname ASC ,
firstname ASC ,
year DESC " ;
2024-11-27 15:47:41 +00:00
$q = $pdo -> prepare ( $querystr );
$q -> execute ();
echo $pdo -> errorInfo ();
2009-09-09 00:26:12 +00:00
// echo $querystr;
2024-11-27 15:47:41 +00:00
$num = $q -> rowCount ();
echo $pdo -> errorInfo ();
2015-04-08 21:13:02 +00:00
echo i18n ( " Listing %1 people total. See the table at the bottom for the totals by status <br><br><br> " , array ( $num ));
echo i18n ( " <lh>Notes:</lh> <ul><li> Deleting users from this list is a permanent operation and cannot be undone. Consider editing the user and deactivating or deleting roles in their account instead.
< li > Updating a user to the current fair year allows you to then complete the user from this list .
< li > A flagged judge indicates there is text in the private information field for that judge .
< li > Only committee members can see text entered into the private information field for judges . This field is not seen nor editable by any judge . " );
2010-03-30 21:59:04 +00:00
echo " <thead> " ;
2009-09-09 00:26:12 +00:00
echo " <tr> " ;
echo " <th> " . i18n ( " Name " ) . " </th> " ;
echo " <th> " . i18n ( " Email Address " ) . " </th> " ;
echo " <th> " . i18n ( " Year " ) . " </th> " ;
echo " <th> " . i18n ( " Type(s) " ) . " </th> " ;
echo " <th> " . i18n ( " Active " ) . " </th> " ;
echo " <th> " . i18n ( " Complete " ) . " </th> " ;
2015-04-08 21:13:02 +00:00
echo " <th> " . i18n ( " Flagged " ) . " </th> " ;
2009-09-09 00:26:12 +00:00
echo " <th> " . i18n ( " Actions " ) . " </th> " ;
echo " </tr> " ;
2010-03-30 21:59:04 +00:00
echo " </thead> " ;
2010-03-31 22:03:07 +00:00
$tally = array ();
$tally [ 'active' ] = array ();
$tally [ 'inactive' ] = array ();
$tally [ 'active' ][ 'complete' ] = 0 ;
$tally [ 'active' ][ 'incomplete' ] = 0 ;
$tally [ 'inactive' ][ 'complete' ] = 0 ;
$tally [ 'inactive' ][ 'incomplete' ] = 0 ;
2024-11-27 15:47:41 +00:00
while ( $r = $q -> fetch ( PDO :: FETCH_ASSOC ))
2009-09-09 00:26:12 +00:00
{
2010-01-15 15:39:36 +00:00
//JAMES - TEMP - due to the previous error with improperly setting judge status to NOT complete when special awards was turned off
//we now need to make sure we re-calculate all the judge statuses somehow, so might as well do it here.
//FIXME: remove this after all the fairs are done this year SUMMER 2010
if ( in_array ( 'judge' , $show_types )){
$u = user_load_by_uid ( $r [ 'uid' ]);
2015-04-08 21:13:02 +00:00
//we also set the $r array so it displays properly on first load
2010-01-15 15:39:36 +00:00
if ( judge_status_update ( $u ) == " complete " )
$r [ 'judge_complete' ] = 'yes' ;
2015-04-08 21:13:02 +00:00
else {
$r [ 'judge_complete' ] = 'no' ;
}
2010-01-15 15:39:36 +00:00
}
2012-02-09 17:52:17 +00:00
$types = explode ( ',' , $r [ 'types' ]);
2009-09-09 00:26:12 +00:00
$span = count ( $types ) > 1 ? " rowspan= \" " . count ( $types ) . " \" " : '' ;
echo " <tr><td $span > " ;
$name = " { $r [ 'firstname' ] } { $r [ 'lastname' ] } " ;
if ( in_array ( 'fair' , $types )) {
2024-11-27 15:47:41 +00:00
$qq = $pdo -> prepare ( " SELECT * FROM users_fair
2009-09-09 00:26:12 +00:00
LEFT JOIN fairs ON fairs . id = users_fair . fairs_id
WHERE users_id = '{$r[' id ']}' " );
2024-11-27 15:47:41 +00:00
$rr = $qq -> fetch ( PDO :: FETCH_ASSOC );
2009-09-09 00:26:12 +00:00
$name = " { $rr [ 'name' ] } " . (( trim ( $name ) == '' ) ? '' : " <br />( $name ) " );
}
echo " <a href= \" # \" onclick= \" return openeditor( { $r [ 'id' ] } ) \" > $name </a> " ;
echo " </td> " ;
echo " <td $span > { $r [ 'email' ] } </td> " ;
echo " <td $span > { $r [ 'year' ] } </td> " ;
$first = true ;
2010-04-06 15:19:47 +00:00
$complete = false ;
$incomplete = false ;
2009-09-09 00:26:12 +00:00
foreach ( $types as $t ) {
if ( ! $first ) echo '</tr><tr>' ;
echo " <td> { $user_what [ $t ] } </td> " ;
echo " <td> " ;
if ( $r [ " { $t } _active " ] == 'yes' ) {
echo " <div class= \" happy \" align= \" center \" > " . i18n ( " yes " ) . " </div> " ;
2010-03-31 22:03:07 +00:00
$userstate = 'active' ;
2009-09-09 00:26:12 +00:00
} else {
echo " <div class= \" error \" align= \" center \" > " . i18n ( " no " ) . " </div> " ;
2010-03-31 22:03:07 +00:00
$userstate = 'inactive' ;
2009-09-09 00:26:12 +00:00
}
echo " </td> " ;
echo " <td> " ;
2010-03-12 05:53:03 +00:00
if ( in_array ( $t , array ( 'parent' , 'committee' , 'alumni' , 'mentor' , 'fair' ))) {
2010-04-06 15:19:47 +00:00
/* Do nothing, there's nothing to complete */
2010-03-12 05:53:03 +00:00
} else if ( $r [ " { $t } _complete " ] == 'yes' ) {
2009-09-09 00:26:12 +00:00
echo " <div class= \" happy \" align= \" center \" > " . i18n ( " yes " ) . " </div> " ;
2010-04-06 15:19:47 +00:00
$complete = true ;
2009-09-09 00:26:12 +00:00
} else {
echo " <div class= \" error \" align= \" center \" > " . i18n ( " no " ) . " </div> " ;
2010-04-06 15:19:47 +00:00
$incomplete = true ;
2009-09-09 00:26:12 +00:00
}
echo " </td> " ;
2015-04-08 21:13:02 +00:00
// Begin flagging process
echo " <td align= \" center \" > " ;
// Must be a judge in order to be flagged
if ( $t == 'judge' ){
/* Determine if judge is flagged and display X icon .
Icon is clickable . Brings user to user_editor_window file .
Would preferably ALSO bring the user to the judge other tab */
if ( $r [ 'flagged_judge' ] == '1' ) {
echo " <a title= \" " . i18n ( " Flagged " ) . " \" href= \" # \" onClick= \" return openeditor( { $r [ 'id' ] } ); \" > " ;
echo " <img src= \" " . $config [ 'SFIABDIRECTORY' ] . " /images/16/flagged. " . $config [ 'icon_extension' ] . " \" border=0> " ;
echo " </a> " ;
// Otherwise judge is not flagged; display checkmark icon. Also clickable.
} else { echo " <a title= \" " . i18n ( " Not flagged " ) . " \" href= \" # \" onClick= \" return openeditor( { $r [ 'id' ] } ); \" > " ;
echo " <img src= \" " . $config [ 'SFIABDIRECTORY' ] . " /images/16/ok. " . $config [ 'icon_extension' ] . " \" border=0> " ;
echo " </a> " ;
}
} else {
// Do nothing. Only judges can be flagged.
}
echo " </td> " ;
//end flagging process
2009-09-09 00:26:12 +00:00
if ( $first ) {
2015-05-06 16:55:46 +00:00
if ( $name == ' ' )
$name = 'Noname' ;
2009-09-09 00:26:12 +00:00
/* Finish off the the first line */
2015-04-08 21:13:02 +00:00
// If judge not in current fair year need seperate icons so that all icons align nicely in the table
if ( $t == 'judge' and $r [ 'year' ] != $config [ 'FAIRYEAR' ]){
echo " <td $span align= \" center \" > " ;
echo "        " ; // aligns icons
echo " <a title = \" Edit User \" href= \" # \" onclick= \" return openeditor( { $r [ 'id' ] } ) \" ><img border=0 src= \" { $config [ 'SFIABDIRECTORY' ] } /images/16/edit. { $config [ 'icon_extension' ] } \" ></a> " ;
2015-05-06 16:55:46 +00:00
echo " <a title = \" Delete User \" onclick= \" return confirmClick('Are you sure you wish to completely delete " . $name . " \\ 's account?') \" href= \" user_list.php?action=remove&uid= { $r [ 'id' ] } \" ><img border=0 src= \" { $config [ 'SFIABDIRECTORY' ] } /images/16/button_cancel. { $config [ 'icon_extension' ] } \" ></a> " ;
2015-04-08 21:13:02 +00:00
echo "  <a title = \" Update User to Current Fair Year \" href= \" # \" onclick= \" update( { $r [ 'id' ] } );return false; \" ><img border=0 src= \" { $config [ 'SFIABDIRECTORY' ] } /images/16/update2. { $config [ 'icon_extension' ] } \" height = \" 17 \" ></a> " ;
} else {
echo " <td $span align= \" center \" > " ;
echo " <a href= \" # \" onclick= \" return openeditor( { $r [ 'id' ] } ) \" ><img border=0 src= \" { $config [ 'SFIABDIRECTORY' ] } /images/16/edit. { $config [ 'icon_extension' ] } \" ></a> " ;
2015-05-06 16:55:46 +00:00
echo " <a onclick= \" return confirmClick('Are you sure you wish to completely delete " . $name . " \\ 's account?') \" href= \" user_list.php?action=remove&uid= { $r [ 'id' ] } \" ><img border=0 src= \" { $config [ 'SFIABDIRECTORY' ] } /images/16/button_cancel. { $config [ 'icon_extension' ] } \" ></a> " ;
2015-04-08 21:13:02 +00:00
}
2009-09-09 00:26:12 +00:00
echo " </td> " ;
}
$first = false ;
}
echo '</tr>' ;
2010-04-06 15:19:47 +00:00
if ( $complete ){
$tally [ $userstate ][ 'complete' ] ++ ;
} else if ( $incomplete ){
$tally [ $userstate ][ 'incomplete' ] ++ ;
}
2009-09-09 00:26:12 +00:00
}
echo " </table> " ;
2010-03-31 22:03:07 +00:00
// 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 = " 4 " align = " center " > List Totals </ td ></ tr >
< tr >
< th ></ th >
< th > Complete </ th >
< th > Incomplete </ 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' ][ 'complete' ] + $tally [ 'active' ][ 'incomplete' ] ?> </td>
</ tr >< tr >
< td >< strong > Inactive </ strong ></ td >
< td >< ? = $tally [ 'inactive' ][ 'complete' ] ?> </td>
< td >< ? = $tally [ 'inactive' ][ 'incomplete' ] ?> </td>
< td >< ? = $tally [ 'inactive' ][ 'complete' ] + $tally [ 'inactive' ][ 'incomplete' ] ?> </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 >< ? = $num ?> </td>
</ tr >
</ tbody >
</ table >
< ? php
2009-09-09 00:26:12 +00:00
send_footer ();
?>