Mercurial > 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, 19 Mar 2008 12:08:15 +0100 |
parents | d67a65183100 |
children | 464f4b94ee27 |
files | css/install.css install.php templates/install_form.xml |
diffstat | 3 files changed, 249 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/css/install.css Wed Mar 19 12:08:15 2008 +0100 @@ -0,0 +1,46 @@ +html {background: #eee; font-family: sans-serif; } +h1 {font-size: 1.1em; text-align: center; margin:0; padding:10px;} +legend {font-style: italic;} +body { + margin: 0 30px; + background:#fff; + border:#999 solid; + border-width: 0 2px; + padding: 0 5px 5px; +} + +input { + font-size: 1em; + border: #dec solid; + border-width: 1px 1px 1px 4px; + background: url(Res_Somatic/bg_test.png) repeat 0% 0%; + width: 100%; +} + +input:not(:focus) { + opacity: 0.7; + color: #666; +} + +input:focus { + opacity: 1; + background: #fff; +} + +fieldset { + -moz-border-radius: 1.5em; + min-width: 10em; + max-width: 30em; + width: 90%; + margin-bottom: 15px; +} + + +#submit { + opacity: 1; + margin: 15px auto; + display: block; + border-width: 1px 3px; + font-weight: bold; + background: #fff; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/install.php Wed Mar 19 12:08:15 2008 +0100 @@ -0,0 +1,149 @@ +<?php + require_once "classes.php"; + $req = new Requete(); + $pB = $req->Get('postBack', 'POST', false); + $canWrite = is_writable('includes'); + if(file_exists('includes/config.php')) + { + $tpl = '<p>Un fichier de configuration a déja été crée. Par mesure + de sécurité, il est necessaire de supprimer manuellement ce fichier + avant de pouvoir tenter une nouvelle installation</p>'; + } + else if($pB) + { + // 1. Vérification des identifiants MySQL, création des tables + $db_host = $req->Get('db_host'); + $db_user = $req->Get('db_user'); + $db_pass = $req->Get('db_pass'); + $db_db = $req->Get('db_db'); + $myDB = new DataAccess($db_host, $db_user, $db_pass, $db_db); + if($myDB->isInError()) + { + if($myDB->link === false) + $erreur = "Le triplet (hôte, identifiant, mot de passe) est erroné)"; + else + $erreur = "La base de données mentionné n'existe pas"; + + $tpl = $erreur; + } + else + { + // Requete de créations des 5 tables. + $myDB->Query("CREATE TABLE Brouillons( + id_brouillon INTEGER NOT NULL auto_increment, + Titre VARCHAR(70), + Contenu TEXT, + PRIMARY KEY (id_brouillon) + )"); + $myDB->Query("CREATE TABLE `Commentaires` ( + `num_comm` int(11) NOT NULL auto_increment, + `MessId` int(11) NOT NULL default '0', + `Auteur` varchar(60) NOT NULL default '', + `Adresse` varchar(150) NOT NULL default '', + `AdresseMail` varchar(60) default NULL, + `Comment` mediumtext NOT NULL, + `DateComment` datetime default '0000-00-00 00:00:00', + `isTrackback` tinyint(4) NOT NULL default '0', + `ip` varchar(25) NOT NULL default '', + `Visible` tinyint(4) NOT NULL default '1', + PRIMARY KEY (`num_comm`), + KEY `Visible` (`Visible`), + KEY `Parent` (`MessId`) + )"); + $myDB->Query("CREATE TABLE `Mess` ( + `num_mess` int(11) NOT NULL auto_increment, + `Titre` varchar(70) NOT NULL default '', + `DatePost` datetime NOT NULL default '0000-00-00 00:00:00', + `num_version` varchar(30) NOT NULL default '0', + `NbCommentaires` smallint(6) NOT NULL default '0', + `Message` longtext NOT NULL, + `CommentOpen` tinyint(1) NOT NULL default '0', + `Emot` varchar(20) default NULL, + PRIMARY KEY (`num_mess`) + )"); + $myDB->Query("CREATE TABLE `Tags` ( + `idTag` int(11) NOT NULL auto_increment, + `Tag` varchar(25) NOT NULL default '', + PRIMARY KEY (`idTag`), + KEY `Tag` (`Tag`) + )"); + $myDB->Query("CREATE TABLE `Lien_Tags_Posts` ( + `idLien` int(11) NOT NULL auto_increment, + `idTag` int(11) NOT NULL default '0', + `idMess` int(11) NOT NULL default '0', + PRIMARY KEY (`idLien`), + KEY `idTag` (`idTag`), + KEY `idMess` (`idMess`) + )"); + $tpl = "Yoopii tout bon au niveau de la base de données :-)"; + + // On va maintenant obtenir quelques renseignements supplémentaires + // pour finaliser le fichier de configuration + $akismet = $req->Get('akismet'); + $mail = $req->Get('mail'); + $dg = $req->Get('default_gravatar'); + $blog_url = $req->Get('blog_url'); + $conf = +"<?php + // Connexion à la base de données + define('DB_HOST', '$db_host'); + define('DB_USER', '$db_user'); + define('DB_PASSWORD', '$db_pass'); + define('DB_NAME', '$db_db'); + + // Informations de contact + define('BLOG_URL', '$blog_url'); + define('ADMIN_MAIL', '$mail'); + + // Image par défaut des auteurs des commentaires + define('BLOG_DEFAULT_GRAVATAR', '$dg'); + + // Clé d'authentification pour l'utilisation du service Akismet + define('AKISMET_API_KEY', '$akismet'); +?> +"; + } + + if(!isset($erreur)) + { + if($canWrite) + { + file_put_contents('includes/config.php', $conf); + } + else + { + $tpl = " + <p>Ce script ne peut pas écrire dans votre dossier includes/. + Par conséquent, il vous faudra de vous même y créer un fichier + nommé <strong>config.php</strong> et y copier les lignes + suivantes:</p> + <pre>" . $conf . "</pre>"; + } + } + + //3. Génération du fichier .htpass + $login = $req->Get('login'); + $password = $req->Get('password'); + system("htpasswd -cbm .htpass '$login' '$password'"); + } + else + { + $url = "http://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['REQUEST_URI']); + $tpl = new Template('install_form.xml'); + $tpl->setParams(array('#url@value' => $url)); + } + header('Content-Type: text/html; charset=utf-8'); +?> +<!DOCTYPE html> +<html> + <head> + <title>Installation</title> + <link rel='stylesheet' type='text/css' href='css/install.css' /> + </head> + <body id='Main'> + <h1>Installation de votre weblog</h1> +<?php + echo $tpl; +?> + </body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/templates/install_form.xml Wed Mar 19 12:08:15 2008 +0100 @@ -0,0 +1,54 @@ +<?xml version='1.0' encoding='utf-8'?> +<form method='POST' + action='#' + xmlns='http://www.w3.org/1999/xhtml' + xmlns:tpl='http://defr.net/2007/template'> + <fieldset> + <legend>Paramètres MySQL</legend> + <dl> + <dt>Nom d'hôte</dt> + <dd><input type='text' name='db_host' /></dd> + <dt>Base de données</dt> + <dd><input type='text' name='db_db' /></dd> + <dt>Nom d'utilisateur</dt> + <dd><input type='text' name='db_user' /></dd> + <dt>Mot de passe</dt> + <dd><input type='text' name='db_pass' /></dd> + </dl> + </fieldset> + <fieldset> + <legend>Compte administrateur</legend> + <dl> + <dt>Nom</dt> + <dd><input type='text' name='login' /></dd> + <dt>Mot de passe</dt> + <dd><input type='text' name='password' /></dd> + </dl> + </fieldset> + + <fieldset> + <legend>Commentaires et anti-spam</legend> + <dl> + <dt>Adresse e-mail</dt> + <dd><input type='text' name='mail' /></dd> + <dt>Clé <a href='http://akismet/com'>Akismet</a></dt> + <dd><input type='text' name='akismet' /></dd> + <dt>Avatar par défaut</dt> + <dd><input type='text' name='default_gravatar' /></dd> + </dl> + </fieldset> + + <fieldset> + <legend>Paramètres divers</legend> + <dl> + <dt>Adresse de base du weblog</dt> + <dd><input type='text' name='blog_url' tpl:id='url' /></dd> + </dl> + </fieldset> + + <fieldset> + <legend>Valider ?</legend> + <input type='submit' id='submit' value='Créer le fichier de configuration' /> + </fieldset> + <input type='hidden' name='postBack' value='1' /> +</form>