/
getUsers.php
64 lines (52 loc) · 2.19 KB
/
getUsers.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
<?php
// This script and data application were generated by AppGini 6.0
// Download AppGini for free from https://bigprof.com/appgini/download/
/*
ajax-callable script that retrieves a list of users for admin, indicating which ones have
access to supplied table.
REQUEST parameters:
===============
t: table name
id: optional, primary key value of current record
p: page number (default = 1)
s: search term
*/
/* return json */
header('Content-type: application/json');
$start_ts = microtime(true);
$curr_dir=dirname(__FILE__);
require("{$curr_dir}/incCommon.php");
// how many results to return per call, in case of json output
$results_per_page = 50;
$id = from_utf8(Request::val('id'));
$search_term = from_utf8(Request::val('s'));
$page = intval(Request::val('p'));
if($page < 1) $page = 1;
$skip = $results_per_page * ($page - 1);
$table_name = Request::val('t');
if(!in_array($table_name, array_keys(getTableList()))) {
/* invalid table */
echo '{"results":[{"id":"","text":"Invalid table"}],"more":false,"elapsed":0}';
exit;
}
/* if id is provided, get owner */
$owner = false;
if($id) {
$owner = sqlValue("select memberID from membership_userrecords where tableName='{$table_name}' and pkValue='" . makeSafe($id) . "'");
}
$prepared_data = [];
$where = "g.name!='{$adminConfig['anonymousGroup']}' and p.allowView>0 ";
if($search_term) {
$search_term = makeSafe($search_term);
$where .= "and (u.memberID like '%{$search_term}%' or g.name like '%{$search_term}%')";
}
$res = sql("select u.memberID, g.name from membership_users u left join membership_groups g on u.groupID=g.groupID left join membership_grouppermissions p on g.groupID=p.groupID and p.tableName='{$table_name}' where {$where} order by g.name, u.memberID limit {$skip}, {$results_per_page}", $eo);
while($row = db_fetch_row($res)) {
$row = array_map('strip_tags', $row);
$prepared_data[] = array('id' => to_utf8($row[0]), 'text' => to_utf8("<b>{$row[1]}</b>/{$row[0]}"));
}
echo json_encode(array(
'results' => $prepared_data,
'more' => (@db_num_rows($res) >= $results_per_page),
'elapsed' => round(microtime(true) - $start_ts, 3)
));