groups.php
См. документацию.
1 <?php
2 
3 /**
4  * @file
5  * @brief выборка моделей типа "группа"
6  */
7 
8 isset($user) or require $_SERVER['DOCUMENT_ROOT'] . '/page/404.php';
9 
10 header("Content-type: application/json");
11 
12 $table_name = basename($request);
13 
14 $columns = ['id', 'name', 'owner_group', 'weight', 'models_limit', '\'count_active_models\'', '\'count_available_models\'', 'path', '(SELECT COUNT(*) FROM users WHERE JSON_CONTAINS(users.groups, groups.id) = 1)', 'note', 'logs', 'act'];
15 
16 $order_column = isset($_GET['order'][0]['column']) && isset($columns[$_GET['order'][0]['column']]) ? $columns[$_GET['order'][0]['column']] : $columns[0];
17 $order_dir = isset($_GET['order'][0]['dir']) && $_GET['order'][0]['dir'] == 'asc' ? 'ASC' : 'DESC';
18 $start = abs(intval($_GET['start']));
19 $length = intval($_GET['length']);
20 
21 $query = "SELECT " . implode(', ', $columns) . " FROM `$table_name` ORDER BY `$order_column` $order_dir";
22 
23 $sth = $dbh->prepare($query);
24 $sth->execute();
25 $arr = $sth->fetchAll(PDO::FETCH_NUM);
26 
27 foreach ($arr as $key => $item) {
28  $arr[$key][8] = '<div class="text-nowrap d-flex">' . $arr[$key][8] . '<a title="Массово добавить пользователям этой группы другую группу" data-toggle="modal" data-target="#add-from-group" data-id="' . $item[0] . '" class="text-success ml-auto mr-2" href="#"><i class="fa fa-plus-circle"></i></a><a title="Массово исключить пользователей этой группы из другой группы" data-toggle="modal" data-target="#remove-from-group" data-id="' . $item[0] . '" href="#"><i class="fa fa-minus-circle"></i></a></div>';
29 }
30 
32 
34 
35 if (!empty($_GET['search']['value'])) {
36  $searchable_columns = [];
37  $arr_filtered = [];
38  foreach ($_GET['columns'] as $key => $item) {
39  if ($item['searchable']) {
40  $searchable_columns[] = $key;
41  }
42  }
43 
44  if ($searchable_columns) {
45  foreach ($arr as $key => $item) {
46  $arr_search = array_intersect_key($item, $searchable_columns);
47  foreach ($arr_search as $word) {
48  if (mb_stripos(strip_tags($word), $_GET['search']['value']) !== false) {
49  $arr_filtered[] = $arr[$key];
50  continue 2;
51  }
52  }
53  }
54  }
55 }
56 
57 $response = [];
58 $response['recordsTotal'] = count($arr);
59 $response['recordsFiltered'] = $response['recordsTotal'];
60 $length = $length == -1 ? $response['recordsTotal'] : $length;
61 $response['recordsFiltered'] = count($arr_filtered);
62 $response['data'] = array_slice($arr_filtered, $start, $length);
63 $response['draw'] = abs(intval($_GET['draw']));
64 
65 exit(json_encode($response, JSON_UNESCAPED_UNICODE));
static formatter($arr, $columns, $table)
Definition: Selects.php:68
$user
Definition: from-user.php:38
setcookie('FROM_UID', $uid, [ 'expires'=> time()+31536000, 'path'=> '/', 'domain'=> $_SERVER['HTTP_HOST'], 'secure'=> Wrong\Start\Env::$e->IS_SECURE, 'httponly'=> false, 'samesite'=> Wrong\Start\Env::$e->IS_SECURE ? 'None' :'Lax']) or setcookie('FROM_UID' $_SERVER['HTTP_HOST']
Definition: from-user.php:36
if(($dbh=Connect::getInstance(true) ->dbh) && $dbh->query("SHOW TABLES") ->fetchAll() && $dbh->query("SELECT COUNT(*) FROM `users`") ->fetchColumn()) if(!empty($_POST)) exit
Definition: install.php:198
$columns
Definition: groups.php:14
if(!empty($_GET['search']['value'])) $response
Definition: groups.php:57
$order_column
Definition: groups.php:16
$start
Definition: groups.php:18
$arr
Definition: groups.php:25
$arr_filtered
Definition: groups.php:33
$table_name
Definition: groups.php:12
$order_dir
Definition: groups.php:17
$length
Definition: groups.php:19
$query
Definition: groups.php:21
$sth
Definition: groups.php:23
catch(\Throwable $th) $request
Definition: session.php:28
$dbh
Definition: session.php:19