Sindbad~EG File Manager

Current Path : /home/copmadinaarea/thecopmadinaarea.org/newsfeed/classes/
Upload File :
Current File : /home/copmadinaarea/thecopmadinaarea.org/newsfeed/classes/Category.php

<?php
/**
 * Category Management Class for COP News Portal
 */

class Category {
    private $conn;
    private $table_name = "categories";

    public function __construct($db) {
        $this->conn = $db;
    }

    public function create($data) {
        $query = "INSERT INTO " . $this->table_name . " 
                  (name, type, description, created_by, status) 
                  VALUES (?, ?, ?, ?, ?)";
        
        $stmt = $this->conn->prepare($query);
        
        $result = $stmt->execute([
            $data['name'],
            $data['type'],
            $data['description'] ?? '',
            $data['created_by'],
            $data['status'] ?? 'active'
        ]);

        if ($result) {
            $category_id = $this->conn->lastInsertId();
            log_audit('CREATE', 'categories', $category_id, null, $data);
            return $category_id;
        }
        
        return false;
    }

    public function getById($id) {
        $query = "SELECT c.*, u.name as created_by_name
                  FROM " . $this->table_name . " c
                  LEFT JOIN users u ON c.created_by = u.id
                  WHERE c.id = ?";
        
        $stmt = $this->conn->prepare($query);
        $stmt->execute([$id]);
        
        return $stmt->fetch(PDO::FETCH_ASSOC);
    }

    public function getAll($status = 'active') {
        $query = "SELECT c.*, u.name as created_by_name
                  FROM " . $this->table_name . " c
                  LEFT JOIN users u ON c.created_by = u.id";
        
        if ($status) {
            $query .= " WHERE c.status = ?";
            $stmt = $this->conn->prepare($query);
            $stmt->execute([$status]);
        } else {
            $stmt = $this->conn->prepare($query);
            $stmt->execute();
        }
        
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

    public function getByType($type) {
        $query = "SELECT * FROM " . $this->table_name . " WHERE type = ? AND status = 'active' ORDER BY name";
        $stmt = $this->conn->prepare($query);
        $stmt->execute([$type]);
        
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

    public function update($id, $data) {
        $old_data = $this->getById($id);
        
        $fields = [];
        $values = [];
        
        foreach ($data as $key => $value) {
            $fields[] = "$key = ?";
            $values[] = $value;
        }
        
        if (empty($fields)) {
            return false;
        }
        
        $values[] = $id;
        $query = "UPDATE " . $this->table_name . " SET " . implode(', ', $fields) . " WHERE id = ?";
        
        $stmt = $this->conn->prepare($query);
        $result = $stmt->execute($values);
        
        if ($result) {
            log_audit('UPDATE', 'categories', $id, $old_data, $data);
        }
        
        return $result;
    }

    public function delete($id) {
        $old_data = $this->getById($id);
        
        $query = "DELETE FROM " . $this->table_name . " WHERE id = ?";
        $stmt = $this->conn->prepare($query);
        $result = $stmt->execute([$id]);
        
        if ($result) {
            log_audit('DELETE', 'categories', $id, $old_data);
        }
        
        return $result;
    }

    public function nameExists($name, $exclude_id = null) {
        $query = "SELECT id FROM " . $this->table_name . " WHERE name = ?";
        $params = [$name];
        
        if ($exclude_id) {
            $query .= " AND id != ?";
            $params[] = $exclude_id;
        }
        
        $stmt = $this->conn->prepare($query);
        $stmt->execute($params);
        
        return $stmt->rowCount() > 0;
    }
}
?>

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists