<?xml 
version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://www.spip.net/spip.php?page=backend.xslt" ?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>SPIP</title>
	<link>https://www.spip.net/</link>
	<description>Syst&#232;me de Publication pour Internet</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://www.spip.net/spip.php?id_auteur=5272&amp;page=backend" rel="self" type="application/rss+xml" />

	<image>
		<title>SPIP</title>
		<url>https://www.spip.net/local/cache-vignettes/L144xH107/siteon0-0ecda.png?1615902774</url>
		<link>https://www.spip.net/</link>
		<height>107</height>
		<width>144</width>
	</image>



<item xml:lang="fr">
		<title>SPIP 4.4</title>
		<link>https://www.spip.net/fr_article7018.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article7018.html</guid>
		<dc:date>2025-02-14T13:30:11Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>b_b</dc:creator>



		<description>
&lt;p&gt;Cette branche LTS va b&#233;n&#233;ficier d'un support &#233;tendu jusqu'en juillet 2028. &lt;br class='autobr' /&gt; Compatibilit&#233; PHP 7.4 &#224; 8.5 &lt;br class='autobr' /&gt;
SPIP 4.4 n&#233;cessite PHP 7.4 minimum, et fonctionne jusqu'&#224; PHP 8.5. Il n&#233;cessite les extensions PHP : sodium, Zlib, Zip et Phar. &lt;br class='autobr' /&gt;
Changements apport&#233;s par SPIP 4.4 &lt;br class='autobr' /&gt;
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. &lt;br class='autobr' /&gt;
C&#244;t&#233; technique on peut noter que les dossiers ecrire, prive, (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique155.html" rel="directory"&gt;&#201;volutions et mises &#224; jour&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Cette branche LTS&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt; va b&#233;n&#233;ficier d'un support &#233;tendu jusqu'en juillet 2028.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-9&#034; id=&#034;nav69e37cd81b7903.02846591&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Compatibilite-PHP-7-4-a-8-5&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Compatibilite-PHP-7-4-a-8-5&#034; class=&#034;spip_ancre&#034;&gt;Compatibilit&#233; PHP 7.4 &#224; 8.5&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Changements-apportes-par-SPIP-4-4&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Changements-apportes-par-SPIP-4-4&#034; class=&#034;spip_ancre&#034;&gt;Changements apport&#233;s par SPIP 4.4&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Securite&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Securite&#034; class=&#034;spip_ancre&#034;&gt;S&#233;curit&#233;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Ajouts&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Ajouts&#034; class=&#034;spip_ancre&#034;&gt;Ajouts&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Changements&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Changements&#034; class=&#034;spip_ancre&#034;&gt;Changements&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Corrections&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Corrections&#034; class=&#034;spip_ancre&#034;&gt;Corrections&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Depreciations&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Depreciations&#034; class=&#034;spip_ancre&#034;&gt;D&#233;pr&#233;ciations&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Retraits&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Retraits&#034; class=&#034;spip_ancre&#034;&gt;Retraits&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Plugins-compatibles&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Plugins-compatibles&#034; class=&#034;spip_ancre&#034;&gt;Plugins compatibles&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Compatibilite-PHP-7-4-a-8-5&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Compatibilite-PHP-7-4-a-8-5'&gt; Compatibilit&#233; PHP 7.4 &#224; 8.5 &lt;a class='sommaire-back sommaire-back-9' href='#s-Compatibilite-PHP-7-4-a-8-5' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;SPIP 4.4 n&#233;cessite PHP 7.4 minimum, et fonctionne jusqu'&#224; PHP 8.5.&lt;br class='autobr' /&gt;
Il n&#233;cessite les extensions PHP : sodium, Zlib, Zip et Phar.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Changements-apportes-par-SPIP-4-4&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Changements-apportes-par-SPIP-4-4'&gt;Changements apport&#233;s par SPIP 4.4&lt;a class='sommaire-back sommaire-back-9' href='#s-Changements-apportes-par-SPIP-4-4' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;C&#244;t&#233; technique on peut noter que les dossiers &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecrire&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;prive&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;squelettes-dist&lt;/code&gt; ainsi que l'&#233;cran de s&#233;curit&#233; s'installent avec Composer. Cela ne change rien pour les personnes qui utilisent spip_loader. &#192; noter aussi, l'introduction des balises &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#TRAD&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#URL_DOCUMENT_FICHIER&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;On peut &#233;galement noter une s&#233;rie d'optimisations pour les filtres d'images.&lt;/p&gt;
&lt;p&gt;La balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE&lt;/code&gt; remplace &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LARGEUR_ECRAN&lt;/code&gt; et permet d'utiliser de nouvelles dispositions pour les pages de l'espace priv&#233; :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE{fluide}&lt;/code&gt;, le contenu central s'adapte selon la pr&#233;sence ou pas de contenu dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#extra&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#navigation&lt;/code&gt;.&lt;/p&gt;
&lt;div class='spip_document_4257 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_flui-9b36212e.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH194/disposition_flui-9b36212e-fa321.png?1739543711' width='500' height='194' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class='spip_document_4258 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_flui-44f5d7b1.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH194/disposition_flui-44f5d7b1-d2ac5.png?1739543711' width='500' height='194' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class='spip_document_4259 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_flui-660a45c8.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH194/disposition_flui-660a45c8-41ebb.png?1739543711' width='500' height='194' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE{pleine-largeur}&lt;/code&gt;&lt;/p&gt;
&lt;div class='spip_document_4260 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_plei-a46afc98.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH191/disposition_plei-a46afc98-eafdc.png?1739543711' width='500' height='191' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE{complements-gauche}&lt;/code&gt;&lt;/p&gt;
&lt;div class='spip_document_4261 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_comp-f758c317.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH191/disposition_comp-f758c317-6afc6.png?1739543711' width='500' height='191' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE{complements-droite}&lt;/code&gt;&lt;/p&gt;
&lt;div class='spip_document_4262 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_comp-5e19ffc0.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH191/disposition_comp-5e19ffc0-35a7a.png?1739543711' width='500' height='191' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE{complements-bas}&lt;/code&gt;&lt;/p&gt;
&lt;div class='spip_document_4263 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_comp-7787f8f6.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH213/disposition_comp-7787f8f6-bcf2a.png?1739543711' width='500' height='213' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE{complements-bas-inverse}&lt;/code&gt;&lt;/p&gt;
&lt;div class='spip_document_4264 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_comp-d195e1b6.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH213/disposition_comp-d195e1b6-05090.png?1739543711' width='500' height='213' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;La balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#TRAD&lt;/code&gt; permet d'&#233;viter les &#233;criture du style &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#VAL{module:cle}|_T&lt;/code&gt;, exemple &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#TRAD{module:cle, #ARRAY{param, val, ..}, #ARRAY{option, val..}}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;R&#233;pertoires&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vendor/&lt;/code&gt; se compl&#232;te, avec l'arriv&#233;e de premi&#232;res librairies &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip-league&lt;/code&gt;, qui vont faire une premi&#232;re passerelle vers des &#233;l&#233;ments du futur SPIP 5.0
&lt;br /&gt;- &#192; ce titre, un r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config/spip&lt;/code&gt; est maintenant pr&#233;sent &#233;galement&lt;/p&gt;
&lt;hr class=&#034;spip&#034; /&gt;
&lt;p&gt;Cette version apporte &#233;galement d'autres am&#233;liorations ou corrections de bugs.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Securite&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Securite'&gt;S&#233;curit&#233;&lt;a class='sommaire-back sommaire-back-9' href='#s-Securite' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Nettoyer certaines entr&#233;es auteurs sur le formulaire d'&#233;dition d'auteur (&#233;vite de se retrouver dans des logs, si des logs verbeux sont activ&#233;s)&lt;/li&gt;&lt;li&gt; Mise &#224; jour de la liste des bots &amp; ajout de antennapod (lecteur RSS) comme bot licite&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Ajouts&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Ajouts'&gt;Ajouts&lt;a class='sommaire-back sommaire-back-9' href='#s-Ajouts' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Ne pas envoyer de mot de passe en clair, mais plut&#244;t des liens pour d&#233;finir son mot de passe&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;copie_locale()&lt;/code&gt; passe une cl&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;action&lt;/code&gt; au pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;post_edition&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Cha&#238;nes de langue suppl&#233;mentaire pour les listes d'articles&lt;/li&gt;&lt;li&gt; Balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#TRAD{module:cle, #ARRAY{param, val, ..}, #ARRAY{option, val..}}&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Balise #MIME_TYPE calcul&#233;e&lt;/li&gt;&lt;li&gt; Balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#URL_DOCUMENT_FICHIER&lt;/code&gt; renvoyant toujours le fichier d'un document, ce qui permet quand on le souhaite d'utiliser &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#URL_DOCUMENT&lt;/code&gt; pour renvoyer vers une page web. Les mod&#232;les de document sont mis &#224; jour pour utiliser cette balise.&lt;/li&gt;&lt;li&gt; Les actions &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ajouter_lien&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;supprimer_lien&lt;/code&gt; peuvent g&#233;rer un qualificatif&lt;/li&gt;&lt;li&gt; Pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ajouter_menus_args&lt;/code&gt;, en compl&#233;ment au pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ajouter_menus&lt;/code&gt;, qui transmet les arguments de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;definir_barre_boutons()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Purger les variables de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;var_nullify&lt;/code&gt; du contexte dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;traiter_appels_inclusions_ajax&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#PARAM&lt;/code&gt; pour r&#233;cup&#233;rer les param&#232;tres du container de services&lt;/li&gt;&lt;li&gt; Le filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|affdate&lt;/code&gt; accepte un timestamp en entr&#233;e&lt;/li&gt;&lt;li&gt; Fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_image_extensions_logos()&lt;/code&gt; et pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_extensions_logos&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Commande cli pour purger les images cache trop anciennes (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cache-gd2&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cache-vignettes&lt;/code&gt;)&lt;/li&gt;&lt;li&gt; Filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_oriente_selon_exif()&lt;/code&gt; pour r&#233;orienter automatiquement une image selon son exif&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Changements&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Changements'&gt;Changements&lt;a class='sommaire-back sommaire-back-9' href='#s-Changements' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Les dossiers &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecrire&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;prive&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;squelettes-dist&lt;/code&gt; s'installent avec Composer&lt;/li&gt;&lt;li&gt; L'&#233;cran de s&#233;curit&#233; s'installe avec Composer&lt;/li&gt;&lt;li&gt; Mise &#224; jour des cha&#238;nes de langues depuis trad.spip.net&lt;/li&gt;&lt;li&gt; Utiliser le pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;compter_contributions_auteur&lt;/code&gt; dans la boite d'info d'un auteur&lt;/li&gt;&lt;li&gt; Possibilit&#233; de personnaliser les cha&#238;nes de langue singulier et pluriel du titre de toutes les listes d'objets&lt;/li&gt;&lt;li&gt; Nouveaux layouts pour le priv&#233; (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE&lt;/code&gt;) : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;defaut&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;fluide&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;pleine-largeur&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;complements-droite&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;complements-bas&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;complements-bas-inverse&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Les valeurs d'environnement explicitement vid&#233;es en ajax passent par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;var_nullify&lt;/code&gt; pour en &#234;tre totalement expurg&#233;es&lt;/li&gt;&lt;li&gt; Permettre de trier les comptes visiteurs &#034;nouveau&#034; par date d'inscription-relance&lt;/li&gt;&lt;li&gt; Ajouter l'heure de publication &#224; c&#244;t&#233; de la date&lt;/li&gt;&lt;li&gt; Utiliser des variables CSS et propri&#233;t&#233;s logiques dans l'espace priv&#233; pour &#233;viter la compilation des fichiers CSS&lt;/li&gt;&lt;li&gt; La page de contr&#244;le des t&#226;ches utilise le layout &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;complement-gauche&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Utilisation de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_extensions_logos()&lt;/code&gt; &#224; la place de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$GLOBALS['formats_logos']&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Les filtres d'images tel que &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_recadre&lt;/code&gt; r&#233;orientent l'image selon l'exif d'orientation&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Corrections&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Corrections'&gt;Corrections&lt;a class='sommaire-back sommaire-back-9' href='#s-Corrections' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Dans l'espace priv&#233;, &#233;viter une scrollbar horizontale dans certaines configurations de syst&#232;mes d'exploitation.&lt;/li&gt;&lt;li&gt; Aligner le contenu de la bande en_lignes avec celui du bandeau&lt;/li&gt;&lt;li&gt; Meilleur affichage des listes d'objets sur petit &#233;cran&lt;/li&gt;&lt;li&gt; Pas de marge basse sur les derniers &#233;l&#233;ments des r&#233;ponses&lt;/li&gt;&lt;li&gt; Charger l'autoloader dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;prive.php&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &#201;viter un warning PHP si le fichier du logo n'est pas pr&#233;sent&lt;/li&gt;&lt;li&gt; Suivre medias sur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;inc_vignette_dist&lt;/code&gt; qui attend un param&#232;tre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;medias&lt;/code&gt;&lt;/li&gt;&lt;li&gt; R&#233;tablir le masquage des documents vus dans le bloc des documents&lt;/li&gt;&lt;li&gt; Ne plus d&#233;clarer de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;z-index&lt;/code&gt; sur les colonnes qui sont d&#233;j&#224; en flex&lt;/li&gt;&lt;li&gt; R&#233;parer la rotation des images avec convert&lt;/li&gt;&lt;li&gt; Pouvoir scroller apr&#232;s avoir quitt&#233; le mode plein &#233;cran via la touche &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;ESC&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Utiliser pour &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;IMAGETYPE_SVG&lt;/code&gt; une valeur qui ne risque pas une collision avec un futur ajout de format image (19 a &#233;t&#233; pris par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;IMAGETYPE_AVIF&lt;/code&gt; entre temps)&lt;/li&gt;&lt;li&gt; Correction d'une erreur fatale sur l'appel &#224; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;phraser_champs_interieurs()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Utiliser &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;fpassthru()&lt;/code&gt; pour livrer directement les fichiers et &#233;viter un memory limit plut&#244;t que &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;readfile()&lt;/code&gt; qui passe par un chargement en m&#233;moire du fichier&lt;/li&gt;&lt;li&gt; Requ&#234;ter les fichiers distants avec &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;STREAM_CRYPTO_METHOD_TLS_CLIENT&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Remplacer les balises &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tt&lt;/code&gt; obsol&#232;tes par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;code&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Les emails des auteurs sont masqu&#233;s par d&#233;faut&lt;/li&gt;&lt;li&gt; Transmettre au pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;compter_contributions_auteur&lt;/code&gt; le nombre de contribution sur les articles&lt;/li&gt;&lt;li&gt; Passer l'url &#224; l'item de langue &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;pass_reset_url&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Pour le formulaire g&#233;n&#233;rique d'institution d'objet, tester l'autorisation &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;publierdans&lt;/code&gt; en utilisant le parent d&#233;clar&#233; par l'API de parent&#233;&lt;/li&gt;&lt;li&gt; Dans le formulaire g&#233;n&#233;rique d'institution d'un objet, utiliser le m&#234;me jeu de test pour l'affichage du statut &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;publie&lt;/code&gt; dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;charger&lt;/code&gt; et pour la validation dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;verifier&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Pouvoir supprimer l'image de l'&#233;cran de connexion&lt;/li&gt;&lt;li&gt; Pouvoir modifier logo principal quand il y a un logo de survol&lt;/li&gt;&lt;li&gt; Inclusion manquante dans certains contextes ajax pour bigup&lt;/li&gt;&lt;li&gt; V&#233;rifier l'existence de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;exif_read_data()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &#201;viter des warnings sur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_oriente_selon_exif()&lt;/code&gt; en absence d'image&lt;/li&gt;&lt;li&gt; Optimisation des filtres &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_aplatir()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_renforcement()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_flou()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_sepia()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_flip_vertical()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_flip_horizontal()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_nb()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_gamma()&lt;/code&gt; &amp; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_rotation()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Correction du param&#232;tre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;crop&lt;/code&gt; de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_rotation()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Message de retour des formulaires en &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;div&lt;/code&gt; plutot qu'en &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;p&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Le mimetype &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;audio/x-m4a&lt;/code&gt; est un alias de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;audio/mp4a-latm&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Appel &#224; la globale &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$formats_logos&lt;/code&gt; remplac&#233;e par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_image_extensions_acceptees_en_entree()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Corriger la duplication (plugin Duplicator par exemple) de logo si le dossier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tmp/upload&lt;/code&gt; n'existe pas&lt;/li&gt;&lt;li&gt; Affichage du s&#233;lecteur de r&#244;les de documents (avec le plugin en question)&lt;/li&gt;&lt;li&gt; Affichage des aper&#231;us dans les mod&#232;les &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;emb&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Correction du chemin des plugins de la librairie mediaelements et suppression du fallback Flash&lt;/li&gt;&lt;li&gt; Ajouter le pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;afficher_config_objet&lt;/code&gt; qui manquait sur les pages mots et groupes_mots.&lt;/li&gt;&lt;li&gt; D&#233;doublonner test de statut dans une requ&#234;te SQL.&lt;/li&gt;&lt;li&gt; Support de la branche 4.4 de SPIP dans le r&#233;f&#233;rentiel des plugins&lt;/li&gt;&lt;li&gt; Invalider le cache (m&#234;me pour les bots) lorsqu'une URL permanente est ajout&#233;e&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Depreciations&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Depreciations'&gt;D&#233;pr&#233;ciations&lt;a class='sommaire-back sommaire-back-9' href='#s-Depreciations' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Inclusion de fichier PHP via &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;INCLURE(fichier.php)&gt;&lt;/code&gt; ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;INCLURE{fond=fichier.php}&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Balise fermante &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;/INCLURE&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LARGEUR_ECRAN&lt;/code&gt; pour les squelettes du priv&#233; &#224; remplacer par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &#192; partir de SPIP 5, l'appel des cha&#238;nes de langues en squelette sera sensible &#224; la casse de la d&#233;claration, il n'y aura plus de conversion automatique en minuscule&lt;/li&gt;&lt;li&gt; Fonction interne &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;phraser_boucle_placeholder()&lt;/code&gt; &#224; remplacer par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;phraser_placeholder_memoriser()&lt;/code&gt; ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;phraser_placeholder_reinjecter()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Fonction interne &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;public_generer_boucle_placeholder()&lt;/code&gt; &#224; remplacer par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;public_placeholder_generer()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Les fichiers de langue peuplant une &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$GLOBALS&lt;/code&gt; sont d&#233;pr&#233;ci&#233;s ; renvoyer directement un tableau&lt;/li&gt;&lt;li&gt; Constante obsol&#232;te &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_DIR_IMG_PACK&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Globales &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$traiter_math&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$tex_server&lt;/code&gt;, fonctions &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;produire_image_math()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;traiter_math()&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;replace_math()&lt;/code&gt;, utiliser le plugin &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mathjax&lt;/code&gt; &#224; la place&lt;/li&gt;&lt;li&gt; Modifier la globale &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$formats_logos&lt;/code&gt; est d&#233;pr&#233;ci&#233; : utiliser le pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_extensions_logos&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Appeler la globale &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$formats_logos&lt;/code&gt; est d&#233;pr&#233;ci&#233;, utiliser la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_images_extensions_logos()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; D&#233;pr&#233;ciation de la constante &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_DIR_RESTREINT_ABS&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_typo&lt;/code&gt;, et fonctions &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rtl_mb_ord()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rtl_reverse()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rtl_visuel()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;printWordWrapped()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;produire_image_typo()&lt;/code&gt;, installer le plugin &lt;a href=&#034;https://plugins.spip.net/image_typo.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Images typographiques&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Retraits&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Retraits'&gt;Retraits&lt;a class='sommaire-back sommaire-back-9' href='#s-Retraits' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Fonctions &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;verif_butineur()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;editer_texte_recolle()&lt;/code&gt; et environnement &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_texte_trop_long&lt;/code&gt; des formulaires (inutilis&#233; &#8212; servait pour IE)&lt;/li&gt;&lt;li&gt; Prise en compte de l'environnement de formulaire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_texte_trop_long&lt;/code&gt; (servait pour IE)&lt;/li&gt;&lt;li&gt; Un fichier de langue obsol&#232;te et non traduit.&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Plugins-compatibles&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Plugins-compatibles'&gt;Plugins compatibles&lt;a class='sommaire-back sommaire-back-9' href='#s-Plugins-compatibles' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Comme pour la version pr&#233;c&#233;dente, la plupart des plugins sont d&#233;j&#224; compatibles avec SPIP 4.4, ce qui facilitera les mises &#224; jour.&lt;br class='autobr' /&gt;
Voir : &lt;a href='https://www.spip.net/fr_article1318.html#Etape-2-Mettez-a-jour-vos-plugins' class=&#034;spip_in&#034;&gt;Effectuer une mise &#224; jour&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;&lt;a href=&#034;https://fr.wikipedia.org/wiki/Long-term_support&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://fr.wikipedia.org/wiki/Long-term_support&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Les outils utilis&#233;s pour le d&#233;veloppement</title>
		<link>https://www.spip.net/fr_article6924.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article6924.html</guid>
		<dc:date>2025-01-14T06:58:03Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>bricebou, b_b, James, Ma&#239;eul, Matthieu Marcillaud, placido, tofulm</dc:creator>



		<description>
