add-group.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 array_walk_recursive($_POST, function (&$item) {
13  $item = trim(htmlspecialchars($item, ENT_QUOTES));
14 });
15 
16 if (empty($_POST['name'])) {
17  exit(json_encode(['error' => 'Имя группы не указано']));
18 }
19 
20 if (in_array($_POST['name'], Wrong\Rights\Group::$group_names)) {
21  exit(json_encode(['error' => 'В системе уже есть группа с таким именем']));
22 }
23 
24 if (empty($_POST['owner_group']) || !in_array($_POST['owner_group'], $user->subordinate_groups)) {
25  exit(json_encode(['error' => '"Группа владелец" не найдена среди подчиненных групп']));
26 }
27 
28 if ($_POST['weight'] > $user->weight_subordinate || $_POST['weight'] < 0) {
29  exit(json_encode(['error' => 'Системный вес указан некорректно']));
30 }
31 
32 if (empty($_POST['path'])) {
33  exit(json_encode(['error' => 'Каталог по умолчанию не указан']));
34 }
35 
36 if (!preg_match('#^[a-z0-9]+$#', $_POST['path'])) {
37  exit(json_encode(['error' => 'Некорректное имя каталога по умолчанию, только символы нижнего регистра и цифры']));
38 }
39 
40 if (($row = Wrong\Database\Controller::find($_POST['path'], 'path', 'groups')) && !in_array($row->id, $user->subordinate_groups)) {
41  exit(json_encode(['error' => 'Недостаточно прав для использования каталога <b>' . $_POST['path'] . '</b>']));
42 }
43 
44 if (($models_limit = Wrong\Database\Controller::find($_POST['owner_group'], 'id', 'groups')->models_limit) && $models_limit <= Wrong\Rights\Group::count_all_owner_models($_POST['owner_group'])) {
45  exit(json_encode(['error' => 'Лимит моделей для данной группы исчерпан']));
46 }
47 
48 if (Wrong\Models\Groups::create($_POST)) {
49  exit(json_encode(['result' => 'ok', 'message' => 'Группа успешно создана']));
50 }
51 
52 exit(json_encode(['error' => 'Ошибка']));
$_POST['groups']
Definition: add-action.php:16
$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