summaryrefslogtreecommitdiff
path: root/includes/pages/admin_arrive.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/pages/admin_arrive.php')
-rw-r--r--includes/pages/admin_arrive.php98
1 files changed, 86 insertions, 12 deletions
diff --git a/includes/pages/admin_arrive.php b/includes/pages/admin_arrive.php
index bec1ae56..64cf785d 100644
--- a/includes/pages/admin_arrive.php
+++ b/includes/pages/admin_arrive.php
@@ -1,4 +1,5 @@
<?php
+
function admin_arrive_title() {
return _("Arrived angels");
}
@@ -13,7 +14,7 @@ function admin_arrive() {
$id = $_REQUEST['reset'];
$user_source = User($id);
if ($user_source != null) {
- sql_query("UPDATE `User` SET `Gekommen`=0 WHERE `UID`=" . sql_escape($id) . " LIMIT 1");
+ sql_query("UPDATE `User` SET `Gekommen`=0, `arrival_date` = NULL WHERE `UID`='" . sql_escape($id) . "' LIMIT 1");
engelsystem_log("User set to not arrived: " . User_Nick_render($user_source));
$msg = success(_("Reset done. Angel has not arrived."), true);
} else
@@ -22,7 +23,7 @@ function admin_arrive() {
$id = $_REQUEST['arrived'];
$user_source = User($id);
if ($user_source != null) {
- sql_query("UPDATE `User` SET `Gekommen`=1 WHERE `UID`=" . sql_escape($id) . " LIMIT 1");
+ sql_query("UPDATE `User` SET `Gekommen`=1, `arrival_date`='" . time() . "' WHERE `UID`='" . sql_escape($id) . "' LIMIT 1");
engelsystem_log("User set has arrived: " . User_Nick_render($user_source));
$msg = success(_("Angel has been marked as arrived."), true);
} else
@@ -30,10 +31,12 @@ function admin_arrive() {
}
$users = sql_select("SELECT * FROM `User` ORDER BY `Nick`");
+ $arrival_count_at_day = [];
+ $departure_count_at_day = [];
$table = "";
- $users_matched = array();
+ $users_matched = [];
if ($search == "")
- $tokens = array();
+ $tokens = [];
else
$tokens = explode(" ", $search);
foreach ($users as $usr) {
@@ -48,18 +51,53 @@ function admin_arrive() {
if (! $match)
continue;
}
- $table .= '<tr>';
- $table .= '<td>' . User_Nick_render($usr) . '</td>';
+
$usr['nick'] = User_Nick_render($usr);
+ if ($usr['planned_departure_date'] != null)
+ $usr['rendered_planned_departure_date'] = date('Y-m-d', $usr['planned_departure_date']);
+ else
+ $usr['rendered_planned_departure_date'] = '-';
+ $usr['rendered_planned_arrival_date'] = date('Y-m-d', $usr['planned_arrival_date']);
+ $usr['rendered_arrival_date'] = $usr['arrival_date'] > 0 ? date('Y-m-d', $usr['arrival_date']) : "-";
$usr['arrived'] = $usr['Gekommen'] == 1 ? _("yes") : "";
$usr['actions'] = $usr['Gekommen'] == 1 ? '<a href="' . page_link_to('admin_arrive') . '&reset=' . $usr['UID'] . '&search=' . $search . '">' . _("reset") . '</a>' : '<a href="' . page_link_to('admin_arrive') . '&arrived=' . $usr['UID'] . '&search=' . $search . '">' . _("arrived") . '</a>';
- if ($usr['Gekommen'] == 1)
- $table .= '<td>yes</td><td><a href="' . page_link_to('admin_arrive') . '&reset=' . $usr['UID'] . '&search=' . $search . '">reset</a></td>';
- else
- $table .= '<td></td><td><a href="' . page_link_to('admin_arrive') . '&arrived=' . $usr['UID'] . '&search=' . $search . '">arrived</a></td>';
- $table .= '</tr>';
+
+ $day = $usr['arrival_date'] > 0 ? date('Y-m-d', $usr['arrival_date']) : date('Y-m-d', $usr['planned_arrival_date']);
+ if (! isset($arrival_count_at_day[$day]))
+ $arrival_count_at_day[$day] = 0;
+ if (! isset($departure_count_at_day[$day]))
+ $departure_count_at_day[$day] = 0;
+ $arrival_count_at_day[$day] ++;
+
+ if ($usr['planned_departure_date'] != null) {
+ $day = date('Y-m-d', $usr['planned_departure_date']);
+ if (! isset($arrival_count_at_day[$day]))
+ $arrival_count_at_day[$day] = 0;
+ if (! isset($departure_count_at_day[$day]))
+ $departure_count_at_day[$day] = 0;
+ $departure_count_at_day[$day] ++;
+ }
+
$users_matched[] = $usr;
}
+
+ ksort($arrival_count_at_day);
+ ksort($departure_count_at_day);
+
+ $arrival_count = [];
+ $arrival_sums = [];
+ $arrival_sum = 0;
+ foreach ($arrival_count_at_day as $day => $count) {
+ $arrival_sum += $count - $departure_count_at_day[$day];
+ $arrival_sums[$day] = $arrival_sum;
+ $arrival_count[] = [
+ 'day' => $day,
+ 'count' => $count,
+ 'sum' => $arrival_sum,
+ 'departure' => isset($departure_count_at_day[$day]) ? $departure_count_at_day[$day] : 0
+ ];
+ }
+
return page_with_title(admin_arrive_title(), array(
msg(),
form(array(
@@ -68,9 +106,45 @@ function admin_arrive() {
)),
table(array(
'nick' => _("Nickname"),
+ 'rendered_planned_arrival_date' => _("Planned arrival"),
'arrived' => _("Arrived?"),
+ 'rendered_arrival_date' => _("Arrival date"),
+ 'rendered_planned_departure_date' => _("Planned departure"),
'actions' => ""
- ), $users_matched)
+ ), $users_matched),
+ heading(_("Arrival statistics"), 2),
+ '<canvas id="daily_arrives" style="width: 100%; height: 300px;"></canvas>
+ <script type="text/javascript">
+ $(function(){
+ var ctx = $("#daily_arrives").get(0).getContext("2d");
+ var chart = new Chart(ctx).Bar(' . json_encode(array(
+ 'labels' => array_keys($arrival_count_at_day),
+ 'datasets' => array(
+ array(
+ 'label' => _("arrived"),
+ 'fillColor' => "#090",
+ 'data' => array_values($arrival_count_at_day)
+ ),
+ array(
+ 'label' => _("arrived sum"),
+ 'fillColor' => "#888",
+ 'data' => array_values($arrival_sums)
+ ),
+ array(
+ 'label' => _("planned departure"),
+ 'fillColor' => "#900",
+ 'data' => array_values($departure_count_at_day)
+ )
+ )
+ )) . ');
+ });
+ </script>',
+ table(array(
+ 'day' => _("Date"),
+ 'count' => _("arrived"),
+ 'sum' => _("arrived sum"),
+ 'departure' => _("planned departure")
+ ), $arrival_count)
));
}
?>