SPIP 4.4

Cette branche LTS va bénéficier d’un support étendu jusqu’en juillet 2027.

Compatibilité PHP 7.4 à 8.4

SPIP 4.4 nécessite PHP 7.4 minimum, et fonctionne jusqu’à PHP 8.4.
Il nécessite les extensions PHP : sodium, Zlib, Zip et Phar.

Changements apportés par SPIP 4.4

Les changements les plus marquants sont le fait que SPIP n’envoie plus de mot de passe en clair dans les mails d’inscription et de rappel de mot de passe.

Côté technique on peut noter que les dossiers ecrire, prive, squelettes-dist ainsi que l’écran de sécurité s’installent avec Composer. Cela ne change rien pour les personnes qui utilisent spip_loader. À noter aussi, l’introduction des balises #LAYOUT_PRIVE, #TRAD et #URL_DOCUMENT_FICHIER.

On peut également noter une série d’optimisations pour les filtres d’images.

La balise #LAYOUT_PRIVE remplace #LARGEUR_ECRAN et permet d’utiliser de nouvelles dispositions pour les pages de l’espace privé :

#LAYOUT_PRIVE{fluide}, le contenu central s’adapte selon la présence ou pas de contenu dans #extra et #navigation.

#LAYOUT_PRIVE{pleine-largeur}

#LAYOUT_PRIVE{complements-gauche}

#LAYOUT_PRIVE{complements-droite}

#LAYOUT_PRIVE{complements-bas}

#LAYOUT_PRIVE{complements-bas-inverse}

La balise #TRAD permet d’éviter les écriture du style #VAL{module:cle}|_T, exemple #TRAD{module:cle, #ARRAY{param, val, ..}, #ARRAY{option, val..}}.

Répertoires

-  Le répertoire vendor/ se complète, avec l’arrivée de premières librairies spip-league, qui vont faire une première passerelle vers des éléments du futur SPIP 5.0
-  À ce titre, un répertoire config/spip est maintenant présent également


Cette version apporte également d’autres améliorations ou corrections de bugs.

Sécurité

  • Nettoyer certaines entrées auteurs sur le formulaire d’édition d’auteur (évite de se retrouver dans des logs, si des logs verbeux sont activés)
  • Mise à jour de la liste des bots & ajout de antennapod (lecteur RSS) comme bot licite

Ajouts

  • Ne pas envoyer de mot de passe en clair, mais plutôt des liens pour définir son mot de passe
  • copie_locale() passe une clé action au pipeline post_edition
  • Chaînes de langue supplémentaire pour les listes d’articles
  • Balise #LAYOUT_PRIVE
  • Balise #TRAD{module:cle, #ARRAY{param, val, ..}, #ARRAY{option, val..}}
  • Balise #MIME_TYPE calculée
  • Balise #URL_DOCUMENT_FICHIER renvoyant toujours le fichier d’un document, ce qui permet quand on le souhaite d’utiliser #URL_DOCUMENT pour renvoyer vers une page web. Les modèles de document sont mis à jour pour utiliser cette balise.
  • Les actions ajouter_lien et supprimer_lien peuvent gérer un qualificatif
  • Pipeline ajouter_menus_args, en complément au pipeline ajouter_menus, qui transmet les arguments de definir_barre_boutons()
  • Purger les variables de var_nullify du contexte dans traiter_appels_inclusions_ajax
  • Balise #PARAM pour récupérer les paramètres du container de services
  • Le filtre |affdate accepte un timestamp en entrée
  • Fonction _image_extensions_logos() et pipeline image_extensions_logos
  • Commande cli pour purger les images cache trop anciennes (cache-gd2 et cache-vignettes)
  • Filtre image_oriente_selon_exif() pour réorienter automatiquement une image selon son exif

