Personal Website
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
1.6 KiB

<?php
namespace App\Model;
use App\Classes\Db;
use App\Traits\Log;
class PageModel extends Model {
use Log { delete as deleteLog; }
protected $table = 'page';
protected $sort = ['section_id', 'order'];
// Attribute rules
// Name | Type | Required | Filtered
public $rules = [
["page", "text", 1, 0],
["title", "text", 0, 0],
["title_url", "text", 0, 1],
["meta_description", "text", 0, 0],
["type", "text", 1, 1],
["order", "text", 1, 0],
["hide_navigation", "checkbox", 1, 0],
["active", "checkbox", 1, 0],
["section_id", "dropdown", 1, 0],
["log_id", "text", 1, 1],
];
//-------------------------------------//
// Set default values
public function __construct()
{
parent::__construct();
$this->type = 0;
}
// Generate the dropdown data
public function getDropdownData(string $type): array
{
if ($type == 'section_id') {
return $this->dropdownSection();
}
return [];
}
public function delete(): bool
{
if (self::query(
"DELETE FROM `{$this->table}_has_content` WHERE `{$this->table}_$this->primaryKey` = :id", [
[':id', $this->{$this->primaryKey}],
]
) === null) {
return false;
}
return $this->deleteLog();
}
//-------------------------------------//
protected function dropdownSection(): array
{
// Pull sections from cache
$sections = Db::getSections();
return [0 => 'Select section'] + array_combine(
array_column($sections, 'id'),
array_column($sections, 'title')
);
}
}