С 9:00 до 21:00 Без выходных

admin/controller/extension/task_manager.php

Вот содержимое файла admin/controller/extension/task_manager.php:

<?php
// Controller for Task Manager module in OpenCart Admin Panel
class ControllerExtensionTaskManager extends Controller {
    private $error = array();

    // Load necessary language files and models
    public function __construct($registry) {
        parent::__construct($registry);
        $this->load->language('extension/task_manager');
        $this->load->model('extension/task_manager');
    }

    // Index function to load task manager page
    public function index() {
        $this->load->language('extension/task_manager');
        $this->document->setTitle($this->language->get('heading_title'));

        // Get tasks from model
        $data['tasks'] = $this->model_extension_task_manager->getTasks();

        // Render the view template
        $this->response->setOutput($this->load->view('extension/task_manager/index', $data));
    }

    // Add new task
    public function add() {
        $this->load->language('extension/task_manager');
        $this->document->setTitle($this->language->get('heading_title'));

        if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) {
            $this->model_extension_task_manager->addTask($this->request->post);

            $this->session->data['success'] = $this->language->get('text_success_add');
            $this->response->redirect($this->url->link('extension/task_manager', 'user_token=' . $this->session->data['user_token'], true));
        }

        // Get users and categories for task form
        $data['users'] = $this->model_extension_task_manager->getUsers();
        $data['categories'] = $this->model_extension_task_manager->getCategories();

        // Show the task form
        $this->response->setOutput($this->load->view('extension/task_manager/task_form', $data));
    }

    // Edit existing task
    public function edit() {
        $this->load->language('extension/task_manager');
        $this->document->setTitle($this->language->get('heading_title'));

        if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) {
            $this->model_extension_task_manager->editTask($this->request->get['task_id'], $this->request->post);

            $this->session->data['success'] = $this->language->get('text_success_edit');
            $this->response->redirect($this->url->link('extension/task_manager', 'user_token=' . $this->session->data['user_token'], true));
        }

        // Get task data for editing
        $data['task'] = $this->model_extension_task_manager->getTask($this->request->get['task_id']);
        $data['users'] = $this->model_extension_task_manager->getUsers();
        $data['categories'] = $this->model_extension_task_manager->getCategories();

        // Show the task form for editing
        $this->response->setOutput($this->load->view('extension/task_manager/task_form', $data));
    }

    // Delete task
    public function delete() {
        $this->load->language('extension/task_manager');

        if (isset($this->request->post['selected']) && $this->validateDelete()) {
            foreach ($this->request->post['selected'] as $task_id) {
                $this->model_extension_task_manager->deleteTask($task_id);
            }

            $this->session->data['success'] = $this->language->get('text_success_delete');
            $this->response->redirect($this->url->link('extension/task_manager', 'user_token=' . $this->session->data['user_token'], true));
        }

        // Get tasks for deletion
        $data['tasks'] = $this->model_extension_task_manager->getTasks();

        // Show task list with delete option
        $this->response->setOutput($this->load->view('extension/task_manager/task_list', $data));
    }

    // Validate form input
    protected function validateForm() {
        if (!$this->user->hasPermission('modify', 'extension/task_manager')) {
            $this->error['warning'] = $this->language->get('error_permission');
        }

        if (empty($this->request->post['title'])) {
            $this->error['title'] = $this->language->get('error_title');
        }

        return !$this->error;
    }

    // Validate delete permission
    protected function validateDelete() {
        if (!$this->user->hasPermission('modify', 'extension/task_manager')) {
            $this->error['warning'] = $this->language->get('error_permission');
        }

        return !$this->error;
    }

    // Get task statistics for report
    public function report() {
        $this->load->language('extension/task_manager');
        $this->document->setTitle($this->language->get('heading_report'));

        $data['tasks'] = $this->model_extension_task_manager->getTasksForReport();

        // Show report page
        $this->response->setOutput($this->load->view('extension/task_manager/report', $data));
    }
}

Объяснение:

  1. Метод index(): Загружает список всех задач, используя модель и выводит его на странице администрирования.

  2. Метод add(): Позволяет добавить новую задачу. После отправки формы она проверяется и добавляется в базу данных.

  3. Метод edit(): Обрабатывает редактирование уже существующей задачи. Отображает форму с текущими данными задачи.

  4. Метод delete(): Позволяет удалить задачи, если они были выбраны в списке.

  5. Метод validateForm(): Проверка разрешений и валидности данных формы.

  6. Метод validateDelete(): Проверка разрешений перед удалением задач.

  7. Метод report(): Формирует отчет по задачам, статистика и метрики.

Это основной контроллер для управления задачами в панели администратора OpenCart. Он взаимодействует с моделью и отображает соответствующие страницы для администраторов.