Pages.php
См. документацию.
1 <?php
2 
3 /**
4  * @file
5  * @brief контроллер управления моделями страниц
6  *
7  */
8 
9 namespace Wrong\Models;
10 
13 use Wrong\File\Path;
14 
15 /**
16  * @brief Pages контроллер управления моделями страниц, расширяет Controller
17  *
18  */
19 
20 class Pages 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, $replace_path = [])
31  {
32  $dbh = Connect::getInstance()->dbh;
33  if ($replace_path) {
34  $arr['file'] = strtr($arr['file'], $replace_path);
35  $arr['request'] = strtr($arr['request'], $replace_path);
36  }
37  Path::mkdir($_SERVER['DOCUMENT_ROOT'] . $arr['file']);
38  if (!file_exists($_SERVER['DOCUMENT_ROOT'] . $arr['file'])) {
39  $name = $arr['name'];
40  $data = <<<EOF
41 <?php
42 
43 /**
44  * @file
45  * @brief страница $name
46  */
47 
48 ?>
49 
50 <div class="container mt-3">Контент страницы $name</div>
51 
52 EOF;
53  $file = new \SplFileObject($_SERVER['DOCUMENT_ROOT'] . $arr['file'], 'a+b');
54  $file->flock(LOCK_EX);
55  $file->fwrite($data);
56  $file->flock(LOCK_UN);
57  }
58 
59  $sth = $dbh->prepare("INSERT INTO `pages` (`request`, `file`, `groups`, `owner_group`, `template_id`, `name`) VALUES (:request, :file, :groups, :owner_group, :template_id, :name)");
60  $arr['groups'] = json_encode($arr['groups']);
61  $sth->bindValue(':request', $arr['request']);
62  $sth->bindValue(':file', $arr['file']);
63  $sth->bindValue(':groups', $arr['groups']);
64  $sth->bindValue(':owner_group', $arr['owner_group']);
65  $sth->bindValue(':template_id', $arr['template_id']);
66  $sth->bindValue(':name', $arr['name']);
67  $sth->execute();
68  return $dbh->lastInsertId();
69  }
70 }
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
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
Path удаляет и очищает каталоги
Definition: Path.php:17
static mkdir($filename)
Definition: Path.php:23
Pages контроллер управления моделями страниц, расширяет Controller.
Definition: Pages.php:21
static create($arr, $replace_path=[])
Definition: Pages.php:30
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