aboutsummaryrefslogtreecommitdiff
path: root/src/installation.php
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2026-03-24 22:39:29 +0100
committerpolo <ordipolo@gmx.fr>2026-03-24 22:40:33 +0100
commit3b369122645b07b290f7fcc7bccb4787745cd5ea (patch)
tree3f9c2d1fbd5fe8b26162202e9b1e6cd5c8a940f6 /src/installation.php
parenta70dee9b5021a137ae07041c38921553442b0c11 (diff)
downloadcms-3b369122645b07b290f7fcc7bccb4787745cd5ea.tar.gz
cms-3b369122645b07b290f7fcc7bccb4787745cd5ea.tar.bz2
cms-3b369122645b07b290f7fcc7bccb4787745cd5ea.zip
mode maintenance, optimisation moins de contrôles en mode run, dossier service et déplacement fichiers, sessions et entité User préparées à l'implémentation hypothétique des rôles, entité AppMetadata, meilleure sécurité de fillStartingDatabase
Diffstat (limited to 'src/installation.php')
-rw-r--r--src/installation.php161
1 files changed, 0 insertions, 161 deletions
diff --git a/src/installation.php b/src/installation.php
deleted file mode 100644
index 2bef8e5..0000000
--- a/src/installation.php
+++ /dev/null
@@ -1,161 +0,0 @@
1<?php
2// src/installation.php
3
4declare(strict_types=1);
5
6use App\Entity\Page;
7use App\Entity\Node;
8use App\Entity\NodeData;
9use App\Entity\Asset;
10use Doctrine\Common\Collections\ArrayCollection;
11use Doctrine\ORM\EntityManager;
12
13function phpDependancies(): void
14{
15 $flag = false;
16 //$extensions = ['pdo_mysql', 'mbstring', 'ctype', 'json', 'tokenizer', 'zip', 'dom']; // les 5 premières sont pour doctrine
17 $extensions = ['pdo_mysql', 'mbstring', 'ctype', 'json', 'tokenizer'];
18 foreach($extensions as $extension){
19 if(!extension_loaded($extension))
20 {
21 echo("<p>l'extension <b>" . $extension . '</b> est manquante</p>');
22 $flag = true;
23 }
24 }
25 if(!extension_loaded('imagick') && !extension_loaded('gd')){
26 echo("<p>il manque une de ces extensions au choix pour le traitement des images: <b>imagick</b> (de préférence) ou <b>gd</b>.</p>");
27 $flag = true;
28 }
29 if($flag){
30 echo '<p>Réalisez les actions nécéssaires sur le serveur ou contactez l\'administrateur du site.<br>
31 Quand le problème sera résolu, il vous suffira de <a href="#">recharger la page<a>.</p>';
32 die;
33 }
34}
35
36function installation(): void
37{
38 // -- droits des fichiers et dossiers --
39 $droits_dossiers = 0700;
40 $droits_fichiers = 0600;
41
42 if(!file_exists('user_data')){
43 // créer le dossier user_data
44 mkdir('user_data/');
45 chmod('user_data/', $droits_dossiers);
46 echo '<p style="color: red;">Le dossier public/user_data introuvable et le serveur n\'a pas la permission de le créer.<br>
47 Pour faire ça bien:<br>sudo -u "serveur web" mkdir /chemin/du/site/public/user_data</p>
48 <p>Aide: "serveur web" se nomme "www-data" sur debian et ubuntu, il s\'appelera "http" sur d\'autres distributions.</p>';
49 die;
50 }
51
52 if(!file_exists('../config/config.ini')){
53 // aide à la création du config.ini
54 echo '<p>Ce fichier contient les codes de la base de données et quelques paramètres utilisés pour créer les liens internes.<br>
55 Un modèle est disponible, il s\'agit du fichier config/config-template.ini</p>
56 <p>Quand vous aurez terminé votre config.ini, donnez-lui si possible des droits 600.</p>';
57 die;
58 }
59}
60
61/*
62 // droits du config.ini
63 if(substr(sprintf('%o', fileperms('../config/config.ini')), -4) != 600){
64 chmod('../config/config.ini', $droits_fichiers);
65 }
66
67 // création de data et sous-dossiers
68 if(!file_exists('../data')){
69 mkdir('../data/');
70 chmod('../data/', $droits_dossiers);
71 }
72 if(!touch('../data')){
73 echo("dossier data non autorisé en écriture");
74 die;
75 }
76 $sous_dossiers = array('images', 'images-mini', 'videos');
77 foreach ($sous_dossiers as $sous_dossier){
78 if(!file_exists('../data/' . $sous_dossier)){
79 mkdir('../data/' . $sous_dossier);
80 chmod('../data/' . $sous_dossier, $droits_dossiers);
81 }
82 if(!touch('../data/' . $sous_dossier)){
83 echo("dossier data non autorisé en écriture");
84 die;
85 }
86 }
87*/
88
89// création d'un site minimal avec une page d'accueil à la toute 1ère visite du site
90// fonctiona appelée après la première requête envoyée en BDD,
91// en l'occurence dans Menu parce que count($bulk_data) === 0
92function fillStartingDatabase(EntityManager $entityManager){
93 /* -- table page -- */
94 // paramètres: name_page, end_of_path, reachable, in_menu, hidden, position, parent
95 $accueil = new Page('Accueil', 'accueil', "Page d'accueil", true, true, false, 1, NULL);
96 $article = new Page('Article', 'article', "", true, false, false, NULL, NULL);
97 $connection = new Page('Connexion', 'connection', "Connexion", true, false, false, NULL, NULL);
98 $my_account = new Page('Mon compte', 'user_edit', "Mon compte", true, false, false, NULL, NULL);
99 $menu_paths = new Page("Menu et chemins", 'menu_paths', "Menu et chemins", true, false, false, NULL, NULL);
100 $menu_paths->addCSS('menu');
101 $menu_paths->addJS('menu');
102 $new_page = new Page('Nouvelle page', 'new_page', "Nouvelle page", true, false, false, NULL, NULL);
103 $new_page->addCSS('new_page');
104 $new_page->addJS('new_page');
105 $emails = new Page("Courriels", 'emails', "Consulter les courriels en base de données", true, false, false, NULL, NULL);
106 $emails->addCSS('show_emails');
107 $emails->addJS('form');
108
109 /* -- table node -- */
110 // paramètres: name_node, article_timestamp, attributes, position, parent, page, article
111 $head = new Node('head', 1, NULL, NULL, NULL);
112 $header = new Node('header', 2, NULL, NULL, NULL);
113 $nav = new Node('nav', 1, $header, NULL, NULL);
114 $main = new Node('main', 3, NULL, NULL, NULL);
115 $footer = new Node('footer', 4, NULL, NULL, NULL);
116 $breadcrumb = new Node('breadcrumb', 2, $header, NULL, NULL);
117 $login = new Node('login', 1, $main, $connection, NULL);
118 $user_edit = new Node('user_edit', 1, $main, $my_account, NULL);
119 $bloc_edit_menu = new Node('menu', 1, $main, $menu_paths, NULL);
120 $bloc_new_page = new Node('new_page', 1, $main, $new_page, NULL);
121 $bloc_emails = new Node('show_emails', 1, $main, $emails, NULL);
122
123 /* -- table node_data -- */
124 // paramètres: data, node, images
125 $head_data = new NodeData([], $head);
126 $header_data = new NodeData([], $header);
127 $footer_data = new NodeData([], $footer);
128 $emails_data = new NodeData([], $bloc_emails);
129
130 /* -- table page -- */
131 $entityManager->persist($accueil);
132 $entityManager->persist($article);
133 $entityManager->persist($connection);
134 $entityManager->persist($my_account);
135 $entityManager->persist($menu_paths);
136 $entityManager->persist($new_page);
137 $entityManager->persist($emails);
138
139 /* -- table node -- */
140 $entityManager->persist($head);
141 $entityManager->persist($header);
142 $entityManager->persist($nav);
143 $entityManager->persist($main);
144 $entityManager->persist($footer);
145 $entityManager->persist($breadcrumb);
146 $entityManager->persist($login);
147 $entityManager->persist($user_edit);
148 $entityManager->persist($bloc_edit_menu);
149 $entityManager->persist($bloc_new_page);
150 $entityManager->persist($bloc_emails);
151
152 /* -- table node_data -- */
153 $entityManager->persist($head_data);
154 $entityManager->persist($header_data);
155 $entityManager->persist($footer_data);
156 $entityManager->persist($emails_data);
157
158 $entityManager->flush();
159 header('Location: ' . new URL);
160 die;
161} \ No newline at end of file