&lt;p&gt;L'&#233;quipe de maintenance utilise ces outils pour maintenir et d&#233;velopper SPIP. Cet article r&#233;sume succinctement le r&#244;le des outils et les liens de documentation. &lt;br class='autobr' /&gt; |Nom de l'outil|R&#244;le|Documentation sp&#233;cifique &#224; la communaut&#233; SPIP| D&#233;veloppement c&#244;t&#233; serveur ou back-end PHP Langage dans lequel SPIP est &#233;crit c&#244;t&#233; serveur PHPdoc Commentaire du code Composer Installer les biblioth&#232;ques de code (library) dont le projet principal a besoin Qualit&#233; de code Easy Coding Standard (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique809.html" rel="directory"&gt;Outils de d&#233;veloppement&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;L'&#233;quipe de maintenance utilise ces outils pour maintenir et d&#233;velopper SPIP. Cet article r&#233;sume succinctement le r&#244;le des outils et les liens de documentation.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id7894_c0'&gt;Nom de l'outil&lt;/th&gt;&lt;th id='id7894_c1'&gt;R&#244;le&lt;/th&gt;&lt;th id='id7894_c2'&gt;Documentation sp&#233;cifique &#224; la communaut&#233; SPIP&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td colspan='3'&gt;&lt;strong&gt;D&#233;veloppement c&#244;t&#233; serveur ou &lt;i&gt;back-end&lt;/i&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://www.php.net/manual/fr&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHP&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Langage dans lequel SPIP est &#233;crit c&#244;t&#233; serveur&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://docs.phpdoc.org/guide/getting-started/index.html#getting-started&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHPdoc&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Commentaire du code&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://getcomposer.org/doc&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Composer&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Installer les biblioth&#232;ques de code (library) dont le projet principal a besoin&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td colspan='3'&gt;&lt;strong&gt;Qualit&#233; de code&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://github.com/easy-coding-standard/easy-coding-standard&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Easy Coding Standard&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Automatiser le respect des r&#233;gles de codages&lt;/td&gt;
&lt;td&gt;&lt;a href='https://www.spip.net/fr_article7086.html' class=&#034;spip_in&#034;&gt;Utiliser ECS&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://getrector.com/documentation&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Rector&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Corriger du code historique pour le rendre plus durable&lt;/td&gt;
&lt;td&gt;&lt;a href='https://www.spip.net/fr_article7090.html' class=&#034;spip_in&#034;&gt;Utiliser Rector&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://www.php-fig.org/psr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PSR&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Bonne pratiques de codage&lt;/td&gt;
&lt;td&gt;&lt;a href='https://www.spip.net/fr_rubrique783.html' class=&#034;spip_in&#034;&gt;Conventions&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://phpunit.de/documentation.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHPUnit&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Tester le code&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://phpstan.org/user-guide/getting-started&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHPStan&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Analyser le code&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://refactoring.guru/design-patterns/php&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Refactoring Guru&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Inspiration pour transformer le code proc&#233;dural historique en code POO et pour gagner en robustesse&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://12factor.net/fr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;The Twelve-Factor App&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Inspiration : une m&#233;thodologie pour concevoir des logiciels en tant que service&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td colspan='3'&gt;&lt;strong&gt;D&#233;veloppement c&#244;t&#233; navigateur ou &lt;i&gt;front-end&lt;/i&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://javascript.info/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Javascript&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Langage pour l'affichage dynamique de fragments de page (front-end)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://api.jquery.com&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;jQuery&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Biblioth&#232;que longtemps rest&#233;e comme r&#233;f&#233;rence (en voie de migration)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://docs.npmjs.com&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;npm&lt;/a&gt; + &lt;a href=&#034;https://bun.sh/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Bun&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Installer des modules ou biblioth&#232;ques de code (library)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td colspan='3'&gt;&lt;strong&gt;Qualit&#233; de code&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://bun.sh/docs/cli/test&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;bun:test&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Tester le code&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://biomejs.dev/guides/getting-started/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;biomejs&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Normaliser le code (linter)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id8889_c0' colspan='3'&gt;Versionnage&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://git-scm.com/doc&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Git&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Suivi de version de code&lt;/td&gt;
&lt;td&gt;&lt;a href=&#034;https://git-scm.com/book/fr/v2&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Consulter un livre en fran&#231;ais&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://about.gitlab.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Gitlab&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Plateforme de d&#233;veloppement&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://semver.org/lang/fr/spec/v2.0.0.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;S&#233;mantique&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Comment fonctionnent les versions de SPIP et de ses d&#233;pendances&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://www.conventionalcommits.org/fr/v1.0.0/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Conventionnel commit&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Des messages des commits signifiants, lisibles pour l'humain&lt;/td&gt;
&lt;td&gt;Voir aussi &lt;a href='https://www.spip.net/fr_article6824.html' class=&#034;spip_in&#034;&gt;&#201;crire un message de commit&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://keepachangelog.com/fr/1.0.0/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Changelog&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Permettre de voir pr&#233;cis&#233;ment quels changements notables ont &#233;t&#233; faits entre chaque publication (release) d'un projet&lt;/td&gt;
&lt;td&gt;Voir aussi &lt;a href='https://www.spip.net/fr_article6825.html' class=&#034;spip_in&#034;&gt;Tenir un CHANGELOG&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Nous d&#233;veloppons et utilisons aussi nos propres outils :&lt;/p&gt;
&lt;p&gt;- &lt;a href=&#034;https://git.spip.net/spip-contrib-outils/spip-releases&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-releases&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&#034;https://git.spip.net/spip-league/easy-coding-standard&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-league/ecs&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&#034;https://git.spip.net/spip-league/rector&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-league/rector&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&#034;https://git.spip.net/spip-league/sdk&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-league/sdk&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>_MAJ_NOTIF_EMAILS</title>
		<link>https://www.spip.net/fr_article6872.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article6872.html</guid>
		<dc:date>2024-07-26T13:12:29Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>b_b, Pierre KUHN</dc:creator>


		<dc:subject>SPIP 4.3</dc:subject>
		<dc:subject>_MAJ_NOTIF_EMAILS</dc:subject>

		<description>
