aboutsummaryrefslogtreecommitdiff
path: root/src/view/HeaderBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/HeaderBuilder.php')
-rw-r--r--src/view/HeaderBuilder.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/view/HeaderBuilder.php b/src/view/HeaderBuilder.php
new file mode 100644
index 0000000..252958a
--- /dev/null
+++ b/src/view/HeaderBuilder.php
@@ -0,0 +1,64 @@
1<?php
2// src/view/HeaderBuilder.php
3
4use App\Entity\Node;
5
6class HeaderBuilder extends AbstractBuilder
7{
8 private ?Node $nav = null;
9
10 public function __construct(Node $node)
11 {
12 // nav
13 // n'utilise pas useChildrenBuilder, il faudrait peut-être
14 $children = $node->getChildren();
15 foreach($children as $child)
16 {
17 if($child->getName() === 'nav')
18 {
19 $this->nav = $child;
20 $nav_builder = new NavBuilder($this->nav);
21 $nav = $nav_builder->render();
22 }
23 }
24
25 $viewFile = self::VIEWS_PATH . $node->getName() . '.php';
26
27 if(file_exists($viewFile))
28 {
29 // titre et description
30 if(!empty($node->getNodeData()->getData()))
31 {
32 extract($node->getNodeData()->getData());
33 }
34
35 // attributs, aucun pour l'instant
36 if(!empty($node->getAttributes()))
37 {
38 extract($node->getAttributes());
39 }
40
41 // header logo + réseaux sociaux
42 $targets = ['logo', 'facebook', 'instagram', 'fond_piscine'];
43 $i = 0;
44 foreach($node->getNodeData()->getImages() as $image)
45 {
46 if(str_contains($image->getFileName(), $targets[$i]))
47 {
48 $var = $targets[$i];
49 $$var = rtrim($image->getFilePathMini(), '/');
50 $var .= '_alt'; // ex: logo_alt
51 $$var = $image->getAlt();
52 }
53 $i++;
54 }
55
56 // générer HTML réseaux sociaux
57 //
58
59 ob_start();
60 require $viewFile;
61 $this->html .= ob_get_clean();
62 }
63 }
64} \ No newline at end of file