|
|
@@ -0,0 +1,77 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Models;
|
|
|
+
|
|
|
+use App\Enums\PageLayout;
|
|
|
+
|
|
|
+class Page
|
|
|
+{
|
|
|
+ private $db;
|
|
|
+
|
|
|
+ public function __construct()
|
|
|
+ {
|
|
|
+ $this->db = \db();
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getAll()
|
|
|
+ {
|
|
|
+ return $this->db->fetchAll("SELECT * FROM pages ORDER BY id DESC");
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getById($id)
|
|
|
+ {
|
|
|
+ return $this->db->fetchOne("SELECT * FROM pages WHERE id = ?", [$id]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getBySlug($slug)
|
|
|
+ {
|
|
|
+ return $this->db->fetchOne("SELECT * FROM pages WHERE slug = ?", [$slug]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function create($data)
|
|
|
+ {
|
|
|
+ $sql = "INSERT INTO pages (name, slug, title, content, extra_fields, layout, is_homepage) VALUES (?, ?, ?, ?, ?, ?, ?)";
|
|
|
+ $params = [
|
|
|
+ $data['name'],
|
|
|
+ $data['slug'],
|
|
|
+ $data['title'] ?? null,
|
|
|
+ $data['content'] ?? null,
|
|
|
+ $data['extra_fields'] ? json_encode($data['extra_fields']) : null,
|
|
|
+ $data['layout'] ?? PageLayout::Default->value,
|
|
|
+ $data['is_homepage'] ?? 0
|
|
|
+ ];
|
|
|
+
|
|
|
+ return $this->db->execute($sql, $params);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function update($id, $data)
|
|
|
+ {
|
|
|
+ $sql = "UPDATE pages SET name = ?, slug = ?, title = ?, content = ?, extra_fields = ?, layout = ?, is_homepage = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?";
|
|
|
+ $params = [
|
|
|
+ $data['name'],
|
|
|
+ $data['slug'],
|
|
|
+ $data['title'] ?? null,
|
|
|
+ $data['content'] ?? null,
|
|
|
+ $data['extra_fields'] ? json_encode($data['extra_fields']) : null,
|
|
|
+ $data['layout'] ?? PageLayout::Default->value,
|
|
|
+ $data['is_homepage'] ?? 0,
|
|
|
+ $id
|
|
|
+ ];
|
|
|
+
|
|
|
+ return $this->db->execute($sql, $params);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function delete($id)
|
|
|
+ {
|
|
|
+ return $this->db->execute("DELETE FROM pages WHERE id = ?", [$id]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function exists($slug, $excludeId = null)
|
|
|
+ {
|
|
|
+ if ($excludeId) {
|
|
|
+ return $this->db->fetchOne("SELECT id FROM pages WHERE slug = ? AND id != ?", [$slug, $excludeId]);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $this->db->fetchOne("SELECT id FROM pages WHERE slug = ?", [$slug]);
|
|
|
+ }
|
|
|
+}
|