&lt;p&gt;Par d&#233;faut, SPIP 4.3 envoie un email &#224; tou&#8901;tes les webmestres du site quand une mise &#224; jour de SPIP est disponible. Sujet : [SPIP-Contrib] La mise &#224; jour 4.3.0 de SPIP est disponible
&lt;br class='autobr' /&gt;
Bonjour,
&lt;br class='autobr' /&gt;
Le site https://contrib.spip.net peut &#234;tre mis &#224; jour vers une nouvelle version de SPIP.
&lt;br class='autobr' /&gt;
Pour des questions de s&#233;curit&#233;, il est important de garder votre site &#224; jour. &lt;br class='autobr' /&gt;
La constante _MAJ_NOTIF_EMAILS permet de personnaliser la liste des adresses auxquelles seront envoy&#233;s ces emails. Elle peut &#234;tre (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique643.html" rel="directory"&gt;Variables et Constantes de personnalisation&lt;/a&gt;

/ 
&lt;a href="https://www.spip.net/@spip43" rel="tag"&gt;SPIP 4.3&lt;/a&gt;, 
&lt;a href="https://www.spip.net/@_maj_notif_emails" rel="tag"&gt;_MAJ_NOTIF_EMAILS&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Par d&#233;faut, SPIP 4.3 envoie un email &#224; tou&#8901;tes les webmestres du site quand une mise &#224; jour de SPIP est disponible.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;Sujet : [SPIP-Contrib] La mise &#224; jour 4.3.0 de SPIP est disponible Bonjour, Le site https://contrib.spip.net peut &#234;tre mis &#224; jour vers une nouvelle version de SPIP. Pour des questions de s&#233;curit&#233;, il est important de garder votre site &#224; jour. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La constante &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_MAJ_NOTIF_EMAILS&lt;/code&gt; permet de personnaliser la liste des adresses auxquelles seront envoy&#233;s ces emails. Elle peut &#234;tre personnalis&#233;e dans votre fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config/mes_options.php&lt;/code&gt; (voir &lt;a href='https://www.spip.net/fr_article4654.html' class=&#034;spip_in&#034;&gt;l'article qui lui est consacr&#233;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Par exemple, si on souhaite d&#233;sactiver ces notifications (ce qui n'est pas une bonne id&#233;e) :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;// d&#233;sactiver les notifications de mise &#224; jour define('_MAJ_NOTIF_EMAILS', ''); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;mais aussi&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;// n'envoyer les notifications de mise &#224; jour qu'aux adresses s&#233;par&#233;es par une virgule define('_MAJ_NOTIF_EMAILS', 'contact@example.com,test@example.com'); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>SPIP 4.3</title>
		<link>https://www.spip.net/fr_article6871.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article6871.html</guid>
		<dc:date>2024-07-26T10:40:37Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>b_b, jack, Ma&#239;eul, Matthieu Marcillaud</dc:creator>



		<description>
&lt;p&gt;Compatibilit&#233; PHP 7.4 &#224; 8.3 &lt;br class='autobr' /&gt;
SPIP 4.3 n&#233;cessite PHP 7.4 minimum, et fonctionne jusqu'&#224; PHP 8.3. Il n&#233;cessite les extensions PHP : sodium, Zlib, Zip et Phar. &lt;br class='autobr' /&gt;
Changements apport&#233;s par SPIP 4.3 &lt;br class='autobr' /&gt;
Les changements les plus importants concernent le bandeau de l'espace priv&#233; plus condens&#233;, le formulaire de changement de statut des objets &#233;ditoriaux revu, les filtres d'image plus rapides, une &#233;criture plus inclusive de certaines formulations, l'envoi d'une notification par mail lorsqu'une mise (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique785.html" rel="directory"&gt;Anciennes versions&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-14&#034; id=&#034;nav69e3a70c2227a0.56958745&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Compatibilite-PHP-7-4-a-8-3&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Compatibilite-PHP-7-4-a-8-3&#034; class=&#034;spip_ancre&#034;&gt;Compatibilit&#233; PHP 7.4 &#224; 8.3&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Changements-apportes-par-SPIP-4-3&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Changements-apportes-par-SPIP-4-3&#034; class=&#034;spip_ancre&#034;&gt;Changements apport&#233;s par SPIP 4.3&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Le-bandeau-de-l-espace-prive-prend-moins-de-place-en-hauteur&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Le-bandeau-de-l-espace-prive-prend-moins-de-place-en-hauteur&#034; class=&#034;spip_ancre&#034;&gt;Le bandeau de l'espace priv&#233; prend moins de place en hauteur&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-La-creation-rapide-des-contenus-passe-dans-un-menu-depliant&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#La-creation-rapide-des-contenus-passe-dans-un-menu-depliant&#034; class=&#034;spip_ancre&#034;&gt;La cr&#233;ation rapide des contenus passe dans un menu d&#233;pliant&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Le-formulaire-de-changement-de-statut-est-revu&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Le-formulaire-de-changement-de-statut-est-revu&#034; class=&#034;spip_ancre&#034;&gt;Le formulaire de changement de statut est revu&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Un-message-avertissant-d-une-nouvelle-version-disponible&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Un-message-avertissant-d-une-nouvelle-version-disponible&#034; class=&#034;spip_ancre&#034;&gt;Un message avertissant d'une nouvelle version disponible&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Ajouts&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Ajouts&#034; class=&#034;spip_ancre&#034;&gt;Ajouts&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Changements&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Changements&#034; class=&#034;spip_ancre&#034;&gt;Changements&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Corrections&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Corrections&#034; class=&#034;spip_ancre&#034;&gt;Corrections&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Depreciations&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Depreciations&#034; class=&#034;spip_ancre&#034;&gt;D&#233;pr&#233;ciations&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Retrait&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Retrait&#034; class=&#034;spip_ancre&#034;&gt;Retrait&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Plugins-dist&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Plugins-dist&#034; class=&#034;spip_ancre&#034;&gt;Plugins-dist&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Images&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Images&#034; class=&#034;spip_ancre&#034;&gt;Images&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Plugins-compatibles&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Plugins-compatibles&#034; class=&#034;spip_ancre&#034;&gt;Plugins compatibles&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Compatibilite-PHP-7-4-a-8-3&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Compatibilite-PHP-7-4-a-8-3'&gt; Compatibilit&#233; PHP 7.4 &#224; 8.3 &lt;a class='sommaire-back sommaire-back-14' href='#s-Compatibilite-PHP-7-4-a-8-3' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;SPIP 4.3 n&#233;cessite PHP 7.4 minimum, et fonctionne jusqu'&#224; PHP 8.3.&lt;br class='autobr' /&gt;
Il n&#233;cessite les extensions PHP : sodium, Zlib, Zip et Phar.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Changements-apportes-par-SPIP-4-3&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Changements-apportes-par-SPIP-4-3'&gt;Changements apport&#233;s par SPIP 4.3&lt;a class='sommaire-back sommaire-back-14' href='#s-Changements-apportes-par-SPIP-4-3' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Les changements les plus importants concernent&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; le bandeau de l'espace priv&#233; plus condens&#233;,&lt;/li&gt;&lt;li&gt; le formulaire de changement de statut des objets &#233;ditoriaux revu,&lt;/li&gt;&lt;li&gt; les filtres d'image plus rapides,&lt;/li&gt;&lt;li&gt; une &#233;criture plus inclusive de certaines formulations,&lt;/li&gt;&lt;li&gt; l'envoi d'une notification par mail lorsqu'une mise &#224; jour de SPIP est disponible, ainsi qu'une indication visuelle plus grande dans l'espace priv&#233;,&lt;/li&gt;&lt;/ul&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Le-bandeau-de-l-espace-prive-prend-moins-de-place-en-hauteur&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Le-bandeau-de-l-espace-prive-prend-moins-de-place-en-hauteur'&gt; Le bandeau de l'espace priv&#233; prend moins de place en hauteur&lt;a class='sommaire-back sommaire-back-14' href='#s-Le-bandeau-de-l-espace-prive-prend-moins-de-place-en-hauteur' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class='spip_document_4208 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/bandeau_espace_prive__4.3.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH90/bandeau_espace_prive__4.3-3e058.png?1721990759' width='500' height='90' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;La-creation-rapide-des-contenus-passe-dans-un-menu-depliant&#034;&gt;&lt;h3 class=&#034;h3&#034; id='La-creation-rapide-des-contenus-passe-dans-un-menu-depliant'&gt; La cr&#233;ation rapide des contenus passe dans un menu d&#233;pliant&lt;a class='sommaire-back sommaire-back-14' href='#s-La-creation-rapide-des-contenus-passe-dans-un-menu-depliant' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class='spip_document_4207 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/bandeau_espace_prive__4.3-menu_cre_er.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH157/bandeau_espace_prive__4.3-menu_cre_er-95aee.png?1721990759' width='500' height='157' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Le-formulaire-de-changement-de-statut-est-revu&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Le-formulaire-de-changement-de-statut-est-revu'&gt; Le formulaire de changement de statut est revu &lt;a class='sommaire-back sommaire-back-14' href='#s-Le-formulaire-de-changement-de-statut-est-revu' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class='spip_document_4209 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;61&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH385/formulaire_instituer_4.3-ba621.png?1721990759' width='500' height='385' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-4209 '&gt;&lt;strong&gt;Pr&#233;sentation initiale du formulaire de changement de statut
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_4210 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;43&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/formulaire_instituer_4.3-deplie.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH747/formulaire_instituer_4.3-deplie-6d66c.png?1721990759' width='500' height='747' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-4210 '&gt;&lt;strong&gt;Formulaire de changement de statut d&#233;pli&#233;
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Un-message-avertissant-d-une-nouvelle-version-disponible&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Un-message-avertissant-d-une-nouvelle-version-disponible'&gt; Un message avertissant d'une nouvelle version disponible &lt;a class='sommaire-back sommaire-back-14' href='#s-Un-message-avertissant-d-une-nouvelle-version-disponible' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class='spip_document_4211 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/info_maj_nouvelle.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH72/info_maj_nouvelle-8cd08.png?1721990759' width='500' height='72' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Cette version apporte &#233;galement d'autres am&#233;liorations ou corrections de bugs.&lt;/p&gt;
&lt;/section&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Ajouts&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Ajouts'&gt; Ajouts &lt;a class='sommaire-back sommaire-back-14' href='#s-Ajouts' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Afficher un encart pour signaler les nouvelles versions dans toutes les pages de l'espace priv&#233; pour les webmestres, et un bouton pointant vers &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_loader&lt;/code&gt;(voir &lt;a href='https://www.spip.net/fr_article5705.html' class=&#034;spip_in&#034; hreflang=&#034;fr&#034;&gt;Utiliser spip_loader&lt;/a&gt;) s'il est pr&#233;sent&lt;/li&gt;&lt;li&gt; Notifier par email les webmestres du site lorsque SPIP dispose d'une mise &#224; jour (d&#233;sactivable avec la constante &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_MAJ_NOTIF_EMAILS&lt;/code&gt;, &lt;a href='https://www.spip.net/fr_article6872.html' class=&#034;spip_in&#034;&gt;voir la documentation&lt;/a&gt;)&lt;/li&gt;&lt;li&gt; Am&#233;liorer l'ergonomie du formulaire instituer (changement de statut d'un objet &#233;ditorial, voir plus haut)&lt;/li&gt;&lt;li&gt; Le formulaire d'identit&#233; du site permet de configurer la timezone utilis&#233;e&lt;/li&gt;&lt;li&gt; Nouveau filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|balise_img_svg&lt;/code&gt; pour ins&#233;rer une image ou un SVG inline sans savoir d'avance le format&lt;/li&gt;&lt;li&gt; Ajouter une option &#224; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;find_all_in_path()&lt;/code&gt; pour renvoyer tous les fichiers r&#233;pondant &#224; un pattern&lt;/li&gt;&lt;li&gt; Filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|propre&lt;/code&gt; qui applique &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;propre()&lt;/code&gt; &amp; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;safehtml()&lt;/code&gt; (cela permet de d&#233;s-&#233;chapper le code de confiance des mod&#232;les)&lt;/li&gt;&lt;li&gt; D&#233;bugueur : Afficher le nombre d'occurrences et temps total des inclusions de squelettes&lt;/li&gt;&lt;li&gt; La constante &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_DEBUG_MINIPRES&lt;/code&gt; d&#233;finie &#224; true active l'affichage d'un debug visible lorsqu'une erreur de type Minipage survient&lt;/li&gt;&lt;li&gt; Pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;get_spip_doc&lt;/code&gt; pour manipuler le r&#233;sultat natif de la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;get_spip_doc()&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Changements&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Changements'&gt; Changements &lt;a class='sommaire-back sommaire-back-14' href='#s-Changements' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Le bandeau de navigation de l'espace priv&#233; est r&#233;duit en hauteur (2 lignes au lieu de 3, voir plus haut)&lt;/li&gt;&lt;li&gt; Le menu de cr&#233;ation rapide passe en menu d&#233;roulant avec des labels explicites (voir plus haut)&lt;/li&gt;&lt;li&gt; &#201;criture plus inclusive de certaines formulations&lt;/li&gt;&lt;li&gt; Optimisation des boucles avec pagination, en for&#231;ant une clause limit automatique dessus&lt;/li&gt;&lt;li&gt; Dans un plugin, si l'attribut logo d'un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;paquet.xml&lt;/code&gt; est absent, et qu'il existe un fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{prefixe}.svg&lt;/code&gt; dans le plugin, il est utilis&#233; comme logo&lt;/li&gt;&lt;li&gt; Les fonctions &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;extraire_balise()&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;extraire_balises()&lt;/code&gt; peuvent g&#233;rer des balises imbriqu&#233;es&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Corrections&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Corrections'&gt; Corrections &lt;a class='sommaire-back sommaire-back-14' href='#s-Corrections' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Am&#233;liorer la conformit&#233; HTML5&lt;/li&gt;&lt;li&gt; Ic&#244;ne T&#226;ches de fond qui n'&#233;voque pas les bases de donn&#233;es&lt;/li&gt;&lt;li&gt; Refactoring de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecrire_fichier()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Combinaison des crit&#232;res &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{pagination}&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{limit}&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Ne pas conserver un double des fichiers calcul&#233;s inchang&#233;s (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#PRODUIRE_FOND&lt;/code&gt;)&lt;/li&gt;&lt;li&gt; Mise &#224; jour de la biblioth&#232;que &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mediaelement&lt;/code&gt; en version 7.0.3&lt;/li&gt;&lt;li&gt; Correction de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;inserer_attribut()&lt;/code&gt; sur un cas d&#233;rogatoire : les balises&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;img&gt;&lt;/code&gt; (m&#234;me non autofermante)&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Depreciations&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Depreciations'&gt; D&#233;pr&#233;ciations &lt;a class='sommaire-back sommaire-back-14' href='#s-Depreciations' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; D&#233;pr&#233;cier les fonctions d&#233;su&#232;tes de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecrire/inc/presentation&lt;/code&gt;&lt;/li&gt;&lt;li&gt; La globale &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;auteur_session&lt;/code&gt; (d&#233;pr&#233;ci&#233;e depuis SPIP 2.0 !) sera supprim&#233;e en SPIP 5.0. Utiliser &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;visiteur_session&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; D&#233;pr&#233;cier la classe &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;.label&lt;/code&gt; au profit de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;.editer-label&lt;/code&gt; dans les formulaires&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Retrait&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Retrait'&gt; Retrait &lt;a class='sommaire-back sommaire-back-14' href='#s-Retrait' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Retrait des options d'affichage des ic&#244;nes dans les pr&#233;f&#233;rences&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Plugins-dist&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Plugins-dist'&gt;Plugins-dist&lt;a class='sommaire-back sommaire-back-14' href='#s-Plugins-dist' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Images&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Images'&gt; Images&lt;a class='sommaire-back sommaire-back-14' href='#s-Images' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Les performances du plugin-dist Filtres Images ont &#233;t&#233; tr&#232;s nettement optimis&#233;es, certains filtres images sont d&#233;sormais jusqu'&#224; 10 fois plus rapides gr&#226;ce &#224; l'utilisation des fonctions natives de PHP GD&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Un nouveau filtre, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_oriente_selon_exif&lt;/code&gt; pour r&#233;orienter automatiquement une image selon son exif&lt;/li&gt;&lt;li&gt; Les filtres d'images tel que &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_recadre&lt;/code&gt; r&#233;orientent l'image selon l'exif d'orientation&lt;/li&gt;&lt;li&gt; Optimisation des filtres &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_aplatir&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_renforcement&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_flou&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_sepia&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_flip_vertical&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_flip_horizontal&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_nb&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_gamma&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_rotation&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Correction du param&#232;tre crop de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_rotation&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Plugins-compatibles&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Plugins-compatibles'&gt;Plugins compatibles&lt;a class='sommaire-back sommaire-back-14' href='#s-Plugins-compatibles' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;D&#232;s sa sortie SPIP 4.3 b&#233;n&#233;ficie d'environ 700 plugins compatibles, ce qui facilitera les mises &#224; jour.&lt;br class='autobr' /&gt;
Voir : &lt;a href='https://www.spip.net/fr_article1318.html#Etape-2-Mettez-a-jour-vos-plugins' class=&#034;spip_in&#034;&gt;Effectuer une mise &#224; jour&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Fusionner, associer et dissocier des mots-cl&#233;s</title>
		<link>https://www.spip.net/fr_article6848.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article6848.html</guid>
		<dc:date>2024-01-02T21:24:53Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>b_b, erational</dc:creator>


		<dc:subject>SPIP 4.0</dc:subject>

		<description>
