From 69981561f83ba3a05217e75cac6c68e8dc671c45 Mon Sep 17 00:00:00 2001 From: polo Date: Sun, 29 Mar 2026 21:54:40 +0200 Subject: =?UTF-8?q?erreur=20algo=20le=20remplissage=20BDD=20doit=20=C3=AAt?= =?UTF-8?q?re=20avant=20cr=C3=A9ation=20compte=20admin,=20rangement=20code?= =?UTF-8?q?=20classe=20DatabaseSettingUp,=20erreur=20mention=20extension?= =?UTF-8?q?=20GD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/model/DatabaseSettingUp.php | 152 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 src/model/DatabaseSettingUp.php (limited to 'src/model/DatabaseSettingUp.php') diff --git a/src/model/DatabaseSettingUp.php b/src/model/DatabaseSettingUp.php new file mode 100644 index 0000000..9ff7344 --- /dev/null +++ b/src/model/DatabaseSettingUp.php @@ -0,0 +1,152 @@ +getRepository(AppMetadata::class)->find('installed'); + return !$metadata || $metadata->getValue() !== '1'; + } + + // protection 2, qui vérifie vraiment que les tables concernées sont vides + static private function areTablesEmpty(EntityManager $entityManager): bool + { + $empty = true; + $entities = ['Page', 'Node', 'NodeData']; + foreach($entities as $entity){ + $entity = 'App\Entity\\' . $entity; // nécéssaire quand on insère le nom avec une variable + + if($entityManager + ->createQuery("SELECT e FROM $entity e") + ->setMaxResults(1) + ->getOneOrNullResult()){ + $empty = false; + } + } + + // cas anormal détecté, on remet en place la clé "installed" + if(!$empty){ + self::preventReinstallation($entityManager); + } + + return $empty; + } + + static private function fillStartingDatabase(EntityManager $entityManager): void + { + /* -- table page -- */ + // paramètres: name_page, end_of_path, reachable, in_menu, hidden, position, parent + $accueil = new Page('Accueil', 'accueil', "Page d'accueil", true, true, false, 1, NULL); + $article = new Page('Article', 'article', "", true, false, false, NULL, NULL); + $connection = new Page('Connexion', 'connection', "Connexion", true, false, false, NULL, NULL); + $my_account = new Page('Mon compte', 'user_edit', "Mon compte", true, false, false, NULL, NULL); + $menu_paths = new Page("Menu et chemins", 'menu_paths', "Menu et chemins", true, false, false, NULL, NULL); + $menu_paths->addCSS('menu'); + $menu_paths->addJS('menu'); + $new_page = new Page('Nouvelle page', 'new_page', "Nouvelle page", true, false, false, NULL, NULL); + $new_page->addCSS('new_page'); + $new_page->addJS('new_page'); + $emails = new Page("Courriels", 'emails', "Consulter les courriels en base de données", true, false, false, NULL, NULL); + $emails->addCSS('show_emails'); + $emails->addJS('form'); + + /* -- table node -- */ + // paramètres: name_node, article_timestamp, attributes, position, parent, page, article + $head = new Node('head', 1, NULL, NULL, NULL); + $header = new Node('header', 2, NULL, NULL, NULL); + $nav = new Node('nav', 1, $header, NULL, NULL); + $main = new Node('main', 3, NULL, NULL, NULL); + $footer = new Node('footer', 4, NULL, NULL, NULL); + $breadcrumb = new Node('breadcrumb', 2, $header, NULL, NULL); + $login = new Node('login', 1, $main, $connection, NULL); + $user_edit = new Node('user_edit', 1, $main, $my_account, NULL); + $bloc_edit_menu = new Node('menu', 1, $main, $menu_paths, NULL); + $bloc_new_page = new Node('new_page', 1, $main, $new_page, NULL); + $bloc_emails = new Node('show_emails', 1, $main, $emails, NULL); + + /* -- table node_data -- */ + // paramètres: data, node, images + $head_data = new NodeData([], $head); + $header_data = new NodeData([], $header); + $footer_data = new NodeData([], $footer); + $emails_data = new NodeData([], $bloc_emails); + + /* -- table page -- */ + $entityManager->persist($accueil); + $entityManager->persist($article); + $entityManager->persist($connection); + $entityManager->persist($my_account); + $entityManager->persist($menu_paths); + $entityManager->persist($new_page); + $entityManager->persist($emails); + + /* -- table node -- */ + $entityManager->persist($head); + $entityManager->persist($header); + $entityManager->persist($nav); + $entityManager->persist($main); + $entityManager->persist($footer); + $entityManager->persist($breadcrumb); + $entityManager->persist($login); + $entityManager->persist($user_edit); + $entityManager->persist($bloc_edit_menu); + $entityManager->persist($bloc_new_page); + $entityManager->persist($bloc_emails); + + /* -- table node_data -- */ + $entityManager->persist($head_data); + $entityManager->persist($header_data); + $entityManager->persist($footer_data); + $entityManager->persist($emails_data); + + $entityManager->flush(); + } + + // met en place la protection + static private function preventReinstallation(EntityManager $entityManager): void + { + $metadata = $entityManager->getRepository(AppMetadata::class)->find('installed'); + if($metadata){ + $metadata->setValue('1'); + } + else{ + $metadata = new AppMetadata('installed', '1'); + $entityManager->persist($metadata); + } + $entityManager->flush(); + } +} \ No newline at end of file -- cgit v1.2.3