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