&lt;p&gt;Lorsqu'on utilise des mots-cl&#233;s leur liste a tendance &#224; grossir au fil du temps et il peut &#234;tre int&#233;ressant de faire le m&#233;nage. &lt;br class='autobr' /&gt;
&#192; partir de SPIP 4.0, il est possible pour les administrateur-trices de fusionner, associer et dissocier des mots-cl&#233;s. Cela permet de r&#233;duire leur nombre en conservant les liens existants. &lt;br class='autobr' /&gt;
Avertissement : certaines de ces actions ne sont pas r&#233;versibles, il convient donc de les utiliser avec prudence. &lt;br class='autobr' /&gt;
- Dans la partie priv&#233;e, aller sur la page du mot-cl&#233; &#224; (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique484.html" rel="directory"&gt;Pour aller plus loin&lt;/a&gt;

/ 
&lt;a href="https://www.spip.net/@spip40" rel="tag"&gt;SPIP 4.0&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Lorsqu'on utilise des mots-cl&#233;s leur liste a tendance &#224; grossir au fil du temps et il peut &#234;tre int&#233;ressant de faire le m&#233;nage.&lt;/p&gt;
&lt;p&gt;&#192; partir de SPIP 4.0, il est possible pour les administrateur-trices de fusionner, associer et dissocier des mots-cl&#233;s. Cela permet de r&#233;duire leur nombre en conservant les liens existants.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Avertissement :&lt;/strong&gt; certaines de ces actions ne sont pas r&#233;versibles, il convient donc de les utiliser avec prudence.&lt;/p&gt;
&lt;p&gt;- Dans la partie priv&#233;e, aller sur la page du mot-cl&#233; &#224; fusionner
&lt;br /&gt;- En bas de page, cliquer sur le lien &#034;Admin. avanc&#233;e&#034;&lt;/p&gt;
&lt;div class='spip_document_4166 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L195xH108/mot-admin-5ac4f.png?1703163126' width='195' height='108' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;- Un formulaire qui permet d'associer, fusionner, dissocier les mots-cl&#233;s s'affiche&lt;/p&gt;
&lt;div class='spip_document_4165 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/mot-fusion.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH435/mot-fusion-e9c33.png?1704234405' width='500' height='435' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;- Comme certaines de ces op&#233;ration sont irr&#233;versibles, une demande de confirmation est affich&#233;e avant de lancer l'action :&lt;/p&gt;
&lt;div class='spip_document_4164 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH126/mot-fusion-warning-96c8e.png?1704234405' width='500' height='126' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>SPIP 4.2</title>
		<link>https://www.spip.net/fr_article6806.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article6806.html</guid>
		<dc:date>2023-02-23T20:14:39Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>b_b</dc:creator>



		<description>&lt;p&gt;Changements apport&#233;s par SPIP 4.2&lt;/p&gt;

