v1.0.0.9
Publisium
- <?php
-
- declare(strict_types=1);
-
- require_once __DIR__ . '/../includes/slugger.php';
-
- if (!Auth::hasRoleAtLeast(Auth::ROLE_EDITOR_IN_CHIEF)) {
- return;
- }
-
- $db = Database::site();
-
- $categoryId = (int) ($_POST['category_id'] ?? 0) ?: null;
- $name = trim((string) ($_POST['name'] ?? ''));
- $description = trim((string) ($_POST['description'] ?? ''));
- $parentId = (int) ($_POST['parent_id'] ?? 0) ?: null;
- $showInMenu = isset($_POST['show_in_menu']) ? 1 : 0;
-
- if ($name === '') {
- return;
- }
-
- $slug = Slugger::make($name);
-
- if ($categoryId !== null) {
- try {
- $statement = $db->prepare(
- 'UPDATE categories SET name = :name, slug = :slug, description = :description, parent_id = :parent_id, show_in_menu = :show_in_menu WHERE id = :id'
- );
- $statement->execute([
- 'name' => $name,
- 'slug' => $slug,
- 'description' => $description,
- 'parent_id' => $parentId,
- 'show_in_menu' => $showInMenu,
- 'id' => $categoryId,
- ]);
- } catch (PDOException $e) {
- error_log('Publisium: save_category with show_in_menu failed, retrying without it: ' . $e->getMessage());
- $statement = $db->prepare(
- 'UPDATE categories SET name = :name, slug = :slug, description = :description, parent_id = :parent_id WHERE id = :id'
- );
- $statement->execute([
- 'name' => $name,
- 'slug' => $slug,
- 'description' => $description,
- 'parent_id' => $parentId,
- 'id' => $categoryId,
- ]);
- }
- } else {
- try {
- $statement = $db->prepare(
- 'INSERT INTO categories (name, slug, description, parent_id, show_in_menu, sort_order) VALUES (:name, :slug, :description, :parent_id, :show_in_menu, 0)'
- );
- $statement->execute([
- 'name' => $name,
- 'slug' => $slug,
- 'description' => $description,
- 'parent_id' => $parentId,
- 'show_in_menu' => $showInMenu,
- ]);
- } catch (PDOException $e) {
- error_log('Publisium: save_category with show_in_menu failed, retrying without it: ' . $e->getMessage());
- $statement = $db->prepare(
- 'INSERT INTO categories (name, slug, description, parent_id, sort_order) VALUES (:name, :slug, :description, :parent_id, 0)'
- );
- $statement->execute([
- 'name' => $name,
- 'slug' => $slug,
- 'description' => $description,
- 'parent_id' => $parentId,
- ]);
- }
- }
-
- if ($showInMenu === 1) {
- SiteFront::appendToCustomNav('category', $categoryId ?? (int) $db->lastInsertId());
- }
-