Sindbad~EG File Manager
<?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