Mercurial > defr > DualBlog
comparison install.php @ 70:e08186e4ed77
Ajout d'un installeur.
Il est désormais possible d'utiliser ce script pour créer une installation
vierge de Dual Blog, rendant presque facile la création de sa propre instance
du blog :-)
Une chose à noter cependant: il est encore /impératif/ de modifier le fichier
pointant vers le fichier .htpass dans le .htaccess à la main pour le moment.
author | Franck Deroche <webmaster@defr.org> |
---|---|
date | Wed, 19 Mar 2008 12:08:15 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
69:d67a65183100 | 70:e08186e4ed77 |
---|---|
1 <?php | |
2 require_once "classes.php"; | |
3 $req = new Requete(); | |
4 $pB = $req->Get('postBack', 'POST', false); | |
5 $canWrite = is_writable('includes'); | |
6 if(file_exists('includes/config.php')) | |
7 { | |
8 $tpl = '<p>Un fichier de configuration a déja été crée. Par mesure | |
9 de sécurité, il est necessaire de supprimer manuellement ce fichier | |
10 avant de pouvoir tenter une nouvelle installation</p>'; | |
11 } | |
12 else if($pB) | |
13 { | |
14 // 1. Vérification des identifiants MySQL, création des tables | |
15 $db_host = $req->Get('db_host'); | |
16 $db_user = $req->Get('db_user'); | |
17 $db_pass = $req->Get('db_pass'); | |
18 $db_db = $req->Get('db_db'); | |
19 $myDB = new DataAccess($db_host, $db_user, $db_pass, $db_db); | |
20 if($myDB->isInError()) | |
21 { | |
22 if($myDB->link === false) | |
23 $erreur = "Le triplet (hôte, identifiant, mot de passe) est erroné)"; | |
24 else | |
25 $erreur = "La base de données mentionné n'existe pas"; | |
26 | |
27 $tpl = $erreur; | |
28 } | |
29 else | |
30 { | |
31 // Requete de créations des 5 tables. | |
32 $myDB->Query("CREATE TABLE Brouillons( | |
33 id_brouillon INTEGER NOT NULL auto_increment, | |
34 Titre VARCHAR(70), | |
35 Contenu TEXT, | |
36 PRIMARY KEY (id_brouillon) | |
37 )"); | |
38 $myDB->Query("CREATE TABLE `Commentaires` ( | |
39 `num_comm` int(11) NOT NULL auto_increment, | |
40 `MessId` int(11) NOT NULL default '0', | |
41 `Auteur` varchar(60) NOT NULL default '', | |
42 `Adresse` varchar(150) NOT NULL default '', | |
43 `AdresseMail` varchar(60) default NULL, | |
44 `Comment` mediumtext NOT NULL, | |
45 `DateComment` datetime default '0000-00-00 00:00:00', | |
46 `isTrackback` tinyint(4) NOT NULL default '0', | |
47 `ip` varchar(25) NOT NULL default '', | |
48 `Visible` tinyint(4) NOT NULL default '1', | |
49 PRIMARY KEY (`num_comm`), | |
50 KEY `Visible` (`Visible`), | |
51 KEY `Parent` (`MessId`) | |
52 )"); | |
53 $myDB->Query("CREATE TABLE `Mess` ( | |
54 `num_mess` int(11) NOT NULL auto_increment, | |
55 `Titre` varchar(70) NOT NULL default '', | |
56 `DatePost` datetime NOT NULL default '0000-00-00 00:00:00', | |
57 `num_version` varchar(30) NOT NULL default '0', | |
58 `NbCommentaires` smallint(6) NOT NULL default '0', | |
59 `Message` longtext NOT NULL, | |
60 `CommentOpen` tinyint(1) NOT NULL default '0', | |
61 `Emot` varchar(20) default NULL, | |
62 PRIMARY KEY (`num_mess`) | |
63 )"); | |
64 $myDB->Query("CREATE TABLE `Tags` ( | |
65 `idTag` int(11) NOT NULL auto_increment, | |
66 `Tag` varchar(25) NOT NULL default '', | |
67 PRIMARY KEY (`idTag`), | |
68 KEY `Tag` (`Tag`) | |
69 )"); | |
70 $myDB->Query("CREATE TABLE `Lien_Tags_Posts` ( | |
71 `idLien` int(11) NOT NULL auto_increment, | |
72 `idTag` int(11) NOT NULL default '0', | |
73 `idMess` int(11) NOT NULL default '0', | |
74 PRIMARY KEY (`idLien`), | |
75 KEY `idTag` (`idTag`), | |
76 KEY `idMess` (`idMess`) | |
77 )"); | |
78 $tpl = "Yoopii tout bon au niveau de la base de données :-)"; | |
79 | |
80 // On va maintenant obtenir quelques renseignements supplémentaires | |
81 // pour finaliser le fichier de configuration | |
82 $akismet = $req->Get('akismet'); | |
83 $mail = $req->Get('mail'); | |
84 $dg = $req->Get('default_gravatar'); | |
85 $blog_url = $req->Get('blog_url'); | |
86 $conf = | |
87 "<?php | |
88 // Connexion à la base de données | |
89 define('DB_HOST', '$db_host'); | |
90 define('DB_USER', '$db_user'); | |
91 define('DB_PASSWORD', '$db_pass'); | |
92 define('DB_NAME', '$db_db'); | |
93 | |
94 // Informations de contact | |
95 define('BLOG_URL', '$blog_url'); | |
96 define('ADMIN_MAIL', '$mail'); | |
97 | |
98 // Image par défaut des auteurs des commentaires | |
99 define('BLOG_DEFAULT_GRAVATAR', '$dg'); | |
100 | |
101 // Clé d'authentification pour l'utilisation du service Akismet | |
102 define('AKISMET_API_KEY', '$akismet'); | |
103 ?> | |
104 "; | |
105 } | |
106 | |
107 if(!isset($erreur)) | |
108 { | |
109 if($canWrite) | |
110 { | |
111 file_put_contents('includes/config.php', $conf); | |
112 } | |
113 else | |
114 { | |
115 $tpl = " | |
116 <p>Ce script ne peut pas écrire dans votre dossier includes/. | |
117 Par conséquent, il vous faudra de vous même y créer un fichier | |
118 nommé <strong>config.php</strong> et y copier les lignes | |
119 suivantes:</p> | |
120 <pre>" . $conf . "</pre>"; | |
121 } | |
122 } | |
123 | |
124 //3. Génération du fichier .htpass | |
125 $login = $req->Get('login'); | |
126 $password = $req->Get('password'); | |
127 system("htpasswd -cbm .htpass '$login' '$password'"); | |
128 } | |
129 else | |
130 { | |
131 $url = "http://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['REQUEST_URI']); | |
132 $tpl = new Template('install_form.xml'); | |
133 $tpl->setParams(array('#url@value' => $url)); | |
134 } | |
135 header('Content-Type: text/html; charset=utf-8'); | |
136 ?> | |
137 <!DOCTYPE html> | |
138 <html> | |
139 <head> | |
140 <title>Installation</title> | |
141 <link rel='stylesheet' type='text/css' href='css/install.css' /> | |
142 </head> | |
143 <body id='Main'> | |
144 <h1>Installation de votre weblog</h1> | |
145 <?php | |
146 echo $tpl; | |
147 ?> | |
148 </body> | |
149 </html> |