Accueil > Release > Sortie de SPIP 4.4.0-beta4

Sortie de SPIP 4.4.0-beta4

mercredi 29 janvier 2025, par L’équipe maintenance

Cette version de test apporte son « petit » lot de nouveautés. À noter, nous n’introduirons plus de nouveautés dans la branche 4.4 à partir de cette date jusqu’à la sortie de la version stable mi février. Ceci permettra à l’équipe de maintenance de se concentrer uniquement sur la résolution de bugs.

Si vous vous demandez pourquoi on publie directement une beta4, c’est parce que les trois premières contenaient des bugs gênants et n’étaient donc pas diffusables publiquement.

SPIP version 4.4.0-beta4

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 et que les images sont maintenant réorientées automatiquement selon leurs données EXIF à l’upload.

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.

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

Vous pouvez télécharger le zip de cette version sur files.spip.net, pensez à mettre à jour votre spip_loader si vous souhaitez installer la beta par ce biais.

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

  • 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..}}
    • 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
    • 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.

Mettre à jour en utilisant le spip_loader

Vous pouvez aussi mettre à jour au moyen de la dernière version de spip_loader (version 6.1.8).

spip_loader est distribué à l’adresse suivante : https://get.spip.net/

Le fichier spip_loader.php est un script compilé dans le format binaire phar. Si vous avez besoin de personnaliser l’installation en définissant des constantes, il vous faut créer un fichier de configuration spip_loader_config.php (cf https://www.spip.net/fr_article5705.html).

Résumé des versions de SPIP

Branche Version Suivi Compatibilité PHP
SPIP 4.3 4.3.6 Maintenance active PHP 7.4 à PHP 8.4
SPIP 4.2 4.2.17 Correctifs de sécurité PHP 7.4 à PHP 8.3

Pour connaître le détail des versions maintenues :
https://www.spip.net/fr_article6500.html

Comment être tenu au courant de ces annonces ?

C’est simple, inscrivez-vous sur la mailing liste https://discuter.spip.net/c/spip-ann/13

Bien sûr, les réseaux sociaux sont de la partie :

Une question, besoin d’aide ?

En cas de problème ou de difficultés, il y aura certainement quelqu’un pour vous aider sur IRC, n’hésitez pas à venir poser vos questions https://irc.spip.net ou sur notre serveur Discord.

Vous pouvez aussi poster un message et échanger sur :

Nous vous rappelons que pour signaler une faille, il suffit d’envoyer un mail à securite@spip.net.

Messages

  • Dépréciation : "Inclusion de fichier PHP via <I.NCLURE(fichier.php)> ou <I.NCLUREfond=fichier.php> "

    Ouille il me semble utiliser ce genre de chose sur mon site.

    C’est bien de déprécier mais où sont les solutions / adaptations à réaliser ? Y a-t-il un guide là dessus ?

  • @Absurdephoton : aujourd’hui il n’y plus de raison d’utiliser un fichier .php pour inclure un squelette. Quel est ton usage ? Normalement utiliser

    <INCLURE{fond=<chemindusquelette>} suffit.

    Quand au guide d’adaptation, une version sortira pour SPIP 5.0 puisqu’à ce moment là cela ne fonctionnera plus. Tu peux le trouver deja ici https://git.spip.net/spip/spip/-/blob/master/UPGRADE_5.0.md

  • @Absurdephoton

    Ce n’est pas tout à fait exactement pareil, mais
    1) comme dit @maieul inclure un fichier PHP directement, c’est souvent pas utile, voire mauvais. Il vaut mieux inclure des squelettes, ou avoir des fichiers de fonctions si nécessaire.
    2) il y a des alternatives,
     #INCLURE{fichier.php} reste fonctionnel, et fait quelque chose d’assez proche
     <?php include find_in_path('fichier.php'); ?> également

  • Merci pour le lien du guide d’adaptation ! Il y a tout ce qu’il faut.

  • Merci beaucoup l’équipe. J’attends la version finale pour mettre à jour :)

  • Comment je remplace

    $GLOBALS['formats_logos'] = array('jpg');
    

    par le pipeline ?

    J’ai bien essayé de mettre quelque chose comme ceci dans mes_options, mais visiblement ça n’est pas pris en compte :

    function liste_formats_logos ($args) {
    	return array('jpg');
    }
    $GLOBALS['spip_pipeline']['image_extensions_logos'] .= "|liste_formats_logos";
    
  • @martina (ou arno ^^) ta question aura certainement plus de réponse sur https://discuter.spip.net/

Un message, un commentaire ?

Qui êtes-vous ?
Se connecter
Votre message

Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.