Lecteur Markdown
NOTEPAD_DOCUMENTATION
Notepad — Bloc-notes personnel #
Description #
Bloc-notes texte simple, un par utilisateur. Permet de sauvegarder et retrouver des notes persistantes directement depuis l'interface BeamReactor. Pas de formatage riche, pas de catégories — juste du texte brut.
Fonctionnement #
Chaque utilisateur dispose d'une note unique identifiée par un hash MD5 de son nom d'utilisateur et de sa date d'inscription (`md5(username + signup_date)`). Ce hash sert de clé dans la table `notepad`.
À la première visite, une entrée vide est créée automatiquement. Les sauvegardes suivantes font un UPDATE si l'entrée existe, un INSERT sinon.
Prérequis #
- Table SQL `notepad` (colonnes : `user` VARCHAR, `note` TEXT)
- Session active avec `email_address`
Interface #
- Textarea pleine largeur (max 1000px), 20 lignes
- Boutons Sauvegarder (`$dial[8]`) et Reset (`$dial[9]`)
- Compteur de caractères affiché sous le formulaire
- Message de confirmation après sauvegarde
- Soumission par formulaire POST classique (pas d'AJAX)
Flux #
1. Chargement : récupération de l'email en session → lookup `username` et `signup_date` dans la table users → hash → SELECT dans `notepad`
2. Sauvegarde : sanitization du contenu via `Parser::sanitize` (type `string`, max 65535 caractères) → INSERT ou UPDATE selon existence
3. Affichage : le contenu est échappé via `htmlspecialchars` dans le textarea
Sécurité #
- Accès restreint à `NOTEPAD_LEVEL_USER`
- Contenu sanitizé via `Parser::sanitize($note, 'string', maxLength: 65535)`
- Requêtes SQL préparées
- Sortie HTML échappée
Note : Le plugin n'est pas encore durci pour un usage en production. L'identification par `md5(username + signup_date)` est fonctionnelle mais pourrait être remplacée par l'ID utilisateur direct. La protection CSRF n'est pas implémentée. Ces points sont identifiés et prévus.
Structure #
/plugins/notepad/
├── notepad.php
├── /conf/
│ └── notepad.conf.inc.php
├── /locale/
│ ├── notepad.en.inc.php
│ └── notepad.fr.inc.php
└── /sql/
└── notepad.sql
Traductions #
| Clé | Description |
|------------|------------------------------------|
| `$dialplugindisplay` | Titre du plugin |
| `$dialplugincall` | Nom dans le centre de contrôle |
| `$dialnp[0]` | Label du textarea |
| `$dialnp[1]` | Message de confirmation sauvegarde |
| `$dialnp[2]` | Label du compteur de caractères |
Changelog #
- 2.0.3 (2011-05-28) : Migration vers `SQL::` et `Parser::sanitize`, compteur de caractères
- 0.x (2002–2026) : Bloc-notes original