Панель настроек, асинхронные запросы, калькулятор лазерной резки

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich
2021-12-16 09:09:08 +10:00
parent fdd6e010ec
commit 503e25647c
29 changed files with 1787 additions and 232 deletions

View File

@@ -0,0 +1,91 @@
<?php
declare(strict_types=1);
namespace mirzaev\calculator\controllers;
use mirzaev\calculator\controllers\core;
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>
*/
final class settings_controller extends core
{
/**
* Настройки (страница)
*
* HTML-документ со списком настроек
*
* @param array $vars Параметры
*/
public function index(array $vars = []): ?string
{
// Инициализация журнала ошибок
$vars['errors'] = ['settings' => []];
// Инициализация аккаунта
$vars['account'] = accounts::account($vars['errors']);
// Генерация представления
return $this->view->render(DIRECTORY_SEPARATOR . 'settings' . DIRECTORY_SEPARATOR . 'index.html', $vars);
}
/**
* Записать
*
* @param array $vars Параметры
*/
public function write(array $vars = []): ?bool
{
// Инициализация журнала ошибок
$vars['errors'] = ['settings' => []];
// Инициализация аккаунта
$vars['account'] = accounts::account($vars['errors']);
if ($vars['account'] && $vars['account']['permissions']['settings'] ?? 0 === 1) {
// Удалось аутентифицироваться и пройдена проверка авторизации
foreach ($vars['settings'] ?? [] as $name => $value) {
// Перебор настроек
settings::write($name, $value);
return true;
}
}
return false;
}
/**
* Прочитать
*
* @param array $vars Параметры
*/
public function read(array $vars = []): ?string
{
// Инициализация журнала ошибок
$vars['errors'] = ['settings' => []];
// Инициализация аккаунта
$vars['account'] = accounts::account($vars['errors']);
// Инициализация буфера вывода
$settings = [];
foreach ($vars['settings'] ?? [] as $name) {
// Перебор настроек
$settings[] = settings::read($name, $vars['account'] && $vars['account']['permissions']['settings'] ?? 0 === 1);
}
return json_encode($settings);
}
}