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 pipelinepost_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
etsupprimer_lien
peuvent gérer un qualificatif - Pipeline
ajouter_menus_args
, en complément au pipelineajouter_menus
, qui transmet les arguments dedefinir_barre_boutons()
- Purger les variables de
var_nullify
du contexte danstraiter_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 pipelineimage_extensions_logos
- Commande cli pour purger les images cache trop anciennes (
cache-gd2
etcache-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ètremedias
- 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 parIMAGETYPE_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 quereadfile()
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 parcode
- 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
danscharger
et pour la validation dansverifier
- 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
deimage_rotation()
- Message de retour des formulaires en
div
plutot qu’enp
- Le mimetype
audio/x-m4a
est un alias deaudio/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 parphraser_placeholder_memoriser()
ouphraser_placeholder_reinjecter()
- Fonction interne
public_generer_boucle_placeholder()
à remplacer parpublic_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
, fonctionsproduire_image_math()
,traiter_math()
etreplace_math()
, utiliser le pluginmathjax
à la place - Modifier la globale
$formats_logos
est déprécié : utiliser le pipelineimage_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 fonctionsrtl_mb_ord()
,rtl_reverse()
,rtl_visuel()
,printWordWrapped()
,produire_image_typo()
, installer le pluginImages 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