diff 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
line wrap: on
line diff
--- /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>