view install.php @ 79:7f0347d4c75e

Commentaires: On passe a une modération a priori
author Franck Deroche <root@hedwige.defr.net>
date Tue, 16 Feb 2010 22:16:08 +0100
parents e08186e4ed77
children
line wrap: on
line source
<?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>