2011-12-17 15:18:13 +01:00
< ? php
2013-11-25 21:04:58 +01:00
function admin_active_title () {
return _ ( " Active angels " );
}
2011-12-17 15:18:13 +01:00
function admin_active () {
2012-12-26 17:27:27 +01:00
global $tshirt_sizes , $shift_sum_formula ;
2013-11-28 22:00:49 +01:00
2012-12-26 14:02:27 +01:00
$msg = " " ;
$search = " " ;
$count = 0 ;
$limit = " " ;
$set_active = " " ;
2013-11-28 22:00:49 +01:00
if ( isset ( $_REQUEST [ 'search' ]))
2012-12-26 14:02:27 +01:00
$search = strip_request_item ( 'search' );
2013-11-28 22:00:49 +01:00
if ( isset ( $_REQUEST [ 'set_active' ])) {
2012-12-26 14:02:27 +01:00
$ok = true ;
2013-11-28 22:00:49 +01:00
if ( isset ( $_REQUEST [ 'count' ]) && preg_match ( " /^[0-9]+ $ / " , $_REQUEST [ 'count' ]))
2012-12-26 14:02:27 +01:00
$count = strip_request_item ( 'count' );
else {
$ok = false ;
2013-11-28 22:00:49 +01:00
$msg .= error ( _ ( " Please enter a number of angels to be marked as active. " ), true );
2012-12-26 14:02:27 +01:00
}
2013-11-28 22:00:49 +01:00
2012-12-26 14:02:27 +01:00
if ( $ok )
$limit = " LIMIT " . $count ;
2013-11-28 22:00:49 +01:00
if ( isset ( $_REQUEST [ 'ack' ])) {
2012-12-26 14:02:27 +01:00
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' ]));
2012-12-30 17:58:23 +01:00
$user_nicks [] = User_Nick_render ( $usr );
2012-12-26 14:02:27 +01:00
}
engelsystem_log ( " These angels are active now: " . join ( " , " , $user_nicks ));
2013-11-28 22:00:49 +01:00
2012-12-26 14:02:27 +01:00
$limit = " " ;
2013-11-28 22:00:49 +01:00
$msg = success ( _ ( " Marked angels. " ), true );
2012-12-26 14:02:27 +01:00
} else {
2013-11-28 22:00:49 +01:00
$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>' ;
2012-12-26 14:02:27 +01:00
}
}
2013-11-28 22:00:49 +01:00
if ( isset ( $_REQUEST [ 'active' ]) && preg_match ( " /^[0-9]+ $ / " , $_REQUEST [ 'active' ])) {
2012-12-26 14:02:27 +01:00
$id = $_REQUEST [ 'active' ];
$user_source = User ( $id );
2013-11-28 22:00:49 +01:00
if ( $user_source != null ) {
2012-12-26 14:02:27 +01:00
sql_query ( " UPDATE `User` SET `Aktiv`=1 WHERE `UID`= " . sql_escape ( $id ) . " LIMIT 1 " );
2012-12-30 17:58:23 +01:00
engelsystem_log ( " User " . User_Nick_render ( $user_source ) . " is active now. " );
2013-11-28 22:00:49 +01:00
$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' ])) {
2012-12-26 14:02:27 +01:00
$id = $_REQUEST [ 'not_active' ];
$user_source = User ( $id );
2013-11-28 22:00:49 +01:00
if ( $user_source != null ) {
2012-12-26 14:02:27 +01:00
sql_query ( " UPDATE `User` SET `Aktiv`=0 WHERE `UID`= " . sql_escape ( $id ) . " LIMIT 1 " );
2012-12-30 17:58:23 +01:00
engelsystem_log ( " User " . User_Nick_render ( $user_source ) . " is NOT active now. " );
2013-11-28 22:00:49 +01:00
$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' ])) {
2012-12-26 14:02:27 +01:00
$id = $_REQUEST [ 'tshirt' ];
$user_source = User ( $id );
2013-11-28 22:00:49 +01:00
if ( $user_source != null ) {
2012-12-26 14:02:27 +01:00
sql_query ( " UPDATE `User` SET `Tshirt`=1 WHERE `UID`= " . sql_escape ( $id ) . " LIMIT 1 " );
2012-12-30 17:58:23 +01:00
engelsystem_log ( " User " . User_Nick_render ( $user_source ) . " has tshirt now. " );
2013-11-28 22:00:49 +01:00
$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' ])) {
2012-12-26 14:02:27 +01:00
$id = $_REQUEST [ 'not_tshirt' ];
$user_source = User ( $id );
2013-11-28 22:00:49 +01:00
if ( $user_source != null ) {
2012-12-26 14:02:27 +01:00
sql_query ( " UPDATE `User` SET `Tshirt`=0 WHERE `UID`= " . sql_escape ( $id ) . " LIMIT 1 " );
2012-12-30 17:58:23 +01:00
engelsystem_log ( " User " . User_Nick_render ( $user_source ) . " has NO tshirt. " );
2013-11-28 22:00:49 +01:00
$msg = success ( _ ( " Angel has got no t-shirt. " ), true );
} else
$msg = error ( _ ( " Angel not found. " ), true );
2012-12-26 14:02:27 +01:00
}
2013-11-28 22:00:49 +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 );
2013-11-28 22:00:49 +01:00
$matched_users = array ();
2012-12-26 14:02:27 +01:00
if ( $search == " " )
2013-11-28 22:00:49 +01:00
$tokens = array ();
2012-12-26 14:02:27 +01:00
else
$tokens = explode ( " " , $search );
2013-11-28 22:00:49 +01:00
foreach ( $users as & $usr ) {
2012-12-26 14:02:27 +01:00
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 ))) {
2013-11-28 22:00:49 +01:00
$match = true ;
break ;
}
if ( ! $match )
2012-12-26 14:02:27 +01:00
continue ;
}
2013-11-28 22:00:49 +01:00
$usr [ 'nick' ] = User_Nick_render ( $usr );
$usr [ 'shirt_size' ] = $tshirt_sizes [ $usr [ 'Size' ]];
$usr [ 'work_time' ] = round ( $usr [ 'shift_length' ] / 60 ) . ' min (' . round ( $usr [ 'shift_length' ] / 3600 ) . ' h)' ;
$usr [ 'active' ] = $usr [ 'Aktiv' ] == 1 ? _ ( " yes " ) : " " ;
$usr [ 'tshirt' ] = $usr [ 'Tshirt' ] == 1 ? _ ( " yes " ) : " " ;
$actions = array ();
2012-12-26 14:02:27 +01:00
if ( $usr [ 'Aktiv' ] == 0 )
2013-11-28 22:00:49 +01:00
$actions [] = '<a href="' . page_link_to ( 'admin_active' ) . '&active=' . $usr [ 'UID' ] . '&search=' . $search . '">' . _ ( " set active " ) . '</a>' ;
2012-12-26 14:02:27 +01:00
if ( $usr [ 'Aktiv' ] == 1 && $usr [ 'Tshirt' ] == 0 ) {
2013-11-28 22:00:49 +01:00
$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>' ;
2012-12-26 14:02:27 +01:00
}
if ( $usr [ 'Tshirt' ] == 1 )
2013-11-28 22:00:49 +01:00
$actions [] = '<a href="' . page_link_to ( 'admin_active' ) . '&not_tshirt=' . $usr [ 'UID' ] . '&search=' . $search . '">' . _ ( " remove t-shirt " ) . '</a>' ;
$usr [ 'actions' ] = join ( ' ' , $actions );
$matched_users [] = $usr ;
2012-12-26 14:02:27 +01:00
}
2013-11-28 22:00:49 +01:00
return page ( array (
form ( array (
form_text ( 'search' , _ ( " Search angel: " ), $search ),
form_submit ( 'submit' , _ ( " Search " ))
)),
$set_active == " " ? form ( array (
form_text ( 'count' , _ ( " How much angels should be active? " ), $count ),
form_submit ( 'set_active' , _ ( " Preview " ))
)) : $set_active ,
msg (),
table ( array (
'nick' => _ ( " Nickname " ),
'shirt_size' => _ ( " Size " ),
'shift_count' => _ ( " Shifts " ),
'work_time' => _ ( " Length " ),
'active' => _ ( " Active? " ),
'tshirt' => _ ( " T-shirt? " ),
'actions' => " "
), $matched_users )
2012-12-26 14:02:27 +01:00
));
2011-12-17 15:18:13 +01:00
}
2012-12-26 17:27:27 +01:00
?>