summaryrefslogtreecommitdiff
path: root/includes/pages/admin_free.php
blob: 67d91006146be58748c8857ca3bc0e7d41c10992 (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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php

/**
 * @return string
 */
function admin_free_title()
{
    return _('Free angels');
}

/**
 * @return string
 */
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)
    ]);
}