# HG changeset patch # User Franck Deroche # Date 1205924895 -3600 # Node ID e08186e4ed772772416a384f5156280053110f0b # Parent d67a65183100f5c199545f0fa04552b377580e8a 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. diff -r d67a65183100 -r e08186e4ed77 css/install.css --- /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; +} diff -r d67a65183100 -r e08186e4ed77 install.php --- /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 @@ +Get('postBack', 'POST', false); + $canWrite = is_writable('includes'); + if(file_exists('includes/config.php')) + { + $tpl = '

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

'; + } + 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 = +" +"; + } + + if(!isset($erreur)) + { + if($canWrite) + { + file_put_contents('includes/config.php', $conf); + } + else + { + $tpl = " +

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é config.php et y copier les lignes + suivantes:

+
" . $conf . "
"; + } + } + + //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'); +?> + + + + Installation + + + +

Installation de votre weblog

+ + + diff -r d67a65183100 -r e08186e4ed77 templates/install_form.xml --- /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 @@ + +
+
+ Paramètres MySQL +
+
Nom d'hôte
+
+
Base de données
+
+
Nom d'utilisateur
+
+
Mot de passe
+
+
+
+
+ Compte administrateur +
+
Nom
+
+
Mot de passe
+
+
+
+ +
+ Commentaires et anti-spam +
+
Adresse e-mail
+
+
Clé Akismet
+
+
Avatar par défaut
+
+
+
+ +
+ Paramètres divers +
+
Adresse de base du weblog
+
+
+
+ +
+ Valider ? + +
+ +