CMS « GIRVAS » Version du 12 mai 2026 à l"étape de développement « Chouïa ».
Dernières modifications
QueryBuilder : ajout du support des JOIN, des expressions CASE et des index
- ajout de l"Enum IndexType avec les types d"index (BTREE, HASH, GIST, GIN, SPGIST, BRIN, FULLTEXT)
- ajout de la classe ClauseJoin pour le support des JOIN dans les requêtes SELECT (INNER, LEFT, RIGHT, FULL)
- implémentation de la génération adaptative des conditions JOIN pour MySQL et PostgreSQL
- ajout de la classe CaseExpression pour la construction des expressions CASE en SQL
- implémentation des méthodes whenJsonLike() et whenJsonArrayContains() pour la recherche JSON
- ajout de la méthode statique CaseExpression::sum() pour la sommation des expressions CASE
- ajout de la méthode factory createCase() dans QueryBuilder
- ajout de la classe StatementCreateIndex pour la construction des requêtes CREATE INDEX
- ajout de la classe StatementDropIndex pour la construction des requêtes DROP INDEX
- implémentation du support UNIQUE, CONCURRENTLY, IF NOT EXISTS/IF EXISTS, index partiels avec WHERE
- ajout des méthodes setStatementCreateIndex() et setStatementDropIndex() dans QueryBuilder
- correction de l"échappement des expressions CASE dans addSelections() pour PostgreSQL
- ajout de la mise en cache des données initialisées (initData) dans la classe EntryCategory
Ajout d"un moteur de recherche intégré pour les entrées
- ajout de la méthode search() dans la classe Entries pour la recherche en texte intégral avec prise en compte de la localisation
- ajout de la méthode getCountBySearch() dans la classe Entries pour la pagination des résultats de recherche
- implémentation du classement des résultats de recherche par pertinence avec des pondérations de champs configurables
- implémentation de la recherche AND avec découpage de la requête en mots et prise en compte de la ponctuation
- ajout de la classe PageSearch pour l"affichage de la page de recherche publique
- correction du décodage URL de la requête de recherche dans PageSearch
Ajout d"une page d"archive des entrées avec navigation par dates
- ajout des méthodes getByDateRange() et getCountByDateRange() dans la classe Entries pour la sélection sur une période
- ajout des méthodes getAvailableYears() et getAvailableMonths() dans la classe Entries pour la navigation dans l"archive
- ajout de la classe PageArchive pour l"affichage de la page d"archive
- implémentation de la navigation par années et mois avec comptage du nombre d"entrées
- getMonthName() modifié en méthode statique publique avec récupération des noms depuis la localisation
- la navigation d"archive buildArchiveNavigation() a été réécrite avec DOMDocument
- ajout des pages d"archive au Sitemap (/archive, /archive?year=AAAA, /archive?year=AAAA&month=MM)
Ajout du support des catégories enfants et des fils d"Ariane hiérarchiques
- ajout des méthodes getByCategoriesIDs() et getCountByCategoriesIDs() dans la classe Entries
- ajout de la méthode getChildCategoriesIDs() dans la classe EntryCategory pour la récupération récursive des catégories enfants
- ajout de la méthode getParentChain() dans la classe EntryCategory pour la hiérarchie des fils d"Ariane
- mise à jour des méthodes getEntries() et getEntriesCount() avec le paramètre includeChildren
- la page de catégorie PageEntries affiche les entrées en tenant compte des catégories enfants
- les fils d"Ariane affichent la hiérarchie complète de la racine à la catégorie actuelle
Ajout de la création automatique des index lors de l"installation du CMS
- ajout d"un bloc de création d"index à l"étape 6 de l"installation après la génération des tables
- index pour les tables entries, entries_categories, entries_comments, pages_static
- index pour les tables users, users_sessions, forms_data, web_channels, metrics
- index uniques sur name, login, email
- pour PostgreSQL, ajout d"index GIN sur les champs JSONB et d"un index partiel pour les entrées publiées
- tous les index sont créés avec IF NOT EXISTS, les erreurs sont enregistrées sans interrompre l"installation
Ajout d"une sous-section dans la section « Contenu » du panneau d"administration : « Blocs de contenu »
- Nouvelle sous-section « Blocs de contenu » introduite dans la section « Contenu »
Ajout d"un analyseur SEO de contenu intégré avec support markdown
- implémentation de la classe
SeoAnalyzerpour vérifier cinq axes : titre, méta-description, mots-clés, contenu, url - l"analyseur vérifie la présence des mots-clés dans le titre SEO, la méta-description, les titres h2-h6, le premier paragraphe et l"ensemble du texte
- contrôle des doublons : avertissement si les champs SEO sont vides et dupliquent les champs principaux
- l"analyseur markdown supporte les attributs json des liens et des images dans la syntaxe du CMS « GIRVAS »
- recherche d"urls nues avec recommandation de les formater en liens markdown
- vérification du texte alt des images et du rel=nofollow des liens externes
- hiérarchie des titres : h1 exclu de l"analyse du contenu car généré par le thème
- indication colorée et barres de progression pour chaque section
- bloc de recommandations avec des étapes concrètes pour l"amélioration
- fonctionne entièrement côté client, sans requêtes vers le serveur
- localisation via _t() avec un format compatible PHP
%s,%d,%.nf - interface intégrée dans le panneau latéral de l"éditeur de pages et d"entrées
Corrections de bugs mineurs
Version précédente : 0.2.9 « Voïtsy »
Commentaires