/
_page.php
87 lines (68 loc) · 1.83 KB
/
_page.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
declare(strict_types=1);
/*
* This file is part of the QuidPHP package <https://quidphp.com>
* Author: Pierre-Philippe Emond <emondpph@gmail.com>
* License: https://github.com/quidphp/site/blob/master/LICENSE
*/
namespace Quid\Site\Route;
use Quid\Core;
use Quid\Site;
// _page
// trait that provides basic logic for a page route
trait _page
{
// config
protected static array $configSitePage = [
'configPath'=>true,
'pageRowClass'=>Site\Row\Page::class
];
// dynamique
protected ?Core\Row $row = null;
// onMake
// lors de la construction de la route
final protected function onMake():void
{
$this->makeRow();
}
// canTrigger
// si la route peut être lancé
final public function canTrigger():bool
{
return parent::canTrigger() && $this->rowExists() && $this->row()->isVisible();
}
// rowExists
// retourne vrai si la row existe
final public function rowExists():bool
{
return !empty($this->row);
}
// row
// retourne la row
final public function row():Core\Row
{
return $this->row;
}
// makeRow
// construit l'objet row pour la route
final protected function makeRow():void
{
$row = $this->getAttr('rowObj');
$class = $this->getAttr('pageRowClass');
if(!empty($class))
{
if(is_int($row))
$row = $class::select($row);
if($row instanceof Core\Row)
$this->row = $row;
}
}
// shouldConfigPath
// retourne vrai si le chemin de la page doit être configuré
// ceci permet de conserver les chemins dans le fichier, même si défini dans la base de données
final public static function shouldConfigPath():bool
{
return static::$config['configPath'];
}
}
?>