*/ final class settings_controller extends core { /** * Настройки (страница) * * HTML-документ со списком настроек * * @param array $vars Параметры * * @return string HTML-докумкент или журнал ошибок */ public function index(array $vars = []): string { // Инициализация журнала ошибок $vars['errors'] = ['settings' => []]; // Инициализация аккаунта $vars['account'] = accounts::account($vars['errors']['settings']); 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 = []): ?string { // Инициализация журнала ошибок $vars['errors'] = ['settings' => []]; // Инициализация аккаунта $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, $vars['errors']['settings']); } return json_encode($vars['errors']); } http_response_code(500); return json_encode($vars['errors']); } /** * Прочитать * * @param array $vars Параметры */ public function read(array $vars = []): ?string { // Инициализация журнала ошибок $vars['errors'] = ['settings' => []]; // Инициализация аккаунта $vars['account'] = accounts::account($vars['errors']['settings']); // Инициализация буфера вывода $settings = []; foreach ($vars['settings'] ?? [] as $name) { // Перебор настроек $settings[] = settings::read($name, $vars['errors']['settings']); } return json_encode($settings); } }