Mercurial > defr > DualBlog
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>