defr/DualBlog

changeset 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 Mar 19 12:08:15 2008 +0100 (9 months ago)
parents d67a65183100
children 464f4b94ee27
files css/install.css install.php templates/install_form.xml
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/css/install.css Wed Mar 19 12:08:15 2008 +0100 1.3 @@ -0,0 +1,46 @@ 1.4 +html {background: #eee; font-family: sans-serif; } 1.5 +h1 {font-size: 1.1em; text-align: center; margin:0; padding:10px;} 1.6 +legend {font-style: italic;} 1.7 +body { 1.8 + margin: 0 30px; 1.9 + background:#fff; 1.10 + border:#999 solid; 1.11 + border-width: 0 2px; 1.12 + padding: 0 5px 5px; 1.13 +} 1.14 + 1.15 +input { 1.16 + font-size: 1em; 1.17 + border: #dec solid; 1.18 + border-width: 1px 1px 1px 4px; 1.19 + background: url(Res_Somatic/bg_test.png) repeat 0% 0%; 1.20 + width: 100%; 1.21 +} 1.22 + 1.23 +input:not(:focus) { 1.24 + opacity: 0.7; 1.25 + color: #666; 1.26 +} 1.27 + 1.28 +input:focus { 1.29 + opacity: 1; 1.30 + background: #fff; 1.31 +} 1.32 + 1.33 +fieldset { 1.34 + -moz-border-radius: 1.5em; 1.35 + min-width: 10em; 1.36 + max-width: 30em; 1.37 + width: 90%; 1.38 + margin-bottom: 15px; 1.39 +} 1.40 + 1.41 + 1.42 +#submit { 1.43 + opacity: 1; 1.44 + margin: 15px auto; 1.45 + display: block; 1.46 + border-width: 1px 3px; 1.47 + font-weight: bold; 1.48 + background: #fff; 1.49 +}
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/install.php Wed Mar 19 12:08:15 2008 +0100 2.3 @@ -0,0 +1,149 @@ 2.4 +<?php 2.5 + require_once "classes.php"; 2.6 + $req = new Requete(); 2.7 + $pB = $req->Get('postBack', 'POST', false); 2.8 + $canWrite = is_writable('includes'); 2.9 + if(file_exists('includes/config.php')) 2.10 + { 2.11 + $tpl = '<p>Un fichier de configuration a déja été crée. Par mesure 2.12 + de sécurité, il est necessaire de supprimer manuellement ce fichier 2.13 + avant de pouvoir tenter une nouvelle installation</p>'; 2.14 + } 2.15 + else if($pB) 2.16 + { 2.17 + // 1. Vérification des identifiants MySQL, création des tables 2.18 + $db_host = $req->Get('db_host'); 2.19 + $db_user = $req->Get('db_user'); 2.20 + $db_pass = $req->Get('db_pass'); 2.21 + $db_db = $req->Get('db_db'); 2.22 + $myDB = new DataAccess($db_host, $db_user, $db_pass, $db_db); 2.23 + if($myDB->isInError()) 2.24 + { 2.25 + if($myDB->link === false) 2.26 + $erreur = "Le triplet (hôte, identifiant, mot de passe) est erroné)"; 2.27 + else 2.28 + $erreur = "La base de données mentionné n'existe pas"; 2.29 + 2.30 + $tpl = $erreur; 2.31 + } 2.32 + else 2.33 + { 2.34 + // Requete de créations des 5 tables. 2.35 + $myDB->Query("CREATE TABLE Brouillons( 2.36 + id_brouillon INTEGER NOT NULL auto_increment, 2.37 + Titre VARCHAR(70), 2.38 + Contenu TEXT, 2.39 + PRIMARY KEY (id_brouillon) 2.40 + )"); 2.41 + $myDB->Query("CREATE TABLE `Commentaires` ( 2.42 + `num_comm` int(11) NOT NULL auto_increment, 2.43 + `MessId` int(11) NOT NULL default '0', 2.44 + `Auteur` varchar(60) NOT NULL default '', 2.45 + `Adresse` varchar(150) NOT NULL default '', 2.46 + `AdresseMail` varchar(60) default NULL, 2.47 + `Comment` mediumtext NOT NULL, 2.48 + `DateComment` datetime default '0000-00-00 00:00:00', 2.49 + `isTrackback` tinyint(4) NOT NULL default '0', 2.50 + `ip` varchar(25) NOT NULL default '', 2.51 + `Visible` tinyint(4) NOT NULL default '1', 2.52 + PRIMARY KEY (`num_comm`), 2.53 + KEY `Visible` (`Visible`), 2.54 + KEY `Parent` (`MessId`) 2.55 + )"); 2.56 + $myDB->Query("CREATE TABLE `Mess` ( 2.57 + `num_mess` int(11) NOT NULL auto_increment, 2.58 + `Titre` varchar(70) NOT NULL default '', 2.59 + `DatePost` datetime NOT NULL default '0000-00-00 00:00:00', 2.60 + `num_version` varchar(30) NOT NULL default '0', 2.61 + `NbCommentaires` smallint(6) NOT NULL default '0', 2.62 + `Message` longtext NOT NULL, 2.63 + `CommentOpen` tinyint(1) NOT NULL default '0', 2.64 + `Emot` varchar(20) default NULL, 2.65 + PRIMARY KEY (`num_mess`) 2.66 + )"); 2.67 + $myDB->Query("CREATE TABLE `Tags` ( 2.68 + `idTag` int(11) NOT NULL auto_increment, 2.69 + `Tag` varchar(25) NOT NULL default '', 2.70 + PRIMARY KEY (`idTag`), 2.71 + KEY `Tag` (`Tag`) 2.72 + )"); 2.73 + $myDB->Query("CREATE TABLE `Lien_Tags_Posts` ( 2.74 + `idLien` int(11) NOT NULL auto_increment, 2.75 + `idTag` int(11) NOT NULL default '0', 2.76 + `idMess` int(11) NOT NULL default '0', 2.77 + PRIMARY KEY (`idLien`), 2.78 + KEY `idTag` (`idTag`), 2.79 + KEY `idMess` (`idMess`) 2.80 + )"); 2.81 + $tpl = "Yoopii tout bon au niveau de la base de données :-)"; 2.82 + 2.83 + // On va maintenant obtenir quelques renseignements supplémentaires 2.84 + // pour finaliser le fichier de configuration 2.85 + $akismet = $req->Get('akismet'); 2.86 + $mail = $req->Get('mail'); 2.87 + $dg = $req->Get('default_gravatar'); 2.88 + $blog_url = $req->Get('blog_url'); 2.89 + $conf = 2.90 +"<?php 2.91 + // Connexion à la base de données 2.92 + define('DB_HOST', '$db_host'); 2.93 + define('DB_USER', '$db_user'); 2.94 + define('DB_PASSWORD', '$db_pass'); 2.95 + define('DB_NAME', '$db_db'); 2.96 + 2.97 + // Informations de contact 2.98 + define('BLOG_URL', '$blog_url'); 2.99 + define('ADMIN_MAIL', '$mail'); 2.100 + 2.101 + // Image par défaut des auteurs des commentaires 2.102 + define('BLOG_DEFAULT_GRAVATAR', '$dg'); 2.103 + 2.104 + // Clé d'authentification pour l'utilisation du service Akismet 2.105 + define('AKISMET_API_KEY', '$akismet'); 2.106 +?> 2.107 +"; 2.108 + } 2.109 + 2.110 + if(!isset($erreur)) 2.111 + { 2.112 + if($canWrite) 2.113 + { 2.114 + file_put_contents('includes/config.php', $conf); 2.115 + } 2.116 + else 2.117 + { 2.118 + $tpl = " 2.119 + <p>Ce script ne peut pas écrire dans votre dossier includes/. 2.120 + Par conséquent, il vous faudra de vous même y créer un fichier 2.121 + nommé <strong>config.php</strong> et y copier les lignes 2.122 + suivantes:</p> 2.123 + <pre>" . $conf . "</pre>"; 2.124 + } 2.125 + } 2.126 + 2.127 + //3. Génération du fichier .htpass 2.128 + $login = $req->Get('login'); 2.129 + $password = $req->Get('password'); 2.130 + system("htpasswd -cbm .htpass '$login' '$password'"); 2.131 + } 2.132 + else 2.133 + { 2.134 + $url = "http://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['REQUEST_URI']); 2.135 + $tpl = new Template('install_form.xml'); 2.136 + $tpl->setParams(array('#url@value' => $url)); 2.137 + } 2.138 + header('Content-Type: text/html; charset=utf-8'); 2.139 +?> 2.140 +<!DOCTYPE html> 2.141 +<html> 2.142 + <head> 2.143 + <title>Installation</title> 2.144 + <link rel='stylesheet' type='text/css' href='css/install.css' /> 2.145 + </head> 2.146 + <body id='Main'> 2.147 + <h1>Installation de votre weblog</h1> 2.148 +<?php 2.149 + echo $tpl; 2.150 +?> 2.151 + </body> 2.152 +</html>
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/templates/install_form.xml Wed Mar 19 12:08:15 2008 +0100 3.3 @@ -0,0 +1,54 @@ 3.4 +<?xml version='1.0' encoding='utf-8'?> 3.5 +<form method='POST' 3.6 + action='#' 3.7 + xmlns='http://www.w3.org/1999/xhtml' 3.8 + xmlns:tpl='http://defr.net/2007/template'> 3.9 + <fieldset> 3.10 + <legend>Paramètres MySQL</legend> 3.11 + <dl> 3.12 + <dt>Nom d'hôte</dt> 3.13 + <dd><input type='text' name='db_host' /></dd> 3.14 + <dt>Base de données</dt> 3.15 + <dd><input type='text' name='db_db' /></dd> 3.16 + <dt>Nom d'utilisateur</dt> 3.17 + <dd><input type='text' name='db_user' /></dd> 3.18 + <dt>Mot de passe</dt> 3.19 + <dd><input type='text' name='db_pass' /></dd> 3.20 + </dl> 3.21 + </fieldset> 3.22 + <fieldset> 3.23 + <legend>Compte administrateur</legend> 3.24 + <dl> 3.25 + <dt>Nom</dt> 3.26 + <dd><input type='text' name='login' /></dd> 3.27 + <dt>Mot de passe</dt> 3.28 + <dd><input type='text' name='password' /></dd> 3.29 + </dl> 3.30 + </fieldset> 3.31 + 3.32 + <fieldset> 3.33 + <legend>Commentaires et anti-spam</legend> 3.34 + <dl> 3.35 + <dt>Adresse e-mail</dt> 3.36 + <dd><input type='text' name='mail' /></dd> 3.37 + <dt>Clé <a href='http://akismet/com'>Akismet</a></dt> 3.38 + <dd><input type='text' name='akismet' /></dd> 3.39 + <dt>Avatar par défaut</dt> 3.40 + <dd><input type='text' name='default_gravatar' /></dd> 3.41 + </dl> 3.42 + </fieldset> 3.43 + 3.44 + <fieldset> 3.45 + <legend>Paramètres divers</legend> 3.46 + <dl> 3.47 + <dt>Adresse de base du weblog</dt> 3.48 + <dd><input type='text' name='blog_url' tpl:id='url' /></dd> 3.49 + </dl> 3.50 + </fieldset> 3.51 + 3.52 + <fieldset> 3.53 + <legend>Valider ?</legend> 3.54 + <input type='submit' id='submit' value='Créer le fichier de configuration' /> 3.55 + </fieldset> 3.56 + <input type='hidden' name='postBack' value='1' /> 3.57 +</form>