2011-12-17 15:18:13 +01:00
< ? php
function admin_active () {
2012-12-26 17:27:27 +01:00
global $tshirt_sizes , $shift_sum_formula ;
2011-12-17 15:18:13 +01:00
2012-12-26 14:02:27 +01:00
$msg = " " ;
$search = " " ;
$count = 0 ;
$limit = " " ;
$set_active = " " ;
if ( isset ( $_REQUEST [ 'search' ]))
$search = strip_request_item ( 'search' );
2011-12-17 15:18:13 +01:00
2012-12-26 14:02:27 +01:00
if ( isset ( $_REQUEST [ 'set_active' ])) {
$ok = true ;
2011-12-17 15:18:13 +01:00
2012-12-26 14:02:27 +01:00
if ( isset ( $_REQUEST [ 'count' ]) && preg_match ( " /^[0-9]+ $ / " , $_REQUEST [ 'count' ]))
$count = strip_request_item ( 'count' );
else {
$ok = false ;
$msg .= error ( " Please enter a number of angels to be marked as active. " , true );
}
2011-12-17 15:18:13 +01:00
2012-12-26 14:02:27 +01:00
if ( $ok )
$limit = " LIMIT " . $count ;
if ( isset ( $_REQUEST [ 'ack' ])) {
sql_query ( " UPDATE `User` SET `Aktiv` = 0 WHERE `Tshirt` = 0 " );
2012-12-26 17:27:27 +01:00
$users = sql_select ( " SELECT `User`.*, COUNT(`ShiftEntry`.`id`) as `shift_count`, ${ shift_sum_formula } as `shift_length` FROM `User` LEFT JOIN `ShiftEntry` ON `User`.`UID` = `ShiftEntry`.`UID` LEFT JOIN `Shifts` ON `ShiftEntry`.`SID` = `Shifts`.`SID` WHERE `User`.`Gekommen` = 1 GROUP BY `User`.`UID` ORDER BY `shift_length` DESC " . $limit );
2012-12-26 14:02:27 +01:00
$user_nicks = array ();
foreach ( $users as $usr ) {
sql_query ( " UPDATE `User` SET `Aktiv` = 1 WHERE `UID`= " . sql_escape ( $usr [ 'UID' ]));
$user_nicks [] = $usr [ 'Nick' ];
}
engelsystem_log ( " These angels are active now: " . join ( " , " , $user_nicks ));
2011-12-17 15:18:13 +01:00
2012-12-26 14:02:27 +01:00
$limit = " " ;
$msg = success ( " Marked angels. " , true );
} else {
$set_active = '<a href="' . page_link_to ( 'admin_active' ) . '&serach=' . $search . '">« back</a> | <a href="' . page_link_to ( 'admin_active' ) . '&search=' . $search . '&count=' . $count . '&set_active&ack">apply</a>' ;
}
}
2011-12-17 15:18:13 +01:00
2012-12-26 14:02:27 +01:00
if ( isset ( $_REQUEST [ 'active' ]) && preg_match ( " /^[0-9]+ $ / " , $_REQUEST [ 'active' ])) {
$id = $_REQUEST [ 'active' ];
$user_source = User ( $id );
if ( $user_source != null ) {
sql_query ( " UPDATE `User` SET `Aktiv`=1 WHERE `UID`= " . sql_escape ( $id ) . " LIMIT 1 " );
engelsystem_log ( " User " . $user_source [ 'Nick' ] . " is active now. " );
$msg = success ( " Angel has been marked as active. " , true );
}
else $msg = error ( " Angel not found. " , true );
}
elseif ( isset ( $_REQUEST [ 'not_active' ]) && preg_match ( " /^[0-9]+ $ / " , $_REQUEST [ 'not_active' ])) {
$id = $_REQUEST [ 'not_active' ];
$user_source = User ( $id );
if ( $user_source != null ) {
sql_query ( " UPDATE `User` SET `Aktiv`=0 WHERE `UID`= " . sql_escape ( $id ) . " LIMIT 1 " );
engelsystem_log ( " User " . $user_source [ 'Nick' ] . " is NOT active now. " );
$msg = success ( " Angel has been marked as not active. " , true );
}
else $msg = error ( " Angel not found. " , true );
}
elseif ( isset ( $_REQUEST [ 'tshirt' ]) && preg_match ( " /^[0-9]+ $ / " , $_REQUEST [ 'tshirt' ])) {
$id = $_REQUEST [ 'tshirt' ];
$user_source = User ( $id );
if ( $user_source != null ) {
sql_query ( " UPDATE `User` SET `Tshirt`=1 WHERE `UID`= " . sql_escape ( $id ) . " LIMIT 1 " );
engelsystem_log ( " User " . $user_source [ 'Nick' ] . " has tshirt now. " );
$msg = success ( " Angel has got a t-shirt. " , true );
}
else $msg = error ( " Angel not found. " , true );
}
elseif ( isset ( $_REQUEST [ 'not_tshirt' ]) && preg_match ( " /^[0-9]+ $ / " , $_REQUEST [ 'not_tshirt' ])) {
$id = $_REQUEST [ 'not_tshirt' ];
$user_source = User ( $id );
if ( $user_source != null ) {
sql_query ( " UPDATE `User` SET `Tshirt`=0 WHERE `UID`= " . sql_escape ( $id ) . " LIMIT 1 " );
engelsystem_log ( " User " . $user_source [ 'Nick' ] . " NO tshirt. " );
$msg = success ( " Angel has got no t-shirt. " , true );
}
else $msg = error ( " Angel not found. " , true );
}
2011-12-17 15:18:13 +01:00
2012-12-26 17:27:27 +01:00
$users = sql_select ( " SELECT `User`.*, COUNT(`ShiftEntry`.`id`) as `shift_count`, ${ shift_sum_formula } as `shift_length` FROM `User` LEFT JOIN `ShiftEntry` ON `User`.`UID` = `ShiftEntry`.`UID` LEFT JOIN `Shifts` ON `ShiftEntry`.`SID` = `Shifts`.`SID` WHERE `User`.`Gekommen` = 1 GROUP BY `User`.`UID` ORDER BY `shift_length` DESC " . $limit );
2011-12-17 15:18:13 +01:00
2012-12-26 14:02:27 +01:00
$table = " " ;
if ( $search == " " )
$tokens = array ();
else
$tokens = explode ( " " , $search );
foreach ( $users as $usr ) {
if ( count ( $tokens ) > 0 ) {
$match = false ;
$index = join ( " " , $usr );
foreach ( $tokens as $t )
2012-12-27 14:24:05 +01:00
if ( stristr ( $index , trim ( $t ))) {
2012-12-26 14:02:27 +01:00
$match = true ;
break ;
}
if ( ! $match )
continue ;
}
$table .= '<tr>' ;
$table .= '<td>' . $usr [ 'Nick' ] . '</td>' ;
$table .= '<td>' . $tshirt_sizes [ $usr [ 'Size' ]] . '</td>' ;
$table .= '<td>' . $usr [ 'shift_count' ] . '</td>' ;
2011-12-17 15:18:13 +01:00
2012-12-26 14:02:27 +01:00
if ( $usr [ 'shift_count' ] == 0 )
$table .= '<td>-</td>' ;
else
$table .= '<td>' . round ( $usr [ 'shift_length' ] / 60 ) . ' min (' . round ( $usr [ 'shift_length' ] / 3600 ) . ' h)</td>' ;
2011-12-17 15:18:13 +01:00
2012-12-26 14:02:27 +01:00
if ( $usr [ 'Aktiv' ] == 1 )
$table .= '<td>yes</td>' ;
else
$table .= '<td></td>' ;
if ( $usr [ 'Tshirt' ] == 1 )
$table .= '<td>yes</td>' ;
else
$table .= '<td></td>' ;
2011-12-17 15:18:13 +01:00
2012-12-26 14:02:27 +01:00
$actions = array ();
if ( $usr [ 'Aktiv' ] == 0 )
$actions [] = '<a href="' . page_link_to ( 'admin_active' ) . '&active=' . $usr [ 'UID' ] . '&search=' . $search . '">set active</a>' ;
if ( $usr [ 'Aktiv' ] == 1 && $usr [ 'Tshirt' ] == 0 ) {
$actions [] = '<a href="' . page_link_to ( 'admin_active' ) . '&not_active=' . $usr [ 'UID' ] . '&search=' . $search . '">remove active</a>' ;
$actions [] = '<a href="' . page_link_to ( 'admin_active' ) . '&tshirt=' . $usr [ 'UID' ] . '&search=' . $search . '">got t-shirt</a>' ;
}
if ( $usr [ 'Tshirt' ] == 1 )
$actions [] = '<a href="' . page_link_to ( 'admin_active' ) . '&not_tshirt=' . $usr [ 'UID' ] . '&search=' . $search . '">remove t-shirt</a>' ;
2011-12-17 15:18:13 +01:00
2012-12-26 14:02:27 +01:00
$table .= '<td>' . join ( ' | ' , $actions ) . '</td>' ;
$table .= '</tr>' ;
}
return template_render ( '../templates/admin_active.html' , array (
'search' => $search ,
'count' => $count ,
'set_active' => $set_active ,
'table' => $table ,
'msg' => $msg ,
'link' => page_link_to ( 'admin_active' )
));
2011-12-17 15:18:13 +01:00
}
2012-12-26 17:27:27 +01:00
?>