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éactionau 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_FICHIERrenvoyant toujours le fichier d’un document, ce qui permet quand on le souhaite d’utiliser#URL_DOCUMENTpour renvoyer vers une page web. Les modèles de document sont mis à jour pour utiliser cette balise. -  Les actions 
ajouter_lienetsupprimer_lienpeuvent 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_nullifydu contexte danstraiter_appels_inclusions_ajax -  Balise 
#PARAMpour récupérer les paramètres du container de services -  Le filtre 
|affdateaccepte un timestamp en entrée -  Fonction 
_image_extensions_logos()et pipelineimage_extensions_logos -  Commande cli pour purger les images cache trop anciennes (
cache-gd2etcache-vignettes) -  Filtre 
image_oriente_selon_exif()pour réorienter automatiquement une image selon son exif 
Changements
-  Les dossiers 
ecrire,prive,squelettes-dists’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_auteurdans 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_nullifypour 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_recadreré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_distqui attend un paramètremedias - Rétablir le masquage des documents vus dans le bloc des documents
 -  Ne plus déclarer de 
z-indexsur 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_SVGune valeur qui ne risque pas une collision avec un futur ajout de format image (19 a été pris parIMAGETYPE_AVIFentre 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 
ttobsolètes parcode - Les emails des auteurs sont masqués par défaut
 -  Transmettre au pipeline 
compter_contributions_auteurle 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 
publierdansen 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 
publiedanschargeret 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 
cropdeimage_rotation() -  Message de retour des formulaires en 
divplutot qu’enp -  Le mimetype 
audio/x-m4aest un alias deaudio/mp4a-latm -  Appel à la globale 
$formats_logosremplacée par_image_extensions_acceptees_en_entree() -  Corriger la duplication (plugin Duplicator par exemple) de logo si le dossier 
tmp/uploadn’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_objetqui 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_ECRANpour 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 
$GLOBALSsont 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_logosest déprécié : utiliser le pipelineimage_extensions_logos -  Appeler la globale 
$formats_logosest 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_longdes 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







