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