edit-code.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 if (!($row = Wrong\Database\Controller::find($_POST['id'], 'id', $_POST['table']))) {
13  exit(json_encode(['error' => 'Ошибка']));
14 }
15 
16 if ($user->access()->is_system($row)) {
17  exit(json_encode(['error' => 'Изменить код файла обработчика системного функционала нельзя!']));
18 }
19 
20 if (!$user->access()->write($row)) {
21  exit(json_encode(['error' => 'Недостаточно прав!']));
22 }
23 
24 $_POST['code'] = str_replace("\r", '', $_POST['code']);
25 
26 if ($_POST['code'] == file_get_contents($_SERVER['DOCUMENT_ROOT'] . $row->file)) {
27  exit(json_encode(['result' => 'ok', 'message' => 'Файл оставлен без изменений']));
28 }
29 
30 $file = new \SplFileObject($_SERVER['DOCUMENT_ROOT'] . $row->file, 'w+b');
31 $file->flock(LOCK_EX);
32 $file->ftruncate(0);
33 $file->rewind();
34 $file->fwrite($_POST['code']);
35 $file->flock(LOCK_UN);
36 
37 clearstatcache(true, $_SERVER['DOCUMENT_ROOT'] . $row->file);
38 exit(json_encode(['result' => 'ok', 'message' => 'Файл успешно перезаписан', 'modified' => date('Y-m-d H:i:s', filemtime($_SERVER['DOCUMENT_ROOT'] . $row->file))]));
if(!($row=Wrong\Database\Controller::find($_POST['id'], 'id', $_POST['table']))) if($user->access() ->is_system($row)) if(! $user->access() ->write($row)) $_POST['code']
Definition: edit-code.php:24
if($_POST['code']==file_get_contents($_SERVER['DOCUMENT_ROOT'] . $row->file)) $file
Definition: edit-code.php:30
$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