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

admin/model/extension/task_manager.php

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

<?php
// Model for Task Manager module in OpenCart Admin Panel
class ModelExtensionTaskManager extends Model {
    
    // Get all tasks
    public function getTasks() {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "task_manager ORDER BY task_id DESC");
        return $query->rows;
    }

    // Get a single task by ID
    public function getTask($task_id) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "task_manager WHERE task_id = '" . (int)$task_id . "'");
        return $query->row;
    }

    // Add a new task
    public function addTask($data) {
        $this->db->query("INSERT INTO " . DB_PREFIX . "task_manager SET title = '" . $this->db->escape($data['title']) . "', 
                            description = '" . $this->db->escape($data['description']) . "', 
                            user_id = '" . (int)$data['user_id'] . "', 
                            category_id = '" . (int)$data['category_id'] . "', 
                            status = '" . (int)$data['status'] . "', 
                            due_date = '" . $this->db->escape($data['due_date']) . "', 
                            priority = '" . (int)$data['priority'] . "', 
                            tags = '" . $this->db->escape($data['tags']) . "'");
    }

    // Edit an existing task
    public function editTask($task_id, $data) {
        $this->db->query("UPDATE " . DB_PREFIX . "task_manager SET title = '" . $this->db->escape($data['title']) . "', 
                            description = '" . $this->db->escape($data['description']) . "', 
                            user_id = '" . (int)$data['user_id'] . "', 
                            category_id = '" . (int)$data['category_id'] . "', 
                            status = '" . (int)$data['status'] . "', 
                            due_date = '" . $this->db->escape($data['due_date']) . "', 
                            priority = '" . (int)$data['priority'] . "', 
                            tags = '" . $this->db->escape($data['tags']) . "' 
                            WHERE task_id = '" . (int)$task_id . "'");
    }

    // Delete a task
    public function deleteTask($task_id) {
        $this->db->query("DELETE FROM " . DB_PREFIX . "task_manager WHERE task_id = '" . (int)$task_id . "'");
    }

    // Get all users for task assignment
    public function getUsers() {
        $query = $this->db->query("SELECT user_id, firstname, lastname FROM " . DB_PREFIX . "user");
        return $query->rows;
    }

    // Get all categories for tasks
    public function getCategories() {
        $query = $this->db->query("SELECT category_id, name FROM " . DB_PREFIX . "task_category");
        return $query->rows;
    }

    // Get tasks for report (optional, for reporting purposes)
    public function getTasksForReport() {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "task_manager");
        return $query->rows;
    }

    // Get tasks by user id
    public function getTasksByUser($user_id) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "task_manager WHERE user_id = '" . (int)$user_id . "'");
        return $query->rows;
    }

    // Get tasks by category
    public function getTasksByCategory($category_id) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "task_manager WHERE category_id = '" . (int)$category_id . "'");
        return $query->rows;
    }

    // Get tasks with specific filters (e.g. status, priority)
    public function getTasksByFilters($data) {
        $sql = "SELECT * FROM " . DB_PREFIX . "task_manager WHERE 1";

        if (!empty($data['status'])) {
            $sql .= " AND status = '" . (int)$data['status'] . "'";
        }

        if (!empty($data['priority'])) {
            $sql .= " AND priority = '" . (int)$data['priority'] . "'";
        }

        if (!empty($data['due_date'])) {
            $sql .= " AND due_date = '" . $this->db->escape($data['due_date']) . "'";
        }

        $sql .= " ORDER BY task_id DESC";

        $query = $this->db->query($sql);
        return $query->rows;
    }

    // Add log entry for task activity
    public function addTaskLog($task_id, $action, $note) {
        $this->db->query("INSERT INTO " . DB_PREFIX . "task_log SET task_id = '" . (int)$task_id . "', 
                           action = '" . $this->db->escape($action) . "', 
                           note = '" . $this->db->escape($note) . "', 
                           date_added = NOW()");
    }

    // Get task logs
    public function getTaskLogs($task_id) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "task_log WHERE task_id = '" . (int)$task_id . "' ORDER BY date_added DESC");
        return $query->rows;
    }
}

Объяснение:

  1. Методы для работы с задачами:

    • getTasks() - Получение всех задач.

    • getTask($task_id) - Получение одной задачи по ID.

    • addTask($data) - Добавление новой задачи.

    • editTask($task_id, $data) - Редактирование существующей задачи.

    • deleteTask($task_id) - Удаление задачи.

    • getTasksByUser($user_id) - Получение задач по ID пользователя.

    • getTasksByCategory($category_id) - Получение задач по ID категории.

    • getTasksByFilters($data) - Получение задач с фильтрацией по статусу, приоритету и дате.

  2. Методы для логирования:

    • addTaskLog($task_id, $action, $note) - Добавление логов для задач.

    • getTaskLogs($task_id) - Получение логов для конкретной задачи.

  3. Методы для пользователей и категорий:

    • getUsers() - Получение списка пользователей.

    • getCategories() - Получение списка категорий задач.

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