Lecteur Markdown
BLOGS_DOCUMENTATION
Blogs #
Système de blogs multi-utilisateurs.
Namespace: `Beamreactor\Plugins\Blogs`
Version: 2.2.0
Niveau requis: `BLOGS_LEVEL_USER` (édition), public (lecture)
Vue d'ensemble #
Fonctionnalités #
- Blogs personnels par utilisateur
- Éditeur WYSIWYG intégré
- Génération automatique de tagcloud
- Pagination des articles
- Modération par les administrateurs
- Support multilingue
- Inclusion en widget (mode `$unfold`)
Modes d'affichage #
| Mode | Description |
|------|-------------|
| Liste globale | Derniers articles de tous les blogs |
| Blog utilisateur | Articles d'un auteur spécifique |
| Article unique | Affichage complet d'un article |
| Widget | Inclusion directe via `$blogger` + `$unfold=1` |
Actions (paramètre `bedit`) #
| Valeur | Action | Niveau requis |
|--------|--------|---------------|
| `1` | Créer un nouvel article | `BLOGS_LEVEL_USER` |
| `2` | Modifier un article | Auteur ou `BLOGS_LEVEL_MODERATOR` |
| `3` | Supprimer un article | Auteur ou `BLOGS_LEVEL_MODERATOR` |
| `4` | Suppression modérateur | `BLOGS_LEVEL_MODERATOR` |
Fonctions #
clear_tagcloud #
clear_tagcloud(int $id, string $blogger): void
Paramètres:
- `$id` — ID de l'article
- `$blogger` — Identifiant de l'auteur
add_tagcloud #
Génère et insère les tags d'un article.
add_tagcloud(string $titre, string $texte, int $id, string $langage, string $blogger): void
Paramètres:
- `$titre` — Titre de l'article (pondération x3)
- `$texte` — Contenu HTML de l'article
- `$id` — ID de l'article
- `$langage` — Code langue
- `$blogger` — Identifiant de l'auteur
Comportement:
- Extrait le texte brut du HTML
- Compte les occurrences de chaque mot
- Filtre : longueur 5-11 caractères, minimum 3 occurrences
- Stocke dans `blogs_scattags`
Structure des tables #
blogs #
CREATE TABLE blogs (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(135) NOT NULL,
authorid VARCHAR(50) NOT NULL,
doc TEXT,
date DATETIME,
moddate DATETIME,
uniqueid VARCHAR(120),
INDEX (authorid),
INDEX (date)
);
blogs_scattags #
CREATE TABLE blogs_scattags (
id INT AUTO_INCREMENT PRIMARY KEY,
plugin VARCHAR(50),
document INT,
language VARCHAR(5),
date DATETIME,
wordsc VARCHAR(50),
occ INT,
author VARCHAR(50),
INDEX (author, document),
INDEX (wordsc)
);
Paramètres GET #
| Paramètre | Type | Description |
|-----------|------|-------------|
| `blogger` | string | Filtre par auteur |
| `blogid` | int | ID d'un article spécifique |
| `blpage` | int | Numéro de page |
| `blimit` | int | Nombre d'articles (défaut: 5) |
| `bedit` | int | Action d'édition |
Paramètres POST #
| Paramètre | Type | Description |
|-----------|------|-------------|
| `bedit` | int | Action (1=créer, 2=modifier) |
| `titre` | string | Titre de l'article (max 135 car.) |
| `htmlfeed` | html | Contenu de l'article |
| `id` | int | ID pour modification |
| `uniqueid` | string | Token anti-CSRF |
Inclusion en widget #
Pour afficher un blog directement dans une page :
$blogger = 'username';
$unfold = 1;
include($cfg[18] . '/blogs.php');
Locale #
Clés utilisées dans `$dialbdt`:
| Index | Description |
|-------|-------------|
| 0 | Lien tous les blogs |
| 2 | Message création OK |
| 3 | Lien nouvel article |
| 4 | Lien retour |
| 5 | Message modification OK |
| 7 | Bouton supprimer |
| 8 | Bouton modifier |
| 10 | Erreur champs requis |
| 11 | Erreur doublon titre |
| 13 | Séparateur "par" |
| 17 | Titre derniers articles |
| 18 | Titre blogs actifs |
| 19 | Séparateur dernier article |
Permissions #
| Action | Condition |
|--------|-----------|
| Lire | Public |
| Créer | `BLOGS_LEVEL_USER` |
| Modifier ses articles | Auteur + `BLOGS_LEVEL_USER` |
| Supprimer ses articles | Auteur + `BLOGS_LEVEL_USER` |
| Modérer tout article | `user_level > 2` |
Exemples d'URL #
# Liste des derniers articles
?obj=blogs.php
# Blog d'un utilisateur
?obj=blogs.php&blogger=johndoe
# Article spécifique
?obj=blogs.php&blogger=johndoe&blogid=42
# Formulaire de création
?obj=blogs.php&bedit=1
# Modifier un article
?obj=blogs.php&bedit=2&id=42
Notes #
- Le titre est pondéré x3 dans le tagcloud pour améliorer la pertinence
- Les mots de moins de 5 caractères sont ignorés (stop words implicite)
- La date de modification (`moddate`) prend le pas sur la date de création pour l'affichage
- Le champ `uniqueid` sert de token anti-CSRF pour les formulaires