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.
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>
