Outils pour utilisateurs

Outils du site


braveo:blogcreation
no way to compare when less than two revisions

Différences

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


braveo:blogcreation [2022/09/04 21:02] (Version actuelle) – créée - modification externe 127.0.0.1
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 : 2022/09/04 21:02 de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki