Mercurial > defr > DualBlog
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 69:d67a65183100 | 70:e08186e4ed77 |
|---|---|
| 1 <?php | |
| 2 require_once "classes.php"; | |
| 3 $req = new Requete(); | |
| 4 $pB = $req->Get('postBack', 'POST', false); | |
| 5 $canWrite = is_writable('includes'); | |
| 6 if(file_exists('includes/config.php')) | |
| 7 { | |
| 8 $tpl = '<p>Un fichier de configuration a déja été crée. Par mesure | |
| 9 de sécurité, il est necessaire de supprimer manuellement ce fichier | |
| 10 avant de pouvoir tenter une nouvelle installation</p>'; | |
| 11 } | |
| 12 else if($pB) | |
| 13 { | |
| 14 // 1. Vérification des identifiants MySQL, création des tables | |
| 15 $db_host = $req->Get('db_host'); | |
| 16 $db_user = $req->Get('db_user'); | |
| 17 $db_pass = $req->Get('db_pass'); | |
| 18 $db_db = $req->Get('db_db'); | |
| 19 $myDB = new DataAccess($db_host, $db_user, $db_pass, $db_db); | |
| 20 if($myDB->isInError()) | |
| 21 { | |
| 22 if($myDB->link === false) | |
| 23 $erreur = "Le triplet (hôte, identifiant, mot de passe) est erroné)"; | |
| 24 else | |
| 25 $erreur = "La base de données mentionné n'existe pas"; | |
| 26 | |
| 27 $tpl = $erreur; | |
| 28 } | |
| 29 else | |
| 30 { | |
| 31 // Requete de créations des 5 tables. | |
| 32 $myDB->Query("CREATE TABLE Brouillons( | |
| 33 id_brouillon INTEGER NOT NULL auto_increment, | |
| 34 Titre VARCHAR(70), | |
| 35 Contenu TEXT, | |
| 36 PRIMARY KEY (id_brouillon) | |
| 37 )"); | |
| 38 $myDB->Query("CREATE TABLE `Commentaires` ( | |
| 39 `num_comm` int(11) NOT NULL auto_increment, | |
| 40 `MessId` int(11) NOT NULL default '0', | |
| 41 `Auteur` varchar(60) NOT NULL default '', | |
| 42 `Adresse` varchar(150) NOT NULL default '', | |
| 43 `AdresseMail` varchar(60) default NULL, | |
| 44 `Comment` mediumtext NOT NULL, | |
| 45 `DateComment` datetime default '0000-00-00 00:00:00', | |
| 46 `isTrackback` tinyint(4) NOT NULL default '0', | |
| 47 `ip` varchar(25) NOT NULL default '', | |
| 48 `Visible` tinyint(4) NOT NULL default '1', | |
| 49 PRIMARY KEY (`num_comm`), | |
| 50 KEY `Visible` (`Visible`), | |
| 51 KEY `Parent` (`MessId`) | |
| 52 )"); | |
| 53 $myDB->Query("CREATE TABLE `Mess` ( | |
| 54 `num_mess` int(11) NOT NULL auto_increment, | |
| 55 `Titre` varchar(70) NOT NULL default '', | |
| 56 `DatePost` datetime NOT NULL default '0000-00-00 00:00:00', | |
| 57 `num_version` varchar(30) NOT NULL default '0', | |
| 58 `NbCommentaires` smallint(6) NOT NULL default '0', | |
| 59 `Message` longtext NOT NULL, | |
| 60 `CommentOpen` tinyint(1) NOT NULL default '0', | |
| 61 `Emot` varchar(20) default NULL, | |
| 62 PRIMARY KEY (`num_mess`) | |
| 63 )"); | |
| 64 $myDB->Query("CREATE TABLE `Tags` ( | |
| 65 `idTag` int(11) NOT NULL auto_increment, | |
| 66 `Tag` varchar(25) NOT NULL default '', | |
| 67 PRIMARY KEY (`idTag`), | |
| 68 KEY `Tag` (`Tag`) | |
| 69 )"); | |
| 70 $myDB->Query("CREATE TABLE `Lien_Tags_Posts` ( | |
| 71 `idLien` int(11) NOT NULL auto_increment, | |
| 72 `idTag` int(11) NOT NULL default '0', | |
| 73 `idMess` int(11) NOT NULL default '0', | |
| 74 PRIMARY KEY (`idLien`), | |
| 75 KEY `idTag` (`idTag`), | |
| 76 KEY `idMess` (`idMess`) | |
| 77 )"); | |
| 78 $tpl = "Yoopii tout bon au niveau de la base de données :-)"; | |
| 79 | |
| 80 // On va maintenant obtenir quelques renseignements supplémentaires | |
| 81 // pour finaliser le fichier de configuration | |
| 82 $akismet = $req->Get('akismet'); | |
| 83 $mail = $req->Get('mail'); | |
| 84 $dg = $req->Get('default_gravatar'); | |
| 85 $blog_url = $req->Get('blog_url'); | |
| 86 $conf = | |
| 87 "<?php | |
| 88 // Connexion à la base de données | |
| 89 define('DB_HOST', '$db_host'); | |
| 90 define('DB_USER', '$db_user'); | |
| 91 define('DB_PASSWORD', '$db_pass'); | |
| 92 define('DB_NAME', '$db_db'); | |
| 93 | |
| 94 // Informations de contact | |
| 95 define('BLOG_URL', '$blog_url'); | |
| 96 define('ADMIN_MAIL', '$mail'); | |
| 97 | |
| 98 // Image par défaut des auteurs des commentaires | |
| 99 define('BLOG_DEFAULT_GRAVATAR', '$dg'); | |
| 100 | |
| 101 // Clé d'authentification pour l'utilisation du service Akismet | |
| 102 define('AKISMET_API_KEY', '$akismet'); | |
| 103 ?> | |
| 104 "; | |
| 105 } | |
| 106 | |
| 107 if(!isset($erreur)) | |
| 108 { | |
| 109 if($canWrite) | |
| 110 { | |
| 111 file_put_contents('includes/config.php', $conf); | |
| 112 } | |
| 113 else | |
| 114 { | |
| 115 $tpl = " | |
| 116 <p>Ce script ne peut pas écrire dans votre dossier includes/. | |
| 117 Par conséquent, il vous faudra de vous même y créer un fichier | |
| 118 nommé <strong>config.php</strong> et y copier les lignes | |
| 119 suivantes:</p> | |
| 120 <pre>" . $conf . "</pre>"; | |
| 121 } | |
| 122 } | |
| 123 | |
| 124 //3. Génération du fichier .htpass | |
| 125 $login = $req->Get('login'); | |
| 126 $password = $req->Get('password'); | |
| 127 system("htpasswd -cbm .htpass '$login' '$password'"); | |
| 128 } | |
| 129 else | |
| 130 { | |
| 131 $url = "http://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['REQUEST_URI']); | |
| 132 $tpl = new Template('install_form.xml'); | |
| 133 $tpl->setParams(array('#url@value' => $url)); | |
| 134 } | |
| 135 header('Content-Type: text/html; charset=utf-8'); | |
| 136 ?> | |
| 137 <!DOCTYPE html> | |
| 138 <html> | |
| 139 <head> | |
| 140 <title>Installation</title> | |
| 141 <link rel='stylesheet' type='text/css' href='css/install.css' /> | |
| 142 </head> | |
| 143 <body id='Main'> | |
| 144 <h1>Installation de votre weblog</h1> | |
| 145 <?php | |
| 146 echo $tpl; | |
| 147 ?> | |
| 148 </body> | |
| 149 </html> |