-
&lt;a href="https://www.spip.net/fr_rubrique785.html" rel="directory"&gt;Anciennes versions&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;SPIP 4.2 est une version qui suit les versions maintenues de PHP tout en gardant exceptionnellement une compatibilit&#233; avec PHP 7.4. C'est aussi un premier pas vers Composer avec l'introduction d'un autoloader &#224; usage interne et l'int&#233;gration de d&#233;pendances &#224; des librairies PHP via composer.json (notamment les polyfill PHP 8.0, 8.1 et 8.2 ainsi que le polyfill mbstring).&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-4&#034; id=&#034;nav69e3a70c288669.52839324&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Compatibilite-PHP-7-4-a-8-2&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Compatibilite-PHP-7-4-a-8-2&#034; class=&#034;spip_ancre&#034;&gt;Compatibilit&#233; PHP 7.4 &#224; 8.2&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Qualite-du-code&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Qualite-du-code&#034; class=&#034;spip_ancre&#034;&gt;Qualit&#233; du code&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Nouvelles-fonctionnalites-et-changements&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Nouvelles-fonctionnalites-et-changements&#034; class=&#034;spip_ancre&#034;&gt;Nouvelles fonctionnalit&#233;s et changements&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Plugins&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Plugins&#034; class=&#034;spip_ancre&#034;&gt;Plugins&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Compatibilite-PHP-7-4-a-8-2&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Compatibilite-PHP-7-4-a-8-2'&gt; Compatibilit&#233; PHP 7.4 &#224; 8.2 &lt;a class='sommaire-back sommaire-back-4' href='#s-Compatibilite-PHP-7-4-a-8-2' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;SPIP 4.2&lt;/strong&gt; n&#233;cessite PHP 7.4 minimum, et fonctionne jusqu'&#224; PHP 8.2.&lt;br class='autobr' /&gt;
Il n&#233;cessite les extensions PHP : sodium, Zlib, Zip et Phar.&lt;/p&gt;
&lt;p&gt;Comme pour SPIP 4.1, la compatibilit&#233; avec une nouvelle version de PHP a n&#233;cessit&#233; de nombreuses corrections et adaptations dans le code de SPIP.&lt;/p&gt;
&lt;p&gt;Cela concerne essentiellement des d&#233;pr&#233;ciations des appels &#224; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;utf8_encode&lt;/code&gt;, l'utilisation de propri&#233;t&#233;s de classes inexistantes et des &#233;critures de type &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&#034;${var}&#034;&lt;/code&gt;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Qualite-du-code&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Qualite-du-code'&gt; Qualit&#233; du code &lt;a class='sommaire-back sommaire-back-4' href='#s-Qualite-du-code' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Dans &lt;a href='https://www.spip.net/fr_article6708.html#Typage' class=&#034;spip_in&#034;&gt;la lign&#233;e de SPIP 4.1&lt;/a&gt;, nous avons continu&#233; &#224; typer certains arguments et retours de fonctions pour d&#233;tecter au plus t&#244;t certains appels incorrects.&lt;/p&gt;
&lt;p&gt;De plus, les quelques classes PHP de SPIP ont &#233;t&#233; d&#233;plac&#233;es dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecrire/src&lt;/code&gt; sous le namespace Spip.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Nouvelles-fonctionnalites-et-changements&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Nouvelles-fonctionnalites-et-changements'&gt; Nouvelles fonctionnalit&#233;s et changements &lt;a class='sommaire-back sommaire-back-4' href='#s-Nouvelles-fonctionnalites-et-changements' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Parmi celles-ci on peut noter :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; une meilleure s&#233;curisation des contenus par l'utilisation de la librairie HTMLPurifier &#224; la place de SafeHTML&lt;/li&gt;&lt;li&gt; la possibilit&#233; d'&#233;diter les logos des objets comme les documents, et l'introduction d'une balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#ID_LOGO_&lt;/code&gt; (par exemple &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#ID_LOGO_ARTICLE&lt;/code&gt;) qui retourne l'identifiant du document utilis&#233; pour le logo d'un objet&lt;/li&gt;&lt;li&gt; le support des backticks (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;`&lt;/code&gt;) pour ins&#233;rer du code dans le contenu &#233;ditorial&lt;/li&gt;&lt;li&gt; l'affichage de la langue des utilisateurs sur leur page et la possibilit&#233; de l'&#233;diter&lt;/li&gt;&lt;li&gt; la normalisation et l'appel syst&#233;matique de l'API de notifications lors de la modification des contenus &#233;ditoriaux&lt;/li&gt;&lt;li&gt; la possibilit&#233; d'alterner le sens de tri des listes qui utilisent le crit&#232;re &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tri&lt;/code&gt;&lt;/li&gt;&lt;li&gt; l'am&#233;lioration du balisage HTML g&#233;n&#233;r&#233; pour les blocs de code&lt;/li&gt;&lt;li&gt; le moteur de base de donn&#233;es MySQL n'est plus forc&#233; lors de l'installation, ce qui permet d'installer SPIP sans aucune modification sur un serveur qui utilise InnoDB&lt;/li&gt;&lt;li&gt; la prise en charge de l'utf8 pour le filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|match&lt;/code&gt;&lt;/li&gt;&lt;li&gt; la possibilit&#233; de sp&#233;cifier une jointure quand on utilise la balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#CHAMP_SQL&lt;/code&gt; (exemple &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#CHAMP_SQL{rubrique.titre}&lt;/code&gt;)&lt;/li&gt;&lt;li&gt; la gestion des images haute densit&#233; lors du recadrage et de la r&#233;duction&lt;/li&gt;&lt;li&gt; une meilleure gestion de l'affichage des mises &#224; jour dans le pied des pages de l'espace priv&#233;&lt;/li&gt;&lt;li&gt; ne plus autoriser un r&#233;dacteur ou une r&#233;dactrice &#224; refuser ses propres articles&lt;/li&gt;&lt;li&gt; une refonte visuelle des pages d'installation et de rappel de mot de passe&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Beaucoup de bugs ont aussi &#233;t&#233; corrig&#233;s, vous pouvez consulter la liste compl&#232;te dans &lt;a href=&#034;https://git.spip.net/spip/spip/-/blob/4.2.17/CHANGELOG.md&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;le fichier CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;
&lt;div class='spip_document_4107 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;64&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/tri_listes.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH263/tri_listes-03cd2.png?1677186939' width='500' height='263' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-4107 '&gt;&lt;strong&gt;Liste d'articles avec la possibilit&#233; d'alterner le sens de tri
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_4111 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;78&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/bigup-retaillage2.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH530/bigup-retaillage2-9e9f6.png?1677186939' width='500' height='530' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-4111 '&gt;&lt;strong&gt;Configuration du redimensionnement des images c&#244;t&#233; navigateur avant l'upload
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_4108 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;46&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L318xH419/edition_logo-2f9c1.png?1677181897' width='318' height='419' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-4108 '&gt;&lt;strong&gt;Logo d'un article &#233;ditable comme un document
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class='spip_document_4109 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;149&#034; data-legende-lenx=&#034;xxx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/rappel.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH277/rappel-32d42.png?1677186939' width='500' height='277' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-4109 '&gt;&lt;strong&gt;La page de rappel de mot passe de spip.net
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-4109 '&gt;La page utilise le m&#234;me fond de couleur ou image d'arri&#232;re plan que celle d&#233;finie pour la page de login.
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Plugins&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Plugins'&gt; Plugins&lt;a class='sommaire-back sommaire-back-4' href='#s-Plugins' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Bigup&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; possibilit&#233; de redimensionner les images c&#244;t&#233; navigateur, avant l'upload (les dimensions sont configurables depuis l'espace priv&#233;)&lt;/li&gt;&lt;li&gt; la prise en charge de la pr&#233;visualisation des images Webp et SVG&lt;/li&gt;&lt;li&gt; ajout d'un pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;bigup_preparer_input_options&lt;/code&gt; pour personnaliser finement les options&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Compresseur&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; mise &#224; jour de la librairie CSSTidy en version 2.0.3&lt;/li&gt;&lt;li&gt; correction d'un bug dans la compression des fichiers CSS contenants des &#233;critures raccourcies sur les propri&#233;t&#233;s padding &amp; margin&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Forum&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; ajout d'icones SVG manquantes sur la page de gestion des forums internes&lt;/li&gt;&lt;li&gt; limiter le nombre d'items &#224; 100 dans les flux RSS produits&lt;/li&gt;&lt;li&gt; suppression du filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|lignes_longues&lt;/code&gt; maintenant g&#233;r&#233; en css&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Medias&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; permettre d'&#233;diter un logo comme un document&lt;/li&gt;&lt;li&gt; suppression du Sanitizer SVG qui est maintenant dans le plugin SafeHtml&lt;/li&gt;&lt;li&gt; suppression du formulaire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;FORMULAIRE_CHANGER_FICHIER_DOCUMENT&lt;/code&gt; qui n'est plus utilis&#233; par SPIP (la fonctionnalit&#233; se trouve directement dans le &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;FORMULAIRE_EDITER_DOCUMENT&lt;/code&gt;)&lt;/li&gt;&lt;li&gt; suppression des boutons exc&#233;dentaires de sens de tri sur certaines listes de documents&lt;/li&gt;&lt;li&gt; ne pas contraindre la taille des images SVG&lt;/li&gt;&lt;li&gt; correction d'un bug de s&#233;lection des fichiers lors du chargement de documents depuis &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tmp/upload&lt;/code&gt;&lt;/li&gt;&lt;li&gt; mise &#224; jour de la librairie getID3 en version 1.9.22&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Plan&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; utiliser l'API parents/enfants pour lister les objets enfants de chaque rubrique&lt;/li&gt;&lt;li&gt; feuille de style plus flexible et icones SVG&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Porte plume&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; La barre d'outils utilise backtick et triple backtick pour les blocs de code&lt;/li&gt;&lt;li&gt; ajout d'un &#233;v&#233;nement &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;markItUpEditor.loaded&lt;/code&gt; lorsque les barres d'&#233;dition sont charg&#233;es&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;R&#233;visions&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; correction du flux RSS du suivi des r&#233;visions&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;SafeHtml&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; ajout du Sanitizer SVG auparavant dans le plugin medias&lt;/li&gt;&lt;li&gt; utilisation de la librairie HTMLPurifier &#224; la place de SafeHTML&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Sites&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; filtrer la liste des sites par pr&#233;sence d'une syndication ou pas&lt;/li&gt;&lt;li&gt; suppression du filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|lignes_longues&lt;/code&gt; maintenant g&#233;r&#233; en css&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;SVP&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; accepter des bornes du type, x, x.y, et x.y.z dans un intervalle de compatibilit&#233;s&lt;/li&gt;&lt;li&gt; am&#233;lioration de l'&#233;cran de progression d'installation des plugins&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;TextWheel&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; support des backticks pour ins&#233;rer du code dans le contenu &#233;ditorial&lt;/li&gt;&lt;li&gt; refactoring de la mise en s&#233;curit&#233; des textes&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Squelettes dist&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; afficher le langage des blocs de code en haut &#224; droite&lt;/li&gt;&lt;li&gt; compl&#233;ter les CSS responsives pour les balises &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;video&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;canvas&lt;/code&gt;, ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;svg&lt;/code&gt;&lt;/li&gt;&lt;li&gt; afficher les documents joints aux br&#232;ves dans l'espace public&lt;/li&gt;&lt;li&gt; distinguer les styles des &#233;l&#233;ments &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;.spip_code inline&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;block&lt;/code&gt;&lt;/li&gt;&lt;li&gt; permettre d'ins&#233;rer deux formulaires de recherche dans la m&#234;me page&lt;/li&gt;&lt;li&gt; &#233;viter que les paginations ne d&#233;bordent sur petit &#233;cran&lt;/li&gt;&lt;li&gt; suppression du filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|lignes_longues&lt;/code&gt; maintenant g&#233;r&#233; en css&lt;/li&gt;&lt;li&gt; suppression des 3 formulaires &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;inscription&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mot_de_passe&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;oubli&lt;/code&gt;, d&#233;sormais fournis par le core&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>SPIP 4.1</title>
		<link>https://www.spip.net/fr_article6708.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article6708.html</guid>
		<dc:date>2022-03-25T13:39:45Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>b_b, James, JLuc, Matthieu Marcillaud</dc:creator>



		<description>&lt;p&gt;Changements apport&#233;s par SPIP 4.1&lt;/p&gt;

