====== 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 :
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.
**Arborescence de notre multiblog :**
/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
Le fichier index.php du dossier blog1
Ce code sera automatiquement générer en php.
===== Le code PHP =====
Fichier : createblog.php
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,"");
fclose($inF);
return true;
}
?>
===== 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.
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
Le fichier monblog.php :
Et voilà, c'est fini. Dorénavant sur votre serveur, vous devriez avoir :
/www_
|___ all-blogs
| |_ themes
| |_ plugins
| |_ index.php
|
|___ blogs
| |_ testeur
| |_themes
| |_pugins
| |_index.php
|
|___ dotclear