Title: Mairie Réservation de Salles
Author: verturin
Published: <strong>August 9, 2026</strong>
Last modified: August 9, 2026

---

Search plugins

![](https://ps.w.org/mairie-reservation-de-salles/assets/icon-256x256.png?rev=3639778)

# Mairie Réservation de Salles

 By [verturin](https://profiles.wordpress.org/verturin/)

[Download](https://downloads.wordpress.org/plugin/mairie-reservation-de-salles.1.5.17.zip)

 * [Details](https://wordpress.org/plugins/mairie-reservation-de-salles/#description)
 * [Reviews](https://wordpress.org/plugins/mairie-reservation-de-salles/#reviews)
 *  [Installation](https://wordpress.org/plugins/mairie-reservation-de-salles/#installation)
 * [Development](https://wordpress.org/plugins/mairie-reservation-de-salles/#developers)

 [Support](https://wordpress.org/support/plugin/mairie-reservation-de-salles/)

## Description

**Mairie Reservation de Salles** is a turnkey booking system for town halls (mairies)
that want to digitize the reservation of their municipal rooms. The interface is
in French, designed for French local authorities.

Citizens check availability online 24/7 through an interactive calendar and submit
a request in a few clicks. Municipal staff manage requests from the WordPress admin
with validation, deposit payment tracking, and automated emails.

#### For citizens

 * Check availability online, on desktop or mobile
 * Select multiple dates in one click on the calendar
 * Four-step form: time slot, equipment, information, confirmation
 * Automatic confirmation email for the request
 * Choose between individual, association, or local association

#### For town hall staff

 * Complete dashboard with multiple menus inside WordPress
 * Filtering and search of requests
 * Validation, refusal, cancellation, and deposit payment tracking
 * Twelve-month yearly view with color coding
 * Detailed monthly calendar per room
 * Block a time slot for internal use (council meeting, maintenance, etc.)
 * Management of local associations with a configurable deposit discount
 * Global and per-room equipment catalog with real-time stock checking
 * Fully editable email templates
 * PDF rules document automatically attached to emails
 * One-click JSON backup and restore
 * Advanced statistics with charts (bookings per month, per room, occupancy rate)
 * Granular permission system with role presets (Mayor, Deputy, Agent, Secretary)
 * PDF calendar export (monthly and yearly views)
 * Optional anti-bot protection via Cloudflare Turnstile

#### Available shortcodes

 * `[mrds_reservation_salle]` – Full multi-step booking form
 * `[mrds_reservation_salle_directe salle="slug"]` – Form with a pre-selected room
 * `[mrds_reservation_sans_salles]` – Companion form for the calendar
 * `[mrds_calendrier_salle]` – Interactive multi-date calendar
 * `[mrds_salles_disponibilites]` – Room presentation cards

#### External services

This plugin can optionally use Cloudflare Turnstile to protect the public form from
bots. When enabled by the administrator, the Turnstile script is loaded from Cloudflare
and the submitted token is verified against Cloudflare’s API. This only happens 
if you enter your own Turnstile keys in the settings. See the Cloudflare Turnstile
terms (https://www.cloudflare.com/website-terms/) and privacy policy (https://www.
cloudflare.com/privacypolicy/).

## Installation

 1. Download the plugin ZIP file
 2. In WordPress: Plugins > Add New > Upload Plugin
 3. Select the ZIP and click Install
 4. Activate the plugin
 5. Go to Reservations > Rooms to configure your rooms
 6. Add the shortcode `[mrds_reservation_salle]` or `[mrds_calendrier_salle]` to a 
    page

## FAQ

### Is the plugin compatible with my theme?

Yes. The plugin uses standard WordPress shortcodes and works with any standards-
compliant theme. No theme modification is required.

### How many rooms can I manage?

There is no limit. You can manage one or dozens of rooms, each with its own opening
hours, capacity, deposit, and equipment.

### How does the double-booking check work?

On every booking attempt, the system checks in real time that no other active request
overlaps the time slot, which prevents duplicates even with simultaneous submissions.

### Are the emails customizable?

Yes. The email templates (acknowledgement, validation, refusal, and more) are fully
editable from the admin. Dynamic variables are available, such as first name, last
name, room, date, time slot, and subject.

### Can I attach a rules document to the emails?

Yes. Upload a PDF in Reservations > Rules. You can have one global document or a
specific document per room. It is attached automatically to the configured emails.

### How can I protect the form from bots?

The plugin integrates Cloudflare Turnstile (free). Create your keys on the Cloudflare
dashboard, paste them into the settings, and the form is protected immediately.

### Which PHP versions are supported?

The plugin requires PHP 7.4 or higher and has been tested up to PHP 8.3.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Mairie Réservation de Salles” is open source software. The following people have
contributed to this plugin.

Contributors

 *   [ verturin ](https://profiles.wordpress.org/verturin/)

[Translate “Mairie Réservation de Salles” into your language.](https://translate.wordpress.org/projects/wp-plugins/mairie-reservation-de-salles)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/mairie-reservation-de-salles/),
check out the [SVN repository](https://plugins.svn.wordpress.org/mairie-reservation-de-salles/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/mairie-reservation-de-salles/)
by [RSS](https://plugins.trac.wordpress.org/log/mairie-reservation-de-salles/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.5.17

 * Sécurité : échappement des chaînes traduites concaténées dans le HTML retourné
   par le shortcode de réservation (branche « accès bloqué » — liens Se connecter/
   Créer un compte), via esc_html__() au lieu de __(). Audit de l’ensemble des shortcodes
   et filtres du plugin pour le même schéma : aucun autre cas trouvé.

#### 1.5.16

 * Sécurité (généralisation des correctifs 1.5.15 à l’ensemble du plugin) : vérification
   de nonce réelle sur toutes les navigations GET restantes — Calendrier mensuel(
   liens mois/année/salle via wp_nonce_url), sélecteur d’année des Statistiques,
   formulaire de filtres de l’Export PDF — avec bornage systématique des mois (1-
   12) et années (2000-2100).
 * Sécurité : les messages de confirmation post-redirection (salles, matériel, associations)
   portent désormais un nonce dans l’URL de redirection, vérifié avant affichage.
 * Sécurité : le chargement de Chart.js sur la page Statistiques utilise le paramètre
   $hook fourni par WordPress (admin_enqueue_scripts) au lieu de lire $_GET[‘page’].
 * Sécurité : élimination des deux dernières constructions SQL dynamiques — la liste
   des réservations utilise une requête entièrement littérale (filtres vides neutralisés
   par « %s = ” OR colonne = %s »), et l’export PDF toutes salles filtre par salle
   côté PHP au lieu d’une clause IN générée.

#### 1.5.15

 * Sécurité : vérification de nonce réelle sur la navigation de la Vue annuelle (
   mrds_admin_page_annuel) — liens année/salle générés via wp_nonce_url(), paramètres
   GET lus uniquement après wp_verify_nonce() ; sinon valeurs par défaut (année 
   courante, première salle). Validation supplémentaire de l’année (plage 2000-2100).
 * Sécurité : restructuration du contrôle de nonce des filtres de la liste des réservations—
   la condition porte désormais uniquement sur la validité du nonce (plus de test
   préalable sur la présence des paramètres, non contournable) ; validation stricte
   du statut contre la liste des valeurs connues.
 * Sécurité : sanitization explicite champ par champ de $_FILES pour l’import de
   sauvegarde et l’upload de règlement (sanitize_file_name, sanitize_mime_type, 
   cast entiers), plus validation is_uploaded_file() et extension .json pour l’import.
 * Sécurité : les chaînes JSON reçues en POST (matériel, dates) sont sanitizées 
   avant json_decode(), et chaque élément décodé est validé et reconstruit champ
   par champ (identifiants et quantités castés en entiers) — rien du JSON brut n’est
   conservé.
 * Sécurité : les migrations de base de données (ALTER TABLE) n’interpolent plus
   aucune variable dans les chaînes SQL — chaque requête est un littéral complet
   figé, seul le nom de table passe par le placeholder %i de $wpdb->prepare().

#### 1.5.14

 * Correction : le tableau “Shortcodes disponibles” de la page Paramètres (admin)
   affichait encore les anciens noms non préfixés (héritage du renommage en 1.5.10);
   mis à jour avec les tags mrds_* actuels, y compris la “Combinaison recommandée”.
 * Nettoyage : mise à jour des commentaires de documentation interne (docblocks)
   dans le code source pour référencer les mêmes noms de shortcodes préfixés.

#### 1.5.13

 * Correction technique : deux derniers commentaires phpcs:ignore mal positionnés(
   ligne de fermeture au lieu de ligne d’ouverture) sur des requêtes multi-lignes
   dans helpers.php et admin.php ; repositionnés. Ajout du code PluginCheck.Security.
   DirectDB.UnescapedDBParameter à la liste déjà justifiée dans admin.php (liste
   de réservations à filtres dynamiques).

#### 1.5.12

 * Correction technique : sur les requêtes $wpdb multi-lignes, le commentaire phpcs:
   ignore doit se trouver sur la ligne où l’appel commence (et non sur la ligne 
   de fermeture) pour être pris en compte par l’outil d’analyse ; repositionné sur
   l’ensemble des fichiers concernés.
 * Correction : plusieurs requêtes assignaient le résultat de $wpdb->prepare() à
   une variable intermédiaire avant de l’exécuter, ce que l’analyseur ne peut pas
   vérifier statiquement ; ces appels sont désormais imbriqués directement.
 * Correction : les requêtes dont la clause SQL variait selon un paramètre (ternaire/
   concaténation dans la chaîne passée à prepare()) sont désormais écrites en branches
   explicites avec une chaîne littérale complète par cas.

#### 1.5.11

 * Sécurité : toutes les requêtes SQL construites avec un nom de table interpolé
   utilisent désormais le placeholder %i de $wpdb->prepare() (nécessite WordPress
   6.2+, voir “Requires at least” mis à jour).
 * Sécurité : ajout de vérifications de nonce ou de justifications documentées (
   phpcs:ignore) sur les lectures $_GET/$_POST sans risque (navigation en lecture
   seule protégée par capability, ou nonce déjà vérifié par l’appelant).
 * Correction : le hook d’export CSV des statistiques était mal nommé (admin_post_mr_stats_export_csv
   au lieu de admin_post_mrds_stats_export_csv) et ne se déclenchait donc jamais;
   corrigé.
 * Nettoyage : suppression des blocs phpcs:disable/enable fragiles au profit de 
   commentaires phpcs:ignore ciblés et justifiés.

#### 1.5.10

 * Conformité WordPress.org : préfixage des tags de shortcodes (ex. [reservation_salle][
   mrds_reservation_salle]). Aucun site n’étant en production à ce jour, les anciens
   tags non préfixés ont été entièrement retirés (pas d’alias de rétrocompatibilité)—
   merci de mettre à jour vos pages de test en conséquence.

#### 1.5.9

 * Sécurité : la restauration de sauvegarde utilise désormais une liste blanche 
   stricte des options du plugin (au lieu d’un simple test de préfixe), qui ne peut
   pas être étendue via un fichier de sauvegarde trafiqué.
 * Sécurité : ajout d’un contrôle de nonce sur le formulaire de filtre de la liste
   des réservations (statut / salle / recherche).
 * Conformité WordPress.org : remplacement du préfixe court « mr- » (trop court,
   2 caractères) par « mrds- » sur tous les identifiants de menus d’administration
   et de scripts/styles enregistrés (aucun impact fonctionnel).

#### 1.5.8

 * Conformité revue WordPress.org : préfixe unique « mrds_ » sur toutes les fonctions,
   constantes, options, hooks AJAX et capacités (migration automatique des données
   existantes).
 * Sécurité : l’import de sauvegarde ne peut plus écraser que les options du plugin(
   préfixe), jamais des options WordPress arbitraires.
 * Permissions : pages Réservations / Calendrier / Vue annuelle protégées par capacité(
   plus seulement « read »).

#### 1.5.7

 * Manifestations : marquage d’une réservation comme « Manifestation » et nouvel
   export « Calendrier des manifestations » de l’année (liste par mois ou calendrier
   visuel 12 mois).
 * Récurrences : nouvelles options « ne pas réserver pendant les vacances scolaires»
   et « ignorer les jours fériés » (l’association reprend après la coupure, le nombre
   d’occurrences est respecté).
 * Vacances scolaires : sélection de zone (A/B/C) et couleur de surlignage dans 
   Identité mairie, report sur les calendriers exportés.
 * Impression : option « Toutes les salles » (présentation empilée ou grille par
   jour), par mois ou par année.
 * Édition d’une récurrence avec propagation aux dates à venir.
 * Jours fériés et dimanches grisés à l’impression.

#### 1.5.6

 * Version de validation pour la soumission au répertoire WordPress.org (revue de
   conformité).
 * Aucune nouvelle fonctionnalité : reprend l’ensemble des corrections de la 1.5.5(
   enqueue des scripts/styles, wp_json_encode, Chart.js 4.5.1, sécurité).

#### 1.5.5

 * Conformité revue WordPress.org : tous les blocs / inline migrés vers wp_enqueue_script/
   wp_enqueue_style / wp_add_inline_script / wp_add_inline_style.
 * Données dynamiques passées au JS via variables (wp_json_encode) au lieu de PHP
   interpolé dans le JavaScript.
 * json_encode remplacé par wp_json_encode partout (sortie et stockage).
 * Bibliothèque Chart.js mise à jour de 4.4.1 vers 4.5.1.
 * Renforcements de sécurité (nonces sanitizés, sorties échappées, text domain unifié).

#### 1.5.4

 * New “Town hall identity” page: contact details, mayor, and a variable number 
   of deputies and councillors
 * PDF “All months” export now starts with a cover page (town hall name, room, year,
   elected officials, contact details)

#### 1.5.3

 * PDF export: new “All months” mode – one detailed page per month (12 pages) in
   a single print job
 * PDF export options now stacked vertically for better readability
 * Input handling hardening (wp_unslash and sanitization on form data)

#### 1.5.2

 * Granular permission system: capabilities with role presets (Mayor, Deputy, Agent,
   Secretary)
 * PDF calendar export module (monthly and yearly views)
 * Compatibility and security hardening for WordPress.org review (output escaping,
   file handling, local script bundling)

#### 1.5.1

 * Fixed validation of known associations (contact details retrieved from the database)
 * Fixed progress bar synchronization when clicking from the calendar
 * Removed scroll jump when moving from calendar to form
 * Visual grouping of multi-date bookings in the admin list
 * Cascading actions on groups (validate/refuse/cancel several dates in one click)
 * Admin menu: All reservations moved back to first position
 * Advanced statistics page with charts
 * Permanent deletion of a reservation (admin only)
 * Cancel button on every step of the form
 * Explicit error message with the ID of the conflicting reservation
 * Null safety for PHP 8.1+

#### 1.5.0

 * Email templates page – fully editable templates
 * Rules document page – global or per-room PDF upload
 * Manager fields (first name, last name) on associations
 * Hidden contact details for known associations

## Meta

 *  Version **1.5.17**
 *  Last updated **9 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.0.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [booking](https://wordpress.org/plugins/tags/booking/)[calendar](https://wordpress.org/plugins/tags/calendar/)
   [reservation](https://wordpress.org/plugins/tags/reservation/)[room](https://wordpress.org/plugins/tags/room/)
 *  [Advanced View](https://wordpress.org/plugins/mairie-reservation-de-salles/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/mairie-reservation-de-salles/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/mairie-reservation-de-salles/reviews/)

## Contributors

 *   [ verturin ](https://profiles.wordpress.org/verturin/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/mairie-reservation-de-salles/)