-
&lt;a href="https://www.spip.net/fr_rubrique785.html" rel="directory"&gt;Anciennes versions&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;SPIP 4.1 est avant tout une version qui suit les versions maintenues de PHP (7.4 &#224; 8.1) et met &#224; jour diff&#233;rentes librairies utilis&#233;es en interne. Il modifie aussi le syst&#232;me d'authentification des auteurs.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-25&#034; id=&#034;nav69e3a70c2bb1b1.21037587&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Compatibilite-PHP&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Compatibilite-PHP&#034; class=&#034;spip_ancre&#034;&gt;Compatibilit&#233; PHP&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Compatibilite-PHP-8-1&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Compatibilite-PHP-8-1&#034; class=&#034;spip_ancre&#034;&gt;Compatibilit&#233; PHP 8.1&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Authentification-amp-Chiffrement&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Authentification-amp-Chiffrement&#034; class=&#034;spip_ancre&#034;&gt;Authentification &amp; Chiffrement&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Le-formulaire-de-login&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Le-formulaire-de-login&#034; class=&#034;spip_ancre&#034;&gt;Le formulaire de login&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Poivre-sel-hash-du-mot-de-passe&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Poivre-sel-hash-du-mot-de-passe&#034; class=&#034;spip_ancre&#034;&gt;Poivre, sel, hash du mot de passe&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Cles-de-chiffrement&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Cles-de-chiffrement&#034; class=&#034;spip_ancre&#034;&gt;Cl&#233;s de chiffrement&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Password&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Password&#034; class=&#034;spip_ancre&#034;&gt;Password&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Chiffrement&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Chiffrement&#034; class=&#034;spip_ancre&#034;&gt;Chiffrement&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Signature-des-actions&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Signature-des-actions&#034; class=&#034;spip_ancre&#034;&gt;Signature des actions&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Qualite-du-code&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Qualite-du-code&#034; class=&#034;spip_ancre&#034;&gt;Qualit&#233; du code&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Typage&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Typage&#034; class=&#034;spip_ancre&#034;&gt;Typage&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Sucre-syntaxique&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Sucre-syntaxique&#034; class=&#034;spip_ancre&#034;&gt;Sucre syntaxique&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Changements-d-API-sur-les-URLs-et-objets&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Changements-d-API-sur-les-URLs-et-objets&#034; class=&#034;spip_ancre&#034;&gt;Changements d'API sur les URLs et objets&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Encodage&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Encodage&#034; class=&#034;spip_ancre&#034;&gt;Encodage&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Decodage&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Decodage&#034; class=&#034;spip_ancre&#034;&gt;D&#233;codage&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Objet&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Objet&#034; class=&#034;spip_ancre&#034;&gt;Objet&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Reecriture-de-en-api&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Reecriture-de-en-api&#034; class=&#034;spip_ancre&#034;&gt;R&#233;&#233;criture de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;transmettre&lt;/code&gt; en .api&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Mises-a-jour-des-librairies&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Mises-a-jour-des-librairies&#034; class=&#034;spip_ancre&#034;&gt;Mises &#224; jour des librairies&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Javascript&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Javascript&#034; class=&#034;spip_ancre&#034;&gt;Javascript&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-PHP&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#PHP&#034; class=&#034;spip_ancre&#034;&gt;PHP&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Suppression-de-librairies&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Suppression-de-librairies&#034; class=&#034;spip_ancre&#034;&gt;Suppression de librairies&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Interface&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Interface&#034; class=&#034;spip_ancre&#034;&gt;Interface&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Nettoyages&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Nettoyages&#034; class=&#034;spip_ancre&#034;&gt;Nettoyages&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Quelques-adaptations&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Quelques-adaptations&#034; class=&#034;spip_ancre&#034;&gt;Quelques adaptations&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Plugins&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Plugins&#034; class=&#034;spip_ancre&#034;&gt;Plugins&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Compatibilite-PHP&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Compatibilite-PHP'&gt; Compatibilit&#233; PHP &lt;a class='sommaire-back sommaire-back-25' href='#s-Compatibilite-PHP' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;SPIP 4.1&lt;/strong&gt; n&#233;cessite PHP 7.4 minimum, et fonctionne jusqu'&#224; PHP 8.1.&lt;br class='autobr' /&gt;
Il n&#233;cessite les extensions PHP : sodium, Zlib, Zip et Phar.&lt;/p&gt;
&lt;p&gt;Rappel : &lt;strong&gt;SPIP 4.0&lt;/strong&gt; c'est PHP 7.3 &#224; 8.0.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Compatibilite-PHP-8-1&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Compatibilite-PHP-8-1'&gt; Compatibilit&#233; PHP 8.1 &lt;a class='sommaire-back sommaire-back-25' href='#s-Compatibilite-PHP-8-1' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pour la compatibilit&#233; PHP 8.1, nous avons du corriger / adapter de nombreuses fonctions.&lt;/p&gt;
&lt;p&gt;Cela concerne particuli&#232;rement des appels &#224; des fonctions de PHP traitant des cha&#238;nes de caract&#232;res, si elles re&#231;oivent &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;null&lt;/code&gt; au lieu d'une cha&#238;ne, pour &#233;viter des &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;deprecated&lt;/code&gt; : &lt;a href=&#034;https://php.watch/versions/8.1/internal-func-non-nullable-null-deprecation&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://php.watch/versions/8.1/internal-func-non-nullable-null-deprecation&lt;/a&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Authentification-amp-Chiffrement&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Authentification-amp-Chiffrement'&gt; Authentification &amp; Chiffrement &lt;a class='sommaire-back sommaire-back-25' href='#s-Authentification-amp-Chiffrement' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Nous reprenons en l'adaptant le travail de g0uz sur le plugin &lt;a href=&#034;https://git.spip.net/spip-contrib-extensions/chiffrer&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Chiffrer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;- Cela corrige certains rares cas o&#249; la librairie Javascript utilis&#233;e jusqu'&#224; pr&#233;sent &#233;chouait dans l'identification de l'internaute
&lt;br /&gt;- Cela renforce la s&#233;curit&#233; en &#233;vitant certains types d'attaques.&lt;/p&gt;
&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Le-formulaire-de-login&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Le-formulaire-de-login'&gt; Le formulaire de login &lt;a class='sommaire-back sommaire-back-25' href='#s-Le-formulaire-de-login' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;HTTPS est d&#233;sormais encore plus fortement conseill&#233;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En effet, SPIP ne cherche plus &#224; chiffrer le mot de passe des auteurs en Javascript depuis le formulaire de login, et le mot de passe arrive donc syst&#233;matiquement &#171; en clair &#187; &#224; SPIP. Il est donc fortement conseill&#233; d'avoir son site en HTTPS, car HTTPS assure alors la s&#233;curit&#233; de la transmission.&lt;/p&gt;
&lt;p&gt;En cons&#233;quence, la constante &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_AUTORISER_AUTH_FAIBLE&lt;/code&gt;, qui permettait de forcer l'envoi du mot de passe en clair, est supprim&#233;e.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Poivre-sel-hash-du-mot-de-passe&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Poivre-sel-hash-du-mot-de-passe'&gt; Poivre, sel, hash du mot de passe &lt;a class='sommaire-back sommaire-back-25' href='#s-Poivre-sel-hash-du-mot-de-passe' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Le mot de passe d'un auteur est maintenant hach&#233; dans SPIP en utilisant un poivre (une cl&#233; sp&#233;cifique pour le site). Par ailleurs, la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;password_hash&lt;/code&gt; de PHP s'occupe de trouver le meilleur algorithme de hachage et de cr&#233;er un sel dedans. La fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;password_verify&lt;/code&gt; de PHP est utilis&#233;e pour le v&#233;rifier.&lt;/p&gt;
&lt;p&gt;Les &#034;al&#233;as&#034; rotatifs des auteurs sont toujours cr&#233;&#233;s, mais ne sont plus utilis&#233;s pour saler le mot de passe vu que PHP g&#232;re cela tr&#232;s bien. Par contre, l'application suppl&#233;mentaire d'un poivre est une nouveaut&#233;.&lt;/p&gt;
&lt;p&gt;Comme avant, &#224; chaque authentification r&#233;ussie d'un auteur, on enregistre un nouveau hash en base, en recr&#233;ant un hash avec &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;password_hash&lt;/code&gt; : cela applique un nouveau sel dessus donc, et &#233;ventuellement PHP en profite pour utiliser un algorithme de hachage plus performant si besoin.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Cles-de-chiffrement&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Cles-de-chiffrement'&gt; Cl&#233;s de chiffrement &lt;a class='sommaire-back sommaire-back-25' href='#s-Cles-de-chiffrement' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Pour mener &#224; bien ce poivre, et d'autres actions dans SPIP, des cl&#233;s de chiffrement sont utilis&#233;es et stock&#233;es dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config/cles.php&lt;/code&gt;. Il y en a 2 par d&#233;faut :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; secret_des_auth : elle sert &#224; poivrer le mot de passe des auteurs. C'est une nouvelle cl&#233; donc.&lt;/li&gt;&lt;li&gt; secret_du_site : elle sert pour moiti&#233; &#224; calculer le secret du site. L'autre moiti&#233; &#233;tant stock&#233; en base dans l'entr&#233;e &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;secret_du_site&lt;/code&gt; de la table &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_meta&lt;/code&gt;. Ce secret du site (combin&#233;) permet de signer et/ou chiffrer certaines parties de SPIP (contextes ajax, actions d'auteurs).&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Lorsqu'un webmestre se connecte, les cl&#233;s sont sauvegard&#233;es dans le nouveau champ &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;backup_cles&lt;/code&gt; de la table &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_auteurs&lt;/code&gt;, en le chiffrant avec le mot de passe en clair de l'auteur.&lt;/p&gt;
&lt;p&gt;Ceci permet de restaurer les cl&#233;s du site si le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cles.php&lt;/code&gt; a &#233;t&#233; effac&#233;, lors de l'authentification d'un webmestre.&lt;/p&gt;
&lt;p&gt;La classe &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;\Spip\Chiffrer\SpipCles&lt;/code&gt; permet de manipuler les cl&#233;s au besoin.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Password&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Password'&gt; Password &lt;a class='sommaire-back sommaire-back-25' href='#s-Password' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;SPIP fournit deux m&#233;thodes qui sont utilis&#233;es dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecrire/auth/spip.php&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;- &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;\Spip\Chiffrer\Password::verifier($clair, $hash, $key = null): bool&lt;/code&gt; &lt;br /&gt;- &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;\Spip\Chiffrer\Password::hacher($clair, $key = null): string&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La cl&#233; par d&#233;faut est celle de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;secret_des_auth&lt;/code&gt;, utilis&#233;e pour poivrer.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Chiffrement&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Chiffrement'&gt; Chiffrement &lt;a class='sommaire-back sommaire-back-25' href='#s-Chiffrement' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Trois m&#233;thodes sont aussi fournies pour chiffrer et d&#233;chiffrer (chiffrage sym&#233;trique) des contenus.&lt;br class='autobr' /&gt;
Dedans nous utilisons la librairie Sodium (fournie par d&#233;faut dans PHP &gt;= 7.2).&lt;/p&gt;
&lt;p&gt;- &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Chiffrement::chiffrer($message, $key): ?string&lt;/code&gt; &lt;br /&gt;- &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Chiffrement::dechiffrer($encoded, $key): ?string&lt;/code&gt;
&lt;br /&gt;- &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Chiffrement::keygen(): string&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La m&#233;thode &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;keygen&lt;/code&gt; produit simplement une cl&#233; de chiffrement &#224; la longueur adapt&#233;e.&lt;/p&gt;
&lt;p&gt;Les m&#233;thodes &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;chiffrer()&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;dechiffrer()&lt;/code&gt; seront tr&#232;s lentes si la cl&#233; transmise n'a pas la bonne longueur : on consid&#232;re alors la cl&#233; de chiffrement comme &#233;tant un mot de passe n&#233;cessitant un traitement suppl&#233;mentaire lourd (avec &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sodium_crypto_pwhash&lt;/code&gt;).&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Signature-des-actions&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Signature-des-actions'&gt; Signature des actions &lt;a class='sommaire-back sommaire-back-25' href='#s-Signature-des-actions' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Les actions sont authentifi&#233;es maintenant en utilisant &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;hash_hmac&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;hash_equals&lt;/code&gt; (et les al&#233;as d'auteurs et/ou le secret du site)&lt;/p&gt;
&lt;/section&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Qualite-du-code&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Qualite-du-code'&gt; Qualit&#233; du code &lt;a class='sommaire-back sommaire-back-25' href='#s-Qualite-du-code' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Il y a de quoi progresser sur la qualit&#233; du code PHP de SPIP&#8230; l'avenir ne peut &#234;tre que meilleur ;-)&lt;/p&gt;
&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Typage&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Typage'&gt; Typage &lt;a class='sommaire-back sommaire-back-25' href='#s-Typage' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Ce faisant pour PHP 8.1, nous avons commenc&#233; &#224; typer certains arguments et retours de fonctions pour d&#233;tecter au plus t&#244;t certains appels incorrects.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C'est un changement potentiellement impactant&lt;/strong&gt; : cela peut cr&#233;er des erreurs de squelettes l&#224; o&#249; l'erreur &#233;tait auparavant plus silencieuse ou tol&#233;r&#233;e. De m&#234;me cela pourrait provoquer des erreurs PHP dans des plugins ou des scripts maison sur les appels erron&#233;s &#224; ces fonctions.&lt;/p&gt;
&lt;p&gt;En assurant la compatibilit&#233; avec les nouvelles versions de PHP nous irons forc&#233;ment vers plus de typage dans le code de SPIP au fur et &#224; mesure des &#233;volutions et factorisations du code source.&lt;/p&gt;
&lt;p&gt;La cons&#233;quence sera donc que les personnes d&#233;veloppant des plugins ou des squelettes devront &#234;tre plus vigilantes sur les appels effectu&#233;s d'une part, et d'autre part que nous restreindrons certainement les nouvelles fonctions &#224; des types uniques (&#233;viter les &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mixed&lt;/code&gt;), de m&#234;me que certaines fonctions d&#233;j&#224; existantes verront probablement certains types d'arguments mixtes r&#233;duits (&#233;viter qu'un argument puisse recevoir un peu tout comme &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;int | string | array&lt;/code&gt; par exemple), de m&#234;me pour les retours de fonctions.&lt;/p&gt;
&lt;p&gt;Au vu du code de SPIP historique ce ne sera pas si &#233;vident.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Sucre-syntaxique&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Sucre-syntaxique'&gt; Sucre syntaxique &lt;a class='sommaire-back sommaire-back-25' href='#s-Sucre-syntaxique' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Nous avons pass&#233; l'outil &lt;a href=&#034;https://github.com/rectorphp/rector&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Rector&lt;/a&gt; sur le code de SPIP 4.1 avec la configuration PHP 7.4. L'outil permet de transformer la syntaxe du code source PHP en modifiant certains &#233;l&#233;ments qui peuvent &#234;tre simplifi&#233;s gr&#226;ce &#224; des &#233;critures plus r&#233;centes de PHP. Par exemple utiliser les op&#233;rateurs &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;??&lt;/code&gt; ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;??=&lt;/code&gt; lorsque c'est possible (&lt;a href=&#034;https://www.php.net/manual/fr/migration70.new-features.php#migration70.new-features.null-coalesce-op&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Voir la doc PHP&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;C'est toujours &#231;a de pris :-)&lt;/p&gt;
&lt;p&gt;&lt;a id=&#034;urls_etendues&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/section&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Changements-d-API-sur-les-URLs-et-objets&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Changements-d-API-sur-les-URLs-et-objets'&gt; Changements d'API sur les URLs et objets &lt;a class='sommaire-back sommaire-back-25' href='#s-Changements-d-API-sur-les-URLs-et-objets' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Certaines fonctions d'appels pour calculer ou d&#233;coder les URLs sont modifi&#233;es. &lt;br class='autobr' /&gt;
Les anciennes API sont d&#233;pr&#233;ci&#233;es.&lt;/p&gt;
&lt;p&gt;Il y a maintenant 2 jeux de fonctions distincts pour g&#233;n&#233;rer l'URL d'un objet et pour d&#233;coder une URL. Ce nouveau m&#233;canisme permet de d&#233;finir une fonction pour g&#233;n&#233;rer une URL propre pour les &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#URL_PAGE&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Les nouvelles fonctions sont typ&#233;es. Dans les explications suivantes, on ne pr&#233;sente que le d&#233;but des signatures des diff&#233;rentes fonctions modifi&#233;es.&lt;/p&gt;
&lt;p&gt;Voir &lt;a href=&#034;https://git.spip.net/spip/spip/-/merge_requests/5000&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;la demande d'ajout correspondante&lt;/a&gt; pour le d&#233;tail complet.&lt;/p&gt;
&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Encodage&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Encodage'&gt; Encodage &lt;a class='sommaire-back sommaire-back-25' href='#s-Encodage' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;generer_objet_url&lt;/strong&gt; (anciennement &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;generer_url_entite&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;Cette fonction g&#233;n&#232;re une URL, qui peut &#234;tre soit pour l'espace public (param&#232;tre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$public = true&lt;/code&gt;), soit pour l'espace priv&#233; (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$public = false&lt;/code&gt;), soit par d&#233;faut (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$public = null&lt;/code&gt;) retourner une URL pour l'espace dans lequel on se trouve actuellement &#8230;&lt;/p&gt;
&lt;p&gt;La fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;generer_objet_url()&lt;/code&gt; est la fonction de haut niveau, qui va finir par appeler une fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;urls_xxx_generer_url_objet()&lt;/code&gt;_dist selon le module d'URL actif.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Note :&lt;/i&gt; Pour cette fonction la signature change l&#233;g&#232;rement.&lt;/p&gt;
&lt;p&gt;Dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;generer_url_entite()&lt;/code&gt; maintenant d&#233;pr&#233;ci&#233; :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Le 5&lt;sup&gt;e&lt;/sup&gt; param&#232;tre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$public&lt;/code&gt; pouvait valoir &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;true, false, null ou 'string'&lt;/code&gt;. Dans le cas d'une chaine, il correspondait &#224; un param&#232;tre &#034;connect&#034;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ce sont maintenant 2 param&#232;tres s&#233;par&#233;s pour &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;generer_objet_url&lt;/code&gt; :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Le 5&lt;sup&gt;e&lt;/sup&gt; est &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;?bool $public = null&lt;/code&gt; (donc &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;true, false ou null)&lt;/code&gt;,&lt;/li&gt;&lt;li&gt; le 6&lt;sup&gt;e&lt;/sup&gt; est &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;string $connect = ''&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Dans la majorit&#233; des cas, cela n'affectera pas les usages et renommer simplement la fonction devrait &#234;tre suffisant.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;diff&#034; class='spip_code spip_code_block language-diff' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;- generer_url_entite($id, $objet, ...) + generer_objet_url($id, string $objet, ...) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;generer_objet_url_absolue&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;G&#233;n&#232;re l'URL absolue vers un objet&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;diff&#034; class='spip_code spip_code_block language-diff' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;- generer_url_entite_absolue($id, $entite, ...) + generer_objet_url_absolue($id = 0, string $entite = '', ...) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Decodage&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Decodage'&gt; D&#233;codage &lt;a class='sommaire-back sommaire-back-25' href='#s-Decodage' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;La fonction de d&#233;codage des URLs s'appelle maintenant &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;urls_xxxx_decoder_url_dist()&lt;/code&gt; ce qui &#233;vite toute confusion avec l'ancienne fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;urls_xxxx_dist()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;De plus, pour un module d'URLs qui voudrait &#234;tre compatible avec les anciennes versions de SPIP et cette nouvelle convention, il suffit de proposer une fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;urls_xxxx_dist()&lt;/code&gt; non typ&#233;e qui fait le routage vers les 2 fonctions &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;urls_xxx_generer_url_objet_dist()&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;decoder_url()&lt;/code&gt; du module.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Objet&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Objet'&gt; Objet &lt;a class='sommaire-back sommaire-back-25' href='#s-Objet' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;generer_objet_lien&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;G&#233;n&#232;re un lien (titre cliquable vers url) vers un objet&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;diff&#034; class='spip_code spip_code_block language-diff' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;- generer_lien_entite($id_objet, $objet, ...) + generer_objet_lien(int $id_objet, string $objet, ...) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;generer_objet_info&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Donner une information sur un objet &#233;ditorial. Utilis&#233; entre autres par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#INFO_XX&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;diff&#034; class='spip_code spip_code_block language-diff' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;- generer_info_entite($id_objet, $type_objet, $info, ...) + generer_objet_info($id_objet, string $type_objet, string $info, ...) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Les fonctions permettant de d&#233;finir des calculs sp&#233;cifiques pour l'obtention d'information sont aussi renomm&#233;es. Pour l'information calcul&#233;e 'xxx' : appel&#233; via &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;generer_objet_info(3, 'article', 'xxx')&lt;/code&gt; ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#INFO_XXX{article,3}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Si ces fonctions existent, elles sont utilis&#233;es par SPIP dans ce cas :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;diff&#034; class='spip_code spip_code_block language-diff' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;// xxx sp&#233;cifiquement sur l'objet 'type' - generer_xxx_{type}($id_objet, $type_objet, ...) + generer_{type}_xxx($id_objet, string $type_objet, ...) // sinon xxx sur un objet quelconque - generer_xxx_entite($id_objet, $type_objet, $row, ...) + generer_objet_xxx($id_objet, string $type_objet, array $row, ...) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;L'ancien nommage est d&#233;pr&#233;ci&#233;.&lt;/p&gt;
&lt;p&gt;Suivant ce principe, la fonction interne &#224; SPIP pour calculer l'introduction a &#233;t&#233; renomm&#233;e :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;generer_objet_introduction&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;G&#233;n&#232;re l'introduction de l'objet (fonction priv&#233;e &#224; SPIP), utilis&#233; par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#INTRODUCTION&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#INFO_INTRODUCTION&lt;/code&gt;)&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;diff&#034; class='spip_code spip_code_block language-diff' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;- generer_introduction_entite($id_objet, $objet, $ligne_sql, ...) + generer_objet_introduction(int $id_objet, string $objet, array $ligne_sql, ...) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Reecriture-de-en-api&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Reecriture-de-en-api'&gt; R&#233;&#233;criture de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;transmettre&lt;/code&gt; en .api &lt;a class='sommaire-back sommaire-back-25' href='#s-Reecriture-de-en-api' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pour faciliter et s&#233;curiser partiellement l'envoi de donn&#233;es sp&#233;cifiques (CSV, JSON) &#224; des auteurs connus de SPIP, l'URL d'api transmettre.api a &#233;t&#233; mis en place (elle remplace un ancien m&#233;canisme &#224; l'objectif identique qui utilisait un squelette &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;transmettre.html&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;L'URL est g&#233;n&#233;r&#233;e avec la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;generer_url_api_low_sec()&lt;/code&gt; (&#171; low sec &#187; signifiant ici &#171; s&#233;curit&#233; basse &#187;). Un jeton fixe est cr&#233;&#233; pour cette action (avec ses param&#232;tres) pour l'auteur d&#233;sign&#233; et sera accept&#233;e m&#234;me si l'auteur est d&#233;connect&#233; (ce qui veut dire que quiconque poss&#232;de l'URL pourra acc&#233;der au contenu renvoy&#233;).&lt;/p&gt;
&lt;p&gt;Historiquement cela permet de g&#233;n&#233;rer des fichiers non publics (RSS des articles propos&#233;s &#224; publication, statistiques du site) qui peuvent &#234;tre exploit&#233;s par des outils tierces (agr&#233;gateur RSS par exemple).&lt;/p&gt;
&lt;p&gt;&#201;galement :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;securiser_acces()&lt;/code&gt; est renommee en &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;securiser_acces_low_sec()&lt;/code&gt; et definie dans inc/acces.&lt;/li&gt;&lt;li&gt; On garde un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;filtre_securiser_acces_dist()&lt;/code&gt; dans inc/filtres pour la compat des vieux squelettes&lt;/li&gt;&lt;li&gt; la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;param_low_sec()&lt;/code&gt; est depreciee&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Mises-a-jour-des-librairies&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Mises-a-jour-des-librairies'&gt; Mises &#224; jour des librairies &lt;a class='sommaire-back sommaire-back-25' href='#s-Mises-a-jour-des-librairies' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Nous avons mis &#224; jour diff&#233;rentes librairies utilis&#233;es par SPIP.&lt;/p&gt;
&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;Javascript&#034;&gt;&lt;h3 class=&#034;h3&#034; id='Javascript'&gt; Javascript &lt;a class='sommaire-back sommaire-back-25' href='#s-Javascript' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; spip/spip -&gt; Sortable 1.14.0&lt;/li&gt;&lt;li&gt; spip/spip -&gt; jquery Form 4.3.0&lt;/li&gt;&lt;li&gt; spip/spip -&gt; JS Cookie 3.0.1&lt;/li&gt;&lt;li&gt; spip/statistiques -&gt; d3 7.3.0&lt;/li&gt;&lt;li&gt; spip/statistiques -&gt; luxon 2.3.0&lt;/li&gt;&lt;li&gt; spip/plan -&gt; jstree 3.3.12&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau2 sommaire-section_h3&#034; aria-labelledby=&#034;PHP&#034;&gt;&lt;h3 class=&#034;h3&#034; id='PHP'&gt; PHP&lt;a class='sommaire-back sommaire-back-25' href='#s-PHP' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; spip/compresseur -&gt; css-tidy 2.0.0&lt;/li&gt;&lt;li&gt; spip/medias -&gt; getid3 1.9.21&lt;/li&gt;&lt;li&gt; spip/medias -&gt; svg-sanitizer 0.14.1&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Suppression-de-librairies&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Suppression-de-librairies'&gt; Suppression de librairies &lt;a class='sommaire-back sommaire-back-25' href='#s-Suppression-de-librairies' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Nous avons supprim&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;jQuery.cookie&lt;/code&gt; qui &#233;tait d&#233;pr&#233;ci&#233; depuis SPIP 3.2 au profit de JS Cookie.&lt;/p&gt;
&lt;p&gt;Pour rappel si vous n'aviez pas encore adapt&#233;s vos utilisations :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;js&#034; class='spip_code spip_code_block language-js' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;$.cookie(key) devient Cookies.get(key) $.cookie(key, value) devient Cookies.set(key, value) $.cookie(key, value, options) devient Cookies.set(key, value, options) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Interface&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Interface'&gt; Interface &lt;a class='sommaire-back sommaire-back-25' href='#s-Interface' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Les rubriques dans l'espace priv&#233; affichent maintenant aussi la liste des articles refus&#233;s.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Nettoyages&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Nettoyages'&gt; Nettoyages &lt;a class='sommaire-back sommaire-back-25' href='#s-Nettoyages' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Nous avons supprim&#233;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;spip&#034; class='spip_code spip_code_block language-spip' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;#FORMULAIRE_CONFIGURER_METAS &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;qui &#233;tait d&#233;pr&#233;ci&#233; depuis SPIP 3.0 au profit des formulaires&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;spip&#034; class='spip_code spip_code_block language-spip' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;#FORMULAIRE_CONFIGURER_XX &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;. Voir la documentation &lt;a href='https://www.spip.net/fr_article5414.html' class=&#034;spip_in&#034;&gt;Configurer une fonctionnalit&#233; de votre site, ou un plugin&lt;/a&gt; &#224; ce sujet.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Quelques-adaptations&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Quelques-adaptations'&gt; Quelques adaptations &lt;a class='sommaire-back sommaire-back-25' href='#s-Quelques-adaptations' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Dans un squelette, pour avoir la liste des tables des objets &#233;ditoriaux, pr&#233;f&#233;rer &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#NULL&lt;/code&gt; (qui retourne &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;null&lt;/code&gt;) plut&#244;t que &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#REM&lt;/code&gt; (qui retourne une cha&#238;ne vide).&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;diff&#034; class='spip_code spip_code_block language-diff' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;- [(#REM|lister_tables_objets_sql)] + [(#NULL|lister_tables_objets_sql)] &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Plugins&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Plugins'&gt; Plugins &lt;a class='sommaire-back sommaire-back-25' href='#s-Plugins' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Archiviste&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Le plugin &#034;Archiviste&#034; a &#233;t&#233; mis &#224; jour pour utiliser les extensions PHP Zip, zlib et Phar, qui sont d&#233;sormais requises. Ceci nous a permis de supprimer les (tr&#232;s) vielles librairies Pcl* que nous tra&#238;nions depuis quelques ann&#233;es.&lt;/p&gt;
&lt;p&gt;&#192; noter aussi que le plugin est accompagn&#233; de tests unitaires &#233;crits avec &lt;a href=&#034;https://docs.phpunit.de/fr/latest/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHPUnit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bigup&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Le formulaire de configuration de Bigup est affich&#233; sur la page des options avanc&#233;es, avec une formulation un peu plus parlante pour le titre du formulaire d'explication.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Compresseur&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mise &#224; jour de la librairie CSSTidy en version 2.0 et correction d'un bug dans la compression des fichiers Javascript sur certains environnements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Forum&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; correction d'un bug qui affichait le lien vers la page de contr&#244;le des forums pour les auteurs non autoris&#233;s.&lt;/li&gt;&lt;li&gt; normalisation de l'ajout d'un forum en base afin de bien faire passer les informations par les pipeline pre/post insertion&lt;/li&gt;&lt;li&gt; correction d'un bug d'affichage d'ic&#244;ne en langue RTL&lt;/li&gt;&lt;li&gt; correction d'un bug qui permettait d'acc&#233;der au forum priv&#233; des r&#233;dacteurs alors que celui-ci &#233;tait d&#233;sactiv&#233; dans la configuration&lt;/li&gt;&lt;li&gt; correction d'un bug dans la recherche de message depuis la page de contr&#244;le des forums&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Mediabox&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; am&#233;lioration de l'affichage des textes longs dans la l&#233;gende des modales, avec l'attribut &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;data-box-caption-state&lt;/code&gt; valant &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;min&lt;/code&gt; ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;expanded&lt;/code&gt; sur les liens mediabox.&lt;/li&gt;&lt;li&gt; utilisation d'un th&#232;me sombre par d&#233;faut dans l'espace priv&#233;&lt;/li&gt;&lt;li&gt; r&#233;tablissement du support des URLs avec fragments &#224; l'aide d'un s&#233;lecteur dans l'attribut &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;data-href-popin&lt;/code&gt;&lt;/li&gt;&lt;li&gt; ajout du support des attributs &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;data-box-(max|min)-(width|height)&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;data-box-(width|height)&lt;/code&gt; sur les liens mediabox et r&#233;tablissement de la compatibilit&#233; avec les anciennes classes du type &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;boxInline boxIframe boxWidth-xx boxHeight-xx&lt;/code&gt; (documentation : &lt;a href=&#034;https://contrib.spip.net/MediaBox&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://contrib.spip.net/MediaBox&lt;/a&gt;)&lt;/li&gt;&lt;li&gt; correction d'un bug avec certaines images distantes qui n'&#233;taient pas affich&#233;es par la modale (notamment des SVG), car l'image n'a pas de dimension connue&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Medias&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; permettre de personnaliser le comportement en autolien des images en fonction du media, de l'extension, de la taille ou de l'id_document&lt;/li&gt;&lt;li&gt; correction d'un bug dans le mod&#232;le d'embed des fichiers CSV&lt;/li&gt;&lt;li&gt; retrait de la librairie obsol&#232;te jQuery multifile&lt;/li&gt;&lt;li&gt; mise &#224; jour des librairies SVG Sanitizer et getid3&lt;/li&gt;&lt;li&gt; retrait des pr&#233;fixes navigateurs dans les CSS du plugin&lt;/li&gt;&lt;li&gt; am&#233;lioration UX des boutons dans le bloc des documents d'un objet&lt;/li&gt;&lt;li&gt; correction d'un bug dans le code g&#233;n&#233;r&#233; pour les attributs d'une image avec l&#233;gende&lt;/li&gt;&lt;li&gt; am&#233;lioration du mod&#232;le utilis&#233; pour l'insertion des images SVG dans le texte d'un objet&lt;/li&gt;&lt;li&gt; correction d'un bug d'affichage de la m&#233;diath&#232;que quand un document comporte une tr&#232;s longue URL dans les champs titre ou credit&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Plan&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mise &#224; jour de la librairie Jstree en version 3.3.12.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;R&#233;visions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Correction d'un bug qui emp&#234;chait le fonctionnement du g&#233;nie d'optimisation des r&#233;visions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sites&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; correction d'un bug qui affichait la date en double dans les listes d'articles syndiqu&#233;s&lt;/li&gt;&lt;li&gt; am&#233;lioration des formulaires d'&#233;dition de site en utilisant un placeholder dans les champs d'URL (au lieu de les pr&#233;-remplir avec http://)&lt;/li&gt;&lt;li&gt; correction d'un bug d'affichage de la liste des sites en colonne lat&#233;rale de l'espace priv&#233;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Statistiques&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; mise &#224; jour des librairies D3.js, d3-time-format et Luxon.js&lt;/li&gt;&lt;li&gt; correction d'un bug d'affichage des noms des mois dans les statistiques en langue arabe&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;SVP&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; correction d'un bug dans le d&#233;ballage des archives de plugin avec les nouvelles fonctions du plugin Archiviste&lt;/li&gt;&lt;li&gt; am&#233;lioration de pr&#233;sentation des cases &#224; cocher dans la liste des plugins&lt;/li&gt;&lt;li&gt; correction d'un bug de s&#233;lection des plugins quand la personne faisait &#034;tout cocher&#034; puis &#034;cocher les mises &#224; jour&#034;&lt;/li&gt;&lt;li&gt; correction d'un bug dans l'affichage des messages de retour du formulaire de chargement de plugin&lt;/li&gt;&lt;li&gt; toujours afficher le lien vers la documentation du plugin qu'il soit actif ou non&lt;/li&gt;&lt;li&gt; correction d'un bug qui emp&#234;chait d'activer un plugin quand les t&#233;l&#233;chargements sont interdits&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;TextWheel&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; correction d'un bug qui &#233;chappait par erreur certains liens automatiques&lt;/li&gt;&lt;li&gt; correction d'un bug de direction d'affichage des puces quand la page contient des bloc de textes de directions diff&#233;rentes&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;URLs &#233;tendues&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pour faire suite aux &lt;a href=&#034;#urls_etendues&#034; class=&#034;spip_ancre&#034;&gt;changements d'API sur les URLs et objets&lt;/a&gt;, les fonctions d'URLs ont &#233;t&#233; reprises pour une &#233;criture plus claire et mieux typ&#233;e avec 2 points d'entr&#233;e pour la partie d&#233;codage/encodage.&lt;/p&gt;
&lt;p&gt;Voir &lt;a href=&#034;https://git.spip.net/spip/urls/-/merge_requests/4811&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;la demande d'ajout correspondante&lt;/a&gt; pour le d&#233;tail complet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Squelettes dist&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; correction d'un bug qui provoquait le d&#233;bordement des paginations sur petit &#233;cran&lt;/li&gt;&lt;li&gt; application du filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|header_silencieux&lt;/code&gt; sur les pages publiques afin de respecter la valeur de la globale &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_header_silencieux&lt;/code&gt;&lt;/li&gt;&lt;li&gt; retrait des classes sp&#233;cifiques &#224; Internet Explorer dans les CSS&lt;/li&gt;&lt;li&gt; correction d'un bug d'affichage des images et SVG sur petit &#233;cran&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>_SVP_PAQUET_MAX_SIZE</title>
		<link>https://www.spip.net/fr_article5839.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article5839.html</guid>
		<dc:date>2016-03-03T20:32:16Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>b_b</dc:creator>


		<dc:subject>_SVP_PAQUET_MAX_SIZE</dc:subject>

		<description>
&lt;p&gt;La constante _SVP_PAQUET_MAX_SIZE d&#233;finit la taille maximum d'une archive r&#233;cup&#233;r&#233;e par le gestionnaire de plugins SVP. Par d&#233;faut, cette constante est initialis&#233;e &#224; 64 Mo. &lt;br class='autobr' /&gt;
Il est possible de personnaliser cette valeur dans votre fichier config/mes_options.php (voir l'article qui lui est consacr&#233;). &lt;br class='autobr' /&gt;
Exemple : // permettre la r&#233;cup&#233;ration de plugins de plus de 64 Mo define('_SVP_PAQUET_MAX_SIZE', 128*1048576) ;&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique643.html" rel="directory"&gt;Variables et Constantes de personnalisation&lt;/a&gt;

/ 
&lt;a href="https://www.spip.net/@_svp_paquet_max_size" rel="tag"&gt;_SVP_PAQUET_MAX_SIZE&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;La constante &lt;strong&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_SVP_PAQUET_MAX_SIZE&lt;/code&gt;&lt;/strong&gt; d&#233;finit la taille maximum d'une archive r&#233;cup&#233;r&#233;e par le gestionnaire de plugins SVP. Par d&#233;faut, cette constante est initialis&#233;e &#224; 64 Mo.&lt;/p&gt;
&lt;p&gt;Il est possible de personnaliser cette valeur dans votre fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config/mes_options.php&lt;/code&gt; (voir &lt;a href='https://www.spip.net/fr_article4654.html' class=&#034;spip_in&#034;&gt;l'article qui lui est consacr&#233;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Exemple :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;// permettre la r&#233;cup&#233;ration de plugins de plus de 64 Mo define('_SVP_PAQUET_MAX_SIZE', 128*1048576); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>_MAX_NB_SESSIONS_OUVERTES</title>
		<link>https://www.spip.net/fr_article5712.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article5712.html</guid>
		<dc:date>2015-12-19T14:53:56Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>b_b</dc:creator>


		<dc:subject>_MAX_NB_SESSIONS_OUVERTES</dc:subject>

		<description>
&lt;p&gt;La constante _MAX_NB_SESSIONS_OUVERTES permet de personnaliser le nombre maximum de sessions ouvertes simultan&#233;ment. La valeur par d&#233;faut est de 1000. Pass&#233; ce seuil, les sessions anonymes de plus de 3 heures sont purg&#233;es automatiquement. &lt;br class='autobr' /&gt;
Il est possible de personnaliser la valeur de cette constante dans votre fichier config/mes_options.php (voir l'article qui lui est consacr&#233;). &lt;br class='autobr' /&gt;
Exemple : // Limiter le nombre de sessions ouvertes &#224; 100 define('_MAX_NB_SESSIONS_OUVERTES',100) ;&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique643.html" rel="directory"&gt;Variables et Constantes de personnalisation&lt;/a&gt;

/ 
&lt;a href="https://www.spip.net/@_max_nb_sessions_ouvertes" rel="tag"&gt;_MAX_NB_SESSIONS_OUVERTES&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;La constante &lt;strong&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_MAX_NB_SESSIONS_OUVERTES&lt;/code&gt;&lt;/strong&gt; permet de personnaliser le nombre maximum de sessions ouvertes simultan&#233;ment. La valeur par d&#233;faut est de 1000. Pass&#233; ce seuil, les sessions anonymes de plus de 3 heures sont purg&#233;es automatiquement.&lt;/p&gt;
&lt;p&gt;Il est possible de personnaliser la valeur de cette constante dans votre fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config/mes_options.php&lt;/code&gt; (voir &lt;a href='https://www.spip.net/fr_article4654.html' class=&#034;spip_in&#034;&gt;l'article qui lui est consacr&#233;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Exemple :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;// Limiter le nombre de sessions ouvertes &#224; 100 define('_MAX_NB_SESSIONS_OUVERTES',100); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Voir &lt;a href=&#034;http://core.spip.org/projects/spip/repository/revisions/21596&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://core.spip.org/projects/spip/repository/revisions/21596&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>$GLOBALS['ignore_auth_http']</title>
		<link>https://www.spip.net/fr_article5677.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article5677.html</guid>
		<dc:date>2015-12-19T13:49:46Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>b_b</dc:creator>


		<dc:subject>$GLOBALS['ignore_auth_http']</dc:subject>

		<description>
&lt;p&gt;Cette variable globale permet de dissocier l'authentification de SPIP de l'authentification http Basic. &lt;br class='autobr' /&gt;
Il est possible de personnaliser la valeur de cette variable dans votre fichier config/mes_options.php (voir l'article qui lui est consacr&#233;). // Pour que SPIP ne s'occupe pas de l'authentification Apache $GLOBALS['ignore_auth_http'] = true ; &lt;br class='autobr' /&gt;
Plus d'informations : voir SPIP et l'authentification http&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique643.html" rel="directory"&gt;Variables et Constantes de personnalisation&lt;/a&gt;

/ 
&lt;a href="https://www.spip.net/@globalsignore_auth_http" rel="tag"&gt;$GLOBALS['ignore_auth_http']&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Cette variable globale permet de dissocier l'authentification de SPIP de l'authentification http Basic.&lt;/p&gt;
&lt;p&gt;Il est possible de personnaliser la valeur de cette variable dans votre fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config/mes_options.php&lt;/code&gt; (voir &lt;a href='https://www.spip.net/fr_article4654.html' class=&#034;spip_in&#034;&gt;l'article qui lui est consacr&#233;&lt;/a&gt;).&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;// Pour que SPIP ne s'occupe pas de l'authentification Apache $GLOBALS['ignore_auth_http'] = true; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Plus d'informations&lt;/strong&gt; : voir &lt;a href=&#034;https://programmer.spip.net/1024&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;SPIP et l'authentification http&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
