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>