From df3612ed7e6691530503f79483d2fdbc032d01b8 Mon Sep 17 00:00:00 2001 From: polo-pc-greta Date: Thu, 27 Mar 2025 10:13:03 +0100 Subject: mise en ligne github --- src/controller/Director.php | 101 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/controller/Director.php (limited to 'src/controller/Director.php') diff --git a/src/controller/Director.php b/src/controller/Director.php new file mode 100644 index 0000000..896cde1 --- /dev/null +++ b/src/controller/Director.php @@ -0,0 +1,101 @@ +entityManager = $entityManager; + self::$menu_data = new Menu($entityManager); // Menu est un modèle mais pas une entité + self::$page_path = new Path(); + $this->page = self::$page_path->getLast(); + $this->root_node = new Node; // instance mère "vide" ne possédant rien d'autre que des enfants + } + + public function makeRootNode(string $id = ''): void + { + // on récupère toutes les entrées + $dql = 'SELECT n FROM App\Entity\Node n WHERE n.page = :page OR n.page IS null'; + if($id == '') + { + $bulk_data = $this->entityManager + ->createQuery($dql) + ->setParameter('page', $this->page) + ->getResult(); + } + else // avec $_GET['id'] dans l'URL + { + $dql .= ' OR n.article_timestamp = :id'; + $bulk_data = $this->entityManager + ->createQuery($dql) + ->setParameter('page', $this->page) + ->setParameter('id', $id) + ->getResult(); + } + $this->feedObjects($bulk_data); + } + + public function makeArticleNode(string $id = ''): bool + { + $bulk_data = $this->entityManager + ->createQuery('SELECT n FROM App\Entity\Node n WHERE n.article_timestamp = :id') + ->setParameter('id', $id) + ->getResult(); + + if(count($bulk_data) === 0){ + return false; + } + + $this->root_node = $bulk_data[0]; + return true; + } + + public function feedObjects(array $bulk_data): void // $bulk_data = tableau de Node + { + // puis on les range + // (attention, risque de disfonctionnement si les noeuds de 1er niveau ne sont pas récupérés en 1er dans la BDD) + foreach($bulk_data as $node) + { + // premier niveau + if($node->getParent() == null) + { + $this->root_node->addChild($node); + + // spécifique page article + if($node->getName() === 'main' && $this->page->getEndOfPath() == 'article'){ + $main = $node; + } + } + // autres niveaux + else + { + $node->getParent()->addChild($node); + + // spécifique page article + if($node->getName() === 'new' && $this->page->getEndOfPath() == 'article'){ + $new = $node; + } + } + } + if(isset($new)){ + $main->setTempChild($new); + } + } + + public function getRootNode(): Node + { + return $this->root_node; + } +} -- cgit v1.2.3