Outils pour utilisateurs

Outils du site


braveo:blogcreation

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

braveo:blogcreation [2016/07/19 15:36] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Création d'un blog en php ======
  
 +Comme nous l'​avons vu précédemment notre blog est capable de communiquer avec notre serveur ldap qui gère les utilisateurs de la plateforme. Maintenant il nous reste à écrire le code en php, qui automatisera la création des blogs sur le serveur. Les blogs seront accessibles sous la forme : **http://​monblog.mdl29.net**
 +
 +===== Note =====
 +Pour avoir un blog de la forme **http://​monblog.mdl29.net** et non **http://​mdl29.net/​monblog**,​ il faudra modifier notre vhost apache en conséquence. La documentation à sujet est disponible ici : http://​mdl29.net/​doku.php?​id=braveo:​blogadresses
 +
 +===== Préparation du multiblog =====
 +
 +Pour l'​installation du multiblog, nous avons utilisé la documentation officielle de dotclear : http://​fr.dotclear.org/​documentation/​2.0/​admin/​clean-install. ​
 +Une fois notre multiblog mis en place, on se retrouve avec une arboresence suivante :     
 +
 +<note important>​Par rapport à la documentation de dotclear, nous mettrons nos blogs (ex: blog1) dans un dossier blogs et non au même niveau que dotclear et all-blogs.</​note>​
 +**Arborescence de notre multiblog :**
 +                                    ​
 +<​code>​
 +/www_
 +     |___ all-blogs ​    # répertoire de partage des thèmes et plugins
 +     ​| ​  |_ themes
 +     ​| ​  |_ plugins
 +     ​| ​  |_ index.php
 +     |
 +     |___ blogs         # répertoire où seront stocké tous les blogs
 +     ​| ​  |_ blog1
 +     ​| ​     |_themes
 +     ​| ​     |_pugins
 +     ​| ​     |_index.php  ​
 +     |
 +     |___ dotclear ​     # répertoire d'​installation de dotclear
 +
 +</​code>​
 +Le fichier index.php du dossier blog1
 +<​code>​
 +<?php
 +define('​DC_BLOG_ID','​blog1'​);​
 +require dirname(__FILE__).'/​../​../​dotclear/​inc/​public/​prepend.php';​
 +?>
 +</​code>​
 +Ce code sera automatiquement ​ générer en php.
 +                   
 +
 +===== Le code PHP =====   
 +Fichier : createblog.php
 +
 +<code PHP>
 +<?php
 +
 +require '/​var/​www/​dotclear/​inc/​admin/​prepend.php';​
 +
 +/* dans config-blog.php,​ on met les identifiants administrateur de dotclear
 +
 +$admin_dc = "​compte_admin";​
 +
 +$pwd_dc = "​motdepasse";​
 +
 +*/
 +require_once("​config-blog.php"​); ​
 +
 + $blog_id=$argv[1];​
 + $blog_url = "​http://​$blog_id.mdl29.net/​index.php?";​
 + // le nom du blog
 +        $blog_name = $blog_id;
 + // Description du blog
 +        $blog_desc = "Ici, Je mets la description de mon blog";
 +        // chemin des blogs
 + $Path_blogs ='/​var/​www/​blogs';​
 + $public_path = "​$Path_blogs/​$blog_id/​public";​
 + $themes_path = "/​var/​www/​all-blogs/​themes";​
 +
 +        /* Adresse url des thèmes
 +        Pour le moment les utilisateurs n'ont pas la possibilité de modifier leur thèmes
 +        mais par la suite, cela sera possible */
 +      ​
 +        $themes_url = "​http://​themes.mdl29.net";​
 +        // on récupère les identifiants du fichier config-blog.php
 + $user_id = $admin_dc;
 + $pwd = $pwd_dc;
 +
 + # authentification en admin obligatoire
 + $check_user = $core->​auth->​checkUser($user_id,​$pwd,​null) === true;
 + if ( ! $check_user) { 
 + echo "​impossible de s'​authentifier";​
 + return NULL;
 + }
 +
 +
 + # authentification en admin obligatoire
 + $check_user = $core->​auth->​checkUser($user_id,​$pwd,​null) === true;
 + # Est-ce que le blog existe ​
 + $ifBlogExiste = $core->​getBlog($blog_id);​
 + if ( $ifBlogExiste) {
 + echo "le blog existe";​
 + return NULL;
 + }
 +
 + # Création du blog
 + $cur = $core->​con->​openCursor($core->​prefix.'​blog'​);​
 + if (!$cur) { 
 + echo "​création du blog impossible";​
 + return NULL;
 + }else{
 + $blog_id = $cur->​blog_id = $blog_id ; 
 + $blog_url = $cur->​blog_url = $blog_url ;
 + $blog_name = $cur->​blog_name = $blog_name;
 + $blog_desc = $cur->​blog_desc = $blog_desc ;
 + $cur_add_blog=$core->​addBlog($cur);​
 +
 + if ( $cur_add_blog) { 
 + echo "​impossible de créer le blog";
 + return NULL;
 + }
 +
 + # Paramètres du blog
 +
 + $core->​blogDefaults($cur->​blog_id);​
 + $blog_settings = new dcSettings($core,​$cur->​blog_id);​
 + $blog_settings->​addNamespace('​system'​);​
 + $blog_settings->​system->​put('​public_path',​$public_path);​
 + $blog_settings->​system->​put('​themes_path',​$themes_path);​
 +                $blog_settings->​system->​put('​themes_url',​$themes_url);​
 +                $blog_settings->​system->​put('​lang','​fr'​);​
 +
 +                #  Création des répertoires sur le serveur
 +                #  le répertoire aura le nom de la variable $blog_id
 +
 + if ( ! mkdir ("​$Path_blogs/​$blog_id",​ 0330)) {
 + echo "​impossible de créer le répertoire du blog";
 + return NULL;
 + }
 + if ( ! mkdir ("​$Path_blogs/​$blog_id/​public/",​ 0750)) {
 + echo "​impossible de créer le répertoire du blog";
 + return NULL;
 + }
 + if ( ! mkdir ("​$Path_blogs/​$blog_id/​themes/",​ 0750)) {
 + echo "​impossible de créer le répertoire du blog";
 + return NULL;
 + }
 +               
 +                # Création d'un lien symbolique dans le répertoire créé
 +                # On utilise le thème dotclear par défaut
 + symlink("/​var/​www/​all-blogs/​themes/​default",​ "/​var/​www/​blogs/​$blog_id/​themes/​default" ​ );
 + $inF = fopen("/​var/​www/​blogs/​$blog_id/​index.php","​w"​);​
 + fwrite($inF,"<?​php\ndefine('​DC_BLOG_ID','​$blog_id'​);​\nrequire dirname(__FILE__).'/​../​../​dotclear/​inc/​public/​prepend.php';​\n?>"​);​
 + fclose($inF);​
 + return true;
 + }
 +?>
 +</​code>​
 +
 +===== Utilisation de notre code =====
 +Maintenant que notre fichier createblog.php est créé, nous allons voir comment l'​utiliser. ​
 +==== Exemple ====
 +Nous supposons que vous utilisez un serveur ldap pour gérer vos utilisateurs.
 +Le code fonctionne bien entendu, même si vous utilisez simplement la de base de données de dotclear.
 +
 +<​code>  ​
 +1. Nous disposons d'un utilisateur nommé "​testeur"​ dans le ldap
 +2. Création d'un fichier monblog.php ​
 +3. Le blog sera accessible à l'​adresse : http://​testeur.mdl29.net
 +</​code>  ​
 +
 +Le fichier ​ monblog.php :
 +
 +<code PHP>
 +<?php
 + 
 +  $identifiant = '​testeur'​
 +
 +  /* on fait appel à une fonction système exec
 +     Bien entendu c'est à éviter, ayant essayé d'​utiliser des fonctions et des classes
 +     cela ne fonctionnait pas. On avait des problèmes d'​include.
 +  */
 +  exec("​php createblog.php $identifiant"​); ​
 +?>
 +</​code>​
 +Et voilà, c'est fini. Dorénavant sur votre serveur, vous devriez avoir :
 +<​code>​
 +/www_
 +     |___ all-blogs ​    
 +     ​| ​  |_ themes
 +     ​| ​  |_ plugins
 +     ​| ​  |_ index.php
 +     |
 +     |___ blogs        ​
 +     ​| ​  |_ testeur
 +     ​| ​     |_themes
 +     ​| ​     |_pugins
 +     ​| ​     |_index.php  ​
 +     |
 +     |___ dotclear ​    
 +
 +</​code>​
braveo/blogcreation.txt · Dernière modification: 2016/07/19 15:36 (modification externe)