From 9934a32f7e02c484d6b122c9af860ab1ca9b2dca Mon Sep 17 00:00:00 2001 From: polo Date: Sat, 2 Aug 2025 17:03:42 +0200 Subject: =?UTF-8?q?r=C3=A9organisation=202=20requ=C3=AAtes=20"form":=20s?= =?UTF-8?q?=C3=A9paration=20routage=20et=20contr=C3=B4leurs=20avec=20des?= =?UTF-8?q?=20fonctions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controller/post.php | 297 ------------------------------------------------ 1 file changed, 297 deletions(-) delete mode 100644 src/controller/post.php (limited to 'src/controller/post.php') diff --git a/src/controller/post.php b/src/controller/post.php deleted file mode 100644 index 5d9500b..0000000 --- a/src/controller/post.php +++ /dev/null @@ -1,297 +0,0 @@ -findPageById((int)$_POST["page_location"]); // (int) à cause de declare(strict_types=1); - $parent = $previous_page->getParent(); - - $page = new Page( - trim(htmlspecialchars($_POST["page_name"])), - trim(htmlspecialchars($_POST["page_name_path"])), - true, true, false, - $previous_page->getPosition(), - $parent); // peut et DOIT être null si on est au 1er niveau - - // on a donné à la nouvelle entrée la même position qu'à la précédente, - // addChild l'ajoute à la fin du tableau "children" puis on trie - // exemple avec 2 comme position demandée: 1 2 3 4 2 devient 1 2 3 4 5 et la nouvelle entrée sera en 3è position - if($parent == null){ - $parent = Director::$menu_data; - } - $parent->addChild($page); - $parent->reindexPositions(); - - $page->setPagePath(ltrim($parent->getPagePath() . '/' . $page->getEndOfPath(), '/')); - - // noeud "head" - $node = new Node( - 'head', - null, [], - 1, // position d'un head = 1 - null, // pas de parent - $page); - $node->useDefaultAttributes(); // fichiers CSS et JS - - $data = new NodeData([ - // pas de titre, il est dans $page - 'description' => trim(htmlspecialchars($_POST["page_description"]))], - $node); - - $bulk_data = $entityManager - ->createQuery('SELECT n FROM App\Entity\Image n WHERE n.file_name LIKE :name') - ->setParameter('name', '%favicon%') - ->getResult(); - $data->setImages(new ArrayCollection($bulk_data)); - - $entityManager->persist($page); - $entityManager->persist($node); - $entityManager->persist($data); - $entityManager->flush(); - - // page créée, direction la page en mode modification pour ajouter des blocs - header("Location: " . new URL(['page' => $page->getPagePath(), 'action' => 'modif_page'])); - die; - } - - /* -- suppression d'une page -- */ - elseif(isset($_POST['page_id']) && $_POST['page_id'] !== null - && isset($_POST['submit_hidden']) && $_POST['submit_hidden'] === '') - { - $page = $entityManager->find('App\Entity\Page', (int)$_POST['page_id']); - $nodes = $entityManager->getRepository('App\Entity\Node')->findBy(['page' => $page]); - $data = []; - foreach($nodes as $node){ - $data[] = $entityManager->getRepository('App\Entity\NodeData')->findOneBy(['node' => $node]); - $entityManager->remove($node); - } - foreach($data as $one_data){ - $entityManager->remove($one_data); - } - $entityManager->remove($page); // suppression en BDD - - $entityManager->flush(); - header("Location: " . new URL); - die; - } - - - /* -- mode Modification d'une page -- */ - - // modification des titres, chemins et descriptions - elseif(isset($_POST['page_menu_path']) && $_POST['page_menu_path'] !== null - && isset($_POST['page_id']) && $_POST['page_id'] !== null - && isset($_POST['page_name_path_hidden']) && $_POST['page_name_path_hidden'] === '') - { - $director = new Director($entityManager, true); - $page = Director::$page_path->getLast(); - $path = htmlspecialchars($_POST['page_menu_path']); - - // mise en snake_case: filtre caractères non-alphanumériques, minuscule, doublons d'underscore, trim des underscores - $path = trim(preg_replace('/_+/', '_', strtolower(preg_replace('/[^a-zA-Z0-9]/', '_', $path))), '_'); - $page->setEndOfPath($path); - foreach(Director::$menu_data->getChildren() as $child){ - if($child->getEndOfPath() === Director::$page_path->getArray()[0]->getEndOfPath()){ - $child->fillChildrenPagePath(); // MAJ de $page_path - } - } - $entityManager->flush(); - header("Location: " . new URL(['page' => $page->getPagePath(), 'action' => 'modif_page'])); - die; - } - // ajout d'un bloc dans une page - elseif(isset($_POST['bloc_title']) && $_POST['bloc_title'] !== null - && isset($_POST['bloc_select']) && $_POST['bloc_select'] !== null - && isset($_POST['bloc_title_hidden']) && $_POST['bloc_title_hidden'] === '') // contrôle anti-robot avec input hidden - { - $director = new Director($entityManager, true); // on a besoin de page_path qui dépend de menu_data - $page = Director::$page_path->getLast(); - $director->findUniqueNodeByName('main'); - $director->findItsChildren(); - $main = $director->getNode(); - $position = count($main->getChildren()) + 1; // position dans la fraterie - - $blocks = ['blog', 'grid', 'calendar', 'galery', 'form']; // même liste dans FormBuilder.php - if(!in_array($_POST["bloc_select"], $blocks, true)) // 3è param: contrôle du type - { - header("Location: " . new URL(['page' => $_GET['page'], 'error' => 'bad_bloc_type'])); - die; - } - - if($_POST["bloc_select"] === 'calendar' || $_POST["bloc_select"] === 'form'){ - $dql = 'SELECT n FROM App\Entity\Node n WHERE n.page = :page AND n.name_node = :name'; // noeud 'head' de la page - $bulk_data = $entityManager - ->createQuery($dql) - ->setParameter('page', $page) - ->setParameter('name', 'head') - ->getResult(); - - if(count($bulk_data) != 1){ // 1 head par page - header("Location: " . new URL(['page' => $_GET['page'], 'error' => 'head_node_not_found'])); - die; - } - - $bulk_data[0]->addAttribute('css_array', $_POST["bloc_select"]); - if($_POST["bloc_select"] === 'form'){ - $bulk_data[0]->addAttribute('js_array', $_POST["bloc_select"]); - } - $entityManager->persist($bulk_data[0]); - } - - $bloc = new Node( - $_POST["bloc_select"], - null, [], - $position, - $main, - $page); - $data = new NodeData( - ['title' => trim(htmlspecialchars($_POST["bloc_title"]))], - $bloc); - - $entityManager->persist($bloc); - $entityManager->persist($data); - $entityManager->flush(); - header("Location: " . new URL(['page' => $_GET['page'], 'action' => 'modif_page'])); - die; - } - // suppression d'un bloc de page - elseif(isset($_POST['delete_bloc_id']) && $_POST['delete_bloc_id'] !== null - && isset($_POST['delete_bloc_hidden']) && $_POST['delete_bloc_hidden'] === '') // contrôle anti-robot avec input hidden - { - $director = new Director($entityManager, true); - $director->findUniqueNodeByName('main'); - $director->findItsChildren(); - //$director->findNodeById((int)$_POST['delete_bloc_id']); - $main = $director->getNode(); - $bloc; - foreach($main->getChildren() as $child){ - if($child->getId() === (int)$_POST['delete_bloc_id']){ - $bloc = $child; - break; - } - } - $main->removeChild($bloc); // réindex le tableau $children au passage - $main->reindexPositions(); - - $entityManager->remove($bloc); // suppression en BDD - $entityManager->flush(); - header("Location: " . new URL(['page' => $_GET['page'], 'action' => 'modif_page'])); - die; - } - - - /* -- page Menu et chemins -- */ - - // création d'une entrée de menu avec une URL - elseif(isset($_POST["label_input"]) && isset($_POST["url_input"]) && isset($_POST["location"])){ - Director::$menu_data = new Menu($entityManager); - $previous_page = Director::$menu_data->findPageById((int)$_POST["location"]); // (int) à cause de declare(strict_types=1); - $parent = $previous_page->getParent(); - - $page = new Page( - trim(htmlspecialchars($_POST["label_input"])), - filter_var($_POST["url_input"], FILTER_VALIDATE_URL), - true, true, false, - $previous_page->getPosition(), - $parent); // peut et DOIT être null si on est au 1er niveau - - // on a donné à la nouvelle entrée la même position qu'à la précédente, - // addChild l'ajoute à la fin du tableau "children" puis on trie - // exemple avec 2 comme position demandée: 1 2 3 4 2 devient 1 2 3 4 5 et la nouvelle entrée sera en 3è position - if($parent == null){ - $parent = Director::$menu_data; - } - $parent->addChild($page); // true pour réindexer les positions en BDD - $parent->reindexPositions(); - - $entityManager->persist($page); - $entityManager->flush(); - header("Location: " . new URL(['page' => $_GET['from']])); - die; - } - // suppression d'une entrée de menu avec une URL - elseif(isset($_POST['delete']) && isset($_POST['x']) && isset($_POST['y'])){ // 2 params x et y sont là parce qu'on a cliqué sur une image - Director::$menu_data = new Menu($entityManager); - $page = Director::$menu_data->findPageById((int)$_POST["delete"]); - $parent = $page->getParent(); - if($parent == null){ - $parent = Director::$menu_data; - } - - $parent->removeChild($page); // suppression de $children avant de trier - $parent->reindexPositions(); - - $entityManager->remove($page); // suppression en BDD - $entityManager->flush(); - header("Location: " . new URL(['page' => $_GET['from']])); - die; - } - elseif(isset($_GET['action']) && $_GET['action'] === 'modif_mdp' - && isset($_POST['login']) && isset($_POST['old_password']) && isset($_POST['new_password']) - && isset($_POST['modify_password_hidden']) && empty($_POST['modify_password_hidden'])) - { - changePassword($entityManager); - header("Location: " . new URL(['page' => $_GET['from']])); - die; - } - else{ - header("Location: " . new URL(['error' => 'paramètres inconnus'])); - die; - } - } - - /* -- requêtes AJAX -- */ - else{ - require '../src/controller/ajax_admin.php'; - } - - require '../src/controller/ajax_calendar_admin.php'; - } -} -elseif($_SERVER['REQUEST_METHOD'] === 'GET'){ - require '../src/controller/ajax_calendar_visitor.php'; // fullcalendar utilise un GET pour récupérer les données -} \ No newline at end of file -- cgit v1.2.3