aboutsummaryrefslogtreecommitdiff
path: root/src/model/entities/Node.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/model/entities/Node.php')
-rw-r--r--src/model/entities/Node.php20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/model/entities/Node.php b/src/model/entities/Node.php
index fb2d867..7932efc 100644
--- a/src/model/entities/Node.php
+++ b/src/model/entities/Node.php
@@ -5,7 +5,6 @@ declare(strict_types=1);
5 5
6namespace App\Entity; 6namespace App\Entity;
7 7
8use Config;
9use Doctrine\ORM\Mapping as ORM; 8use Doctrine\ORM\Mapping as ORM;
10 9
11#[ORM\Entity] 10#[ORM\Entity]
@@ -48,6 +47,9 @@ class Node
48 #[ORM\OneToOne(targetEntity: EmailForm::class, mappedBy: "node", cascade: ['persist'])] // pas de remove, les e-mails sont associés au EmailForm 47 #[ORM\OneToOne(targetEntity: EmailForm::class, mappedBy: "node", cascade: ['persist'])] // pas de remove, les e-mails sont associés au EmailForm
49 private ?EmailForm $email_form = null; 48 private ?EmailForm $email_form = null;
50 49
50 #[ORM\OneToOne(targetEntity: Presentation::class, mappedBy: "node", cascade: ['persist', 'remove'])]
51 private ?Presentation $presentation = null;
52
51 // attributs non destinés à doctrine 53 // attributs non destinés à doctrine
52 private array $children = []; // tableau de Node 54 private array $children = []; // tableau de Node
53 private ?self $adopted = null; // = "new" est un enfant de "main" lorsque la page est "article" 55 private ?self $adopted = null; // = "new" est un enfant de "main" lorsque la page est "article"
@@ -111,11 +113,15 @@ class Node
111 113
112 // une interface serait cool! 114 // une interface serait cool!
113 // OU possible un "héritage doctrine", faire en sorte que Node soit la mère de NodeData, EmailForm, Article... 115 // OU possible un "héritage doctrine", faire en sorte que Node soit la mère de NodeData, EmailForm, Article...
114 // une seulle instance est matérialisée par plusieurs tables en même temps 116 // une seule instance est matérialisée par plusieurs tables en même temps
115 public function getNodeData(): NodeData|EmailForm|null 117 public function getNodeData(): NodeData|EmailForm|Presentation|null
116 { 118 {
117 // limite du polymorphisme avec doctrine => impossible d'avoir une unique variable $node_data 119 // pour du polymorphisme (une unique variable $node_data): opter pour l'héritage
118 return $this->name_node === 'form' ? $this->email_form : $this->node_data; 120 return match($this->name_node){
121 'form' => $this->email_form,
122 'post_block', 'news_block' => $this->presentation,
123 default => $this->node_data, // inclut 'calendar'
124 };
119 } 125 }
120 public function getChildren(): array 126 public function getChildren(): array
121 { 127 {
@@ -134,7 +140,7 @@ class Node
134 { 140 {
135 $this->children[] = $child; 141 $this->children[] = $child;
136 142
137 if(!\Blocks::hasPresentation($this->getName())){ // post_block et news_block ont leurs enfants ordonnés avec ORDER BY 143 if(!Presentation::hasPresentation($this->getName())){ // post_block et news_block ont leurs enfants ordonnés avec ORDER BY
138 $this->sortChildren(false); 144 $this->sortChildren(false);
139 } 145 }
140 } 146 }