summaryrefslogtreecommitdiff
path: root/includes/pages/admin_free.php
blob: db0c239f62b0604a17c094fa924f876129da34db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php

function admin_free_title()
{
    return _("Free angels");
}

function admin_free()
{
    global $privileges;
  
    $search = "";
    if (isset($_REQUEST['search'])) {
        $search = strip_request_item('search');
    }
  
    $angeltypesearch = "";
    if (empty($_REQUEST['angeltype'])) {
        $_REQUEST['angeltype'] = '';
    } else {
        $angeltypesearch = " INNER JOIN `UserAngelTypes` ON (`UserAngelTypes`.`angeltype_id` = '" . sql_escape($_REQUEST['angeltype']) . "' AND `UserAngelTypes`.`user_id` = `User`.`UID`";
        if (isset($_REQUEST['confirmed_only'])) {
            $angeltypesearch .= " AND `UserAngelTypes`.`confirm_user_id`";
        }
        $angeltypesearch .= ") ";
    }
  
    $angel_types_source = sql_select("SELECT `id`, `name` FROM `AngelTypes` ORDER BY `name`");
    $angel_types = [
      '' => 'alle Typen'
  ];
    foreach ($angel_types_source as $angel_type) {
        $angel_types[$angel_type['id']] = $angel_type['name'];
    }
  
    $users = sql_select("
      SELECT `User`.* 
      FROM `User` 
      ${angeltypesearch} 
      LEFT JOIN `ShiftEntry` ON `User`.`UID` = `ShiftEntry`.`UID` 
      LEFT JOIN `Shifts` ON (`ShiftEntry`.`SID` = `Shifts`.`SID` AND `Shifts`.`start` < '" . sql_escape(time()) . "' AND `Shifts`.`end` > '" . sql_escape(time()) . "') 
      WHERE `User`.`Gekommen` = 1 AND `Shifts`.`SID` IS NULL 
      GROUP BY `User`.`UID` 
      ORDER BY `Nick`");
  
    $free_users_table = [];
    if ($search == "") {
        $tokens = [];
    } else {
        $tokens = explode(" ", $search);
    }
    foreach ($users as $usr) {
        if (count($tokens) > 0) {
            $match = false;
            $index = join("", $usr);
            foreach ($tokens as $t) {
                if (stristr($index, trim($t))) {
                    $match = true;
                    break;
                }
            }
            if (! $match) {
                continue;
            }
        }
    
        $free_users_table[] = [
        'name' => User_Nick_render($usr),
        'shift_state' => User_shift_state_render($usr),
        'dect' => $usr['DECT'],
        'jabber' => $usr['jabber'],
        'email' => $usr['email_by_human_allowed'] ? $usr['email'] : glyph('eye-close'),
        'actions' => in_array('admin_user', $privileges) ? button(page_link_to('admin_user') . '&amp;id=' . $usr['UID'], _("edit"), 'btn-xs') : ''
    ];
    }
    return page_with_title(admin_free_title(), [
      form([
          div('row', [
              div('col-md-4', [
                  form_text('search', _("Search"), $search)
              ]),
              div('col-md-4', [
                  form_select('angeltype', _("Angeltype"), $angel_types, $_REQUEST['angeltype'])
              ]),
              div('col-md-2', [
                  form_checkbox('confirmed_only', _("Only confirmed"), isset($_REQUEST['confirmed_only']))
              ]),
              div('col-md-2', [
                  form_submit('submit', _("Search"))
              ])
          ])
      ]),
      table([
          'name' => _("Nick"),
          'shift_state' => '',
          'dect' => _("DECT"),
          'jabber' => _("Jabber"),
          'email' => _("E-Mail"),
          'actions' => ''
      ], $free_users_table)
  ]);
}