<?php
namespace app\controllers;
use app\components\Pagination;
use app\components\Session;
use app\components\Validator;
use app\models\Admin;
use app\models\Tasks;
/**
* Class AdminController
* @package app\controllers
*/
class AdminController extends AppController
{
/**
* Метод выводит главную страницу админки
*/
public function indexAction($page = 1)
{
// заголовок страницы
$title = 'Админ панель';
if (!$this->checkAcl()) {
echo 'Доступ закрыт. <a href="/admin/sign">Авторизуйтесь</a>';
exit;
}
$model = new Tasks();
$session = new Session();
// если есть alias вставляем его в переменую page
if (!empty($this->route['alias']) && $this->route['action'] == 'index') {
$page = $this->route['alias'];
}
// выводим список задач
$tasks = $model->getTasks($page);
// выводит количество задач
$countTasks = $model->getTasksCount();
// выводит пагинацию
$pagination = new Pagination($countTasks, $page, $model::SHOW_BY_DEFAULT, 'admin/page/');
$taskEdit = '';
// текущая задача для редактирования
if (isset($this->route['id']) && !empty($this->route['id'])) {
$taskEdit = $model->getTask($this->route['id']);
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$data = $_POST;
// просто сохраняем измененный текст....не заморачиваемся насчет валидации и т.п
$session->set('success', 'Задача #' . $taskEdit['id'] . ' успешно обновлена');
(new Admin())->editTask($data, $taskEdit['id']);
redirectFunction('/admin');
}
}
// передаем свойства в шаблон
$this->set(compact('title', 'taskEdit', 'tasks', 'countTasks', 'pagination', 'session'));
}
/**
* Метод авторизации в админку
*/
public function signAction()
{
// заголовок страницы
$title = 'Вход в админ панель';
if (!$this->checkAcl()) {
echo 'Доступ закрыт так как вы уже авторизовались. <a href="/admin">Главная</a>';
exit;
}
/** @var $model Admin */
$model = $this->model;
$session = new Session();
// переменная ошибок
$errors = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$data = $_POST;
// валидация формы
$v = new Validator();
$v->validate($data, $model->rules(), $model->attribute());
$errors = $v->error();
if (!$errors) {
if ($model->isCheckSign($data)) {
redirectFunction('/admin');
} else {
$session->set('error', 'Не правильный логин и/или пароль');
}
}
}
// передаем свойства в шаблон
$this->set(compact('title', 'session', 'errors'));
}
}