forked from mirzaev/site-tordv-calculator
Лазерная резка готова
This commit is contained in:
@@ -9,7 +9,7 @@ use mirzaev\calculator\models\accounts_model as accounts;
|
||||
use mirzaev\calculator\models\settings_model as settings;
|
||||
|
||||
/**
|
||||
* Контроллер страницы настроек
|
||||
* Контроллер настроек
|
||||
*
|
||||
* @package mirzaev\calculator\controllers
|
||||
* @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
|
||||
@@ -22,46 +22,65 @@ final class settings_controller extends core
|
||||
* HTML-документ со списком настроек
|
||||
*
|
||||
* @param array $vars Параметры
|
||||
*
|
||||
* @return string HTML-докумкент или журнал ошибок
|
||||
*/
|
||||
public function index(array $vars = []): ?string
|
||||
public function index(array $vars = []): string
|
||||
{
|
||||
// Инициализация журнала ошибок
|
||||
$vars['errors'] = ['settings' => []];
|
||||
|
||||
// Инициализация аккаунта
|
||||
$vars['account'] = accounts::account($vars['errors']);
|
||||
$vars['account'] = accounts::account($vars['errors']['settings']);
|
||||
|
||||
// Генерация представления
|
||||
return $this->view->render(DIRECTORY_SEPARATOR . 'settings' . DIRECTORY_SEPARATOR . 'index.html', $vars);
|
||||
if (accounts::access('settings')) {
|
||||
// Разрешён доступ к изменению настроек
|
||||
|
||||
// Инициализация настроек
|
||||
$vars['settings'] = settings::translate(settings::filter(settings::read(errors: $vars['errors']['settings']), $vars['errors']['settings']), $vars['errors']['settings']);
|
||||
|
||||
// Генерация представления
|
||||
return $this->view->render(DIRECTORY_SEPARATOR . 'settings' . DIRECTORY_SEPARATOR . 'index.html', $vars);
|
||||
}
|
||||
|
||||
if (empty($vars['errors']['settings'])) return '';
|
||||
return json_encode($vars['errors']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Записать
|
||||
*
|
||||
* @param array $vars Параметры
|
||||
*
|
||||
* @return string Журнал ошибок
|
||||
*/
|
||||
public function write(array $vars = []): ?bool
|
||||
public function write(array $vars = []): ?string
|
||||
{
|
||||
// Инициализация журнала ошибок
|
||||
$vars['errors'] = ['settings' => []];
|
||||
|
||||
// Инициализация аккаунта
|
||||
$vars['account'] = accounts::account($vars['errors']);
|
||||
|
||||
$vars['account'] = accounts::account($vars['errors']['settings']);
|
||||
|
||||
if ($vars['account'] && $vars['account']['permissions']['settings'] ?? 0 === 1) {
|
||||
// Удалось аутентифицироваться и пройдена проверка авторизации
|
||||
|
||||
// Инициализация калькуляторов из тела запроса (подразумевается, что там массивы с параметрами)
|
||||
$vars['settings'] = json_decode(file_get_contents('php://input'), true);
|
||||
|
||||
foreach ($vars['settings'] ?? [] as $name => $value) {
|
||||
// Перебор настроек
|
||||
|
||||
settings::write($name, $value);
|
||||
|
||||
return true;
|
||||
// Запись в базу данных
|
||||
settings::write($name, $value, $vars['errors']['settings']);
|
||||
}
|
||||
|
||||
return json_encode($vars['errors']);
|
||||
}
|
||||
|
||||
return false;
|
||||
http_response_code(500);
|
||||
|
||||
return json_encode($vars['errors']);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -75,7 +94,7 @@ final class settings_controller extends core
|
||||
$vars['errors'] = ['settings' => []];
|
||||
|
||||
// Инициализация аккаунта
|
||||
$vars['account'] = accounts::account($vars['errors']);
|
||||
$vars['account'] = accounts::account($vars['errors']['settings']);
|
||||
|
||||
// Инициализация буфера вывода
|
||||
$settings = [];
|
||||
@@ -83,7 +102,7 @@ final class settings_controller extends core
|
||||
foreach ($vars['settings'] ?? [] as $name) {
|
||||
// Перебор настроек
|
||||
|
||||
$settings[] = settings::read($name, $vars['account'] && $vars['account']['permissions']['settings'] ?? 0 === 1);
|
||||
$settings[] = settings::read($name, $vars['errors']['settings']);
|
||||
}
|
||||
|
||||
return json_encode($settings);
|
||||
|
Reference in New Issue
Block a user