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 ;
2014-12-06 17:30:35 +01:00
2012-12-26 14:02:27 +01:00
$msg = " " ;
$search = " " ;
2013-12-28 03:02:51 +01:00
$forced_count = sql_num_query ( " SELECT * FROM `User` WHERE `force_active`=1 " );
$count = $forced_count ;
2012-12-26 14:02:27 +01:00
$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 ;
2014-12-06 17:30:35 +01:00
2013-12-28 03:02:51 +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' );
2013-12-28 03:02:51 +01:00
if ( $count < $forced_count ) {
error ( sprintf ( _ ( " At least %s angels are forced to be active. The number has to be greater. " ), $forced_count ));
redirect ( page_link_to ( 'admin_active' ));
}
} else {
2012-12-26 14:02:27 +01:00
$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
}
2014-12-06 17:30:35 +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 " );
2013-12-28 03:02:51 +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 AND `User`.`force_active`=0 GROUP BY `User`.`UID` ORDER BY `force_active` DESC, `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 ));
2014-12-06 17:30:35 +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
}
}
2014-12-06 17:30:35 +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
}
2014-12-06 17:30:35 +01:00
2013-12-28 03:02:51 +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 `force_active` DESC, `shift_length` DESC " . $limit );
2014-12-06 17:30:35 +01:00
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)' ;
2014-12-06 17:30:35 +01:00
$usr [ 'active' ] = glyph_bool ( $usr [ 'Aktiv' ] == 1 );
$usr [ 'force_active' ] = glyph_bool ( $usr [ 'force_active' ] == 1 );
$usr [ 'tshirt' ] = glyph_bool ( $usr [ 'Tshirt' ] == 1 );
2013-11-28 22:00:49 +01:00
$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>' ;
2014-12-06 17:30:35 +01:00
2013-11-28 22:00:49 +01:00
$usr [ 'actions' ] = join ( ' ' , $actions );
2014-12-06 17:30:35 +01:00
2013-11-28 22:00:49 +01:00
$matched_users [] = $usr ;
2012-12-26 14:02:27 +01:00
}
2014-12-06 17:30:35 +01:00
2013-12-30 15:40:07 +01:00
$shirt_statistics = sql_select ( "
2014-12-06 17:30:35 +01:00
SELECT `Size` , count ( `Size` ) AS `count`
FROM `User`
WHERE `Tshirt` = 1
GROUP BY `Size`
2013-12-30 15:40:07 +01:00
ORDER BY `count` DESC " );
2013-12-30 15:45:04 +01:00
$shirt_statistics [] = array (
'Size' => '<b>' . _ ( " Sum " ) . '</b>' ,
2014-12-06 17:30:35 +01:00
'count' => '<b>' . sql_select_single_cell ( " SELECT count(*) FROM `User` WHERE `Tshirt`=1 " ) . '</b>'
2013-12-30 15:45:04 +01:00
);
2014-12-06 17:30:35 +01:00
2014-08-22 22:34:13 +02:00
return page_with_title ( admin_active_title (), array (
2013-11-28 22:00:49 +01:00
form ( array (
form_text ( 'search' , _ ( " Search angel: " ), $search ),
2014-12-06 17:30:35 +01:00
form_submit ( 'submit' , _ ( " Search " ))
2013-11-28 22:00:49 +01:00
)),
$set_active == " " ? form ( array (
form_text ( 'count' , _ ( " How much angels should be active? " ), $count ),
2014-12-06 17:30:35 +01:00
form_submit ( 'set_active' , _ ( " Preview " ))
2013-11-28 22:00:49 +01:00
)) : $set_active ,
msg (),
table ( array (
'nick' => _ ( " Nickname " ),
'shirt_size' => _ ( " Size " ),
'shift_count' => _ ( " Shifts " ),
'work_time' => _ ( " Length " ),
'active' => _ ( " Active? " ),
2013-12-28 03:02:51 +01:00
'force_active' => _ ( " Forced " ),
2013-11-28 22:00:49 +01:00
'tshirt' => _ ( " T-shirt? " ),
2014-12-06 17:30:35 +01:00
'actions' => " "
2013-12-30 15:40:07 +01:00
), $matched_users ),
'<h2>' . _ ( " Given shirts " ) . '</h2>' ,
table ( array (
'Size' => _ ( " Size " ),
2014-12-06 17:30:35 +01:00
'count' => _ ( " Count " )
), $shirt_statistics )
2012-12-26 14:02:27 +01:00
));
2011-12-17 15:18:13 +01:00
}
2012-12-26 17:27:27 +01:00
?>