summaryrefslogtreecommitdiff
path: root/src/view/HeaderBuilder.php
blob: 28aae13caa9b07785dff0787c50b8ef1cd9cbbef (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
<?php
// src/view/HeaderBuilder.php

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
            if(!empty($node->getNodeData()->getData()))
            {
                extract($node->getNodeData()->getData());
            }

            // attributs, aucun pour l'instant
            if(!empty($node->getAttributes()))
            {
                extract($node->getAttributes());
            }

            // header logo + réseaux sociaux
            $targets = ['logo', 'facebook', 'instagram', 'fond_piscine'];
            $i = 0;
            foreach($node->getNodeData()->getImages() as $image)
            {
                if(str_contains($image->getFileName(), $targets[$i]))
                {
                    $var = $targets[$i];
                    $$var = rtrim($image->getFilePathMini(), '/');
                    $var .= '_alt'; // ex: logo_alt
                    $$var = $image->getAlt();
                }
                $i++;
            }

            // générer HTML réseaux sociaux
            //

            ob_start();
            require $viewFile;
            $this->html .= ob_get_clean();
        }
    }
}