Changements

  • Les dossiers ecrire, prive, squelettes-dist s’installent avec Composer
  • L’écran de sécurité s’installe avec Composer
  • Mise à jour des chaînes de langues depuis trad.spip.net
  • Utiliser le pipeline compter_contributions_auteur dans la boite d’info d’un auteur
  • Possibilité de personnaliser les chaînes de langue singulier et pluriel du titre de toutes les listes d’objets
  • Nouveaux layouts pour le privé (#LAYOUT_PRIVE) : defaut, fluide, pleine-largeur, complements-droite, complements-bas, complements-bas-inverse
  • Les valeurs d’environnement explicitement vidées en ajax passent par var_nullify pour en être totalement expurgées
  • Permettre de trier les comptes visiteurs "nouveau" par date d’inscription-relance
  • Ajouter l’heure de publication à côté de la date
  • Utiliser des variables CSS et propriétés logiques dans l’espace privé pour éviter la compilation des fichiers CSS
  • La page de contrôle des tâches utilise le layout complement-gauche
  • Utilisation de image_extensions_logos() à la place de $GLOBALS['formats_logos']
  • Les filtres d’images tel que image_recadre réorientent l’image selon l’exif d’orientation

Corrections

  • Dans l’espace privé, éviter une scrollbar horizontale dans certaines configurations de systèmes d’exploitation.
  • Aligner le contenu de la bande en_lignes avec celui du bandeau
  • Meilleur affichage des listes d’objets sur petit écran
  • Pas de marge basse sur les derniers éléments des réponses
  • Charger l’autoloader dans le fichier prive.php
  • Éviter un warning PHP si le fichier du logo n’est pas présent
  • Suivre medias sur inc_vignette_dist qui attend un paramètre medias
  • Rétablir le masquage des documents vus dans le bloc des documents
  • Ne plus déclarer de z-index sur les colonnes qui sont déjà en flex
  • Réparer la rotation des images avec convert
  • Pouvoir scroller après avoir quitté le mode plein écran via la touche <ESC>
  • Utiliser pour IMAGETYPE_SVG une valeur qui ne risque pas une collision avec un futur ajout de format image (19 a été pris par IMAGETYPE_AVIF entre temps)
  • Correction d’une erreur fatale sur l’appel à phraser_champs_interieurs()
  • Utiliser fpassthru() pour livrer directement les fichiers et éviter un memory limit plutôt que readfile() qui passe par un chargement en mémoire du fichier
  • Requêter les fichiers distants avec STREAM_CRYPTO_METHOD_TLS_CLIENT
  • Remplacer les balises tt obsolètes par code
  • Les emails des auteurs sont masqués par défaut
  • Transmettre au pipeline compter_contributions_auteur le nombre de contribution sur les articles
  • Passer l’url à l’item de langue pass_reset_url
  • Pour le formulaire générique d’institution d’objet, tester l’autorisation publierdans en utilisant le parent déclaré par l’API de parenté
  • Dans le formulaire générique d’institution d’un objet, utiliser le même jeu de test pour l’affichage du statut publie dans charger et pour la validation dans verifier
  • Pouvoir supprimer l’image de l’écran de connexion
  • Pouvoir modifier logo principal quand il y a un logo de survol
  • Inclusion manquante dans certains contextes ajax pour bigup
  • Vérifier l’existence de exif_read_data()
  • Éviter des warnings sur image_oriente_selon_exif() en absence d’image
  • Optimisation des filtres image_aplatir(), image_renforcement(), image_flou(), image_sepia(), image_flip_vertical(), image_flip_horizontal(), image_nb(), image_gamma() & image_rotation()
  • Correction du paramètre crop de image_rotation()
  • Message de retour des formulaires en div plutot qu’en p
  • Le mimetype audio/x-m4a est un alias de audio/mp4a-latm
  • Appel à la globale $formats_logos remplacée par _image_extensions_acceptees_en_entree()
  • Corriger la duplication (plugin Duplicator par exemple) de logo si le dossier tmp/upload n’existe pas
  • Affichage du sélecteur de rôles de documents (avec le plugin en question)
  • Affichage des aperçus dans les modèles emb
  • Correction du chemin des plugins de la librairie mediaelements et suppression du fallback Flash
  • Ajouter le pipeline afficher_config_objet qui manquait sur les pages mots et groupes_mots.
  • Dédoublonner test de statut dans une requête SQL.
  • Support de la branche 4.4 de SPIP dans le référentiel des plugins
  • Invalider le cache (même pour les bots) lorsqu’une URL permanente est ajoutée

Dépréciations

  • Inclusion de fichier PHP via <INCLURE(fichier.php)> ou <INCLURE{fond=fichier.php}>
  • Balise fermante </INCLURE>
  • Balise #LARGEUR_ECRAN pour les squelettes du privé à remplacer par #LAYOUT_PRIVE
  • À partir de SPIP 5, l’appel des chaînes de langues en squelette sera sensible à la casse de la déclaration, il n’y aura plus de conversion automatique en minuscule
  • Fonction interne phraser_boucle_placeholder() à remplacer par phraser_placeholder_memoriser() ou phraser_placeholder_reinjecter()
  • Fonction interne public_generer_boucle_placeholder() à remplacer par public_placeholder_generer()
  • Les fichiers de langue peuplant une $GLOBALS sont dépréciés ; renvoyer directement un tableau
  • Constante obsolète _DIR_IMG_PACK
  • Globales $traiter_math, $tex_server, fonctions produire_image_math(), traiter_math() et replace_math(), utiliser le plugin mathjax à la place
  • Modifier la globale $formats_logos est déprécié : utiliser le pipeline image_extensions_logos
  • Appeler la globale $formats_logos est déprécié, utiliser la fonction _images_extensions_logos()
  • Dépréciation de la constante _DIR_RESTREINT_ABS
  • Filtre |image_typo, et fonctions rtl_mb_ord(), rtl_reverse(), rtl_visuel(), printWordWrapped(), produire_image_typo(), installer le plugin Images typographiques

Retraits

  • Fonctions verif_butineur(), editer_texte_recolle() et environnement _texte_trop_long des formulaires (inutilisé — servait pour IE)
  • Prise en compte de l’environnement de formulaire _texte_trop_long (servait pour IE)
  • Un fichier de langue obsolète et non traduit.

Plugins compatibles

Comme pour la version précédente, la plupart des plugins sont déjà compatibles avec SPIP 4.4, ce qui facilitera les mises à jour.
Voir : Effectuer une mise à jour

Auteur b_b Publié le : Mis à jour : 18/02/25

Traductions : عربي, English, français, Português