Modals.php
См. документацию.
1 <?php
2 
3 /**
4  * @file
5  * @brief контроллер управления моделями модальных окон
6  *
7  */
8 
9 namespace Wrong\Models;
10 
13 use Wrong\File\Path;
15 
16 /**
17  * @brief Modals контроллер управления моделями групп пользователей, расширяет Controller
18  *
19  */
20 
21 class Modals extends Controller implements ModelsInterface
22 {
23 
24  /**
25  * создает в бд запись для новой модели типа "модальное окно" и копирует указанный файл шаблона
26  *
27  * @param array $arr массив данных модели
28  * @param array $replace_path массив путей для замены в файле и параметры запроса.
29  *
30  * @return int Последний вставленный идентификатор.
31  */
32  public static function create($arr, $replace_path = [])
33  {
34  $dbh = Connect::getInstance()->dbh;
35  if ($replace_path) {
36  $arr['file'] = strtr($arr['file'], $replace_path);
37  $arr['request'] = strtr($arr['request'], $replace_path);
38  }
39  Path::mkdir($_SERVER['DOCUMENT_ROOT'] . $arr['file']);
40  $arr['template_filename'] = Templates::all_available($arr['template_id'])[0]->file;
41  if (copy($_SERVER['DOCUMENT_ROOT'] . $arr['template_filename'], $_SERVER['DOCUMENT_ROOT'] . $arr['file'])) {
42  $sth = $dbh->prepare("INSERT INTO `modals` (`request`, `file`, `groups`, `owner_group`) VALUES (:request, :file, :groups, :owner_group)");
43  $arr['groups'] = json_encode($arr['groups']);
44  $sth->bindValue(':request', $arr['request']);
45  $sth->bindValue(':file', $arr['file']);
46  $sth->bindValue(':groups', $arr['groups']);
47  $sth->bindValue(':owner_group', $arr['owner_group']);
48  $sth->execute();
49  return $dbh->lastInsertId();
50  } else {
51  Path::rmdir($_SERVER['DOCUMENT_ROOT'] . $arr['file']);
52  }
53  }
54 
55  /**
56  * если в модальном окне есть форма с action аттрибутом Wrong\Models\Actions::find(0)->request
57  * то исправляет в файле 0 на переданный $action_id
58  *
59  * @param $action_id идентификатор модели действия
60  * @param string $modal_id идентификатор модели модального окна
61  *
62  */
63  public static function set_action($action_id, $modal_id)
64  {
65  $file = $_SERVER['DOCUMENT_ROOT'] . self::find($modal_id)->file;
66  if (file_exists($file) && ($data = file_get_contents($file)) && strpos($data, 'Wrong\Models\Actions::find(0)') !== false) {
67  $data = str_replace('Wrong\Models\Actions::find(0)', 'Wrong\Models\Actions::find(' . $action_id . ')', $data);
68  $file = new \SplFileObject($file, 'w+b');
69  $file->flock(LOCK_EX);
70  $file->ftruncate(0);
71  $file->rewind();
72  $file->fwrite($data);
73  $file->flock(LOCK_UN);
74  }
75  }
76 }
if(!in_array($_POST['template_id'], array_column(Wrong\Models\Templates::all_available(), 'id'))) $modal_id
Definition: add-action.php:24
if(!($row=Wrong\Models\Crontabs::find($_POST['id']))) if(! $user->access() ->write($row)) $sth
Definition: edit-cli.php:20
if($_POST['code']==file_get_contents($_SERVER['DOCUMENT_ROOT'] . $row->file)) $file
Definition: edit-code.php:30
$action_id
Definition: add-modal.php:20
if(! $response->_meta) $data
Definition: anycomment.php:18
Connect создает подключение к базе данных
Definition: Connect.php:19
static getInstance($ignore_error=false)
Definition: Connect.php:50
Controller контроллер для запросов к БД
Definition: Controller.php:17
static find($value, $column='id', $table='')
Definition: Controller.php:31
Path удаляет и очищает каталоги
Definition: Path.php:17
static mkdir($filename)
Definition: Path.php:23
static rmdir($filename)
Definition: Path.php:54
Modals контроллер управления моделями групп пользователей, расширяет Controller.
Definition: Modals.php:22
static create($arr, $replace_path=[])
Definition: Modals.php:32
static set_action($action_id, $modal_id)
Definition: Modals.php:63
Templates контроллер управления моделями выборок, расширяет Controller.
Definition: Templates.php:22
static all_available($value='', $column='id', $table='')
Definition: Templates.php:68
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
ModelsInterface интерфейс управления моделями
$arr
Definition: actions.php:25
$dbh
Definition: session.php:19