blob: b49b24c82354e64dd3fe56cf73472bec5bd3fdb5 (
plain)
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
|
<?php
// src/view/HeaderBuilder.php
declare(strict_types=1);
use App\Entity\Node;
class HeaderBuilder extends AbstractBuilder
{
private ?Node $nav = null;
private ?Node $breadcrumb = null;
public function __construct(Node $node)
{
// pas de useChildrenBuilder, il faudrait peut-être
$children = $node->getChildren();
foreach($children as $child)
{
if($child->getName() === 'nav'){
$this->nav = $child;
// actuellement le noeud nav ne contient aucune info utile et l'envoyer à NavBuilder est inutile
$nav_builder = new NavBuilder($this->nav);
$nav = $nav_builder->render();
}
elseif($child->getName() === 'breadcrumb'){
$this->breadcrumb = $child;
$breadcrumb_builder = new BreadcrumbBuilder($this->breadcrumb);
$breadcrumb = $breadcrumb_builder->render();
}
}
$viewFile = self::VIEWS_PATH . $node->getName() . '.php';
if(file_exists($viewFile))
{
// titre et description
// => retourne $titre, $description et le tableau associatif: $social
if(!empty($node->getNodeData()->getData()))
{
extract($node->getNodeData()->getData());
}
// attributs, aucun pour l'instant
if(!empty($node->getAttributes()))
{
extract($node->getAttributes());
}
// réseaux sociaux + logo dans l'entête
$keys = array_keys($social);
$social_networks = '';
$head_logo = '';
foreach($node->getNodeData()->getImages() as $image)
{
for($i = 0; $i < count($keys); $i++)
{
if(str_contains($image->getFileName(), $keys[$i])){
$social_networks .= '<a href="' . $social[$keys[$i]] . '" target="_blank" rel="noopener noreferrer">
<img src="' . rtrim($image->getFilePathMini(), '/') . '" alt="' . $keys[$i] . '_alt"></a>';
break;
}
if(str_contains($image->getFileName(), 'logo'))
{
$logo = rtrim($image->getFilePathMini(), '/');
break;
}
}
}
ob_start();
require $viewFile;
$this->html .= ob_get_clean();
}
}
}
|