Groups.php
См. документацию.
1 <?php
2 
3 /**
4  * @file
5  * @brief контроллер управления моделями групп
6  *
7  */
8 
9 namespace Wrong\Models;
10 
14 
15 /**
16  * @brief Groups контроллер управления моделями групп пользователей, расширяет Controller
17  *
18  */
19 
20 class Groups extends Controller implements ModelsInterface
21 {
22  /**
23  * создает в бд запись для новой модели типа "группа"
24  *
25  * @param array $arr массив данных модели
26  * @param array $replace_path массив путей для замены в файле и параметры запроса.
27  *
28  * @return int Последний вставленный идентификатор.
29  */
30  public static function create($arr)
31  {
32  $dbh = Connect::getInstance()->dbh;
33  $sth = $dbh->prepare("INSERT INTO `groups` (`name`, `owner_group`, `weight`, `path`) VALUES (:name, :owner_group, :weight, :path)");
34  $sth->bindValue(':name', $arr['name']);
35  $sth->bindValue(':owner_group', $arr['owner_group']);
36  $sth->bindValue(':weight', $arr['weight']);
37  $sth->bindValue(':path', $arr['path']);
38  $sth->execute();
39 
40  if ($id = $dbh->lastInsertId()) {
41  if (!empty($arr['add-groups'])) {
42  /** Если указано $arr['add-groups'], то при создании новой группы добавляет ее в поле groups всех записей
43  * в таблицах actions, modals, selects, pages, users, если их группы доступа "все" или "все авторизованные" */
44  foreach (['actions', 'modals', 'selects', 'pages', 'users', 'templates'] as $table) {
45  foreach ($dbh->query("SELECT * FROM `$table`") as $row) {
46  $array = json_decode($row->groups);
47  if (Group::is_users($array) || Group::is_not_system($array)) {
48  $array[] = $id;
49  $array = array_values(array_unique(array_map('intval', $array)));
50  $dbh->query("UPDATE `$table` SET `groups` = '" . json_encode($array) . "' WHERE `id` = $row->id");
51  }
52  }
53  }
54  }
55  if (!empty($arr['add-groups-owner'])) {
56  /** Если указано $arr['add-groups-owner'], то при создании новой группы добавляет ее в поле groups всех записей
57  * в таблицах actions, modals, selects, pages, users, если они доступны владельцу новой группы */
58  foreach (['actions', 'modals', 'selects', 'pages', 'users', 'templates'] as $table) {
59  foreach ($dbh->query("SELECT * FROM `$table`") as $row) {
60  $array = json_decode($row->groups);
61  if (in_array($arr['owner_group'], $array) || $arr['owner_group'] == $row->owner_group) {
62  $array[] = $id;
63  $array = array_values(array_unique(array_map('intval', $array)));
64  $dbh->query("UPDATE `$table` SET `groups` = '" . json_encode($array) . "' WHERE `id` = $row->id");
65  }
66  }
67  }
68  }
69  return $id;
70  }
71  }
72 }
if(!($row=Wrong\Models\Crontabs::find($_POST['id']))) if(! $user->access() ->write($row)) $sth
Definition: edit-cli.php:20
if(!in_array($_POST['table'], Wrong\Database\Controller::$tables)) $table
Definition: filter.php:20
Connect создает подключение к базе данных
Definition: Connect.php:19
static getInstance($ignore_error=false)
Definition: Connect.php:50
Controller контроллер для запросов к БД
Definition: Controller.php:17
Groups контроллер управления моделями групп пользователей, расширяет Controller.
Definition: Groups.php:21
static create($arr)
Definition: Groups.php:30
Group класс, содержащий статические методы, используемые для управления группами пользователей.
Definition: Group.php:25
static is_not_system($arr)
Definition: Group.php:275
static is_users($arr)
Definition: Group.php:261
ModelsInterface интерфейс управления моделями
$arr
Definition: actions.php:25
$dbh
Definition: session.php:19