forked from mirzaev/site-tordv-calculator
Панель настроек, асинхронные запросы, калькулятор лазерной резки
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user