-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathuserslist.php
executable file
·125 lines (104 loc) · 4.67 KB
/
userslist.php
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
118
119
120
121
122
123
124
125
<?php
// This file is part of Moodle - https://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <https://www.gnu.org/licenses/>.
/**
* Upload image from users list in quizaccess_proctoring plugin.
*
* @package quizaccess_proctoring
* @copyright 2024 Brain Station 23
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
*/
require_once(__DIR__ . '/../../../../config.php');
require_once(__DIR__ . '/lib.php');
global $CFG, $PAGE, $OUTPUT, $DB;
require_login();
if (!is_siteadmin()) {
redirect($CFG->wwwroot, get_string('no_permission', 'quizaccess_proctoring'), null, \core\output\notification::NOTIFY_ERROR);
}
$page = optional_param('page', 0, PARAM_INT);
$perpage = optional_param('perpage', 5, PARAM_INT);
$search = optional_param('search', '', PARAM_TEXT);
$PAGE->set_url('/mod/quiz/accessrule/proctoring/userslist.php');
$PAGE->set_context(context_system::instance());
$PAGE->set_title(get_string('users_list', 'quizaccess_proctoring'));
$PAGE->set_heading(get_string('users_list', 'quizaccess_proctoring'));
// Add navigation nodes.
$PAGE->navbar->add(get_string('pluginname', 'quizaccess_proctoring'),
new moodle_url('/admin/settings.php?section=modsettingsquizcatproctoring'));
$PAGE->navbar->add(get_string('users_list', 'quizaccess_proctoring'), $PAGE->url);
echo $OUTPUT->header();
// Build SQL query with search filtering.
$params = [];
$sql = "SELECT * FROM {user}";
if (!empty($search) && is_string($search)) {
$sql .= " WHERE (firstname LIKE :search1 OR lastname LIKE :search2 OR email LIKE :search3 OR username LIKE :search4)";
$params['search1'] = "%$search%";
$params['search2'] = "%$search%";
$params['search3'] = "%$search%";
$params['search4'] = "%$search%";
}
// Get user records based on the SQL query.
$users = $DB->get_records_sql($sql, $params, $perpage * $page, $perpage);
// Count total users based on search filter.
if (!empty($search)) {
$sql = "SELECT COUNT(*)
FROM {user}
WHERE (firstname LIKE :search1
OR lastname LIKE :search2
OR email LIKE :search3
OR username LIKE :search4)";
$totaluser = $DB->count_records_sql($sql, $params);
} else {
$totaluser = $DB->count_records('user');
}
// Check if no users were found.
if (empty($users)) {
// Display Moodle's default "no results found" page with a back link.
notice(
get_string('nousersfound', 'quizaccess_proctoring'),
new moodle_url('/mod/quiz/accessrule/proctoring/userslist.php')
);
}
// Process users.
foreach ($users as $user) {
// Get full name.
$user->fullname = fullname($user);
// Process image URLs.
$user->image_url = quizaccess_proctoring_get_image_url($user->id);
if (!empty($user->image_url)) {
$user->delete_image_url =
$CFG->wwwroot . "/mod/quiz/accessrule/proctoring/delete_user_image.php?userid=$user->id&perpage=$perpage&page=$page";
$user->edit_image_url = $CFG->wwwroot . "/mod/quiz/accessrule/proctoring/upload_image.php?id=$user->id";
}
}
$baseurl = new moodle_url('/mod/quiz/accessrule/proctoring/userslist.php', ['perpage' => $perpage, 'search' => $search]);
$proctoringpro = new moodle_url('/mod/quiz/accessrule/proctoring/proctoring_pro_promo.php');
$proctoringprogif = $OUTPUT->image_url('proctoring_pro_users_list', 'quizaccess_proctoring');
$templatecontext = (object)[
'users' => array_values($users),
'redirecturl' => new moodle_url('/mod/quiz/accessrule/proctoring/upload_image.php'),
'settingsurl' => new moodle_url('/admin/settings.php?section=modsettingsquizcatproctoring'),
'searchvalue' => $search,
'action' => new moodle_url('/mod/quiz/accessrule/proctoring/userslist.php'),
'btnclass' => "btn-primary",
'inputname' => "search",
'searchstring' => "Search user",
'proctoringpro' => $proctoringpro,
'proctoringprogif' => $proctoringprogif,
'buyproctoringpro' => get_string('buyproctoringpro', 'quizaccess_proctoring'),
];
echo $OUTPUT->render_from_template('quizaccess_proctoring/users_list', $templatecontext);
echo $OUTPUT->paging_bar($totaluser, $page, $perpage, $baseurl);
echo $OUTPUT->footer();