Completed
Push — master ( 672bcf...567fae )
by cam
53s
created
ecrire/lang/spip_fr_tu.php 1 patch
Indentation   +673 added lines, -673 removed lines patch added patch discarded remove patch
@@ -4,248 +4,248 @@  discard block
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'access_interface_graphique' => 'Retour à l’interface graphique complète',
14
-	'access_mode_texte' => 'Afficher l’interface textuelle simplifiée',
15
-	'admin_debug' => 'debug',
16
-	'admin_modifier_article' => 'Modifier cet article',
17
-	'admin_modifier_auteur' => 'Modifier cet auteur',
18
-	'admin_modifier_breve' => 'Modifier cette brève',
19
-	'admin_modifier_mot' => 'Modifier ce mot-clé',
20
-	'admin_modifier_rubrique' => 'Modifier cette rubrique',
21
-	'admin_recalculer' => 'Recalculer cette page',
22
-	'afficher_calendrier' => 'Afficher le calendrier',
23
-	'afficher_trad' => 'afficher les traductions',
24
-	'alerte_maj_impossible' => '<b>Alerte !</b> La mise à jour de la base SQL vers la version @version@ est impossible, peut-être à cause d’un problème de droit de modification sur la base de données. Contacte ton hébergeur.',
25
-	'alerte_modif_info_concourante' => 'ATTENTION : Cette information a été modifiée par ailleurs. La valeur actuelle est :',
26
-	'analyse_xml' => 'Analyse XML',
27
-	'annuler' => 'Annuler',
28
-	'antispam_champ_vide' => 'Laisse ce champ vide :',
29
-	'articles_recents' => 'Articles les plus récents',
30
-	'attention_champ_mini_nb_caractères' => 'Attention ! @nb@ caractères au minimum',
31
-	'avis_1_erreur_saisie' => 'Il y a 1 erreur dans dans ta saisie, vérifie les informations.',
32
-	'avis_archive_incorrect' => 'le fichier archive n’est pas un fichier SPIP',
33
-	'avis_archive_invalide' => 'le fichier archive n’est pas valide',
34
-	'avis_attention' => 'ATTENTION !',
35
-	'avis_champ_incorrect_type_objet' => 'Nom de champ incorrect @name@ pour objet de type @type@',
36
-	'avis_colonne_inexistante' => 'La colonne @col@ n’existe pas',
37
-	'avis_erreur' => 'Erreur : voir ci-dessous',
38
-	'avis_erreur_connexion' => 'Erreur de connexion',
39
-	'avis_erreur_cookie' => 'problème de cookie',
40
-	'avis_erreur_fonction_contexte' => 'Erreur de programmation. Cette fonction ne doit pas être appelée dans ce contexte.',
41
-	'avis_erreur_mysql' => 'Erreur SQL',
42
-	'avis_erreur_sauvegarde' => 'Erreur dans la sauvegarde (@type@ @id_objet@) !',
43
-	'avis_erreur_visiteur' => 'Problème d’accès à l’espace privé',
44
-	'avis_nb_erreurs_saisie' => 'Il y a @nb@ erreurs dans ta saisie, vérifie les informations.',
12
+    // A
13
+    'access_interface_graphique' => 'Retour à l’interface graphique complète',
14
+    'access_mode_texte' => 'Afficher l’interface textuelle simplifiée',
15
+    'admin_debug' => 'debug',
16
+    'admin_modifier_article' => 'Modifier cet article',
17
+    'admin_modifier_auteur' => 'Modifier cet auteur',
18
+    'admin_modifier_breve' => 'Modifier cette brève',
19
+    'admin_modifier_mot' => 'Modifier ce mot-clé',
20
+    'admin_modifier_rubrique' => 'Modifier cette rubrique',
21
+    'admin_recalculer' => 'Recalculer cette page',
22
+    'afficher_calendrier' => 'Afficher le calendrier',
23
+    'afficher_trad' => 'afficher les traductions',
24
+    'alerte_maj_impossible' => '<b>Alerte !</b> La mise à jour de la base SQL vers la version @version@ est impossible, peut-être à cause d’un problème de droit de modification sur la base de données. Contacte ton hébergeur.',
25
+    'alerte_modif_info_concourante' => 'ATTENTION : Cette information a été modifiée par ailleurs. La valeur actuelle est :',
26
+    'analyse_xml' => 'Analyse XML',
27
+    'annuler' => 'Annuler',
28
+    'antispam_champ_vide' => 'Laisse ce champ vide :',
29
+    'articles_recents' => 'Articles les plus récents',
30
+    'attention_champ_mini_nb_caractères' => 'Attention ! @nb@ caractères au minimum',
31
+    'avis_1_erreur_saisie' => 'Il y a 1 erreur dans dans ta saisie, vérifie les informations.',
32
+    'avis_archive_incorrect' => 'le fichier archive n’est pas un fichier SPIP',
33
+    'avis_archive_invalide' => 'le fichier archive n’est pas valide',
34
+    'avis_attention' => 'ATTENTION !',
35
+    'avis_champ_incorrect_type_objet' => 'Nom de champ incorrect @name@ pour objet de type @type@',
36
+    'avis_colonne_inexistante' => 'La colonne @col@ n’existe pas',
37
+    'avis_erreur' => 'Erreur : voir ci-dessous',
38
+    'avis_erreur_connexion' => 'Erreur de connexion',
39
+    'avis_erreur_cookie' => 'problème de cookie',
40
+    'avis_erreur_fonction_contexte' => 'Erreur de programmation. Cette fonction ne doit pas être appelée dans ce contexte.',
41
+    'avis_erreur_mysql' => 'Erreur SQL',
42
+    'avis_erreur_sauvegarde' => 'Erreur dans la sauvegarde (@type@ @id_objet@) !',
43
+    'avis_erreur_visiteur' => 'Problème d’accès à l’espace privé',
44
+    'avis_nb_erreurs_saisie' => 'Il y a @nb@ erreurs dans ta saisie, vérifie les informations.',
45 45
 
46
-	// B
47
-	'barre_a_accent_grave' => 'Insérer un A accent grave majuscule',
48
-	'barre_aide' => 'Utilise les raccourcis typographiques pour enrichir ta mise en page',
49
-	'barre_e_accent_aigu' => 'Insérer un E accent aigu majuscule',
50
-	'barre_eo' => 'Insérer un E dans l’O',
51
-	'barre_eo_maj' => 'Insérer un E dans l’O majuscule',
52
-	'barre_euro' => 'Insérer le symbole ?',
53
-	'barre_gras' => 'Mettre en {{gras}}',
54
-	'barre_guillemets' => 'Entourer de « guillemets français »',
55
-	'barre_guillemets_simples' => 'Entourer de ?guillemets de second niveau ?',
56
-	'barre_intertitre' => 'Transformer en {{{intertitre}}}',
57
-	'barre_italic' => 'Mettre en {italique}',
58
-	'barre_lien' => 'Transformer en [lien hypertexte->http://...]',
59
-	'barre_lien_input' => 'Indiquer l’adresse de ton lien (tu peux indiquer une adresse Web sous la forme http://www.monsite/com ou simplement indiquer le numéro d’un article de ce site.',
60
-	'barre_note' => 'Transformer en [[Note de bas de page]]',
61
-	'barre_paragraphe' => 'Crée un paragraphe',
62
-	'barre_quote' => '<quote>Citer un message</quote>',
63
-	'bouton_changer' => 'Changer',
64
-	'bouton_chercher' => 'Chercher',
65
-	'bouton_choisir' => 'Choisir',
66
-	'bouton_deplacer' => 'Déplacer',
67
-	'bouton_download' => 'Télécharger',
68
-	'bouton_enregistrer' => 'Enregistrer',
69
-	'bouton_radio_desactiver_messagerie_interne' => 'Désactiver la messagerie interne',
70
-	'bouton_radio_envoi_annonces' => 'Envoyer les annonces éditoriales',
71
-	'bouton_radio_non_envoi_annonces' => 'Ne pas envoyer d’annonces',
72
-	'bouton_radio_non_envoi_liste_nouveautes' => 'Ne pas envoyer la liste des nouveautés',
73
-	'bouton_recharger_page' => 'recharger cette page',
74
-	'bouton_telecharger' => 'Télécharger',
75
-	'bouton_upload' => 'Téléverser',
76
-	'bouton_valider' => 'Valider',
46
+    // B
47
+    'barre_a_accent_grave' => 'Insérer un A accent grave majuscule',
48
+    'barre_aide' => 'Utilise les raccourcis typographiques pour enrichir ta mise en page',
49
+    'barre_e_accent_aigu' => 'Insérer un E accent aigu majuscule',
50
+    'barre_eo' => 'Insérer un E dans l’O',
51
+    'barre_eo_maj' => 'Insérer un E dans l’O majuscule',
52
+    'barre_euro' => 'Insérer le symbole ?',
53
+    'barre_gras' => 'Mettre en {{gras}}',
54
+    'barre_guillemets' => 'Entourer de « guillemets français »',
55
+    'barre_guillemets_simples' => 'Entourer de ?guillemets de second niveau ?',
56
+    'barre_intertitre' => 'Transformer en {{{intertitre}}}',
57
+    'barre_italic' => 'Mettre en {italique}',
58
+    'barre_lien' => 'Transformer en [lien hypertexte->http://...]',
59
+    'barre_lien_input' => 'Indiquer l’adresse de ton lien (tu peux indiquer une adresse Web sous la forme http://www.monsite/com ou simplement indiquer le numéro d’un article de ce site.',
60
+    'barre_note' => 'Transformer en [[Note de bas de page]]',
61
+    'barre_paragraphe' => 'Crée un paragraphe',
62
+    'barre_quote' => '<quote>Citer un message</quote>',
63
+    'bouton_changer' => 'Changer',
64
+    'bouton_chercher' => 'Chercher',
65
+    'bouton_choisir' => 'Choisir',
66
+    'bouton_deplacer' => 'Déplacer',
67
+    'bouton_download' => 'Télécharger',
68
+    'bouton_enregistrer' => 'Enregistrer',
69
+    'bouton_radio_desactiver_messagerie_interne' => 'Désactiver la messagerie interne',
70
+    'bouton_radio_envoi_annonces' => 'Envoyer les annonces éditoriales',
71
+    'bouton_radio_non_envoi_annonces' => 'Ne pas envoyer d’annonces',
72
+    'bouton_radio_non_envoi_liste_nouveautes' => 'Ne pas envoyer la liste des nouveautés',
73
+    'bouton_recharger_page' => 'recharger cette page',
74
+    'bouton_telecharger' => 'Télécharger',
75
+    'bouton_upload' => 'Téléverser',
76
+    'bouton_valider' => 'Valider',
77 77
 
78
-	// C
79
-	'cal_apresmidi' => 'après-midi',
80
-	'cal_jour_entier' => 'jour entier',
81
-	'cal_matin' => 'matin',
82
-	'cal_par_jour' => 'calendrier par jour',
83
-	'cal_par_mois' => 'calendrier par mois',
84
-	'cal_par_semaine' => 'calendrier par semaine',
85
-	'choix_couleur_interface' => 'couleur ',
86
-	'choix_interface' => 'choix  de l’interface',
87
-	'colonne' => 'Colonne',
88
-	'confirm_changer_statut' => 'Attention, tu as demandé à changer le statut de cet élément. Souhaites-tu continuer ?',
89
-	'correcte' => 'correcte',
78
+    // C
79
+    'cal_apresmidi' => 'après-midi',
80
+    'cal_jour_entier' => 'jour entier',
81
+    'cal_matin' => 'matin',
82
+    'cal_par_jour' => 'calendrier par jour',
83
+    'cal_par_mois' => 'calendrier par mois',
84
+    'cal_par_semaine' => 'calendrier par semaine',
85
+    'choix_couleur_interface' => 'couleur ',
86
+    'choix_interface' => 'choix  de l’interface',
87
+    'colonne' => 'Colonne',
88
+    'confirm_changer_statut' => 'Attention, tu as demandé à changer le statut de cet élément. Souhaites-tu continuer ?',
89
+    'correcte' => 'correcte',
90 90
 
91
-	// D
92
-	'date_aujourdhui' => 'aujourd’hui',
93
-	'date_avant_jc' => 'av. J.C.',
94
-	'date_dans' => 'dans @delai@',
95
-	'date_de_mois_1' => '@j@ @nommois@',
96
-	'date_de_mois_10' => '@j@ @nommois@',
97
-	'date_de_mois_11' => '@j@ @nommois@',
98
-	'date_de_mois_12' => '@j@ @nommois@',
99
-	'date_de_mois_2' => '@j@ @nommois@',
100
-	'date_de_mois_3' => '@j@ @nommois@',
101
-	'date_de_mois_4' => '@j@ @nommois@',
102
-	'date_de_mois_5' => '@j@ @nommois@',
103
-	'date_de_mois_6' => '@j@ @nommois@',
104
-	'date_de_mois_7' => '@j@ @nommois@',
105
-	'date_de_mois_8' => '@j@ @nommois@',
106
-	'date_de_mois_9' => '@j@ @nommois@',
107
-	'date_demain' => 'demain',
108
-	'date_fmt_heures_minutes' => '@h@h@m@min',
109
-	'date_fmt_heures_minutes_court' => '@h@h@m@',
110
-	'date_fmt_jour' => '@nomjour@ @jour@',
111
-	'date_fmt_jour_heure' => '@jour@ à @heure@',
112
-	'date_fmt_jour_heure_debut_fin' => 'le @jour@ de @heure_debut@ à @heure_fin@',
113
-	'date_fmt_jour_heure_debut_fin_abbr' => 'le @dtstart@@jour@ de @heure_debut@@dtabbr@ à @dtstart@@heure_fin@@dtend@',
114
-	'date_fmt_jour_mois' => '@jour@ @nommois@',
115
-	'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
116
-	'date_fmt_mois_annee' => '@nommois@ @annee@',
117
-	'date_fmt_nomjour' => '@nomjour@ @date@',
118
-	'date_fmt_nomjour_date' => 'le @nomjour@ @date@',
119
-	'date_fmt_periode' => 'Du @date_debut@ au @date_fin@',
120
-	'date_fmt_periode_abbr' => 'Du @dtart@@date_debut@@dtabbr@ au @dtend@@date_fin@@dtabbr@',
121
-	'date_fmt_periode_from' => 'Du',
122
-	'date_fmt_periode_to' => 'au',
123
-	'date_fmt_saison_annee' => '@saison@ @annee@',
124
-	'date_heures' => 'heures',
125
-	'date_hier' => 'hier',
126
-	'date_il_y_a' => 'il y a @delai@',
127
-	'date_jnum1' => '1er',
128
-	'date_jnum10' => '10',
129
-	'date_jnum11' => '11',
130
-	'date_jnum12' => '12',
131
-	'date_jnum13' => '13',
132
-	'date_jnum14' => '14',
133
-	'date_jnum15' => '15',
134
-	'date_jnum16' => '16',
135
-	'date_jnum17' => '17',
136
-	'date_jnum18' => '18',
137
-	'date_jnum19' => '19',
138
-	'date_jnum2' => '2',
139
-	'date_jnum20' => '20',
140
-	'date_jnum21' => '21',
141
-	'date_jnum22' => '22',
142
-	'date_jnum23' => '23',
143
-	'date_jnum24' => '24',
144
-	'date_jnum25' => '25',
145
-	'date_jnum26' => '26',
146
-	'date_jnum27' => '27',
147
-	'date_jnum28' => '28',
148
-	'date_jnum29' => '29',
149
-	'date_jnum3' => '3',
150
-	'date_jnum30' => '30',
151
-	'date_jnum31' => '31',
152
-	'date_jnum4' => '4',
153
-	'date_jnum5' => '5',
154
-	'date_jnum6' => '6',
155
-	'date_jnum7' => '7',
156
-	'date_jnum8' => '8',
157
-	'date_jnum9' => '9',
158
-	'date_jour_1' => 'dimanche',
159
-	'date_jour_1_abbr' => 'dim.',
160
-	'date_jour_1_initiale' => 'd.',
161
-	'date_jour_2' => 'lundi',
162
-	'date_jour_2_abbr' => 'lun.',
163
-	'date_jour_2_initiale' => 'l.',
164
-	'date_jour_3' => 'mardi',
165
-	'date_jour_3_abbr' => 'mar.',
166
-	'date_jour_3_initiale' => 'm.',
167
-	'date_jour_4' => 'mercredi',
168
-	'date_jour_4_abbr' => 'mer.',
169
-	'date_jour_4_initiale' => 'm.',
170
-	'date_jour_5' => 'jeudi',
171
-	'date_jour_5_abbr' => 'jeu.',
172
-	'date_jour_5_initiale' => 'j.',
173
-	'date_jour_6' => 'vendredi',
174
-	'date_jour_6_abbr' => 'ven.',
175
-	'date_jour_6_initiale' => 'v.',
176
-	'date_jour_7' => 'samedi',
177
-	'date_jour_7_abbr' => 'sam.',
178
-	'date_jour_7_initiale' => 's.',
179
-	'date_jours' => 'jours',
180
-	'date_minutes' => 'minutes',
181
-	'date_mois' => 'mois',
182
-	'date_mois_1' => 'janvier',
183
-	'date_mois_10' => 'octobre',
184
-	'date_mois_10_abbr' => 'oct.',
185
-	'date_mois_11' => 'novembre',
186
-	'date_mois_11_abbr' => 'nov.',
187
-	'date_mois_12' => 'décembre',
188
-	'date_mois_12_abbr' => 'déc.',
189
-	'date_mois_1_abbr' => 'janv.',
190
-	'date_mois_2' => 'février',
191
-	'date_mois_2_abbr' => 'févr.',
192
-	'date_mois_3' => 'mars',
193
-	'date_mois_3_abbr' => 'mars',
194
-	'date_mois_4' => 'avril',
195
-	'date_mois_4_abbr' => 'avr.',
196
-	'date_mois_5' => 'mai',
197
-	'date_mois_5_abbr' => 'mai',
198
-	'date_mois_6' => 'juin',
199
-	'date_mois_6_abbr' => 'juin',
200
-	'date_mois_7' => 'juillet',
201
-	'date_mois_7_abbr' => 'juil.',
202
-	'date_mois_8' => 'août',
203
-	'date_mois_8_abbr' => 'août',
204
-	'date_mois_9' => 'septembre',
205
-	'date_mois_9_abbr' => 'sept.',
206
-	'date_saison_1' => 'hiver',
207
-	'date_saison_2' => 'printemps',
208
-	'date_saison_3' => 'été',
209
-	'date_saison_4' => 'automne',
210
-	'date_secondes' => 'secondes',
211
-	'date_semaines' => 'semaines',
212
-	'date_un_mois' => 'mois',
213
-	'date_une_heure' => 'heure',
214
-	'date_une_minute' => 'minute',
215
-	'date_une_seconde' => 'seconde',
216
-	'date_une_semaine' => 'semaine',
217
-	'dirs_commencer' => ' afin de commencer réellement l’installation',
218
-	'dirs_preliminaire' => 'Préliminaire : <b>Régler les droits d’accès</b>',
219
-	'dirs_probleme_droits' => 'Problème de droits d’accès',
220
-	'dirs_repertoires_absents' => '<p><b>Les répertoires suivants n’ont pas été trouvés :</b></p><ul>@bad_dirs@.</ul>
91
+    // D
92
+    'date_aujourdhui' => 'aujourd’hui',
93
+    'date_avant_jc' => 'av. J.C.',
94
+    'date_dans' => 'dans @delai@',
95
+    'date_de_mois_1' => '@j@ @nommois@',
96
+    'date_de_mois_10' => '@j@ @nommois@',
97
+    'date_de_mois_11' => '@j@ @nommois@',
98
+    'date_de_mois_12' => '@j@ @nommois@',
99
+    'date_de_mois_2' => '@j@ @nommois@',
100
+    'date_de_mois_3' => '@j@ @nommois@',
101
+    'date_de_mois_4' => '@j@ @nommois@',
102
+    'date_de_mois_5' => '@j@ @nommois@',
103
+    'date_de_mois_6' => '@j@ @nommois@',
104
+    'date_de_mois_7' => '@j@ @nommois@',
105
+    'date_de_mois_8' => '@j@ @nommois@',
106
+    'date_de_mois_9' => '@j@ @nommois@',
107
+    'date_demain' => 'demain',
108
+    'date_fmt_heures_minutes' => '@h@h@m@min',
109
+    'date_fmt_heures_minutes_court' => '@h@h@m@',
110
+    'date_fmt_jour' => '@nomjour@ @jour@',
111
+    'date_fmt_jour_heure' => '@jour@ à @heure@',
112
+    'date_fmt_jour_heure_debut_fin' => 'le @jour@ de @heure_debut@ à @heure_fin@',
113
+    'date_fmt_jour_heure_debut_fin_abbr' => 'le @dtstart@@jour@ de @heure_debut@@dtabbr@ à @dtstart@@heure_fin@@dtend@',
114
+    'date_fmt_jour_mois' => '@jour@ @nommois@',
115
+    'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
116
+    'date_fmt_mois_annee' => '@nommois@ @annee@',
117
+    'date_fmt_nomjour' => '@nomjour@ @date@',
118
+    'date_fmt_nomjour_date' => 'le @nomjour@ @date@',
119
+    'date_fmt_periode' => 'Du @date_debut@ au @date_fin@',
120
+    'date_fmt_periode_abbr' => 'Du @dtart@@date_debut@@dtabbr@ au @dtend@@date_fin@@dtabbr@',
121
+    'date_fmt_periode_from' => 'Du',
122
+    'date_fmt_periode_to' => 'au',
123
+    'date_fmt_saison_annee' => '@saison@ @annee@',
124
+    'date_heures' => 'heures',
125
+    'date_hier' => 'hier',
126
+    'date_il_y_a' => 'il y a @delai@',
127
+    'date_jnum1' => '1er',
128
+    'date_jnum10' => '10',
129
+    'date_jnum11' => '11',
130
+    'date_jnum12' => '12',
131
+    'date_jnum13' => '13',
132
+    'date_jnum14' => '14',
133
+    'date_jnum15' => '15',
134
+    'date_jnum16' => '16',
135
+    'date_jnum17' => '17',
136
+    'date_jnum18' => '18',
137
+    'date_jnum19' => '19',
138
+    'date_jnum2' => '2',
139
+    'date_jnum20' => '20',
140
+    'date_jnum21' => '21',
141
+    'date_jnum22' => '22',
142
+    'date_jnum23' => '23',
143
+    'date_jnum24' => '24',
144
+    'date_jnum25' => '25',
145
+    'date_jnum26' => '26',
146
+    'date_jnum27' => '27',
147
+    'date_jnum28' => '28',
148
+    'date_jnum29' => '29',
149
+    'date_jnum3' => '3',
150
+    'date_jnum30' => '30',
151
+    'date_jnum31' => '31',
152
+    'date_jnum4' => '4',
153
+    'date_jnum5' => '5',
154
+    'date_jnum6' => '6',
155
+    'date_jnum7' => '7',
156
+    'date_jnum8' => '8',
157
+    'date_jnum9' => '9',
158
+    'date_jour_1' => 'dimanche',
159
+    'date_jour_1_abbr' => 'dim.',
160
+    'date_jour_1_initiale' => 'd.',
161
+    'date_jour_2' => 'lundi',
162
+    'date_jour_2_abbr' => 'lun.',
163
+    'date_jour_2_initiale' => 'l.',
164
+    'date_jour_3' => 'mardi',
165
+    'date_jour_3_abbr' => 'mar.',
166
+    'date_jour_3_initiale' => 'm.',
167
+    'date_jour_4' => 'mercredi',
168
+    'date_jour_4_abbr' => 'mer.',
169
+    'date_jour_4_initiale' => 'm.',
170
+    'date_jour_5' => 'jeudi',
171
+    'date_jour_5_abbr' => 'jeu.',
172
+    'date_jour_5_initiale' => 'j.',
173
+    'date_jour_6' => 'vendredi',
174
+    'date_jour_6_abbr' => 'ven.',
175
+    'date_jour_6_initiale' => 'v.',
176
+    'date_jour_7' => 'samedi',
177
+    'date_jour_7_abbr' => 'sam.',
178
+    'date_jour_7_initiale' => 's.',
179
+    'date_jours' => 'jours',
180
+    'date_minutes' => 'minutes',
181
+    'date_mois' => 'mois',
182
+    'date_mois_1' => 'janvier',
183
+    'date_mois_10' => 'octobre',
184
+    'date_mois_10_abbr' => 'oct.',
185
+    'date_mois_11' => 'novembre',
186
+    'date_mois_11_abbr' => 'nov.',
187
+    'date_mois_12' => 'décembre',
188
+    'date_mois_12_abbr' => 'déc.',
189
+    'date_mois_1_abbr' => 'janv.',
190
+    'date_mois_2' => 'février',
191
+    'date_mois_2_abbr' => 'févr.',
192
+    'date_mois_3' => 'mars',
193
+    'date_mois_3_abbr' => 'mars',
194
+    'date_mois_4' => 'avril',
195
+    'date_mois_4_abbr' => 'avr.',
196
+    'date_mois_5' => 'mai',
197
+    'date_mois_5_abbr' => 'mai',
198
+    'date_mois_6' => 'juin',
199
+    'date_mois_6_abbr' => 'juin',
200
+    'date_mois_7' => 'juillet',
201
+    'date_mois_7_abbr' => 'juil.',
202
+    'date_mois_8' => 'août',
203
+    'date_mois_8_abbr' => 'août',
204
+    'date_mois_9' => 'septembre',
205
+    'date_mois_9_abbr' => 'sept.',
206
+    'date_saison_1' => 'hiver',
207
+    'date_saison_2' => 'printemps',
208
+    'date_saison_3' => 'été',
209
+    'date_saison_4' => 'automne',
210
+    'date_secondes' => 'secondes',
211
+    'date_semaines' => 'semaines',
212
+    'date_un_mois' => 'mois',
213
+    'date_une_heure' => 'heure',
214
+    'date_une_minute' => 'minute',
215
+    'date_une_seconde' => 'seconde',
216
+    'date_une_semaine' => 'semaine',
217
+    'dirs_commencer' => ' afin de commencer réellement l’installation',
218
+    'dirs_preliminaire' => 'Préliminaire : <b>Régler les droits d’accès</b>',
219
+    'dirs_probleme_droits' => 'Problème de droits d’accès',
220
+    'dirs_repertoires_absents' => '<p><b>Les répertoires suivants n’ont pas été trouvés :</b></p><ul>@bad_dirs@.</ul>
221 221
   <p>Il est probable que cela soit dû à un problème de mauvaise mise en majuscules ou minuscules.
222 222
   Vérifie que les minuscules et majuscules de ces répertoires concordent bien avec ce qui est affiché
223 223
   ci-dessus ; si ce n’est pas le cas, renomme les répertoires avec ton logiciel FTP de façon à corriger l’erreur.</p>
224 224
   <p>Une fois cette manipulation effectuée, tu pourras ',
225
-	'dirs_repertoires_suivants' => '<p><b>Les répertoires suivants ne sont pas accessibles en écriture :</b></p> <ul>@bad_dirs@</ul>
225
+    'dirs_repertoires_suivants' => '<p><b>Les répertoires suivants ne sont pas accessibles en écriture :</b></p> <ul>@bad_dirs@</ul>
226 226
   <p>Pour y remédier, utilise ton client FTP afin de régler les droits d’accès de chacun
227 227
   de ces répertoires. La procédure est expliquée en détail dans le guide d’installation.</p>
228 228
   <p>Une fois cette manipulation effectuée, tu pourras ',
229
-	'double_occurrence' => 'Double occurrence de @balise@',
229
+    'double_occurrence' => 'Double occurrence de @balise@',
230 230
 
231
-	// E
232
-	'en_cours' => 'en cours',
233
-	'envoi_via_le_site' => 'Envoi via le site',
234
-	'erreur' => 'Erreur',
235
-	'erreur_balise_non_fermee' => 'dernière balise non refermée :',
236
-	'erreur_technique_ajaxform' => 'Ooops. Une erreur innatendue a empêché de soumettre le formulaire. Tu peux essayer à nouveau.',
237
-	'erreur_technique_enregistrement_champs' => 'Une erreur technique a empêché l’enregistrement correct du champ @champs@.',
238
-	'erreur_technique_enregistrement_impossible' => 'Une erreur technique a empêché l’enregistrement.',
239
-	'erreur_texte' => 'erreur(s)',
240
-	'etape' => 'Étape',
231
+    // E
232
+    'en_cours' => 'en cours',
233
+    'envoi_via_le_site' => 'Envoi via le site',
234
+    'erreur' => 'Erreur',
235
+    'erreur_balise_non_fermee' => 'dernière balise non refermée :',
236
+    'erreur_technique_ajaxform' => 'Ooops. Une erreur innatendue a empêché de soumettre le formulaire. Tu peux essayer à nouveau.',
237
+    'erreur_technique_enregistrement_champs' => 'Une erreur technique a empêché l’enregistrement correct du champ @champs@.',
238
+    'erreur_technique_enregistrement_impossible' => 'Une erreur technique a empêché l’enregistrement.',
239
+    'erreur_texte' => 'erreur(s)',
240
+    'etape' => 'Étape',
241 241
 
242
-	// F
243
-	'fichier_introuvable' => 'Fichier @fichier@ introuvable.',
244
-	'fonction_introuvable' => 'Fonction @fonction@() introuvable.',
245
-	'form_auteur_confirmation' => 'Confirme ton adresse email',
246
-	'form_auteur_email_modifie' => 'Ton adresse email a été modifiée.',
247
-	'form_auteur_envoi_mail_confirmation' => 'Un courrier électronique de confirmation vient d’être envoyé à @email@. Visite l’adresse Web mentionnée dans ce courrier pour valider ton adresse mail.',
248
-	'form_auteur_mail_confirmation' => 'Salut,
242
+    // F
243
+    'fichier_introuvable' => 'Fichier @fichier@ introuvable.',
244
+    'fonction_introuvable' => 'Fonction @fonction@() introuvable.',
245
+    'form_auteur_confirmation' => 'Confirme ton adresse email',
246
+    'form_auteur_email_modifie' => 'Ton adresse email a été modifiée.',
247
+    'form_auteur_envoi_mail_confirmation' => 'Un courrier électronique de confirmation vient d’être envoyé à @email@. Visite l’adresse Web mentionnée dans ce courrier pour valider ton adresse mail.',
248
+    'form_auteur_mail_confirmation' => 'Salut,
249 249
 
250 250
 Tu as demandé à changer ton adresse email.
251 251
 Pour confirmer ta nouvelle adresse, il suffit de te connecter à
@@ -254,346 +254,346 @@  discard block
 block discarded – undo
254 254
 
255 255
     @url@
256 256
 ',
257
-	'form_deja_inscrit' => 'Tu es déjà inscrit.',
258
-	'form_email_non_valide' => 'Ton adresse email n’est pas valide.',
259
-	'form_forum_access_refuse' => 'Tu n’as plus accès à ce site.',
260
-	'form_forum_bonjour' => 'Salut @nom@,',
261
-	'form_forum_confirmer_email' => 'Pour confirmer ton adresse email, va à cette adresse : @url_confirm@',
262
-	'form_forum_email_deja_enregistre' => 'Cette adresse email est déjà enregistrée, tu peux donc utiliser ton mot de passe habituel.',
263
-	'form_forum_identifiant_mail' => 'Ton nouvel identifiant vient de t’être envoyé par email.',
264
-	'form_forum_identifiants' => 'Identifiants personnels',
265
-	'form_forum_indiquer_nom_email' => 'Indique ici ton nom et ton adresse email. Ton identifiant personnel te parviendra rapidement, par courrier électronique.',
266
-	'form_forum_login' => 'login :',
267
-	'form_forum_message_auto' => '(ceci est un message automatique)',
268
-	'form_forum_pass' => 'mot de passe :',
269
-	'form_forum_probleme_mail' => 'Problème de mail : l’identifiant ne peut pas être envoyé.',
270
-	'form_forum_voici1' => 'Voici tes identifiants pour pouvoir participer à la vie du site "@nom_site_spip@" (@adresse_site@) :',
271
-	'form_forum_voici2' => 'Voici tes identifiants pour proposer des articles sur
257
+    'form_deja_inscrit' => 'Tu es déjà inscrit.',
258
+    'form_email_non_valide' => 'Ton adresse email n’est pas valide.',
259
+    'form_forum_access_refuse' => 'Tu n’as plus accès à ce site.',
260
+    'form_forum_bonjour' => 'Salut @nom@,',
261
+    'form_forum_confirmer_email' => 'Pour confirmer ton adresse email, va à cette adresse : @url_confirm@',
262
+    'form_forum_email_deja_enregistre' => 'Cette adresse email est déjà enregistrée, tu peux donc utiliser ton mot de passe habituel.',
263
+    'form_forum_identifiant_mail' => 'Ton nouvel identifiant vient de t’être envoyé par email.',
264
+    'form_forum_identifiants' => 'Identifiants personnels',
265
+    'form_forum_indiquer_nom_email' => 'Indique ici ton nom et ton adresse email. Ton identifiant personnel te parviendra rapidement, par courrier électronique.',
266
+    'form_forum_login' => 'login :',
267
+    'form_forum_message_auto' => '(ceci est un message automatique)',
268
+    'form_forum_pass' => 'mot de passe :',
269
+    'form_forum_probleme_mail' => 'Problème de mail : l’identifiant ne peut pas être envoyé.',
270
+    'form_forum_voici1' => 'Voici tes identifiants pour pouvoir participer à la vie du site "@nom_site_spip@" (@adresse_site@) :',
271
+    'form_forum_voici2' => 'Voici tes identifiants pour proposer des articles sur
272 272
 le site "@nom_site_spip@" (@adresse_login@) :',
273
-	'form_indiquer_email' => 'Indique ton adresse email.',
274
-	'form_indiquer_nom' => 'Indique ton nom.',
275
-	'form_indiquer_nom_site' => 'Indique le nom de ton site.',
276
-	'form_pet_deja_enregistre' => 'Ce site est déjà enregistré',
277
-	'form_pet_signature_pasprise' => 'Ta signature n’est pas prise en compte.',
278
-	'form_prop_confirmer_envoi' => 'Confirmer l’envoi',
279
-	'form_prop_description' => 'Description/commentaire',
280
-	'form_prop_enregistre' => 'Ta proposition est enregistrée, elle apparaîtra en ligne après validation par les responsables de ce site.',
281
-	'form_prop_envoyer' => 'Envoyer un message',
282
-	'form_prop_indiquer_email' => 'Indiquer une adresse email valide',
283
-	'form_prop_indiquer_nom_site' => 'Indiquer le nom du site.',
284
-	'form_prop_indiquer_sujet' => 'Indiquer un sujet',
285
-	'form_prop_message_envoye' => 'Message envoyé',
286
-	'form_prop_non_enregistre' => 'Ta proposition n’a pas été enregistrée.',
287
-	'form_prop_sujet' => 'Sujet',
288
-	'form_prop_url_site' => 'Adresse URL du site',
289
-	'format_date_attendu' => 'Saisir une date au format jj/mm/aaaa.',
290
-	'format_date_incorrecte' => 'La date ou son format est incorrect',
291
-	'format_heure_attendu' => 'Saisir une heure au format hh:mm.',
292
-	'format_heure_incorrecte' => 'L’heure ou son format est incorrect',
293
-	'forum_non_inscrit' => 'Tu n’es pas inscrit, ou l’adresse ou le mot de passe sont erronés.',
294
-	'forum_par_auteur' => 'par @auteur@',
295
-	'forum_titre_erreur' => 'Erreur...',
273
+    'form_indiquer_email' => 'Indique ton adresse email.',
274
+    'form_indiquer_nom' => 'Indique ton nom.',
275
+    'form_indiquer_nom_site' => 'Indique le nom de ton site.',
276
+    'form_pet_deja_enregistre' => 'Ce site est déjà enregistré',
277
+    'form_pet_signature_pasprise' => 'Ta signature n’est pas prise en compte.',
278
+    'form_prop_confirmer_envoi' => 'Confirmer l’envoi',
279
+    'form_prop_description' => 'Description/commentaire',
280
+    'form_prop_enregistre' => 'Ta proposition est enregistrée, elle apparaîtra en ligne après validation par les responsables de ce site.',
281
+    'form_prop_envoyer' => 'Envoyer un message',
282
+    'form_prop_indiquer_email' => 'Indiquer une adresse email valide',
283
+    'form_prop_indiquer_nom_site' => 'Indiquer le nom du site.',
284
+    'form_prop_indiquer_sujet' => 'Indiquer un sujet',
285
+    'form_prop_message_envoye' => 'Message envoyé',
286
+    'form_prop_non_enregistre' => 'Ta proposition n’a pas été enregistrée.',
287
+    'form_prop_sujet' => 'Sujet',
288
+    'form_prop_url_site' => 'Adresse URL du site',
289
+    'format_date_attendu' => 'Saisir une date au format jj/mm/aaaa.',
290
+    'format_date_incorrecte' => 'La date ou son format est incorrect',
291
+    'format_heure_attendu' => 'Saisir une heure au format hh:mm.',
292
+    'format_heure_incorrecte' => 'L’heure ou son format est incorrect',
293
+    'forum_non_inscrit' => 'Tu n’es pas inscrit, ou l’adresse ou le mot de passe sont erronés.',
294
+    'forum_par_auteur' => 'par @auteur@',
295
+    'forum_titre_erreur' => 'Erreur...',
296 296
 
297
-	// I
298
-	'ical_texte_rss_articles' => 'Le fichier « backend » des articles de ce site se trouve à l’adresse :',
299
-	'ical_texte_rss_articles2' => 'Tu peux également obtenir des fichiers « backend » pour les articles de chaque rubrique du site :',
300
-	'ical_texte_rss_breves' => 'Il existe de plus un fichier contenant les brèves du site. En précisant un numéro de rubrique, tu obtiendras uniquement les brèves de cette rubrique.',
301
-	'icone_a_suivre' => 'À suivre',
302
-	'icone_admin_site' => 'Administration du site',
303
-	'icone_agenda' => 'Agenda',
304
-	'icone_aide_ligne' => 'Aide',
305
-	'icone_articles' => 'Articles',
306
-	'icone_auteurs' => 'Auteurs',
307
-	'icone_brouteur' => 'Navigation rapide',
308
-	'icone_configuration_site' => 'Configuration',
309
-	'icone_configurer_site' => 'Configurer ton site',
310
-	'icone_creer_nouvel_auteur' => 'Créer un nouvel auteur',
311
-	'icone_creer_rubrique' => 'Créer une rubrique',
312
-	'icone_creer_sous_rubrique' => 'Créer une sous-rubrique',
313
-	'icone_deconnecter' => 'Se déconnecter',
314
-	'icone_discussions' => 'Discussions',
315
-	'icone_doc_rubrique' => 'Documents des rubriques',
316
-	'icone_ecrire_article' => 'Écrire un nouvel article',
317
-	'icone_edition_site' => 'Édition',
318
-	'icone_gestion_langues' => 'Gestion des langues',
319
-	'icone_informations_personnelles' => 'Informations personnelles',
320
-	'icone_interface_complet' => 'interface complète',
321
-	'icone_interface_simple' => 'Interface simplifiée',
322
-	'icone_maintenance_site' => 'Maintenance du site',
323
-	'icone_messagerie_personnelle' => 'Messagerie personnelle',
324
-	'icone_repartition_debut' => 'Afficher la répartition depuis le début',
325
-	'icone_rubriques' => 'Rubriques',
326
-	'icone_sauver_site' => 'Sauvegarde du site',
327
-	'icone_site_entier' => 'Tout le site',
328
-	'icone_sites_references' => 'Sites référencés',
329
-	'icone_statistiques' => 'Statistiques du site',
330
-	'icone_suivi_activite' => 'Suivre la vie du site',
331
-	'icone_suivi_actualite' => 'Évolution du site',
332
-	'icone_suivi_pettions' => 'Suivre/gérer les pétitions',
333
-	'icone_suivi_revisions' => 'Modifications des articles',
334
-	'icone_supprimer_document' => 'Supprimer ce document',
335
-	'icone_supprimer_image' => 'Supprimer cette image',
336
-	'icone_tous_articles' => 'Tous tes articles',
337
-	'icone_tous_auteur' => 'Tous les auteurs',
338
-	'icone_tous_visiteur' => 'Tous les visiteurs',
339
-	'icone_visiter_site' => 'Voir le site public',
340
-	'icone_voir_en_ligne' => 'Voir en ligne',
341
-	'img_indisponible' => 'image indisponible',
342
-	'impossible' => 'impossible',
343
-	'info_a_suivre' => 'À SUIVRE »',
344
-	'info_acces_interdit' => 'Accès interdit',
345
-	'info_acces_refuse' => 'Accès refusé',
346
-	'info_action' => 'Action : @action@',
347
-	'info_administrer_rubriques' => 'Tu peux administrer cette rubrique et ses sous-rubriques',
348
-	'info_adresse_non_indiquee' => 'Tu n’as pas indiqué d’adresse à tester !',
349
-	'info_aide' => 'AIDE :',
350
-	'info_ajouter_mot' => 'Ajouter ce mot',
351
-	'info_annonce' => 'ANNONCE',
352
-	'info_annonces_generales' => 'Annonces générales :',
353
-	'info_article_propose' => 'Article proposé',
354
-	'info_article_publie' => 'Article publié',
355
-	'info_article_redaction' => 'Article en cours de rédaction',
356
-	'info_article_refuse' => 'Article refusé',
357
-	'info_article_supprime' => 'Article supprimé',
358
-	'info_articles' => 'Articles',
359
-	'info_articles_a_valider' => 'Les articles à valider',
360
-	'info_articles_nb' => '@nb@ articles',
361
-	'info_articles_proposes' => 'Articles proposés',
362
-	'info_articles_un' => '1 article',
363
-	'info_auteurs_nombre' => 'auteur(s) :',
364
-	'info_authentification_ftp' => 'Authentification (par FTP).',
365
-	'info_breves_2' => 'brèves',
366
-	'info_breves_nb' => '@nb@ brèves',
367
-	'info_breves_un' => '1 brève',
368
-	'info_connexion_refusee' => 'Connexion refusée',
369
-	'info_contact_developpeur' => 'Contacte un développeur.',
370
-	'info_contenance' => 'Ce site contient :',
371
-	'info_contribution' => 'contributions',
372
-	'info_copyright' => '@spip@ est un logiciel libre distribué @lien_gpl@.',
373
-	'info_copyright_doc' => 'Pour plus d’informations, voir le site <a href="@spipnet@">@spipnet_affiche@</a>.',
374
-	'info_copyright_gpl' => 'sous licence GPL',
375
-	'info_cours_edition' => 'En cours de modification',
376
-	'info_creer_repertoire' => 'Crée un fichier ou un répertoire nommé :',
377
-	'info_creer_repertoire_2' => 'à l’intérieur du sous-répertoire <b>@repertoire@</b>, puis :',
378
-	'info_creer_vignette' => 'création automatique de la vignette',
379
-	'info_creerdansrubrique_non_autorise' => 'Tu n’as pas de droits suffisants pour créer un contenu dans cette rubrique',
380
-	'info_deplier' => 'Déplier',
381
-	'info_descriptif_nombre' => 'descriptif(s) :',
382
-	'info_description' => 'Description :',
383
-	'info_description_2' => 'Description :',
384
-	'info_dimension' => 'Dimensions :',
385
-	'info_documents_nb' => '@nb@ documents',
386
-	'info_documents_un' => '1 document',
387
-	'info_ecire_message_prive' => 'Écrire un message privé',
388
-	'info_email_invalide' => 'Adresse email invalide.',
389
-	'info_en_cours_validation' => 'Tes articles en cours de rédaction',
390
-	'info_en_ligne' => 'Actuellement en ligne :',
391
-	'info_envoyer_message_prive' => 'Envoyer un message privé à cet auteur',
392
-	'info_erreur_requete' => 'Erreur dans la requête :',
393
-	'info_erreur_squelette2' => 'Aucun squelette <b>@fichier@</b> n’est disponible...',
394
-	'info_erreur_systeme' => 'Erreur système (errno @errsys@)',
395
-	'info_erreur_systeme2' => 'Le disque dur est peut-être plein, ou la base de données endommagée.<br />
297
+    // I
298
+    'ical_texte_rss_articles' => 'Le fichier « backend » des articles de ce site se trouve à l’adresse :',
299
+    'ical_texte_rss_articles2' => 'Tu peux également obtenir des fichiers « backend » pour les articles de chaque rubrique du site :',
300
+    'ical_texte_rss_breves' => 'Il existe de plus un fichier contenant les brèves du site. En précisant un numéro de rubrique, tu obtiendras uniquement les brèves de cette rubrique.',
301
+    'icone_a_suivre' => 'À suivre',
302
+    'icone_admin_site' => 'Administration du site',
303
+    'icone_agenda' => 'Agenda',
304
+    'icone_aide_ligne' => 'Aide',
305
+    'icone_articles' => 'Articles',
306
+    'icone_auteurs' => 'Auteurs',
307
+    'icone_brouteur' => 'Navigation rapide',
308
+    'icone_configuration_site' => 'Configuration',
309
+    'icone_configurer_site' => 'Configurer ton site',
310
+    'icone_creer_nouvel_auteur' => 'Créer un nouvel auteur',
311
+    'icone_creer_rubrique' => 'Créer une rubrique',
312
+    'icone_creer_sous_rubrique' => 'Créer une sous-rubrique',
313
+    'icone_deconnecter' => 'Se déconnecter',
314
+    'icone_discussions' => 'Discussions',
315
+    'icone_doc_rubrique' => 'Documents des rubriques',
316
+    'icone_ecrire_article' => 'Écrire un nouvel article',
317
+    'icone_edition_site' => 'Édition',
318
+    'icone_gestion_langues' => 'Gestion des langues',
319
+    'icone_informations_personnelles' => 'Informations personnelles',
320
+    'icone_interface_complet' => 'interface complète',
321
+    'icone_interface_simple' => 'Interface simplifiée',
322
+    'icone_maintenance_site' => 'Maintenance du site',
323
+    'icone_messagerie_personnelle' => 'Messagerie personnelle',
324
+    'icone_repartition_debut' => 'Afficher la répartition depuis le début',
325
+    'icone_rubriques' => 'Rubriques',
326
+    'icone_sauver_site' => 'Sauvegarde du site',
327
+    'icone_site_entier' => 'Tout le site',
328
+    'icone_sites_references' => 'Sites référencés',
329
+    'icone_statistiques' => 'Statistiques du site',
330
+    'icone_suivi_activite' => 'Suivre la vie du site',
331
+    'icone_suivi_actualite' => 'Évolution du site',
332
+    'icone_suivi_pettions' => 'Suivre/gérer les pétitions',
333
+    'icone_suivi_revisions' => 'Modifications des articles',
334
+    'icone_supprimer_document' => 'Supprimer ce document',
335
+    'icone_supprimer_image' => 'Supprimer cette image',
336
+    'icone_tous_articles' => 'Tous tes articles',
337
+    'icone_tous_auteur' => 'Tous les auteurs',
338
+    'icone_tous_visiteur' => 'Tous les visiteurs',
339
+    'icone_visiter_site' => 'Voir le site public',
340
+    'icone_voir_en_ligne' => 'Voir en ligne',
341
+    'img_indisponible' => 'image indisponible',
342
+    'impossible' => 'impossible',
343
+    'info_a_suivre' => 'À SUIVRE »',
344
+    'info_acces_interdit' => 'Accès interdit',
345
+    'info_acces_refuse' => 'Accès refusé',
346
+    'info_action' => 'Action : @action@',
347
+    'info_administrer_rubriques' => 'Tu peux administrer cette rubrique et ses sous-rubriques',
348
+    'info_adresse_non_indiquee' => 'Tu n’as pas indiqué d’adresse à tester !',
349
+    'info_aide' => 'AIDE :',
350
+    'info_ajouter_mot' => 'Ajouter ce mot',
351
+    'info_annonce' => 'ANNONCE',
352
+    'info_annonces_generales' => 'Annonces générales :',
353
+    'info_article_propose' => 'Article proposé',
354
+    'info_article_publie' => 'Article publié',
355
+    'info_article_redaction' => 'Article en cours de rédaction',
356
+    'info_article_refuse' => 'Article refusé',
357
+    'info_article_supprime' => 'Article supprimé',
358
+    'info_articles' => 'Articles',
359
+    'info_articles_a_valider' => 'Les articles à valider',
360
+    'info_articles_nb' => '@nb@ articles',
361
+    'info_articles_proposes' => 'Articles proposés',
362
+    'info_articles_un' => '1 article',
363
+    'info_auteurs_nombre' => 'auteur(s) :',
364
+    'info_authentification_ftp' => 'Authentification (par FTP).',
365
+    'info_breves_2' => 'brèves',
366
+    'info_breves_nb' => '@nb@ brèves',
367
+    'info_breves_un' => '1 brève',
368
+    'info_connexion_refusee' => 'Connexion refusée',
369
+    'info_contact_developpeur' => 'Contacte un développeur.',
370
+    'info_contenance' => 'Ce site contient :',
371
+    'info_contribution' => 'contributions',
372
+    'info_copyright' => '@spip@ est un logiciel libre distribué @lien_gpl@.',
373
+    'info_copyright_doc' => 'Pour plus d’informations, voir le site <a href="@spipnet@">@spipnet_affiche@</a>.',
374
+    'info_copyright_gpl' => 'sous licence GPL',
375
+    'info_cours_edition' => 'En cours de modification',
376
+    'info_creer_repertoire' => 'Crée un fichier ou un répertoire nommé :',
377
+    'info_creer_repertoire_2' => 'à l’intérieur du sous-répertoire <b>@repertoire@</b>, puis :',
378
+    'info_creer_vignette' => 'création automatique de la vignette',
379
+    'info_creerdansrubrique_non_autorise' => 'Tu n’as pas de droits suffisants pour créer un contenu dans cette rubrique',
380
+    'info_deplier' => 'Déplier',
381
+    'info_descriptif_nombre' => 'descriptif(s) :',
382
+    'info_description' => 'Description :',
383
+    'info_description_2' => 'Description :',
384
+    'info_dimension' => 'Dimensions :',
385
+    'info_documents_nb' => '@nb@ documents',
386
+    'info_documents_un' => '1 document',
387
+    'info_ecire_message_prive' => 'Écrire un message privé',
388
+    'info_email_invalide' => 'Adresse email invalide.',
389
+    'info_en_cours_validation' => 'Tes articles en cours de rédaction',
390
+    'info_en_ligne' => 'Actuellement en ligne :',
391
+    'info_envoyer_message_prive' => 'Envoyer un message privé à cet auteur',
392
+    'info_erreur_requete' => 'Erreur dans la requête :',
393
+    'info_erreur_squelette2' => 'Aucun squelette <b>@fichier@</b> n’est disponible...',
394
+    'info_erreur_systeme' => 'Erreur système (errno @errsys@)',
395
+    'info_erreur_systeme2' => 'Le disque dur est peut-être plein, ou la base de données endommagée.<br />
396 396
 <span style="color:red;">Essaie de <a href=\'@script@\'>réparer la base</a>, ou contacte ton hébergeur.</span>',
397
-	'info_fini' => 'C’est fini !',
398
-	'info_format_image' => 'Formats d’images pouvant être utilisées pour créer des vignettes : @gd_formats@.',
399
-	'info_format_non_defini' => 'format non défini',
400
-	'info_grand_ecran' => 'Grand écran',
401
-	'info_image_aide' => 'AIDE',
402
-	'info_image_process_titre' => 'Comment faire de nouveaux signets',
403
-	'info_impossible_lire_page' => '<b>Erreur !</b> Impossible de lire la page <tt><html>@test_proxy@</html></tt> à travers le proxy ',
404
-	'info_installation_systeme_publication' => 'Installation du système de publication...',
405
-	'info_installer_documents' => 'Tu peux installer automatiquement tous les documents contenus dans le dossier @upload@.',
406
-	'info_installer_ftp' => 'En tant qu’administrateur, tu peux installer (par FTP) des fichiers dans le dossier @upload@ pour ensuite les sélectionner directement ici.',
407
-	'info_installer_images' => 'Tu peux installer des images aux formats JPEG, GIF et PNG.',
408
-	'info_installer_images_dossier' => 'Installer des images dans le dossier @upload@ pour pouvoir les sélectionner ici.',
409
-	'info_interface_complete' => 'interface complète',
410
-	'info_interface_simple' => 'Interface simplifiée',
411
-	'info_joindre_document_article' => 'Tu peux joindre à cet article des documents de type',
412
-	'info_joindre_document_rubrique' => 'Tu peux ajouter dans cette rubrique des documents de type',
413
-	'info_joindre_documents_article' => 'Tu peux joindre à ton article des documents de type :',
414
-	'info_l_article' => 'l’article',
415
-	'info_la_breve' => 'la brève',
416
-	'info_la_rubrique' => 'la rubrique',
417
-	'info_langue_principale' => 'Langue principale du site',
418
-	'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels',
419
-	'info_les_auteurs_1' => 'par @les_auteurs@',
420
-	'info_logo_format_interdit' => 'Seuls les logos aux formats @formats@ sont autorisés.',
421
-	'info_logo_max_poids' => 'Les logos doivent obligatoirement faire moins de @maxi@ (ce fichier fait @actuel@).',
422
-	'info_mail_fournisseur' => '[email protected]',
423
-	'info_message_2' => 'MESSAGE',
424
-	'info_message_supprime' => 'MESSAGE SUPPRIMÉ',
425
-	'info_messages_nb' => '@nb@ messages',
426
-	'info_messages_un' => '1 message',
427
-	'info_mise_en_ligne' => 'Date de mise en ligne :',
428
-	'info_modification_parametres_securite' => 'modifications des paramètres de sécurité',
429
-	'info_mois_courant' => 'Dans le courant du mois :',
430
-	'info_mot_cle_ajoute' => 'Le mot-clé suivant a été ajouté à',
431
-	'info_multi_herit' => 'Langue par défaut',
432
-	'info_multi_langues_soulignees' => 'Les <u>langues soulignées</u> bénéficient d’une traduction totale ou partielle des textes de l’interface. Si tu sélectionnes ces langues, de nombreux éléments du site public (dates, formulaires) seront automatiquement traduits. Pour les langues non soulignées, ces éléments apparaîtront dans la langue principale du site.',
433
-	'info_multilinguisme' => 'Multilinguisme',
434
-	'info_nom_non_utilisateurs_connectes' => 'Ton nom n’apparaît pas dans la liste des utilisateurs connectés.',
435
-	'info_nom_utilisateurs_connectes' => 'Ton nom apparaît dans la liste des utilisateurs connectés.',
436
-	'info_nombre_en_ligne' => 'Actuellement en ligne :',
437
-	'info_non_resultat' => 'Aucun résultat pour "@cherche_mot@"',
438
-	'info_non_utilisation_messagerie' => 'Tu n’utilise pas la messagerie interne de ce site.',
439
-	'info_nouveau_message' => 'TU AS UN NOUVEAU MESSAGE',
440
-	'info_nouveaux_messages' => 'TU AS @total_messages@ NOUVEAUX MESSAGES',
441
-	'info_numero_abbreviation' => 'N° ',
442
-	'info_obligatoire' => 'Cette information est obligatoire',
443
-	'info_page_actuelle' => 'Page actuelle',
444
-	'info_pense_bete' => 'PENSE-BÊTE',
445
-	'info_petit_ecran' => 'Petit écran',
446
-	'info_petition_close' => 'Pétition close',
447
-	'info_pixels' => 'pixels',
448
-	'info_plusieurs_mots_trouves' => 'Plusieurs mots-clés trouvés pour "@cherche_mot@" :',
449
-	'info_portfolio_automatique' => 'Portfolio automatique :',
450
-	'info_premier_resultat' => '[@debut_limit@ premiers résultats sur @total@]',
451
-	'info_premier_resultat_sur' => '[@debut_limit@ premiers résultats sur @total@]',
452
-	'info_propose_1' => '[@nom_site_spip@] Propose : @titre@',
453
-	'info_propose_2' => 'Article proposé
397
+    'info_fini' => 'C’est fini !',
398
+    'info_format_image' => 'Formats d’images pouvant être utilisées pour créer des vignettes : @gd_formats@.',
399
+    'info_format_non_defini' => 'format non défini',
400
+    'info_grand_ecran' => 'Grand écran',
401
+    'info_image_aide' => 'AIDE',
402
+    'info_image_process_titre' => 'Comment faire de nouveaux signets',
403
+    'info_impossible_lire_page' => '<b>Erreur !</b> Impossible de lire la page <tt><html>@test_proxy@</html></tt> à travers le proxy ',
404
+    'info_installation_systeme_publication' => 'Installation du système de publication...',
405
+    'info_installer_documents' => 'Tu peux installer automatiquement tous les documents contenus dans le dossier @upload@.',
406
+    'info_installer_ftp' => 'En tant qu’administrateur, tu peux installer (par FTP) des fichiers dans le dossier @upload@ pour ensuite les sélectionner directement ici.',
407
+    'info_installer_images' => 'Tu peux installer des images aux formats JPEG, GIF et PNG.',
408
+    'info_installer_images_dossier' => 'Installer des images dans le dossier @upload@ pour pouvoir les sélectionner ici.',
409
+    'info_interface_complete' => 'interface complète',
410
+    'info_interface_simple' => 'Interface simplifiée',
411
+    'info_joindre_document_article' => 'Tu peux joindre à cet article des documents de type',
412
+    'info_joindre_document_rubrique' => 'Tu peux ajouter dans cette rubrique des documents de type',
413
+    'info_joindre_documents_article' => 'Tu peux joindre à ton article des documents de type :',
414
+    'info_l_article' => 'l’article',
415
+    'info_la_breve' => 'la brève',
416
+    'info_la_rubrique' => 'la rubrique',
417
+    'info_langue_principale' => 'Langue principale du site',
418
+    'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels',
419
+    'info_les_auteurs_1' => 'par @les_auteurs@',
420
+    'info_logo_format_interdit' => 'Seuls les logos aux formats @formats@ sont autorisés.',
421
+    'info_logo_max_poids' => 'Les logos doivent obligatoirement faire moins de @maxi@ (ce fichier fait @actuel@).',
422
+    'info_mail_fournisseur' => '[email protected]',
423
+    'info_message_2' => 'MESSAGE',
424
+    'info_message_supprime' => 'MESSAGE SUPPRIMÉ',
425
+    'info_messages_nb' => '@nb@ messages',
426
+    'info_messages_un' => '1 message',
427
+    'info_mise_en_ligne' => 'Date de mise en ligne :',
428
+    'info_modification_parametres_securite' => 'modifications des paramètres de sécurité',
429
+    'info_mois_courant' => 'Dans le courant du mois :',
430
+    'info_mot_cle_ajoute' => 'Le mot-clé suivant a été ajouté à',
431
+    'info_multi_herit' => 'Langue par défaut',
432
+    'info_multi_langues_soulignees' => 'Les <u>langues soulignées</u> bénéficient d’une traduction totale ou partielle des textes de l’interface. Si tu sélectionnes ces langues, de nombreux éléments du site public (dates, formulaires) seront automatiquement traduits. Pour les langues non soulignées, ces éléments apparaîtront dans la langue principale du site.',
433
+    'info_multilinguisme' => 'Multilinguisme',
434
+    'info_nom_non_utilisateurs_connectes' => 'Ton nom n’apparaît pas dans la liste des utilisateurs connectés.',
435
+    'info_nom_utilisateurs_connectes' => 'Ton nom apparaît dans la liste des utilisateurs connectés.',
436
+    'info_nombre_en_ligne' => 'Actuellement en ligne :',
437
+    'info_non_resultat' => 'Aucun résultat pour "@cherche_mot@"',
438
+    'info_non_utilisation_messagerie' => 'Tu n’utilise pas la messagerie interne de ce site.',
439
+    'info_nouveau_message' => 'TU AS UN NOUVEAU MESSAGE',
440
+    'info_nouveaux_messages' => 'TU AS @total_messages@ NOUVEAUX MESSAGES',
441
+    'info_numero_abbreviation' => 'N° ',
442
+    'info_obligatoire' => 'Cette information est obligatoire',
443
+    'info_page_actuelle' => 'Page actuelle',
444
+    'info_pense_bete' => 'PENSE-BÊTE',
445
+    'info_petit_ecran' => 'Petit écran',
446
+    'info_petition_close' => 'Pétition close',
447
+    'info_pixels' => 'pixels',
448
+    'info_plusieurs_mots_trouves' => 'Plusieurs mots-clés trouvés pour "@cherche_mot@" :',
449
+    'info_portfolio_automatique' => 'Portfolio automatique :',
450
+    'info_premier_resultat' => '[@debut_limit@ premiers résultats sur @total@]',
451
+    'info_premier_resultat_sur' => '[@debut_limit@ premiers résultats sur @total@]',
452
+    'info_propose_1' => '[@nom_site_spip@] Propose : @titre@',
453
+    'info_propose_2' => 'Article proposé
454 454
 ---------------',
455
-	'info_propose_3' => 'L’article "@titre@" est proposé à la publication.',
456
-	'info_propose_4' => 'Tu es invité à venir le consulter et à donner ton opinion',
457
-	'info_propose_5' => 'dans le forum qui lui est attaché. Il est disponible à l’adresse :',
458
-	'info_publie_01' => 'L’article "@titre@" a été validé par @connect_nom@.',
459
-	'info_publie_1' => '[@nom_site_spip@] PUBLIE : @titre@',
460
-	'info_publie_2' => 'Article publié
455
+    'info_propose_3' => 'L’article "@titre@" est proposé à la publication.',
456
+    'info_propose_4' => 'Tu es invité à venir le consulter et à donner ton opinion',
457
+    'info_propose_5' => 'dans le forum qui lui est attaché. Il est disponible à l’adresse :',
458
+    'info_publie_01' => 'L’article "@titre@" a été validé par @connect_nom@.',
459
+    'info_publie_1' => '[@nom_site_spip@] PUBLIE : @titre@',
460
+    'info_publie_2' => 'Article publié
461 461
 --------------',
462
-	'info_rechercher' => 'Rechercher',
463
-	'info_rechercher_02' => 'Rechercher :',
464
-	'info_remplacer_vignette' => 'Remplacer la vignette par défaut par un logo personnalisé :',
465
-	'info_rubriques_nb' => '@nb@ rubriques',
466
-	'info_rubriques_un' => '1 rubrique',
467
-	'info_sans_titre_2' => 'sans titre',
468
-	'info_selectionner_fichier' => 'Tu peux sélectionner un fichier du dossier @upload@',
469
-	'info_selectionner_fichier_2' => 'Sélectionner un fichier :',
470
-	'info_sites_nb' => '@nb@ sites',
471
-	'info_sites_un' => '1 site',
472
-	'info_supprimer_vignette' => 'supprimer la vignette',
473
-	'info_symbole_bleu' => 'Le symbole <b>bleu</b> indique un <b>pense-bête</b> : c’est-à-dire un message à ton usage personnel.',
474
-	'info_symbole_jaune' => 'Le symbole <b>jaune</b> indique une <b>annonce à tous les rédacteurs</b> : modifiable par tous les administrateurs, et visible par tous les rédacteurs.',
475
-	'info_symbole_vert' => 'Le symbole <b>vert</b> indique les <b>messages échangés avec d’autres utilisateurs</b> du site.',
476
-	'info_telecharger_nouveau_logo' => 'Télécharger un nouveau logo :',
477
-	'info_telecharger_ordinateur' => 'Télécharger depuis ton ordinateur :',
478
-	'info_tous_resultats_enregistres' => '[tous les résultats sont enregistrés]',
479
-	'info_tout_afficher' => 'Tout afficher',
480
-	'info_travaux_texte' => 'Ce site n’est pas encore configuré. Reviens plus tard...',
481
-	'info_travaux_titre' => 'Site en travaux',
482
-	'info_trop_resultat' => 'Trop de résultats pour "@cherche_mot@" ; affine la recherche.',
483
-	'info_utilisation_messagerie_interne' => 'Tu utilises la messagerie interne de ce site.',
484
-	'info_valider_lien' => 'valider ce lien',
485
-	'info_verifier_image' => ', vérifie que tes images ont été transférées correctement.',
486
-	'info_vignette_defaut' => 'Vignette par défaut',
487
-	'info_vignette_personnalisee' => 'Vignette personnalisée',
488
-	'info_visite' => 'visite :',
489
-	'info_vos_rendez_vous' => 'Tes rendez-vous à venir',
490
-	'infos_vos_pense_bete' => 'Tes pense-bêtes',
462
+    'info_rechercher' => 'Rechercher',
463
+    'info_rechercher_02' => 'Rechercher :',
464
+    'info_remplacer_vignette' => 'Remplacer la vignette par défaut par un logo personnalisé :',
465
+    'info_rubriques_nb' => '@nb@ rubriques',
466
+    'info_rubriques_un' => '1 rubrique',
467
+    'info_sans_titre_2' => 'sans titre',
468
+    'info_selectionner_fichier' => 'Tu peux sélectionner un fichier du dossier @upload@',
469
+    'info_selectionner_fichier_2' => 'Sélectionner un fichier :',
470
+    'info_sites_nb' => '@nb@ sites',
471
+    'info_sites_un' => '1 site',
472
+    'info_supprimer_vignette' => 'supprimer la vignette',
473
+    'info_symbole_bleu' => 'Le symbole <b>bleu</b> indique un <b>pense-bête</b> : c’est-à-dire un message à ton usage personnel.',
474
+    'info_symbole_jaune' => 'Le symbole <b>jaune</b> indique une <b>annonce à tous les rédacteurs</b> : modifiable par tous les administrateurs, et visible par tous les rédacteurs.',
475
+    'info_symbole_vert' => 'Le symbole <b>vert</b> indique les <b>messages échangés avec d’autres utilisateurs</b> du site.',
476
+    'info_telecharger_nouveau_logo' => 'Télécharger un nouveau logo :',
477
+    'info_telecharger_ordinateur' => 'Télécharger depuis ton ordinateur :',
478
+    'info_tous_resultats_enregistres' => '[tous les résultats sont enregistrés]',
479
+    'info_tout_afficher' => 'Tout afficher',
480
+    'info_travaux_texte' => 'Ce site n’est pas encore configuré. Reviens plus tard...',
481
+    'info_travaux_titre' => 'Site en travaux',
482
+    'info_trop_resultat' => 'Trop de résultats pour "@cherche_mot@" ; affine la recherche.',
483
+    'info_utilisation_messagerie_interne' => 'Tu utilises la messagerie interne de ce site.',
484
+    'info_valider_lien' => 'valider ce lien',
485
+    'info_verifier_image' => ', vérifie que tes images ont été transférées correctement.',
486
+    'info_vignette_defaut' => 'Vignette par défaut',
487
+    'info_vignette_personnalisee' => 'Vignette personnalisée',
488
+    'info_visite' => 'visite :',
489
+    'info_vos_rendez_vous' => 'Tes rendez-vous à venir',
490
+    'infos_vos_pense_bete' => 'Tes pense-bêtes',
491 491
 
492
-	// L
493
-	'label_ajout_id_rapide' => 'Ajout rapide',
494
-	'label_poids_fichier' => 'Taille',
495
-	'label_ponctuer' => '@label@ :',
496
-	'lien_afficher_icones_seuls' => 'Afficher uniquement les icones',
497
-	'lien_afficher_texte_icones' => 'Afficher les icones et le texte',
498
-	'lien_afficher_texte_seul' => 'Afficher uniquement le texte',
499
-	'lien_aller_a_la_derniere_page' => 'Aller à la dernière page',
500
-	'lien_aller_a_la_page_nb' => 'Aller à la page @nb@',
501
-	'lien_aller_a_la_page_precedente' => 'Aller à la page précédente',
502
-	'lien_aller_a_la_page_suivante' => 'Aller à la page suivante',
503
-	'lien_aller_a_la_premiere_page' => 'Aller à la première page',
504
-	'lien_liberer' => 'libérer',
505
-	'lien_liberer_tous' => 'Tout libérer',
506
-	'lien_nouvea_pense_bete' => 'NOUVEAU PENSE-BÊTE',
507
-	'lien_nouveau_message' => 'NOUVEAU MESSAGE',
508
-	'lien_nouvelle_annonce' => 'NOUVELLE ANNONCE',
509
-	'lien_petitions' => 'PÉTITION',
510
-	'lien_popularite' => 'popularité : @popularite@%',
511
-	'lien_racine_site' => 'RACINE DU SITE',
512
-	'lien_reessayer' => 'réessayer',
513
-	'lien_repondre_message' => 'Répondre à ce message',
514
-	'lien_supprimer' => 'supprimer',
515
-	'lien_tout_afficher' => 'Tout afficher',
516
-	'lien_visite_site' => 'visiter ce site',
517
-	'lien_visites' => '@visites@ visites',
518
-	'lien_voir_auteur' => 'Voir cet auteur',
519
-	'ligne' => 'Ligne',
520
-	'login' => 'Connexion',
521
-	'login_acces_prive' => 'accès à l’espace privé',
522
-	'login_autre_identifiant' => 'se connecter sous un autre identifiant',
523
-	'login_cookie_accepte' => 'Régle ton navigateur pour qu’il les accepte (au moins pour ce site).',
524
-	'login_cookie_oblige' => 'Pour t’identifier de façon sûre sur ce site, tu dois accepter les cookies.',
525
-	'login_deconnexion_ok' => 'Déconnexion effectuée.',
526
-	'login_erreur_pass' => 'Erreur de mot de passe.',
527
-	'login_espace_prive' => 'espace privé',
528
-	'login_identifiant_inconnu' => 'L’identifiant « @login@ » est inconnu.',
529
-	'login_login' => 'Login :',
530
-	'login_login2' => 'Login ou adresse email@circ@ :',
531
-	'login_login_pass_incorrect' => '(Login ou mot de passe incorrect.)',
532
-	'login_motpasseoublie' => 'mot de passe oublié ?',
533
-	'login_non_securise' => 'Attention, ce formulaire n’est pas sécurisé.
492
+    // L
493
+    'label_ajout_id_rapide' => 'Ajout rapide',
494
+    'label_poids_fichier' => 'Taille',
495
+    'label_ponctuer' => '@label@ :',
496
+    'lien_afficher_icones_seuls' => 'Afficher uniquement les icones',
497
+    'lien_afficher_texte_icones' => 'Afficher les icones et le texte',
498
+    'lien_afficher_texte_seul' => 'Afficher uniquement le texte',
499
+    'lien_aller_a_la_derniere_page' => 'Aller à la dernière page',
500
+    'lien_aller_a_la_page_nb' => 'Aller à la page @nb@',
501
+    'lien_aller_a_la_page_precedente' => 'Aller à la page précédente',
502
+    'lien_aller_a_la_page_suivante' => 'Aller à la page suivante',
503
+    'lien_aller_a_la_premiere_page' => 'Aller à la première page',
504
+    'lien_liberer' => 'libérer',
505
+    'lien_liberer_tous' => 'Tout libérer',
506
+    'lien_nouvea_pense_bete' => 'NOUVEAU PENSE-BÊTE',
507
+    'lien_nouveau_message' => 'NOUVEAU MESSAGE',
508
+    'lien_nouvelle_annonce' => 'NOUVELLE ANNONCE',
509
+    'lien_petitions' => 'PÉTITION',
510
+    'lien_popularite' => 'popularité : @popularite@%',
511
+    'lien_racine_site' => 'RACINE DU SITE',
512
+    'lien_reessayer' => 'réessayer',
513
+    'lien_repondre_message' => 'Répondre à ce message',
514
+    'lien_supprimer' => 'supprimer',
515
+    'lien_tout_afficher' => 'Tout afficher',
516
+    'lien_visite_site' => 'visiter ce site',
517
+    'lien_visites' => '@visites@ visites',
518
+    'lien_voir_auteur' => 'Voir cet auteur',
519
+    'ligne' => 'Ligne',
520
+    'login' => 'Connexion',
521
+    'login_acces_prive' => 'accès à l’espace privé',
522
+    'login_autre_identifiant' => 'se connecter sous un autre identifiant',
523
+    'login_cookie_accepte' => 'Régle ton navigateur pour qu’il les accepte (au moins pour ce site).',
524
+    'login_cookie_oblige' => 'Pour t’identifier de façon sûre sur ce site, tu dois accepter les cookies.',
525
+    'login_deconnexion_ok' => 'Déconnexion effectuée.',
526
+    'login_erreur_pass' => 'Erreur de mot de passe.',
527
+    'login_espace_prive' => 'espace privé',
528
+    'login_identifiant_inconnu' => 'L’identifiant « @login@ » est inconnu.',
529
+    'login_login' => 'Login :',
530
+    'login_login2' => 'Login ou adresse email@circ@ :',
531
+    'login_login_pass_incorrect' => '(Login ou mot de passe incorrect.)',
532
+    'login_motpasseoublie' => 'mot de passe oublié ?',
533
+    'login_non_securise' => 'Attention, ce formulaire n’est pas sécurisé.
534 534
 			Si tu ne veux pas que ton mot de passe puisse être
535 535
 			intercepté sur le réseau, active Javascript
536 536
 			dans ton navigateur et',
537
-	'login_nouvelle_tentative' => 'Nouvelle tentative',
538
-	'login_par_ici' => 'Tu es enregistré... par ici...',
539
-	'login_pass2' => 'Mot de passe :',
540
-	'login_preferez_refuser' => '<b>Si tu préfére refuser les cookies</b>, une autre méthode de connexion (moins sécurisée) est à ta disposition :',
541
-	'login_recharger' => 'recharger cette page',
542
-	'login_rester_identifie' => 'Se souvenir de moi',
543
-	'login_retour_public' => 'Retour au site public',
544
-	'login_retour_site' => 'Retour au site public',
545
-	'login_retoursitepublic' => 'retour au site public',
546
-	'login_sans_cookie' => 'Identification sans cookie',
547
-	'login_securise' => 'Login sécurisé',
548
-	'login_sinscrire' => 'S’inscrire',
549
-	'login_test_navigateur' => 'test navigateur/reconnexion',
550
-	'login_verifiez_navigateur' => '(Vérifie toutefois que ton navigateur n’a pas mémorisé ton mot de passe...)',
537
+    'login_nouvelle_tentative' => 'Nouvelle tentative',
538
+    'login_par_ici' => 'Tu es enregistré... par ici...',
539
+    'login_pass2' => 'Mot de passe :',
540
+    'login_preferez_refuser' => '<b>Si tu préfére refuser les cookies</b>, une autre méthode de connexion (moins sécurisée) est à ta disposition :',
541
+    'login_recharger' => 'recharger cette page',
542
+    'login_rester_identifie' => 'Se souvenir de moi',
543
+    'login_retour_public' => 'Retour au site public',
544
+    'login_retour_site' => 'Retour au site public',
545
+    'login_retoursitepublic' => 'retour au site public',
546
+    'login_sans_cookie' => 'Identification sans cookie',
547
+    'login_securise' => 'Login sécurisé',
548
+    'login_sinscrire' => 'S’inscrire',
549
+    'login_test_navigateur' => 'test navigateur/reconnexion',
550
+    'login_verifiez_navigateur' => '(Vérifie toutefois que ton navigateur n’a pas mémorisé ton mot de passe...)',
551 551
 
552
-	// M
553
-	'masquer_colonne' => 'Masquer cette colonne',
554
-	'masquer_trad' => 'masquer les traductions',
555
-	'message_nouveaux_identifiants_echec' => 'Impossible de générer de nouveaux identifiants.',
556
-	'message_nouveaux_identifiants_echec_envoi' => 'Les nouveaux identifiants de connexion n’ont pas pu être envoyés.',
557
-	'message_nouveaux_identifiants_ok' => 'Les nouveaux identifiants de connexion ont été envoyés à @email@.',
558
-	'module_fichiers_langues' => 'Fichiers de langue',
552
+    // M
553
+    'masquer_colonne' => 'Masquer cette colonne',
554
+    'masquer_trad' => 'masquer les traductions',
555
+    'message_nouveaux_identifiants_echec' => 'Impossible de générer de nouveaux identifiants.',
556
+    'message_nouveaux_identifiants_echec_envoi' => 'Les nouveaux identifiants de connexion n’ont pas pu être envoyés.',
557
+    'message_nouveaux_identifiants_ok' => 'Les nouveaux identifiants de connexion ont été envoyés à @email@.',
558
+    'module_fichiers_langues' => 'Fichiers de langue',
559 559
 
560
-	// N
561
-	'navigateur_pas_redirige' => 'Si votre navigateur n’est pas redirigé, cliquez ici pour continuer.',
562
-	'numero' => 'Numéro',
560
+    // N
561
+    'navigateur_pas_redirige' => 'Si votre navigateur n’est pas redirigé, cliquez ici pour continuer.',
562
+    'numero' => 'Numéro',
563 563
 
564
-	// O
565
-	'occurence' => 'Occurence',
566
-	'onglet_affacer_base' => 'Effacer la base',
567
-	'onglet_auteur' => 'L’auteur',
568
-	'onglet_contenu_site' => 'Contenu du site',
569
-	'onglet_evolution_visite_mod' => 'Évolution',
570
-	'onglet_fonctions_avances' => 'Fonctions avancées',
571
-	'onglet_informations_personnelles' => 'Informations personnelles',
572
-	'onglet_interactivite' => 'Interactivité',
573
-	'onglet_messagerie' => 'Messagerie',
574
-	'onglet_repartition_rubrique' => 'Répartition par rubriques',
575
-	'onglet_save_restaur_base' => 'Sauvegarder/restaurer la base',
576
-	'onglet_vider_cache' => 'Vider le cache',
564
+    // O
565
+    'occurence' => 'Occurence',
566
+    'onglet_affacer_base' => 'Effacer la base',
567
+    'onglet_auteur' => 'L’auteur',
568
+    'onglet_contenu_site' => 'Contenu du site',
569
+    'onglet_evolution_visite_mod' => 'Évolution',
570
+    'onglet_fonctions_avances' => 'Fonctions avancées',
571
+    'onglet_informations_personnelles' => 'Informations personnelles',
572
+    'onglet_interactivite' => 'Interactivité',
573
+    'onglet_messagerie' => 'Messagerie',
574
+    'onglet_repartition_rubrique' => 'Répartition par rubriques',
575
+    'onglet_save_restaur_base' => 'Sauvegarder/restaurer la base',
576
+    'onglet_vider_cache' => 'Vider le cache',
577 577
 
578
-	// P
579
-	'pass_choix_pass' => 'Choisis ton nouveau mot de passe :',
580
-	'pass_erreur' => 'Erreur',
581
-	'pass_erreur_acces_refuse' => '<b>Erreur :</b> tu n’as plus accès à ce site.',
582
-	'pass_erreur_code_inconnu' => '<b>Erreur :</b> ce code ne correspond à aucun des visiteurs ayant accès à ce site.',
583
-	'pass_erreur_non_enregistre' => '<b>Erreur :</b> l’adresse <tt>@email_oubli@</tt> n’est pas enregistrée sur ce site.',
584
-	'pass_erreur_non_valide' => '<b>Erreur :</b> cet email <tt>@email_oubli@</tt> n’est pas valide !',
585
-	'pass_erreur_probleme_technique' => '<b>Erreur :</b> à cause d’un problème technique, l’email ne peut pas être envoyé.',
586
-	'pass_espace_prive_bla' => 'L’espace privé de ce site est ouvert aux
578
+    // P
579
+    'pass_choix_pass' => 'Choisis ton nouveau mot de passe :',
580
+    'pass_erreur' => 'Erreur',
581
+    'pass_erreur_acces_refuse' => '<b>Erreur :</b> tu n’as plus accès à ce site.',
582
+    'pass_erreur_code_inconnu' => '<b>Erreur :</b> ce code ne correspond à aucun des visiteurs ayant accès à ce site.',
583
+    'pass_erreur_non_enregistre' => '<b>Erreur :</b> l’adresse <tt>@email_oubli@</tt> n’est pas enregistrée sur ce site.',
584
+    'pass_erreur_non_valide' => '<b>Erreur :</b> cet email <tt>@email_oubli@</tt> n’est pas valide !',
585
+    'pass_erreur_probleme_technique' => '<b>Erreur :</b> à cause d’un problème technique, l’email ne peut pas être envoyé.',
586
+    'pass_espace_prive_bla' => 'L’espace privé de ce site est ouvert aux
587 587
 		visiteurs, après inscription. Une fois enregistré,
588 588
 		tu pourras consulter les articles en cours de rédaction,
589 589
 		proposer des articles et participer à tous les forums.',
590
-	'pass_forum_bla' => 'Tu as demandé à intervenir sur un forum
590
+    'pass_forum_bla' => 'Tu as demandé à intervenir sur un forum
591 591
 		réservé aux visiteurs enregistrés.',
592
-	'pass_indiquez_cidessous' => 'Indique ci-dessous l’adresse email sous laquelle tu
592
+    'pass_indiquez_cidessous' => 'Indique ci-dessous l’adresse email sous laquelle tu
593 593
 			t’es précédemment enregistré. Tu
594 594
 			recevras un email t’indiquant la marche à suivre pour
595 595
 			récupérer ton accès.',
596
-	'pass_mail_passcookie' => '(ceci est un message automatique)
596
+    'pass_mail_passcookie' => '(ceci est un message automatique)
597 597
 Pour retrouver ton accès au site
598 598
 @nom_site_spip@ (@adresse_site@)
599 599
 Rends toi à l’adresse suivante :
@@ -604,150 +604,150 @@  discard block
 block discarded – undo
604 604
 et te reconnecter au site.
605 605
 
606 606
 ',
607
-	'pass_mot_oublie' => 'Mot de passe oublié',
608
-	'pass_nouveau_enregistre' => 'Ton nouveau mot de passe a été enregistré.',
609
-	'pass_nouveau_pass' => 'Nouveau mot de passe',
610
-	'pass_ok' => 'OK',
611
-	'pass_oubli_mot' => 'Oubli du mot de passe',
612
-	'pass_procedure_changer' => 'Pour changer ton mot de passe, merci d’indiquer l’adresse email associée à ton compte.',
613
-	'pass_quitter_fenetre' => 'Quitter cette fenêtre',
614
-	'pass_rappel_login' => 'Rappel : ton identifiant (login) est « @login@ ».',
615
-	'pass_recevoir_mail' => 'Un lien de réinitialisation de ton mot de passe t’a été envoyé sur ton adresse email (si celle-ci est valide).',
616
-	'pass_retour_public' => 'Retour sur le site public',
617
-	'pass_rien_a_faire_ici' => 'Rien à faire ici.',
618
-	'pass_vousinscrire' => 'T’inscrire sur ce site',
619
-	'precedent' => 'précédent',
620
-	'previsualisation' => 'Prévisualisation',
621
-	'previsualiser' => 'Prévisualiser',
607
+    'pass_mot_oublie' => 'Mot de passe oublié',
608
+    'pass_nouveau_enregistre' => 'Ton nouveau mot de passe a été enregistré.',
609
+    'pass_nouveau_pass' => 'Nouveau mot de passe',
610
+    'pass_ok' => 'OK',
611
+    'pass_oubli_mot' => 'Oubli du mot de passe',
612
+    'pass_procedure_changer' => 'Pour changer ton mot de passe, merci d’indiquer l’adresse email associée à ton compte.',
613
+    'pass_quitter_fenetre' => 'Quitter cette fenêtre',
614
+    'pass_rappel_login' => 'Rappel : ton identifiant (login) est « @login@ ».',
615
+    'pass_recevoir_mail' => 'Un lien de réinitialisation de ton mot de passe t’a été envoyé sur ton adresse email (si celle-ci est valide).',
616
+    'pass_retour_public' => 'Retour sur le site public',
617
+    'pass_rien_a_faire_ici' => 'Rien à faire ici.',
618
+    'pass_vousinscrire' => 'T’inscrire sur ce site',
619
+    'precedent' => 'précédent',
620
+    'previsualisation' => 'Prévisualisation',
621
+    'previsualiser' => 'Prévisualiser',
622 622
 
623
-	// R
624
-	'retour' => 'Retour',
623
+    // R
624
+    'retour' => 'Retour',
625 625
 
626
-	// S
627
-	'spip_conforme_dtd' => 'SPIP considère ce document comme conforme à son DOCTYPE :',
628
-	'squelette' => 'squelette',
629
-	'squelette_inclus_ligne' => 'squelette inclus, ligne',
630
-	'squelette_ligne' => 'squelette, ligne',
631
-	'stats_visites_et_popularite' => '@visites@ visites ; popularité : @popularite@',
632
-	'suivant' => 'suivant',
626
+    // S
627
+    'spip_conforme_dtd' => 'SPIP considère ce document comme conforme à son DOCTYPE :',
628
+    'squelette' => 'squelette',
629
+    'squelette_inclus_ligne' => 'squelette inclus, ligne',
630
+    'squelette_ligne' => 'squelette, ligne',
631
+    'stats_visites_et_popularite' => '@visites@ visites ; popularité : @popularite@',
632
+    'suivant' => 'suivant',
633 633
 
634
-	// T
635
-	'taille_go' => '@taille@ Go',
636
-	'taille_go_bi' => '@taille@ Gio',
637
-	'taille_ko' => '@taille@ ko',
638
-	'taille_ko_bi' => '@taille@ kio',
639
-	'taille_mo' => '@taille@ Mo',
640
-	'taille_mo_bi' => '@taille@ Mio',
641
-	'taille_octets' => '@taille@ octets',
642
-	'taille_octets_bi' => '@taille@ octets',
643
-	'texte_actualite_site_1' => 'Quand tu seras familiarisé(e) avec l’interface, tu pourras cliquer sur « ',
644
-	'texte_actualite_site_2' => 'interface complète',
645
-	'texte_actualite_site_3' => ' » pour ouvrir plus de possibilités.',
646
-	'texte_creation_automatique_vignette' => 'La création automatique de vignettes de prévisualisation est activée sur ce site. Si tu installe à partir de ce formulaire des images au(x) format(s) @gd_formats@, elles seront accompagnées d’une vignette d’une taille maximale de @taille_preview@ pixels.',
647
-	'texte_documents_associes' => 'Les documents suivants sont associés à l’article,
634
+    // T
635
+    'taille_go' => '@taille@ Go',
636
+    'taille_go_bi' => '@taille@ Gio',
637
+    'taille_ko' => '@taille@ ko',
638
+    'taille_ko_bi' => '@taille@ kio',
639
+    'taille_mo' => '@taille@ Mo',
640
+    'taille_mo_bi' => '@taille@ Mio',
641
+    'taille_octets' => '@taille@ octets',
642
+    'taille_octets_bi' => '@taille@ octets',
643
+    'texte_actualite_site_1' => 'Quand tu seras familiarisé(e) avec l’interface, tu pourras cliquer sur « ',
644
+    'texte_actualite_site_2' => 'interface complète',
645
+    'texte_actualite_site_3' => ' » pour ouvrir plus de possibilités.',
646
+    'texte_creation_automatique_vignette' => 'La création automatique de vignettes de prévisualisation est activée sur ce site. Si tu installe à partir de ce formulaire des images au(x) format(s) @gd_formats@, elles seront accompagnées d’une vignette d’une taille maximale de @taille_preview@ pixels.',
647
+    'texte_documents_associes' => 'Les documents suivants sont associés à l’article,
648 648
 				mais ils n’y ont pas été directement
649 649
 				insérés. Selon la mise en page du site public,
650 650
 				ils pourront apparaître sous forme de documents joints.',
651
-	'texte_erreur_mise_niveau_base' => 'Erreur de base de données lors de la mise à niveau.
651
+    'texte_erreur_mise_niveau_base' => 'Erreur de base de données lors de la mise à niveau.
652 652
   L’image <b>@fichier@</b> n’est pas passée (article @id_article@).
653 653
   Note bien cette référence, réessaye la mise à
654 654
   niveau, et enfin vérifie que les images apparaissent
655 655
   toujours dans les articles.',
656
-	'texte_erreur_visiteur' => 'Tu as tenté d’accéder à l’espace privé avec un login qui ne le permet pas.',
657
-	'texte_inc_auth_1' => 'Tu es identifié sous le
656
+    'texte_erreur_visiteur' => 'Tu as tenté d’accéder à l’espace privé avec un login qui ne le permet pas.',
657
+    'texte_inc_auth_1' => 'Tu es identifié sous le
658 658
   login <b>@auth_login@</b>, mais celui-ci n’existe pas/plus dans la base.
659 659
   Essaye de te',
660
-	'texte_inc_auth_2' => 'reconnecter',
661
-	'texte_inc_auth_3' => ', après avoir éventuellement quitté puis
660
+    'texte_inc_auth_2' => 'reconnecter',
661
+    'texte_inc_auth_3' => ', après avoir éventuellement quitté puis
662 662
 		redémarré ton navigateur.',
663
-	'texte_inc_config' => 'Les modifications effectuées dans ces pages influent notablement sur le
663
+    'texte_inc_config' => 'Les modifications effectuées dans ces pages influent notablement sur le
664 664
  fonctionnement de ton site. Nous te recommandons de ne pas y intervenir tant que tu n’es pas
665 665
  familier du fonctionnement du système SPIP. <br /><br /><b>Plus
666 666
  généralement, il est fortement conseillé
667 667
  de laisser la charge de ces pages au webmestre principal de ton site.</b>',
668
-	'texte_inc_meta_1' => 'Le système a rencontré une erreur lors de l’écriture du fichier <code>@fichier@</code>. En tant qu’administrateur du site,',
669
-	'texte_inc_meta_2' => 'vérifie les droits d’ecriture',
670
-	'texte_inc_meta_3' => 'sur le répertoire <code>@repertoire@</code>.',
671
-	'texte_statut_en_cours_redaction' => 'en cours de rédaction',
672
-	'texte_statut_poubelle' => 'à la poubelle',
673
-	'texte_statut_propose_evaluation' => 'proposé à l’évaluation',
674
-	'texte_statut_publie' => 'publié en ligne',
675
-	'texte_statut_refuse' => 'refusé',
676
-	'titre_ajouter_mot_cle' => 'AJOUTER UN MOT-CLÉ :',
677
-	'titre_cadre_raccourcis' => 'RACCOURCIS :',
678
-	'titre_changer_couleur_interface' => 'Changer la couleur de l’interface',
679
-	'titre_image_admin_article' => 'Tu peux administrer cet article',
680
-	'titre_image_administrateur' => 'Administrateur',
681
-	'titre_image_aide' => 'De l’aide sur cet élément',
682
-	'titre_image_auteur_supprime' => 'Auteur supprimé',
683
-	'titre_image_redacteur' => 'Rédacteur sans accès',
684
-	'titre_image_redacteur_02' => 'Rédacteur',
685
-	'titre_image_selecteur' => 'Afficher la liste',
686
-	'titre_image_visiteur' => 'Visiteur',
687
-	'titre_joindre_document' => 'JOINDRE UN DOCUMENT',
688
-	'titre_mots_cles' => 'MOTS-CLÉS',
689
-	'titre_probleme_technique' => 'Attention : un problème technique (serveur SQL) empêche l’accès à cette partie du site. Merci de ta compréhension.',
690
-	'titre_publier_document' => 'PUBLIER UN DOCUMENT DANS CETTE RUBRIQUE',
691
-	'titre_signatures_attente' => 'Signatures en attente de validation',
692
-	'titre_signatures_confirmees' => 'Signatures confirmées',
693
-	'titre_statistiques' => 'Statistiques du site',
694
-	'titre_titre_document' => 'Titre du document :',
695
-	'todo' => 'à venir',
696
-	'trad_definir_reference' => 'Choisir "@titre@" comme référence des traductions',
697
-	'trad_reference' => '(référence des traductions)',
668
+    'texte_inc_meta_1' => 'Le système a rencontré une erreur lors de l’écriture du fichier <code>@fichier@</code>. En tant qu’administrateur du site,',
669
+    'texte_inc_meta_2' => 'vérifie les droits d’ecriture',
670
+    'texte_inc_meta_3' => 'sur le répertoire <code>@repertoire@</code>.',
671
+    'texte_statut_en_cours_redaction' => 'en cours de rédaction',
672
+    'texte_statut_poubelle' => 'à la poubelle',
673
+    'texte_statut_propose_evaluation' => 'proposé à l’évaluation',
674
+    'texte_statut_publie' => 'publié en ligne',
675
+    'texte_statut_refuse' => 'refusé',
676
+    'titre_ajouter_mot_cle' => 'AJOUTER UN MOT-CLÉ :',
677
+    'titre_cadre_raccourcis' => 'RACCOURCIS :',
678
+    'titre_changer_couleur_interface' => 'Changer la couleur de l’interface',
679
+    'titre_image_admin_article' => 'Tu peux administrer cet article',
680
+    'titre_image_administrateur' => 'Administrateur',
681
+    'titre_image_aide' => 'De l’aide sur cet élément',
682
+    'titre_image_auteur_supprime' => 'Auteur supprimé',
683
+    'titre_image_redacteur' => 'Rédacteur sans accès',
684
+    'titre_image_redacteur_02' => 'Rédacteur',
685
+    'titre_image_selecteur' => 'Afficher la liste',
686
+    'titre_image_visiteur' => 'Visiteur',
687
+    'titre_joindre_document' => 'JOINDRE UN DOCUMENT',
688
+    'titre_mots_cles' => 'MOTS-CLÉS',
689
+    'titre_probleme_technique' => 'Attention : un problème technique (serveur SQL) empêche l’accès à cette partie du site. Merci de ta compréhension.',
690
+    'titre_publier_document' => 'PUBLIER UN DOCUMENT DANS CETTE RUBRIQUE',
691
+    'titre_signatures_attente' => 'Signatures en attente de validation',
692
+    'titre_signatures_confirmees' => 'Signatures confirmées',
693
+    'titre_statistiques' => 'Statistiques du site',
694
+    'titre_titre_document' => 'Titre du document :',
695
+    'todo' => 'à venir',
696
+    'trad_definir_reference' => 'Choisir "@titre@" comme référence des traductions',
697
+    'trad_reference' => '(référence des traductions)',
698 698
 
699
-	// U
700
-	'upload_limit' => 'Ce fichier est trop gros pour le serveur ; la taille maximum autorisée en <i>upload</i> est de @max@.',
699
+    // U
700
+    'upload_limit' => 'Ce fichier est trop gros pour le serveur ; la taille maximum autorisée en <i>upload</i> est de @max@.',
701 701
 
702
-	// Z
703
-	'zbug_balise_b_aval' => ' : balise B en aval',
704
-	'zbug_balise_inexistante' => 'Balise @balise@ mal déclarée pour @from@',
705
-	'zbug_balise_sans_argument' => 'Argument manquant dans la balise @balise@',
706
-	'zbug_boucle' => 'boucle',
707
-	'zbug_boucle_recursive_undef' => 'boucle récursive non définie',
708
-	'zbug_calcul' => 'calcul',
709
-	'zbug_champ_hors_boucle' => 'Champ @champ@ hors boucle',
710
-	'zbug_champ_hors_critere' => 'Champ @champ@ hors critère @critere@',
711
-	'zbug_champ_hors_motif' => 'Champ @champ@ hors d’un contexte @motif@',
712
-	'zbug_code' => 'code',
713
-	'zbug_critere_inconnu' => 'critère inconnu @critere@',
714
-	'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} sur une table sans clef primaire atomique',
715
-	'zbug_distant_interdit' => 'externe interdit',
716
-	'zbug_doublon_table_sans_cle_primaire' => 'doublons sur une table sans clef primaire atomique',
717
-	'zbug_doublon_table_sans_index' => 'doublons sur une table sans index',
718
-	'zbug_erreur_boucle_double' => 'BOUCLE@id@ : double définition',
719
-	'zbug_erreur_boucle_fermant' => 'BOUCLE@id@ : tag fermant manquant',
720
-	'zbug_erreur_boucle_syntaxe' => 'Syntaxe boucle incorrecte',
721
-	'zbug_erreur_compilation' => 'Erreur de compilation',
722
-	'zbug_erreur_execution_page' => 'erreur d’exécution de la page',
723
-	'zbug_erreur_filtre' => 'Erreur : filtre <b>« @filtre@ »</b> non défini',
724
-	'zbug_erreur_filtre_nbarg_min' => 'Filtre @filtre@ : il manque @nb@ argument(s)',
725
-	'zbug_erreur_meme_parent' => '{meme_parent} ne s’applique qu’aux boucles (FORUMS) ou (RUBRIQUES)',
726
-	'zbug_erreur_squelette' => 'Erreur(s) dans le squelette',
727
-	'zbug_hors_compilation' => 'Hors Compilation',
728
-	'zbug_info_erreur_squelette' => 'Erreur sur le site',
729
-	'zbug_inversion_ordre_inexistant' => 'inversion d’un ordre inexistant',
730
-	'zbug_pagination_sans_critere' => '#PAGINATION sans critère {pagination} ou employé dans une boucle récursive',
731
-	'zbug_parametres_inclus_incorrects' => 'Paramètre d’inclusion incorrect : @param@',
732
-	'zbug_profile' => 'Temps de calcul : @time@',
733
-	'zbug_resultat' => 'résultat',
734
-	'zbug_serveur_indefini' => 'serveur SQL indéfini',
735
-	'zbug_statistiques' => 'Statistiques des requêtes SQL classées par durée',
736
-	'zbug_table_inconnue' => 'Table SQL « @table@ » inconnue',
737
-	'zxml_connus_attributs' => 'attributs connus',
738
-	'zxml_de' => 'de',
739
-	'zxml_inconnu_attribut' => 'attribut inconnu',
740
-	'zxml_inconnu_balise' => 'balise inconnue',
741
-	'zxml_inconnu_entite' => 'entité inconnue',
742
-	'zxml_inconnu_id' => 'ID inconnu',
743
-	'zxml_mais_de' => 'mais de',
744
-	'zxml_non_conforme' => 'n’est pas conforme au motif',
745
-	'zxml_non_fils' => 'n’est pas un fils de',
746
-	'zxml_nonvide_balise' => 'balise non vide',
747
-	'zxml_obligatoire_attribut' => 'attribut obligatoire mais absent dans',
748
-	'zxml_succession_fils_incorrecte' => 'succession des fils incorrecte',
749
-	'zxml_survoler' => 'survoler pour voir les corrects',
750
-	'zxml_valeur_attribut' => 'valeur de l’attribut',
751
-	'zxml_vide_balise' => 'balise vide',
752
-	'zxml_vu' => 'vu auparavant'
702
+    // Z
703
+    'zbug_balise_b_aval' => ' : balise B en aval',
704
+    'zbug_balise_inexistante' => 'Balise @balise@ mal déclarée pour @from@',
705
+    'zbug_balise_sans_argument' => 'Argument manquant dans la balise @balise@',
706
+    'zbug_boucle' => 'boucle',
707
+    'zbug_boucle_recursive_undef' => 'boucle récursive non définie',
708
+    'zbug_calcul' => 'calcul',
709
+    'zbug_champ_hors_boucle' => 'Champ @champ@ hors boucle',
710
+    'zbug_champ_hors_critere' => 'Champ @champ@ hors critère @critere@',
711
+    'zbug_champ_hors_motif' => 'Champ @champ@ hors d’un contexte @motif@',
712
+    'zbug_code' => 'code',
713
+    'zbug_critere_inconnu' => 'critère inconnu @critere@',
714
+    'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} sur une table sans clef primaire atomique',
715
+    'zbug_distant_interdit' => 'externe interdit',
716
+    'zbug_doublon_table_sans_cle_primaire' => 'doublons sur une table sans clef primaire atomique',
717
+    'zbug_doublon_table_sans_index' => 'doublons sur une table sans index',
718
+    'zbug_erreur_boucle_double' => 'BOUCLE@id@ : double définition',
719
+    'zbug_erreur_boucle_fermant' => 'BOUCLE@id@ : tag fermant manquant',
720
+    'zbug_erreur_boucle_syntaxe' => 'Syntaxe boucle incorrecte',
721
+    'zbug_erreur_compilation' => 'Erreur de compilation',
722
+    'zbug_erreur_execution_page' => 'erreur d’exécution de la page',
723
+    'zbug_erreur_filtre' => 'Erreur : filtre <b>« @filtre@ »</b> non défini',
724
+    'zbug_erreur_filtre_nbarg_min' => 'Filtre @filtre@ : il manque @nb@ argument(s)',
725
+    'zbug_erreur_meme_parent' => '{meme_parent} ne s’applique qu’aux boucles (FORUMS) ou (RUBRIQUES)',
726
+    'zbug_erreur_squelette' => 'Erreur(s) dans le squelette',
727
+    'zbug_hors_compilation' => 'Hors Compilation',
728
+    'zbug_info_erreur_squelette' => 'Erreur sur le site',
729
+    'zbug_inversion_ordre_inexistant' => 'inversion d’un ordre inexistant',
730
+    'zbug_pagination_sans_critere' => '#PAGINATION sans critère {pagination} ou employé dans une boucle récursive',
731
+    'zbug_parametres_inclus_incorrects' => 'Paramètre d’inclusion incorrect : @param@',
732
+    'zbug_profile' => 'Temps de calcul : @time@',
733
+    'zbug_resultat' => 'résultat',
734
+    'zbug_serveur_indefini' => 'serveur SQL indéfini',
735
+    'zbug_statistiques' => 'Statistiques des requêtes SQL classées par durée',
736
+    'zbug_table_inconnue' => 'Table SQL « @table@ » inconnue',
737
+    'zxml_connus_attributs' => 'attributs connus',
738
+    'zxml_de' => 'de',
739
+    'zxml_inconnu_attribut' => 'attribut inconnu',
740
+    'zxml_inconnu_balise' => 'balise inconnue',
741
+    'zxml_inconnu_entite' => 'entité inconnue',
742
+    'zxml_inconnu_id' => 'ID inconnu',
743
+    'zxml_mais_de' => 'mais de',
744
+    'zxml_non_conforme' => 'n’est pas conforme au motif',
745
+    'zxml_non_fils' => 'n’est pas un fils de',
746
+    'zxml_nonvide_balise' => 'balise non vide',
747
+    'zxml_obligatoire_attribut' => 'attribut obligatoire mais absent dans',
748
+    'zxml_succession_fils_incorrecte' => 'succession des fils incorrecte',
749
+    'zxml_survoler' => 'survoler pour voir les corrects',
750
+    'zxml_valeur_attribut' => 'valeur de l’attribut',
751
+    'zxml_vide_balise' => 'balise vide',
752
+    'zxml_vu' => 'vu auparavant'
753 753
 );
Please login to merge, or discard this patch.
ecrire/genie/optimiser.php 2 patches
Indentation   +111 added lines, -111 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('base/abstract_sql');
@@ -35,26 +35,26 @@  discard block
 block discarded – undo
35 35
  **/
36 36
 function genie_optimiser_dist($t) {
37 37
 
38
-	optimiser_base_une_table();
39
-	optimiser_base();
40
-	optimiser_caches_contextes();
38
+    optimiser_base_une_table();
39
+    optimiser_base();
40
+    optimiser_caches_contextes();
41 41
 
42
-	// la date souhaitee pour le tour suivant = apres-demain a 4h du mat ;
43
-	// sachant qu'on a un delai de 48h, on renvoie aujourd'hui a 4h du mat
44
-	// avec une periode de flou entre 2h et 6h pour ne pas saturer un hebergeur
45
-	// qui aurait beaucoup de sites SPIP
46
-	return -(mktime(2, 0, 0) + random_int(0, 3600 * 4));
42
+    // la date souhaitee pour le tour suivant = apres-demain a 4h du mat ;
43
+    // sachant qu'on a un delai de 48h, on renvoie aujourd'hui a 4h du mat
44
+    // avec une periode de flou entre 2h et 6h pour ne pas saturer un hebergeur
45
+    // qui aurait beaucoup de sites SPIP
46
+    return -(mktime(2, 0, 0) + random_int(0, 3600 * 4));
47 47
 }
48 48
 
49 49
 /**
50 50
  * Vider les contextes ajax de plus de 48h
51 51
  */
52 52
 function optimiser_caches_contextes() {
53
-	sous_repertoire(_DIR_CACHE, 'contextes');
54
-	if (is_dir($d = _DIR_CACHE . 'contextes')) {
55
-		include_spip('inc/invalideur');
56
-		purger_repertoire($d, ['mtime' => time() - 48 * 3600, 'limit' => 10000]);
57
-	}
53
+    sous_repertoire(_DIR_CACHE, 'contextes');
54
+    if (is_dir($d = _DIR_CACHE . 'contextes')) {
55
+        include_spip('inc/invalideur');
56
+        purger_repertoire($d, ['mtime' => time() - 48 * 3600, 'limit' => 10000]);
57
+    }
58 58
 }
59 59
 
60 60
 /**
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
  * @return void
70 70
  **/
71 71
 function optimiser_base($attente = 86400) {
72
-	optimiser_base_disparus($attente);
72
+    optimiser_base_disparus($attente);
73 73
 }
74 74
 
75 75
 
@@ -86,28 +86,28 @@  discard block
 block discarded – undo
86 86
  **/
87 87
 function optimiser_base_une_table() {
88 88
 
89
-	$tables = [];
90
-	$result = sql_showbase();
91
-
92
-	// on n'optimise qu'une seule table a chaque fois,
93
-	// pour ne pas vautrer le systeme
94
-	// lire http://dev.mysql.com/doc/refman/5.0/fr/optimize-table.html
95
-	while ($row = sql_fetch($result)) {
96
-		$tables[] = array_shift($row);
97
-	}
98
-
99
-	spip_log('optimiser_base_une_table ' . json_encode($tables, JSON_THROW_ON_ERROR), 'genie' . _LOG_DEBUG);
100
-	if ($tables) {
101
-		$table_op = intval(lire_config('optimiser_table', 0) + 1) % sizeof($tables);
102
-		ecrire_config('optimiser_table', $table_op);
103
-		$q = $tables[$table_op];
104
-		spip_log("optimiser_base_une_table : debut d'optimisation de la table $q", 'genie' . _LOG_DEBUG);
105
-		if (sql_optimize($q)) {
106
-			spip_log("optimiser_base_une_table : fin d'optimisation de la table $q", 'genie' . _LOG_DEBUG);
107
-		} else {
108
-			spip_log("optimiser_base_une_table : Pas d'optimiseur necessaire", 'genie' . _LOG_DEBUG);
109
-		}
110
-	}
89
+    $tables = [];
90
+    $result = sql_showbase();
91
+
92
+    // on n'optimise qu'une seule table a chaque fois,
93
+    // pour ne pas vautrer le systeme
94
+    // lire http://dev.mysql.com/doc/refman/5.0/fr/optimize-table.html
95
+    while ($row = sql_fetch($result)) {
96
+        $tables[] = array_shift($row);
97
+    }
98
+
99
+    spip_log('optimiser_base_une_table ' . json_encode($tables, JSON_THROW_ON_ERROR), 'genie' . _LOG_DEBUG);
100
+    if ($tables) {
101
+        $table_op = intval(lire_config('optimiser_table', 0) + 1) % sizeof($tables);
102
+        ecrire_config('optimiser_table', $table_op);
103
+        $q = $tables[$table_op];
104
+        spip_log("optimiser_base_une_table : debut d'optimisation de la table $q", 'genie' . _LOG_DEBUG);
105
+        if (sql_optimize($q)) {
106
+            spip_log("optimiser_base_une_table : fin d'optimisation de la table $q", 'genie' . _LOG_DEBUG);
107
+        } else {
108
+            spip_log("optimiser_base_une_table : Pas d'optimiseur necessaire", 'genie' . _LOG_DEBUG);
109
+        }
110
+    }
111 111
 }
112 112
 
113 113
 
@@ -133,18 +133,18 @@  discard block
 block discarded – undo
133 133
  *     Nombre de suppressions
134 134
  **/
135 135
 function optimiser_sansref($table, $id, $sel, $and = '') {
136
-	$in = [];
137
-	while ($row = sql_fetch($sel)) {
138
-		$in[$row['id']] = true;
139
-	}
140
-	sql_free($sel);
141
-
142
-	if ($in) {
143
-		sql_delete($table, sql_in($id, array_keys($in)) . ($and ? " AND $and" : ''));
144
-		spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: " . implode(', ', array_keys($in)), 'genie' . _LOG_DEBUG);
145
-	}
146
-
147
-	return count($in);
136
+    $in = [];
137
+    while ($row = sql_fetch($sel)) {
138
+        $in[$row['id']] = true;
139
+    }
140
+    sql_free($sel);
141
+
142
+    if ($in) {
143
+        sql_delete($table, sql_in($id, array_keys($in)) . ($and ? " AND $and" : ''));
144
+        spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: " . implode(', ', array_keys($in)), 'genie' . _LOG_DEBUG);
145
+    }
146
+
147
+    return count($in);
148 148
 }
149 149
 
150 150
 
@@ -166,81 +166,81 @@  discard block
 block discarded – undo
166 166
  **/
167 167
 function optimiser_base_disparus($attente = 86400) {
168 168
 
169
-	# format = 20060610110141, si on veut forcer une optimisation tout de suite
170
-	$mydate = date('Y-m-d H:i:s', time() - $attente);
171
-	$mydate_quote = sql_quote($mydate);
169
+    # format = 20060610110141, si on veut forcer une optimisation tout de suite
170
+    $mydate = date('Y-m-d H:i:s', time() - $attente);
171
+    $mydate_quote = sql_quote($mydate);
172 172
 
173
-	$n = 0;
173
+    $n = 0;
174 174
 
175
-	//
176
-	// Rubriques
177
-	//
175
+    //
176
+    // Rubriques
177
+    //
178 178
 
179
-	# les articles qui sont dans une id_rubrique inexistante
180
-	# attention on controle id_rubrique>0 pour ne pas tuer les articles
181
-	# specialement affectes a une rubrique non-existante (plugin,
182
-	# cf. https://core.spip.net/issues/1549 )
183
-	$res = sql_select(
184
-		'A.id_article AS id',
185
-		'spip_articles AS A
179
+    # les articles qui sont dans une id_rubrique inexistante
180
+    # attention on controle id_rubrique>0 pour ne pas tuer les articles
181
+    # specialement affectes a une rubrique non-existante (plugin,
182
+    # cf. https://core.spip.net/issues/1549 )
183
+    $res = sql_select(
184
+        'A.id_article AS id',
185
+        'spip_articles AS A
186 186
 		        LEFT JOIN spip_rubriques AS R
187 187
 		          ON A.id_rubrique=R.id_rubrique',
188
-		"A.id_rubrique > 0
188
+        "A.id_rubrique > 0
189 189
 			 AND R.id_rubrique IS NULL
190 190
 		         AND A.maj < $mydate_quote"
191
-	);
191
+    );
192 192
 
193
-	$n += optimiser_sansref('spip_articles', 'id_article', $res);
193
+    $n += optimiser_sansref('spip_articles', 'id_article', $res);
194 194
 
195
-	// les articles a la poubelle
196
-	sql_delete('spip_articles', "statut='poubelle' AND maj < $mydate_quote");
195
+    // les articles a la poubelle
196
+    sql_delete('spip_articles', "statut='poubelle' AND maj < $mydate_quote");
197 197
 
198
-	//
199
-	// Auteurs
200
-	//
198
+    //
199
+    // Auteurs
200
+    //
201 201
 
202
-	include_spip('action/editer_liens');
203
-	// optimiser les liens de tous les auteurs vers des objets effaces
204
-	// et depuis des auteurs effaces
205
-	$n += objet_optimiser_liens(['auteur' => '*'], '*');
202
+    include_spip('action/editer_liens');
203
+    // optimiser les liens de tous les auteurs vers des objets effaces
204
+    // et depuis des auteurs effaces
205
+    $n += objet_optimiser_liens(['auteur' => '*'], '*');
206 206
 
207
-	# effacer les auteurs poubelle qui ne sont lies a rien
208
-	$res = sql_select(
209
-		'A.id_auteur AS id',
210
-		'spip_auteurs AS A
207
+    # effacer les auteurs poubelle qui ne sont lies a rien
208
+    $res = sql_select(
209
+        'A.id_auteur AS id',
210
+        'spip_auteurs AS A
211 211
 		      	LEFT JOIN spip_auteurs_liens AS L
212 212
 		          ON L.id_auteur=A.id_auteur',
213
-		"L.id_auteur IS NULL
213
+        "L.id_auteur IS NULL
214 214
 		       	AND A.statut='5poubelle' AND A.maj < $mydate_quote"
215
-	);
216
-
217
-	$n += optimiser_sansref('spip_auteurs', 'id_auteur', $res);
218
-
219
-	# supprimer les auteurs 'nouveau' qui n'ont jamais donne suite
220
-	# au mail de confirmation (45 jours pour repondre, ca devrait suffire)
221
-	if (!defined('_AUTEURS_DELAI_REJET_NOUVEAU')) {
222
-		define('_AUTEURS_DELAI_REJET_NOUVEAU', 45 * 24 * 3600);
223
-	}
224
-	sql_delete('spip_auteurs', "statut='nouveau' AND maj < " . sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU))));
225
-
226
-	/**
227
-	 * Permet aux plugins de compléter l'optimisation suite aux éléments disparus
228
-	 *
229
-	 * L'index 'data' est un entier indiquant le nombre d'optimisations
230
-	 * qui ont été réalisées (par exemple le nombre de suppressions faites)
231
-	 * et qui doit être incrémenté par les fonctions
232
-	 * utilisant ce pipeline si elles suppriment des éléments.
233
-	 *
234
-	 * @pipeline_appel optimiser_base_disparus
235
-	 */
236
-	$n = pipeline('optimiser_base_disparus', [
237
-		'args' => [
238
-			'attente' => $attente,
239
-			'date' => $mydate
240
-		],
241
-		'data' => $n
242
-	]);
243
-
244
-
245
-	spip_log("optimiser_base_disparus : {$n} lien(s) mort(s)", 'genie' . _LOG_DEBUG);
215
+    );
216
+
217
+    $n += optimiser_sansref('spip_auteurs', 'id_auteur', $res);
218
+
219
+    # supprimer les auteurs 'nouveau' qui n'ont jamais donne suite
220
+    # au mail de confirmation (45 jours pour repondre, ca devrait suffire)
221
+    if (!defined('_AUTEURS_DELAI_REJET_NOUVEAU')) {
222
+        define('_AUTEURS_DELAI_REJET_NOUVEAU', 45 * 24 * 3600);
223
+    }
224
+    sql_delete('spip_auteurs', "statut='nouveau' AND maj < " . sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU))));
225
+
226
+    /**
227
+     * Permet aux plugins de compléter l'optimisation suite aux éléments disparus
228
+     *
229
+     * L'index 'data' est un entier indiquant le nombre d'optimisations
230
+     * qui ont été réalisées (par exemple le nombre de suppressions faites)
231
+     * et qui doit être incrémenté par les fonctions
232
+     * utilisant ce pipeline si elles suppriment des éléments.
233
+     *
234
+     * @pipeline_appel optimiser_base_disparus
235
+     */
236
+    $n = pipeline('optimiser_base_disparus', [
237
+        'args' => [
238
+            'attente' => $attente,
239
+            'date' => $mydate
240
+        ],
241
+        'data' => $n
242
+    ]);
243
+
244
+
245
+    spip_log("optimiser_base_disparus : {$n} lien(s) mort(s)", 'genie' . _LOG_DEBUG);
246 246
 }
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -51,7 +51,7 @@  discard block
 block discarded – undo
51 51
  */
52 52
 function optimiser_caches_contextes() {
53 53
 	sous_repertoire(_DIR_CACHE, 'contextes');
54
-	if (is_dir($d = _DIR_CACHE . 'contextes')) {
54
+	if (is_dir($d = _DIR_CACHE.'contextes')) {
55 55
 		include_spip('inc/invalideur');
56 56
 		purger_repertoire($d, ['mtime' => time() - 48 * 3600, 'limit' => 10000]);
57 57
 	}
@@ -96,16 +96,16 @@  discard block
 block discarded – undo
96 96
 		$tables[] = array_shift($row);
97 97
 	}
98 98
 
99
-	spip_log('optimiser_base_une_table ' . json_encode($tables, JSON_THROW_ON_ERROR), 'genie' . _LOG_DEBUG);
99
+	spip_log('optimiser_base_une_table '.json_encode($tables, JSON_THROW_ON_ERROR), 'genie'._LOG_DEBUG);
100 100
 	if ($tables) {
101 101
 		$table_op = intval(lire_config('optimiser_table', 0) + 1) % sizeof($tables);
102 102
 		ecrire_config('optimiser_table', $table_op);
103 103
 		$q = $tables[$table_op];
104
-		spip_log("optimiser_base_une_table : debut d'optimisation de la table $q", 'genie' . _LOG_DEBUG);
104
+		spip_log("optimiser_base_une_table : debut d'optimisation de la table $q", 'genie'._LOG_DEBUG);
105 105
 		if (sql_optimize($q)) {
106
-			spip_log("optimiser_base_une_table : fin d'optimisation de la table $q", 'genie' . _LOG_DEBUG);
106
+			spip_log("optimiser_base_une_table : fin d'optimisation de la table $q", 'genie'._LOG_DEBUG);
107 107
 		} else {
108
-			spip_log("optimiser_base_une_table : Pas d'optimiseur necessaire", 'genie' . _LOG_DEBUG);
108
+			spip_log("optimiser_base_une_table : Pas d'optimiseur necessaire", 'genie'._LOG_DEBUG);
109 109
 		}
110 110
 	}
111 111
 }
@@ -140,8 +140,8 @@  discard block
 block discarded – undo
140 140
 	sql_free($sel);
141 141
 
142 142
 	if ($in) {
143
-		sql_delete($table, sql_in($id, array_keys($in)) . ($and ? " AND $and" : ''));
144
-		spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: " . implode(', ', array_keys($in)), 'genie' . _LOG_DEBUG);
143
+		sql_delete($table, sql_in($id, array_keys($in)).($and ? " AND $and" : ''));
144
+		spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: ".implode(', ', array_keys($in)), 'genie'._LOG_DEBUG);
145 145
 	}
146 146
 
147 147
 	return count($in);
@@ -221,7 +221,7 @@  discard block
 block discarded – undo
221 221
 	if (!defined('_AUTEURS_DELAI_REJET_NOUVEAU')) {
222 222
 		define('_AUTEURS_DELAI_REJET_NOUVEAU', 45 * 24 * 3600);
223 223
 	}
224
-	sql_delete('spip_auteurs', "statut='nouveau' AND maj < " . sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU))));
224
+	sql_delete('spip_auteurs', "statut='nouveau' AND maj < ".sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU))));
225 225
 
226 226
 	/**
227 227
 	 * Permet aux plugins de compléter l'optimisation suite aux éléments disparus
@@ -242,5 +242,5 @@  discard block
 block discarded – undo
242 242
 	]);
243 243
 
244 244
 
245
-	spip_log("optimiser_base_disparus : {$n} lien(s) mort(s)", 'genie' . _LOG_DEBUG);
245
+	spip_log("optimiser_base_disparus : {$n} lien(s) mort(s)", 'genie'._LOG_DEBUG);
246 246
 }
Please login to merge, or discard this patch.
prive/formulaires/editer_logo.php 2 patches
Indentation   +161 added lines, -161 removed lines patch added patch discarded remove patch
@@ -30,7 +30,7 @@  discard block
 block discarded – undo
30 30
  **/
31 31
 
32 32
 if (!defined('_ECRIRE_INC_VERSION')) {
33
-	return;
33
+    return;
34 34
 }
35 35
 
36 36
 // utilise pour le logo du site, donc doit rester ici
@@ -48,92 +48,92 @@  discard block
 block discarded – undo
48 48
  * @return array|false Variables d'environnement pour le fond
49 49
  */
50 50
 function formulaires_editer_logo_charger_dist($objet, $id_objet, $retour = '', $options = []) {
51
-	// pas dans une boucle ? formulaire pour le logo du site
52
-	// dans ce cas, il faut chercher un 'siteon0.ext'
53
-	if (!$objet) {
54
-		$objet = 'site';
55
-	}
51
+    // pas dans une boucle ? formulaire pour le logo du site
52
+    // dans ce cas, il faut chercher un 'siteon0.ext'
53
+    if (!$objet) {
54
+        $objet = 'site';
55
+    }
56 56
 
57
-	$objet = objet_type($objet);
58
-	$_id_objet = id_table_objet($objet);
57
+    $objet = objet_type($objet);
58
+    $_id_objet = id_table_objet($objet);
59 59
 
60
-	if (!is_array($options)) {
61
-		$options = unserialize($options);
62
-	}
63
-	$options = spip_sanitize_from_request($options, '*');
60
+    if (!is_array($options)) {
61
+        $options = unserialize($options);
62
+    }
63
+    $options = spip_sanitize_from_request($options, '*');
64 64
 
65
-	if (!isset($options['titre'])) {
66
-		$balise_img = chercher_filtre('balise_img');
67
-		$img = $balise_img(chemin_image('image-24.png'), '', 'cadre-icone');
68
-		$libelles = pipeline('libeller_logo', $GLOBALS['logo_libelles']);
69
-		$libelle = (($id_objet or $objet != 'rubrique') ? $objet : 'racine');
70
-		if (isset($libelles[$libelle])) {
71
-			$libelle = $libelles[$libelle];
72
-		} elseif ($libelle = objet_info($objet, 'texte_logo_objet')) {
73
-			$libelle = _T($libelle);
74
-		} else {
75
-			$libelle = _L('Logo');
76
-		}
77
-		switch ($objet) {
78
-			case 'article':
79
-				$libelle .= ' ' . aider('logoart');
80
-				break;
81
-			case 'breve':
82
-				$libelle .= ' ' . aider('breveslogo');
83
-				break;
84
-			case 'rubrique':
85
-				$libelle .= ' ' . aider('rublogo');
86
-				break;
87
-			default:
88
-				break;
89
-		}
65
+    if (!isset($options['titre'])) {
66
+        $balise_img = chercher_filtre('balise_img');
67
+        $img = $balise_img(chemin_image('image-24.png'), '', 'cadre-icone');
68
+        $libelles = pipeline('libeller_logo', $GLOBALS['logo_libelles']);
69
+        $libelle = (($id_objet or $objet != 'rubrique') ? $objet : 'racine');
70
+        if (isset($libelles[$libelle])) {
71
+            $libelle = $libelles[$libelle];
72
+        } elseif ($libelle = objet_info($objet, 'texte_logo_objet')) {
73
+            $libelle = _T($libelle);
74
+        } else {
75
+            $libelle = _L('Logo');
76
+        }
77
+        switch ($objet) {
78
+            case 'article':
79
+                $libelle .= ' ' . aider('logoart');
80
+                break;
81
+            case 'breve':
82
+                $libelle .= ' ' . aider('breveslogo');
83
+                break;
84
+            case 'rubrique':
85
+                $libelle .= ' ' . aider('rublogo');
86
+                break;
87
+            default:
88
+                break;
89
+        }
90 90
 
91
-		$options['titre'] = $img . $libelle;
92
-	}
93
-	if (!isset($options['editable'])) {
94
-		include_spip('inc/autoriser');
95
-		$options['editable'] = autoriser('iconifier', $objet, $id_objet);
96
-	}
91
+        $options['titre'] = $img . $libelle;
92
+    }
93
+    if (!isset($options['editable'])) {
94
+        include_spip('inc/autoriser');
95
+        $options['editable'] = autoriser('iconifier', $objet, $id_objet);
96
+    }
97 97
 
98
-	$res = [
99
-		'editable' => ($GLOBALS['meta']['activer_logos'] == 'oui' ? ' ' : '') && (!isset($options['editable']) or $options['editable']),
100
-		'logo_survol' => ($GLOBALS['meta']['activer_logos_survol'] == 'oui' ? ' ' : ''),
101
-		'objet' => $objet,
102
-		'id_objet' => $id_objet,
103
-		'_options' => $options,
104
-		'_show_upload_off' => '',
105
-	];
98
+    $res = [
99
+        'editable' => ($GLOBALS['meta']['activer_logos'] == 'oui' ? ' ' : '') && (!isset($options['editable']) or $options['editable']),
100
+        'logo_survol' => ($GLOBALS['meta']['activer_logos_survol'] == 'oui' ? ' ' : ''),
101
+        'objet' => $objet,
102
+        'id_objet' => $id_objet,
103
+        '_options' => $options,
104
+        '_show_upload_off' => '',
105
+    ];
106 106
 
107
-	// rechercher le logo de l'objet
108
-	// la fonction prend un parametre '_id_objet' etrange :
109
-	// le nom de la cle primaire (et non le nom de la table)
110
-	// ou directement le nom du raccourcis a chercher
111
-	$chercher_logo = charger_fonction('chercher_logo', 'inc');
112
-	$etats = $res['logo_survol'] ? ['on', 'off'] : ['on'];
113
-	foreach ($etats as $etat) {
114
-		$logo = $chercher_logo($id_objet, $_id_objet, $etat);
115
-		if ($logo) {
116
-			$res['logo_' . $etat] = $logo[0];
117
-			$res['logo_id_' . $etat] = $logo[5]['id_document'] ?? '';
118
-		}
119
-	}
120
-	// pas de logo_on -> pas de formulaire pour le survol
121
-	if (!isset($res['logo_on'])) {
122
-		$res['logo_survol'] = '';
123
-	} elseif (!isset($res['logo_off']) and _request('logo_up')) {
124
-		$res['_show_upload_off'] = ' ';
125
-	}
107
+    // rechercher le logo de l'objet
108
+    // la fonction prend un parametre '_id_objet' etrange :
109
+    // le nom de la cle primaire (et non le nom de la table)
110
+    // ou directement le nom du raccourcis a chercher
111
+    $chercher_logo = charger_fonction('chercher_logo', 'inc');
112
+    $etats = $res['logo_survol'] ? ['on', 'off'] : ['on'];
113
+    foreach ($etats as $etat) {
114
+        $logo = $chercher_logo($id_objet, $_id_objet, $etat);
115
+        if ($logo) {
116
+            $res['logo_' . $etat] = $logo[0];
117
+            $res['logo_id_' . $etat] = $logo[5]['id_document'] ?? '';
118
+        }
119
+    }
120
+    // pas de logo_on -> pas de formulaire pour le survol
121
+    if (!isset($res['logo_on'])) {
122
+        $res['logo_survol'] = '';
123
+    } elseif (!isset($res['logo_off']) and _request('logo_up')) {
124
+        $res['_show_upload_off'] = ' ';
125
+    }
126 126
 
127
-	// si le logo n'est pas editable et qu'il n'y en a pas, on affiche pas du tout le formulaire
128
-	if (
129
-		!$res['editable']
130
-		and !isset($res['logo_off'])
131
-		and !isset($res['logo_on'])
132
-	) {
133
-		return false;
134
-	}
127
+    // si le logo n'est pas editable et qu'il n'y en a pas, on affiche pas du tout le formulaire
128
+    if (
129
+        !$res['editable']
130
+        and !isset($res['logo_off'])
131
+        and !isset($res['logo_on'])
132
+    ) {
133
+        return false;
134
+    }
135 135
 
136
-	return $res;
136
+    return $res;
137 137
 }
138 138
 
139 139
 /**
@@ -147,7 +147,7 @@  discard block
 block discarded – undo
147 147
  * @return string              Hash du formulaire
148 148
  */
149 149
 function formulaires_editer_logo_identifier_dist($objet, $id_objet, $retour = '', $options = []) {
150
-	return serialize([$objet, $id_objet]);
150
+    return serialize([$objet, $id_objet]);
151 151
 }
152 152
 
153 153
 /**
@@ -163,31 +163,31 @@  discard block
 block discarded – undo
163 163
  * @return array               Erreurs du formulaire
164 164
  */
165 165
 function formulaires_editer_logo_verifier_dist($objet, $id_objet, $retour = '', $options = []) {
166
-	$erreurs = [];
167
-	// verifier les extensions
168
-	$sources = formulaire_editer_logo_get_sources();
169
-	include_spip('action/editer_logo');
170
-	$extensions_possibles = $GLOBALS['formats_logos'];
171
-	if (in_array('jpg', $extensions_possibles)) {
172
-		$extensions_possibles[] = 'jpeg';
173
-	}
174
-	foreach ($sources as $etat => $file) {
175
-		// seulement si une reception correcte a eu lieu
176
-		if ($file and $file['error'] == 0) {
177
-			if (
178
-				!in_array(
179
-					strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)),
180
-					$extensions_possibles
181
-				)
182
-			) {
183
-				$erreurs['logo_' . $etat] = _L('Extension non reconnue');
184
-			}
185
-		} elseif ($file and $file['error'] != 0 and isset($file['msg'])) {
186
-			$erreurs['message_erreur'] = $file['msg'];
187
-		}
188
-	}
166
+    $erreurs = [];
167
+    // verifier les extensions
168
+    $sources = formulaire_editer_logo_get_sources();
169
+    include_spip('action/editer_logo');
170
+    $extensions_possibles = $GLOBALS['formats_logos'];
171
+    if (in_array('jpg', $extensions_possibles)) {
172
+        $extensions_possibles[] = 'jpeg';
173
+    }
174
+    foreach ($sources as $etat => $file) {
175
+        // seulement si une reception correcte a eu lieu
176
+        if ($file and $file['error'] == 0) {
177
+            if (
178
+                !in_array(
179
+                    strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)),
180
+                    $extensions_possibles
181
+                )
182
+            ) {
183
+                $erreurs['logo_' . $etat] = _L('Extension non reconnue');
184
+            }
185
+        } elseif ($file and $file['error'] != 0 and isset($file['msg'])) {
186
+            $erreurs['message_erreur'] = $file['msg'];
187
+        }
188
+    }
189 189
 
190
-	return $erreurs;
190
+    return $erreurs;
191 191
 }
192 192
 
193 193
 /**
@@ -203,47 +203,47 @@  discard block
 block discarded – undo
203 203
  * @return array               Retour des traitements
204 204
  */
205 205
 function formulaires_editer_logo_traiter_dist($objet, $id_objet, $retour = '', $options = []) {
206
-	$res = ['editable' => ' '];
206
+    $res = ['editable' => ' '];
207 207
 
208
-	// pas dans une boucle ? formulaire pour le logo du site
209
-	// dans ce cas, il faut chercher un 'siteon0.ext'
210
-	if (!$objet) {
211
-		$objet = 'site';
212
-	}
208
+    // pas dans une boucle ? formulaire pour le logo du site
209
+    // dans ce cas, il faut chercher un 'siteon0.ext'
210
+    if (!$objet) {
211
+        $objet = 'site';
212
+    }
213 213
 
214
-	include_spip('action/editer_logo');
214
+    include_spip('action/editer_logo');
215 215
 
216
-	// effectuer la suppression si demandee d'un logo
217
-	$on = _request('supprimer_logo_on');
218
-	if ($on or _request('supprimer_logo_off')) {
219
-		logo_supprimer($objet, $id_objet, $on ? 'on' : 'off');
220
-		$res['message_ok'] = ''; // pas besoin de message : la validation est visuelle
221
-		set_request('logo_up', ' ');
222
-	} // sinon supprimer ancien logo puis copier le nouveau
223
-	else {
224
-		$sources = formulaire_editer_logo_get_sources();
225
-		foreach ($sources as $etat => $file) {
226
-			if ($file and $file['error'] == 0) {
227
-				if ($err = logo_modifier($objet, $id_objet, $etat, $file)) {
228
-					$res['message_erreur'] = $err;
229
-				} else {
230
-					$res['message_ok'] = '';
231
-				} // pas besoin de message : la validation est visuelle
232
-				set_request('logo_up', ' ');
233
-			}
234
-		}
235
-	}
216
+    // effectuer la suppression si demandee d'un logo
217
+    $on = _request('supprimer_logo_on');
218
+    if ($on or _request('supprimer_logo_off')) {
219
+        logo_supprimer($objet, $id_objet, $on ? 'on' : 'off');
220
+        $res['message_ok'] = ''; // pas besoin de message : la validation est visuelle
221
+        set_request('logo_up', ' ');
222
+    } // sinon supprimer ancien logo puis copier le nouveau
223
+    else {
224
+        $sources = formulaire_editer_logo_get_sources();
225
+        foreach ($sources as $etat => $file) {
226
+            if ($file and $file['error'] == 0) {
227
+                if ($err = logo_modifier($objet, $id_objet, $etat, $file)) {
228
+                    $res['message_erreur'] = $err;
229
+                } else {
230
+                    $res['message_ok'] = '';
231
+                } // pas besoin de message : la validation est visuelle
232
+                set_request('logo_up', ' ');
233
+            }
234
+        }
235
+    }
236 236
 
237
-	// Invalider les caches de l'objet
238
-	include_spip('inc/invalideur');
239
-	suivre_invalideur("id='$objet/$id_objet'");
237
+    // Invalider les caches de l'objet
238
+    include_spip('inc/invalideur');
239
+    suivre_invalideur("id='$objet/$id_objet'");
240 240
 
241 241
 
242
-	if ($retour) {
243
-		$res['redirect'] = $retour;
244
-	}
242
+    if ($retour) {
243
+        $res['redirect'] = $retour;
244
+    }
245 245
 
246
-	return $res;
246
+    return $res;
247 247
 }
248 248
 
249 249
 
@@ -255,29 +255,29 @@  discard block
 block discarded – undo
255 255
  *     Sources des fichiers dans les clés `on` ou `off`
256 256
  */
257 257
 function formulaire_editer_logo_get_sources() {
258
-	if (!$_FILES) {
259
-		$_FILES = $GLOBALS['HTTP_POST_FILES'] ?? [];
260
-	}
261
-	if (!is_array($_FILES)) {
262
-		return [];
263
-	}
258
+    if (!$_FILES) {
259
+        $_FILES = $GLOBALS['HTTP_POST_FILES'] ?? [];
260
+    }
261
+    if (!is_array($_FILES)) {
262
+        return [];
263
+    }
264 264
 
265
-	include_spip('inc/documents');
266
-	$sources = [];
267
-	foreach (['on', 'off'] as $etat) {
268
-		$logo = 'logo_' . $etat;
269
-		if (isset($_FILES[$logo])) {
270
-			if ($_FILES[$logo]['error'] == 0) {
271
-				$sources[$etat] = $_FILES[$logo];
272
-			} elseif ($_FILES[$logo]['error'] != 0) {
273
-				$msg = check_upload_error($_FILES[$logo]['error'], false, true);
274
-				if ($msg and is_string($msg)) {
275
-					$sources[$etat] = $_FILES[$logo];
276
-					$sources[$etat]['msg'] = $msg;
277
-				}
278
-			}
279
-		}
280
-	}
265
+    include_spip('inc/documents');
266
+    $sources = [];
267
+    foreach (['on', 'off'] as $etat) {
268
+        $logo = 'logo_' . $etat;
269
+        if (isset($_FILES[$logo])) {
270
+            if ($_FILES[$logo]['error'] == 0) {
271
+                $sources[$etat] = $_FILES[$logo];
272
+            } elseif ($_FILES[$logo]['error'] != 0) {
273
+                $msg = check_upload_error($_FILES[$logo]['error'], false, true);
274
+                if ($msg and is_string($msg)) {
275
+                    $sources[$etat] = $_FILES[$logo];
276
+                    $sources[$etat]['msg'] = $msg;
277
+                }
278
+            }
279
+        }
280
+    }
281 281
 
282
-	return $sources;
282
+    return $sources;
283 283
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -76,19 +76,19 @@  discard block
 block discarded – undo
76 76
 		}
77 77
 		switch ($objet) {
78 78
 			case 'article':
79
-				$libelle .= ' ' . aider('logoart');
79
+				$libelle .= ' '.aider('logoart');
80 80
 				break;
81 81
 			case 'breve':
82
-				$libelle .= ' ' . aider('breveslogo');
82
+				$libelle .= ' '.aider('breveslogo');
83 83
 				break;
84 84
 			case 'rubrique':
85
-				$libelle .= ' ' . aider('rublogo');
85
+				$libelle .= ' '.aider('rublogo');
86 86
 				break;
87 87
 			default:
88 88
 				break;
89 89
 		}
90 90
 
91
-		$options['titre'] = $img . $libelle;
91
+		$options['titre'] = $img.$libelle;
92 92
 	}
93 93
 	if (!isset($options['editable'])) {
94 94
 		include_spip('inc/autoriser');
@@ -113,8 +113,8 @@  discard block
 block discarded – undo
113 113
 	foreach ($etats as $etat) {
114 114
 		$logo = $chercher_logo($id_objet, $_id_objet, $etat);
115 115
 		if ($logo) {
116
-			$res['logo_' . $etat] = $logo[0];
117
-			$res['logo_id_' . $etat] = $logo[5]['id_document'] ?? '';
116
+			$res['logo_'.$etat] = $logo[0];
117
+			$res['logo_id_'.$etat] = $logo[5]['id_document'] ?? '';
118 118
 		}
119 119
 	}
120 120
 	// pas de logo_on -> pas de formulaire pour le survol
@@ -180,7 +180,7 @@  discard block
 block discarded – undo
180 180
 					$extensions_possibles
181 181
 				)
182 182
 			) {
183
-				$erreurs['logo_' . $etat] = _L('Extension non reconnue');
183
+				$erreurs['logo_'.$etat] = _L('Extension non reconnue');
184 184
 			}
185 185
 		} elseif ($file and $file['error'] != 0 and isset($file['msg'])) {
186 186
 			$erreurs['message_erreur'] = $file['msg'];
@@ -265,7 +265,7 @@  discard block
 block discarded – undo
265 265
 	include_spip('inc/documents');
266 266
 	$sources = [];
267 267
 	foreach (['on', 'off'] as $etat) {
268
-		$logo = 'logo_' . $etat;
268
+		$logo = 'logo_'.$etat;
269 269
 		if (isset($_FILES[$logo])) {
270 270
 			if ($_FILES[$logo]['error'] == 0) {
271 271
 				$sources[$etat] = $_FILES[$logo];
Please login to merge, or discard this patch.
ecrire/public/quete.php 2 patches
Indentation   +431 added lines, -431 removed lines patch added patch discarded remove patch
@@ -19,7 +19,7 @@  discard block
 block discarded – undo
19 19
  **/
20 20
 
21 21
 if (!defined('_ECRIRE_INC_VERSION')) {
22
-	return;
22
+    return;
23 23
 }
24 24
 
25 25
 
@@ -33,16 +33,16 @@  discard block
 block discarded – undo
33 33
  * @return array|bool|null
34 34
  */
35 35
 function quete_virtuel($id_article, $connect) {
36
-	return sql_getfetsel(
37
-		'virtuel',
38
-		'spip_articles',
39
-		['id_article=' . intval($id_article), "statut='publie'"],
40
-		'',
41
-		'',
42
-		'',
43
-		'',
44
-		$connect
45
-	);
36
+    return sql_getfetsel(
37
+        'virtuel',
38
+        'spip_articles',
39
+        ['id_article=' . intval($id_article), "statut='publie'"],
40
+        '',
41
+        '',
42
+        '',
43
+        '',
44
+        $connect
45
+    );
46 46
 }
47 47
 
48 48
 /**
@@ -57,41 +57,41 @@  discard block
 block discarded – undo
57 57
  * @return array
58 58
  */
59 59
 function quete_parent_lang($table, $id, string $connect = '') {
60
-	static $cache_quete = [];
61
-
62
-	if (!isset($cache_quete[$connect][$table][$id])) {
63
-		if (!isset($cache_quete[$connect][$table]['_select'])) {
64
-			$trouver_table = charger_fonction('trouver_table', 'base');
65
-			if (
66
-				!$desc = $trouver_table(
67
-					$table,
68
-					$connect
69
-				) or !isset($desc['field']['id_rubrique'])
70
-			) {
71
-				// pas de parent rubrique, on passe
72
-				$cache_quete[$connect][$table]['_select'] = false;
73
-			} else {
74
-				$select = ($table == 'spip_rubriques' ? 'id_parent' : 'id_rubrique');
75
-				$select .= isset($desc['field']['lang']) ? ', lang' : '';
76
-				$cache_quete[$connect][$table]['_select'] = $select;
77
-				$cache_quete[$connect][$table]['_id'] = id_table_objet(objet_type($table));
78
-			}
79
-		}
80
-		if ($cache_quete[$connect][$table]['_select']) {
81
-			$cache_quete[$connect][$table][$id] = sql_fetsel(
82
-				$cache_quete[$connect][$table]['_select'],
83
-				$table,
84
-				$cache_quete[$connect][$table]['_id'] . '=' . intval($id),
85
-				'',
86
-				'',
87
-				'',
88
-				'',
89
-				$connect
90
-			);
91
-		}
92
-	}
93
-
94
-	return $cache_quete[$connect][$table][$id] ?? null;
60
+    static $cache_quete = [];
61
+
62
+    if (!isset($cache_quete[$connect][$table][$id])) {
63
+        if (!isset($cache_quete[$connect][$table]['_select'])) {
64
+            $trouver_table = charger_fonction('trouver_table', 'base');
65
+            if (
66
+                !$desc = $trouver_table(
67
+                    $table,
68
+                    $connect
69
+                ) or !isset($desc['field']['id_rubrique'])
70
+            ) {
71
+                // pas de parent rubrique, on passe
72
+                $cache_quete[$connect][$table]['_select'] = false;
73
+            } else {
74
+                $select = ($table == 'spip_rubriques' ? 'id_parent' : 'id_rubrique');
75
+                $select .= isset($desc['field']['lang']) ? ', lang' : '';
76
+                $cache_quete[$connect][$table]['_select'] = $select;
77
+                $cache_quete[$connect][$table]['_id'] = id_table_objet(objet_type($table));
78
+            }
79
+        }
80
+        if ($cache_quete[$connect][$table]['_select']) {
81
+            $cache_quete[$connect][$table][$id] = sql_fetsel(
82
+                $cache_quete[$connect][$table]['_select'],
83
+                $table,
84
+                $cache_quete[$connect][$table]['_id'] . '=' . intval($id),
85
+                '',
86
+                '',
87
+                '',
88
+                '',
89
+                $connect
90
+            );
91
+        }
92
+    }
93
+
94
+    return $cache_quete[$connect][$table][$id] ?? null;
95 95
 }
96 96
 
97 97
 
@@ -108,11 +108,11 @@  discard block
 block discarded – undo
108 108
  * @return int
109 109
  */
110 110
 function quete_parent($id_rubrique, string $connect = '') {
111
-	if (!$id_rubrique = intval($id_rubrique)) {
112
-		return 0;
113
-	}
114
-	$id_parent = quete_parent_lang('spip_rubriques', $id_rubrique, $connect);
115
-	return $id_parent ? $id_parent['id_parent'] : 0;
111
+    if (!$id_rubrique = intval($id_rubrique)) {
112
+        return 0;
113
+    }
114
+    $id_parent = quete_parent_lang('spip_rubriques', $id_rubrique, $connect);
115
+    return $id_parent ? $id_parent['id_parent'] : 0;
116 116
 }
117 117
 
118 118
 /**
@@ -128,9 +128,9 @@  discard block
 block discarded – undo
128 128
  * @return int
129 129
  */
130 130
 function quete_rubrique($id_article, $serveur) {
131
-	$id_parent = quete_parent_lang('spip_articles', $id_article, $serveur);
131
+    $id_parent = quete_parent_lang('spip_articles', $id_article, $serveur);
132 132
 
133
-	return $id_parent['id_rubrique'];
133
+    return $id_parent['id_rubrique'];
134 134
 }
135 135
 
136 136
 
@@ -144,13 +144,13 @@  discard block
 block discarded – undo
144 144
  * @return int
145 145
  */
146 146
 function quete_profondeur($id, string $connect = '') {
147
-	$n = 0;
148
-	while ($id) {
149
-		$n++;
150
-		$id = quete_parent($id, $connect);
151
-	}
147
+    $n = 0;
148
+    while ($id) {
149
+        $n++;
150
+        $id = quete_parent($id, $connect);
151
+    }
152 152
 
153
-	return $n;
153
+    return $n;
154 154
 }
155 155
 
156 156
 
@@ -166,15 +166,15 @@  discard block
 block discarded – undo
166 166
  *     Morceau de la requête SQL testant la date
167 167
  */
168 168
 function quete_condition_postdates($champ_date, $serveur = '', $ignore_previsu = false) {
169
-	if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) {
170
-		return '1=1';
171
-	}
172
-
173
-	return
174
-		(isset($GLOBALS['meta']['date_prochain_postdate'])
175
-			and $GLOBALS['meta']['date_prochain_postdate'] > time())
176
-			? "$champ_date<" . sql_quote(date('Y-m-d H:i:s', $GLOBALS['meta']['date_prochain_postdate']), $serveur)
177
-			: '1=1';
169
+    if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) {
170
+        return '1=1';
171
+    }
172
+
173
+    return
174
+        (isset($GLOBALS['meta']['date_prochain_postdate'])
175
+            and $GLOBALS['meta']['date_prochain_postdate'] > time())
176
+            ? "$champ_date<" . sql_quote(date('Y-m-d H:i:s', $GLOBALS['meta']['date_prochain_postdate']), $serveur)
177
+            : '1=1';
178 178
 }
179 179
 
180 180
 
@@ -194,101 +194,101 @@  discard block
 block discarded – undo
194 194
  * @return array|string
195 195
  */
196 196
 function quete_condition_statut($mstatut, $previsu, $publie, $serveur = '', $ignore_previsu = false) {
197
-	static $cond = [];
198
-	$key = func_get_args();
199
-	$key = implode('-', $key);
200
-	if (isset($cond[$key])) {
201
-		return $cond[$key];
202
-	}
203
-
204
-	$liste_statuts = $publie;
205
-	if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) {
206
-		$liste_statuts = $previsu;
207
-	}
208
-	$not = false;
209
-	if (strncmp($liste_statuts, '!', 1) == 0) {
210
-		$not = true;
211
-		$liste_statuts = substr($liste_statuts, 1);
212
-	}
213
-	// '' => ne rien afficher, '!'=> ne rien filtrer
214
-	if (!strlen($liste_statuts)) {
215
-		return $cond[$key] = ($not ? '1=1' : '0=1');
216
-	}
217
-
218
-	$liste_statuts = explode(',', $liste_statuts);
219
-	$where = [];
220
-	foreach ($liste_statuts as $k => $v) {
221
-		// filtrage /auteur pour limiter les objets d'un statut (prepa en general)
222
-		// a ceux de l'auteur identifie
223
-		if (strpos($v, '/') !== false) {
224
-			$v = explode('/', $v);
225
-			$filtre = end($v);
226
-			$v = reset($v);
227
-			$v = preg_replace(',\W,', '', $v);
228
-			if (
229
-				$filtre == 'auteur'
230
-				and (strpos($mstatut, '.') !== false)
231
-				and $objet = explode('.', $mstatut)
232
-				and $id_table = reset($objet)
233
-				and $objet = objet_type($id_table)
234
-			) {
235
-				$w = "$mstatut<>" . sql_quote($v);
236
-
237
-				// retrouver l’id_auteur qui a filé un lien de prévisu éventuellement,
238
-				// sinon l’auteur en session
239
-				include_spip('inc/securiser_action');
240
-				if ($desc = decrire_token_previsu()) {
241
-					$id_auteur = $desc['id_auteur'];
242
-				} elseif (isset($GLOBALS['visiteur_session']['id_auteur'])) {
243
-					$id_auteur = intval($GLOBALS['visiteur_session']['id_auteur']);
244
-				} else {
245
-					$id_auteur = null;
246
-				}
247
-
248
-				// dans ce cas (admin en general), pas de filtrage sur ce statut
249
-				if (!autoriser('previsualiser' . $v, $objet, '', $id_auteur)) {
250
-					// si pas d'auteur identifie pas de sous-requete car pas d'article qui matche
251
-					if (!$id_auteur) {
252
-						$where[] = $w;
253
-					} else {
254
-						$primary = id_table_objet($objet);
255
-						$where[] = "($w OR $id_table.$primary IN (" . sql_get_select(
256
-							'ssss.id_objet',
257
-							'spip_auteurs_liens AS ssss',
258
-							'ssss.objet=' . sql_quote($objet) . ' AND ssss.id_auteur=' . intval($id_auteur),
259
-							'',
260
-							'',
261
-							'',
262
-							'',
263
-							$serveur
264
-						) . '))';
265
-					}
266
-				}
267
-			} // ignorer ce statut si on ne sait pas comment le filtrer
268
-			else {
269
-				$v = '';
270
-			}
271
-		}
272
-		// securite
273
-		$liste_statuts[$k] = preg_replace(',\W,', '', $v);
274
-	}
275
-	$liste_statuts = array_filter($liste_statuts);
276
-	if (count($liste_statuts) == 1) {
277
-		$where[] = ['=', $mstatut, sql_quote(reset($liste_statuts), $serveur)];
278
-	} else {
279
-		$where[] = sql_in($mstatut, $liste_statuts, $not, $serveur);
280
-	}
281
-
282
-	while (count($where) > 1) {
283
-		$and = ['AND', array_pop($where), array_pop($where)];
284
-		$where[] = $and;
285
-	}
286
-	$cond[$key] = reset($where);
287
-	if ($not) {
288
-		$cond[$key] = ['NOT', $cond[$key]];
289
-	}
290
-
291
-	return $cond[$key];
197
+    static $cond = [];
198
+    $key = func_get_args();
199
+    $key = implode('-', $key);
200
+    if (isset($cond[$key])) {
201
+        return $cond[$key];
202
+    }
203
+
204
+    $liste_statuts = $publie;
205
+    if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) {
206
+        $liste_statuts = $previsu;
207
+    }
208
+    $not = false;
209
+    if (strncmp($liste_statuts, '!', 1) == 0) {
210
+        $not = true;
211
+        $liste_statuts = substr($liste_statuts, 1);
212
+    }
213
+    // '' => ne rien afficher, '!'=> ne rien filtrer
214
+    if (!strlen($liste_statuts)) {
215
+        return $cond[$key] = ($not ? '1=1' : '0=1');
216
+    }
217
+
218
+    $liste_statuts = explode(',', $liste_statuts);
219
+    $where = [];
220
+    foreach ($liste_statuts as $k => $v) {
221
+        // filtrage /auteur pour limiter les objets d'un statut (prepa en general)
222
+        // a ceux de l'auteur identifie
223
+        if (strpos($v, '/') !== false) {
224
+            $v = explode('/', $v);
225
+            $filtre = end($v);
226
+            $v = reset($v);
227
+            $v = preg_replace(',\W,', '', $v);
228
+            if (
229
+                $filtre == 'auteur'
230
+                and (strpos($mstatut, '.') !== false)
231
+                and $objet = explode('.', $mstatut)
232
+                and $id_table = reset($objet)
233
+                and $objet = objet_type($id_table)
234
+            ) {
235
+                $w = "$mstatut<>" . sql_quote($v);
236
+
237
+                // retrouver l’id_auteur qui a filé un lien de prévisu éventuellement,
238
+                // sinon l’auteur en session
239
+                include_spip('inc/securiser_action');
240
+                if ($desc = decrire_token_previsu()) {
241
+                    $id_auteur = $desc['id_auteur'];
242
+                } elseif (isset($GLOBALS['visiteur_session']['id_auteur'])) {
243
+                    $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur']);
244
+                } else {
245
+                    $id_auteur = null;
246
+                }
247
+
248
+                // dans ce cas (admin en general), pas de filtrage sur ce statut
249
+                if (!autoriser('previsualiser' . $v, $objet, '', $id_auteur)) {
250
+                    // si pas d'auteur identifie pas de sous-requete car pas d'article qui matche
251
+                    if (!$id_auteur) {
252
+                        $where[] = $w;
253
+                    } else {
254
+                        $primary = id_table_objet($objet);
255
+                        $where[] = "($w OR $id_table.$primary IN (" . sql_get_select(
256
+                            'ssss.id_objet',
257
+                            'spip_auteurs_liens AS ssss',
258
+                            'ssss.objet=' . sql_quote($objet) . ' AND ssss.id_auteur=' . intval($id_auteur),
259
+                            '',
260
+                            '',
261
+                            '',
262
+                            '',
263
+                            $serveur
264
+                        ) . '))';
265
+                    }
266
+                }
267
+            } // ignorer ce statut si on ne sait pas comment le filtrer
268
+            else {
269
+                $v = '';
270
+            }
271
+        }
272
+        // securite
273
+        $liste_statuts[$k] = preg_replace(',\W,', '', $v);
274
+    }
275
+    $liste_statuts = array_filter($liste_statuts);
276
+    if (count($liste_statuts) == 1) {
277
+        $where[] = ['=', $mstatut, sql_quote(reset($liste_statuts), $serveur)];
278
+    } else {
279
+        $where[] = sql_in($mstatut, $liste_statuts, $not, $serveur);
280
+    }
281
+
282
+    while (count($where) > 1) {
283
+        $and = ['AND', array_pop($where), array_pop($where)];
284
+        $where[] = $and;
285
+    }
286
+    $cond[$key] = reset($where);
287
+    if ($not) {
288
+        $cond[$key] = ['NOT', $cond[$key]];
289
+    }
290
+
291
+    return $cond[$key];
292 292
 }
293 293
 
294 294
 /**
@@ -299,7 +299,7 @@  discard block
 block discarded – undo
299 299
  * @return array|bool|null
300 300
  */
301 301
 function quete_fichier($id_document, $serveur = '') {
302
-	return sql_getfetsel('fichier', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur);
302
+    return sql_getfetsel('fichier', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur);
303 303
 }
304 304
 
305 305
 /**
@@ -310,7 +310,7 @@  discard block
 block discarded – undo
310 310
  * @return array|bool
311 311
  */
312 312
 function quete_document($id_document, $serveur = '') {
313
-	return sql_fetsel('*', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur);
313
+    return sql_fetsel('*', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur);
314 314
 }
315 315
 
316 316
 /**
@@ -321,7 +321,7 @@  discard block
 block discarded – undo
321 321
  * @return array|bool|null
322 322
  */
323 323
 function quete_meta($nom, $serveur) {
324
-	return sql_getfetsel('valeur', 'spip_meta', 'nom=' . sql_quote($nom), '', '', '', '', $serveur);
324
+    return sql_getfetsel('valeur', 'spip_meta', 'nom=' . sql_quote($nom), '', '', '', '', $serveur);
325 325
 }
326 326
 
327 327
 /**
@@ -347,72 +347,72 @@  discard block
 block discarded – undo
347 347
  *     Retourne soit un tableau, soit le chemin du fichier.
348 348
  */
349 349
 function quete_logo($cle_objet, $onoff, $id, $id_rubrique, $flag = false) {
350
-	include_spip('base/objets');
351
-	$nom = strtolower($onoff);
352
-
353
-	$cle_objet = id_table_objet($cle_objet);
354
-
355
-	while (1) {
356
-		$objet = objet_type($cle_objet);
357
-
358
-		$on = quete_logo_objet($id, $objet, $nom);
359
-
360
-		if ($on) {
361
-			if ($flag) {
362
-				return $on['fichier'];
363
-			} else {
364
-				$taille = @spip_getimagesize($on['chemin']);
365
-
366
-				// Si on a déjà demandé un survol directement ($onoff = off)
367
-				// ou qu'on a demandé uniquement le normal ($onoff = on)
368
-				// alors on ne cherche pas du tout le survol ici
369
-				if ($onoff != 'ON') {
370
-					$off = '';
371
-				} else {
372
-					// Sinon, c'est qu'on demande normal ET survol à la fois, donc on cherche maintenant le survol
373
-					$off = quete_logo_objet($id, $objet, 'off');
374
-				}
375
-
376
-				// on retourne une url du type IMG/artonXX?timestamp
377
-				// qui permet de distinguer le changement de logo
378
-				// et placer un expire sur le dossier IMG/
379
-				$res = [
380
-					$on['chemin'] . ($on['timestamp'] ? "?{$on['timestamp']}" : ''),
381
-					($off ? $off['chemin'] . ($off['timestamp'] ? "?{$off['timestamp']}" : '') : ''),
382
-					(!$taille ? '' : (' ' . $taille[3]))
383
-				];
384
-				$res['src'] = $res[0];
385
-				$res['logo_on'] = $res[0];
386
-				$res['logo_off'] = $res[1];
387
-				$res['width'] = ($taille ? $taille[0] : '');
388
-				$res['height'] = ($taille ? $taille[1] : '');
389
-				$res['fichier'] = $on['fichier'];
390
-				$res['titre'] = ($on['titre'] ?? '');
391
-				$res['descriptif'] = ($on['descriptif'] ?? '');
392
-				$res['credits'] = ($on['credits'] ?? '');
393
-				$res['alt'] = ($on['alt'] ?? '');
394
-				$res['id'] = ($on['id_document'] ?? 0);
395
-
396
-				return $res;
397
-			}
398
-		} else {
399
-			if (defined('_LOGO_RUBRIQUE_DESACTIVER_HERITAGE')) {
400
-				return '';
401
-			} else {
402
-				if ($id_rubrique) {
403
-					$cle_objet = 'id_rubrique';
404
-					$id = $id_rubrique;
405
-					$id_rubrique = 0;
406
-				} else {
407
-					if ($id and $cle_objet == 'id_rubrique') {
408
-						$id = quete_parent($id);
409
-					} else {
410
-						return '';
411
-					}
412
-				}
413
-			}
414
-		}
415
-	}
350
+    include_spip('base/objets');
351
+    $nom = strtolower($onoff);
352
+
353
+    $cle_objet = id_table_objet($cle_objet);
354
+
355
+    while (1) {
356
+        $objet = objet_type($cle_objet);
357
+
358
+        $on = quete_logo_objet($id, $objet, $nom);
359
+
360
+        if ($on) {
361
+            if ($flag) {
362
+                return $on['fichier'];
363
+            } else {
364
+                $taille = @spip_getimagesize($on['chemin']);
365
+
366
+                // Si on a déjà demandé un survol directement ($onoff = off)
367
+                // ou qu'on a demandé uniquement le normal ($onoff = on)
368
+                // alors on ne cherche pas du tout le survol ici
369
+                if ($onoff != 'ON') {
370
+                    $off = '';
371
+                } else {
372
+                    // Sinon, c'est qu'on demande normal ET survol à la fois, donc on cherche maintenant le survol
373
+                    $off = quete_logo_objet($id, $objet, 'off');
374
+                }
375
+
376
+                // on retourne une url du type IMG/artonXX?timestamp
377
+                // qui permet de distinguer le changement de logo
378
+                // et placer un expire sur le dossier IMG/
379
+                $res = [
380
+                    $on['chemin'] . ($on['timestamp'] ? "?{$on['timestamp']}" : ''),
381
+                    ($off ? $off['chemin'] . ($off['timestamp'] ? "?{$off['timestamp']}" : '') : ''),
382
+                    (!$taille ? '' : (' ' . $taille[3]))
383
+                ];
384
+                $res['src'] = $res[0];
385
+                $res['logo_on'] = $res[0];
386
+                $res['logo_off'] = $res[1];
387
+                $res['width'] = ($taille ? $taille[0] : '');
388
+                $res['height'] = ($taille ? $taille[1] : '');
389
+                $res['fichier'] = $on['fichier'];
390
+                $res['titre'] = ($on['titre'] ?? '');
391
+                $res['descriptif'] = ($on['descriptif'] ?? '');
392
+                $res['credits'] = ($on['credits'] ?? '');
393
+                $res['alt'] = ($on['alt'] ?? '');
394
+                $res['id'] = ($on['id_document'] ?? 0);
395
+
396
+                return $res;
397
+            }
398
+        } else {
399
+            if (defined('_LOGO_RUBRIQUE_DESACTIVER_HERITAGE')) {
400
+                return '';
401
+            } else {
402
+                if ($id_rubrique) {
403
+                    $cle_objet = 'id_rubrique';
404
+                    $id = $id_rubrique;
405
+                    $id_rubrique = 0;
406
+                } else {
407
+                    if ($id and $cle_objet == 'id_rubrique') {
408
+                        $id = quete_parent($id);
409
+                    } else {
410
+                        return '';
411
+                    }
412
+                }
413
+            }
414
+        }
415
+    }
416 416
 }
417 417
 
418 418
 /**
@@ -427,43 +427,43 @@  discard block
 block discarded – undo
427 427
  * @return bool|array
428 428
  **/
429 429
 function quete_logo_objet($id_objet, $objet, $mode) {
430
-	static $chercher_logo;
431
-	if (is_null($chercher_logo)) {
432
-		$chercher_logo = charger_fonction('chercher_logo', 'inc');
433
-	}
434
-	$cle_objet = id_table_objet($objet);
435
-
436
-	// On cherche pas la méthode classique
437
-	$infos_logo = $chercher_logo($id_objet, $cle_objet, $mode);
438
-
439
-	// Si la méthode classique a trouvé quelque chose, on utilise le nouveau format
440
-	if (!empty($infos_logo)) {
441
-		$infos = [
442
-			'chemin' => $infos_logo[0],
443
-			'timestamp' => $infos_logo[4],
444
-			'id_document' => ($infos_logo[5]['id_document'] ?? ''),
445
-		];
446
-		foreach (['fichier', 'titre', 'descriptif', 'credits', 'alt'] as $champ) {
447
-			$infos[$champ] = ($infos_logo[5][$champ] ?? '');
448
-		}
449
-		$infos_logo = $infos;
450
-	}
451
-
452
-	// On passe cette recherche de logo dans un pipeline
453
-	$infos_logo = pipeline(
454
-		'quete_logo_objet',
455
-		[
456
-			'args' => [
457
-				'id_objet' => $id_objet,
458
-				'objet' => $objet,
459
-				'cle_objet' => $cle_objet,
460
-				'mode' => $mode,
461
-			],
462
-			'data' => $infos_logo,
463
-		]
464
-	);
465
-
466
-	return $infos_logo;
430
+    static $chercher_logo;
431
+    if (is_null($chercher_logo)) {
432
+        $chercher_logo = charger_fonction('chercher_logo', 'inc');
433
+    }
434
+    $cle_objet = id_table_objet($objet);
435
+
436
+    // On cherche pas la méthode classique
437
+    $infos_logo = $chercher_logo($id_objet, $cle_objet, $mode);
438
+
439
+    // Si la méthode classique a trouvé quelque chose, on utilise le nouveau format
440
+    if (!empty($infos_logo)) {
441
+        $infos = [
442
+            'chemin' => $infos_logo[0],
443
+            'timestamp' => $infos_logo[4],
444
+            'id_document' => ($infos_logo[5]['id_document'] ?? ''),
445
+        ];
446
+        foreach (['fichier', 'titre', 'descriptif', 'credits', 'alt'] as $champ) {
447
+            $infos[$champ] = ($infos_logo[5][$champ] ?? '');
448
+        }
449
+        $infos_logo = $infos;
450
+    }
451
+
452
+    // On passe cette recherche de logo dans un pipeline
453
+    $infos_logo = pipeline(
454
+        'quete_logo_objet',
455
+        [
456
+            'args' => [
457
+                'id_objet' => $id_objet,
458
+                'objet' => $objet,
459
+                'cle_objet' => $cle_objet,
460
+                'mode' => $mode,
461
+            ],
462
+            'data' => $infos_logo,
463
+        ]
464
+    );
465
+
466
+    return $infos_logo;
467 467
 }
468 468
 
469 469
 /**
@@ -476,25 +476,25 @@  discard block
 block discarded – undo
476 476
  * @return bool|string
477 477
  */
478 478
 function quete_logo_file($row, $connect = null) {
479
-	include_spip('inc/documents');
480
-	$logo = vignette_logo_document($row, $connect);
481
-	if (!$logo) {
482
-		$logo = image_du_document($row, $connect);
483
-	}
484
-	if (!$logo) {
485
-		$f = charger_fonction('vignette', 'inc');
486
-		$logo = $f($row['extension'], false);
487
-	}
488
-	// si c'est une vignette type doc, la renvoyer direct
489
-	if (
490
-		strcmp($logo, _DIR_PLUGINS) == 0
491
-		or strcmp($logo, _DIR_PLUGINS_DIST) == 0
492
-		or strcmp($logo, _DIR_RACINE . 'prive/') == 0
493
-	) {
494
-		return $logo;
495
-	}
496
-
497
-	return get_spip_doc($logo);
479
+    include_spip('inc/documents');
480
+    $logo = vignette_logo_document($row, $connect);
481
+    if (!$logo) {
482
+        $logo = image_du_document($row, $connect);
483
+    }
484
+    if (!$logo) {
485
+        $f = charger_fonction('vignette', 'inc');
486
+        $logo = $f($row['extension'], false);
487
+    }
488
+    // si c'est une vignette type doc, la renvoyer direct
489
+    if (
490
+        strcmp($logo, _DIR_PLUGINS) == 0
491
+        or strcmp($logo, _DIR_PLUGINS_DIST) == 0
492
+        or strcmp($logo, _DIR_RACINE . 'prive/') == 0
493
+    ) {
494
+        return $logo;
495
+    }
496
+
497
+    return get_spip_doc($logo);
498 498
 }
499 499
 
500 500
 /**
@@ -522,20 +522,20 @@  discard block
 block discarded – undo
522 522
  */
523 523
 function quete_logo_document($row, $lien, $align, $mode_logo, $x, $y, string $connect = '') {
524 524
 
525
-	include_spip('inc/documents');
526
-	$logo = '';
527
-	if (!in_array($mode_logo, ['icone', 'apercu'])) {
528
-		$logo = vignette_logo_document($row, $connect);
529
-	}
530
-	// si on veut explicitement la vignette, ne rien renvoyer si il n'y en a pas
531
-	if ($mode_logo == 'vignette' and !$logo) {
532
-		return '';
533
-	}
534
-	if ($mode_logo == 'icone') {
535
-		$row['fichier'] = '';
536
-	}
537
-
538
-	return vignette_automatique($logo, $row, $lien, $x, $y, $align, null, $connect);
525
+    include_spip('inc/documents');
526
+    $logo = '';
527
+    if (!in_array($mode_logo, ['icone', 'apercu'])) {
528
+        $logo = vignette_logo_document($row, $connect);
529
+    }
530
+    // si on veut explicitement la vignette, ne rien renvoyer si il n'y en a pas
531
+    if ($mode_logo == 'vignette' and !$logo) {
532
+        return '';
533
+    }
534
+    if ($mode_logo == 'icone') {
535
+        $row['fichier'] = '';
536
+    }
537
+
538
+    return vignette_automatique($logo, $row, $lien, $x, $y, $align, null, $connect);
539 539
 }
540 540
 
541 541
 /**
@@ -547,26 +547,26 @@  discard block
 block discarded – undo
547 547
  */
548 548
 function quete_html_logo($logo, $align, $lien) {
549 549
 
550
-	if (!is_array($logo)) {
551
-		return '';
552
-	}
553
-
554
-	$contexte = [];
555
-	foreach ($logo as $k => $v) {
556
-		if (!is_numeric($k)) {
557
-			$contexte[$k] = $v;
558
-		}
559
-	}
560
-
561
-	foreach (['titre', 'descriptif', 'credits', 'alt'] as $champ) {
562
-		if (!empty($contexte[$champ])) {
563
-			$contexte[$champ] = appliquer_traitement_champ($contexte[$champ] , $champ, 'document');
564
-		}
565
-	}
566
-
567
-	$contexte['align'] = $align;
568
-	$contexte['lien'] = $lien;
569
-	return recuperer_fond('modeles/logo', $contexte);
550
+    if (!is_array($logo)) {
551
+        return '';
552
+    }
553
+
554
+    $contexte = [];
555
+    foreach ($logo as $k => $v) {
556
+        if (!is_numeric($k)) {
557
+            $contexte[$k] = $v;
558
+        }
559
+    }
560
+
561
+    foreach (['titre', 'descriptif', 'credits', 'alt'] as $champ) {
562
+        if (!empty($contexte[$champ])) {
563
+            $contexte[$champ] = appliquer_traitement_champ($contexte[$champ] , $champ, 'document');
564
+        }
565
+    }
566
+
567
+    $contexte['align'] = $align;
568
+    $contexte['lien'] = $lien;
569
+    return recuperer_fond('modeles/logo', $contexte);
570 570
 }
571 571
 
572 572
 /**
@@ -580,14 +580,14 @@  discard block
 block discarded – undo
580 580
  * @return string|false
581 581
  */
582 582
 function document_spip_externe($fichier, $connect) {
583
-	if ($connect) {
584
-		$site = quete_meta('adresse_site', $connect);
585
-		if ($site) {
586
-			$dir = quete_meta('dir_img', $connect);
587
-			return "$site/$dir$fichier";
588
-		}
589
-	}
590
-	return false;
583
+    if ($connect) {
584
+        $site = quete_meta('adresse_site', $connect);
585
+        if ($site) {
586
+            $dir = quete_meta('dir_img', $connect);
587
+            return "$site/$dir$fichier";
588
+        }
589
+    }
590
+    return false;
591 591
 }
592 592
 
593 593
 /**
@@ -601,23 +601,23 @@  discard block
 block discarded – undo
601 601
  */
602 602
 function vignette_logo_document($row, string $connect = '') {
603 603
 
604
-	if (!$row or empty($row['id_vignette'])) {
605
-		return '';
606
-	}
607
-	$fichier = quete_fichier($row['id_vignette'], $connect);
608
-	if ($url = document_spip_externe($fichier, $connect)) {
609
-		return $url;
610
-	}
611
-
612
-	$f = get_spip_doc($fichier);
613
-	if ($f and @file_exists($f)) {
614
-		return $f;
615
-	}
616
-	if ($row['mode'] !== 'vignette') {
617
-		return '';
618
-	}
619
-
620
-	return generer_objet_url($row['id_document'], 'document', '', '', null, '', $connect);
604
+    if (!$row or empty($row['id_vignette'])) {
605
+        return '';
606
+    }
607
+    $fichier = quete_fichier($row['id_vignette'], $connect);
608
+    if ($url = document_spip_externe($fichier, $connect)) {
609
+        return $url;
610
+    }
611
+
612
+    $f = get_spip_doc($fichier);
613
+    if ($f and @file_exists($f)) {
614
+        return $f;
615
+    }
616
+    if ($row['mode'] !== 'vignette') {
617
+        return '';
618
+    }
619
+
620
+    return generer_objet_url($row['id_document'], 'document', '', '', null, '', $connect);
621 621
 }
622 622
 
623 623
 /**
@@ -633,66 +633,66 @@  discard block
 block discarded – undo
633 633
  * @return bool|string
634 634
  */
635 635
 function calcul_exposer($id, $prim, $reference, $parent, $type, string $connect = '') {
636
-	static $exposer = [];
637
-
638
-	// Que faut-il exposer ? Tous les elements de $reference
639
-	// ainsi que leur hierarchie ; on ne fait donc ce calcul
640
-	// qu'une fois (par squelette) et on conserve le resultat
641
-	// en static.
642
-	if (!isset($exposer[$m = md5(serialize($reference))][$prim])) {
643
-		$principal = $reference[$type] ?? $reference["@$type"] ?? '';
644
-		// le parent fournit en argument est le parent de $id, pas celui de $principal
645
-		// il n'est donc pas utile
646
-		$parent = 0;
647
-		if (!$principal) { // regarder si un enfant est dans le contexte, auquel cas il expose peut etre le parent courant
648
-			$enfants = ['id_rubrique' => ['id_article'], 'id_groupe' => ['id_mot']];
649
-			if (isset($enfants[$type])) {
650
-				foreach ($enfants[$type] as $t) {
651
-					if (
652
-						isset($reference[$t])
653
-						// cas de la reference donnee dynamiquement par la pagination
654
-						or isset($reference["@$t"])
655
-					) {
656
-						$type = $t;
657
-						$principal = $reference[$type] ?? $reference["@$type"];
658
-						continue;
659
-					}
660
-				}
661
-			}
662
-		}
663
-		$exposer[$m][$type] = [];
664
-		if ($principal) {
665
-			$principaux = is_array($principal) ? $principal : [$principal];
666
-			foreach ($principaux as $principal) {
667
-				$exposer[$m][$type][$principal] = true;
668
-				if ($type == 'id_mot') {
669
-					if (!$parent) {
670
-						$parent = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot=' . intval($principal), '', '', '', '', $connect);
671
-					}
672
-					if ($parent) {
673
-						$exposer[$m]['id_groupe'][$parent] = true;
674
-					}
675
-				} else {
676
-					if ($type != 'id_groupe') {
677
-						if (!$parent) {
678
-							if ($type == 'id_rubrique') {
679
-								$parent = $principal;
680
-							}
681
-							if ($type == 'id_article') {
682
-								$parent = quete_rubrique($principal, $connect);
683
-							}
684
-						}
685
-						do {
686
-							$exposer[$m]['id_rubrique'][$parent] = true;
687
-						} while ($parent = quete_parent($parent, $connect));
688
-					}
689
-				}
690
-			}
691
-		}
692
-	}
693
-
694
-	// And the winner is...
695
-	return isset($exposer[$m][$prim]) ? isset($exposer[$m][$prim][$id]) : '';
636
+    static $exposer = [];
637
+
638
+    // Que faut-il exposer ? Tous les elements de $reference
639
+    // ainsi que leur hierarchie ; on ne fait donc ce calcul
640
+    // qu'une fois (par squelette) et on conserve le resultat
641
+    // en static.
642
+    if (!isset($exposer[$m = md5(serialize($reference))][$prim])) {
643
+        $principal = $reference[$type] ?? $reference["@$type"] ?? '';
644
+        // le parent fournit en argument est le parent de $id, pas celui de $principal
645
+        // il n'est donc pas utile
646
+        $parent = 0;
647
+        if (!$principal) { // regarder si un enfant est dans le contexte, auquel cas il expose peut etre le parent courant
648
+            $enfants = ['id_rubrique' => ['id_article'], 'id_groupe' => ['id_mot']];
649
+            if (isset($enfants[$type])) {
650
+                foreach ($enfants[$type] as $t) {
651
+                    if (
652
+                        isset($reference[$t])
653
+                        // cas de la reference donnee dynamiquement par la pagination
654
+                        or isset($reference["@$t"])
655
+                    ) {
656
+                        $type = $t;
657
+                        $principal = $reference[$type] ?? $reference["@$type"];
658
+                        continue;
659
+                    }
660
+                }
661
+            }
662
+        }
663
+        $exposer[$m][$type] = [];
664
+        if ($principal) {
665
+            $principaux = is_array($principal) ? $principal : [$principal];
666
+            foreach ($principaux as $principal) {
667
+                $exposer[$m][$type][$principal] = true;
668
+                if ($type == 'id_mot') {
669
+                    if (!$parent) {
670
+                        $parent = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot=' . intval($principal), '', '', '', '', $connect);
671
+                    }
672
+                    if ($parent) {
673
+                        $exposer[$m]['id_groupe'][$parent] = true;
674
+                    }
675
+                } else {
676
+                    if ($type != 'id_groupe') {
677
+                        if (!$parent) {
678
+                            if ($type == 'id_rubrique') {
679
+                                $parent = $principal;
680
+                            }
681
+                            if ($type == 'id_article') {
682
+                                $parent = quete_rubrique($principal, $connect);
683
+                            }
684
+                        }
685
+                        do {
686
+                            $exposer[$m]['id_rubrique'][$parent] = true;
687
+                        } while ($parent = quete_parent($parent, $connect));
688
+                    }
689
+                }
690
+            }
691
+        }
692
+    }
693
+
694
+    // And the winner is...
695
+    return isset($exposer[$m][$prim]) ? isset($exposer[$m][$prim][$id]) : '';
696 696
 }
697 697
 
698 698
 /**
@@ -707,23 +707,23 @@  discard block
 block discarded – undo
707 707
  * @return int
708 708
  */
709 709
 function quete_debut_pagination($primary, $valeur, $pas, $iter) {
710
-	// on ne devrait pas arriver ici si la cle primaire est inexistante
711
-	// ou composee, mais verifions
712
-	if (!$primary or preg_match('/[,\s]/', $primary)) {
713
-		return 0;
714
-	}
715
-
716
-	$pos = 0;
717
-	while ($row = $iter->fetch() and $row[$primary] != $valeur) {
718
-		$pos++;
719
-	}
720
-	// si on a pas trouve
721
-	if (!$row or $row[$primary] != $valeur) {
722
-		return 0;
723
-	}
724
-
725
-	// sinon, calculer le bon numero de page
726
-	return floor($pos / $pas) * $pas;
710
+    // on ne devrait pas arriver ici si la cle primaire est inexistante
711
+    // ou composee, mais verifions
712
+    if (!$primary or preg_match('/[,\s]/', $primary)) {
713
+        return 0;
714
+    }
715
+
716
+    $pos = 0;
717
+    while ($row = $iter->fetch() and $row[$primary] != $valeur) {
718
+        $pos++;
719
+    }
720
+    // si on a pas trouve
721
+    if (!$row or $row[$primary] != $valeur) {
722
+        return 0;
723
+    }
724
+
725
+    // sinon, calculer le bon numero de page
726
+    return floor($pos / $pas) * $pas;
727 727
 }
728 728
 
729 729
 /**
@@ -734,11 +734,11 @@  discard block
 block discarded – undo
734 734
  * @return boolean
735 735
  */
736 736
 function is_whereable($value): bool {
737
-	if (is_array($value) && count($value)) {
738
-		return true;
739
-	}
740
-	if (is_scalar($value) && strlen($value)) {
741
-		return true;
742
-	}
743
-	return false;
737
+    if (is_array($value) && count($value)) {
738
+        return true;
739
+    }
740
+    if (is_scalar($value) && strlen($value)) {
741
+        return true;
742
+    }
743
+    return false;
744 744
 }
Please login to merge, or discard this patch.
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -36,7 +36,7 @@  discard block
 block discarded – undo
36 36
 	return sql_getfetsel(
37 37
 		'virtuel',
38 38
 		'spip_articles',
39
-		['id_article=' . intval($id_article), "statut='publie'"],
39
+		['id_article='.intval($id_article), "statut='publie'"],
40 40
 		'',
41 41
 		'',
42 42
 		'',
@@ -81,7 +81,7 @@  discard block
 block discarded – undo
81 81
 			$cache_quete[$connect][$table][$id] = sql_fetsel(
82 82
 				$cache_quete[$connect][$table]['_select'],
83 83
 				$table,
84
-				$cache_quete[$connect][$table]['_id'] . '=' . intval($id),
84
+				$cache_quete[$connect][$table]['_id'].'='.intval($id),
85 85
 				'',
86 86
 				'',
87 87
 				'',
@@ -173,7 +173,7 @@  discard block
 block discarded – undo
173 173
 	return
174 174
 		(isset($GLOBALS['meta']['date_prochain_postdate'])
175 175
 			and $GLOBALS['meta']['date_prochain_postdate'] > time())
176
-			? "$champ_date<" . sql_quote(date('Y-m-d H:i:s', $GLOBALS['meta']['date_prochain_postdate']), $serveur)
176
+			? "$champ_date<".sql_quote(date('Y-m-d H:i:s', $GLOBALS['meta']['date_prochain_postdate']), $serveur)
177 177
 			: '1=1';
178 178
 }
179 179
 
@@ -232,7 +232,7 @@  discard block
 block discarded – undo
232 232
 				and $id_table = reset($objet)
233 233
 				and $objet = objet_type($id_table)
234 234
 			) {
235
-				$w = "$mstatut<>" . sql_quote($v);
235
+				$w = "$mstatut<>".sql_quote($v);
236 236
 
237 237
 				// retrouver l’id_auteur qui a filé un lien de prévisu éventuellement,
238 238
 				// sinon l’auteur en session
@@ -246,22 +246,22 @@  discard block
 block discarded – undo
246 246
 				}
247 247
 
248 248
 				// dans ce cas (admin en general), pas de filtrage sur ce statut
249
-				if (!autoriser('previsualiser' . $v, $objet, '', $id_auteur)) {
249
+				if (!autoriser('previsualiser'.$v, $objet, '', $id_auteur)) {
250 250
 					// si pas d'auteur identifie pas de sous-requete car pas d'article qui matche
251 251
 					if (!$id_auteur) {
252 252
 						$where[] = $w;
253 253
 					} else {
254 254
 						$primary = id_table_objet($objet);
255
-						$where[] = "($w OR $id_table.$primary IN (" . sql_get_select(
255
+						$where[] = "($w OR $id_table.$primary IN (".sql_get_select(
256 256
 							'ssss.id_objet',
257 257
 							'spip_auteurs_liens AS ssss',
258
-							'ssss.objet=' . sql_quote($objet) . ' AND ssss.id_auteur=' . intval($id_auteur),
258
+							'ssss.objet='.sql_quote($objet).' AND ssss.id_auteur='.intval($id_auteur),
259 259
 							'',
260 260
 							'',
261 261
 							'',
262 262
 							'',
263 263
 							$serveur
264
-						) . '))';
264
+						).'))';
265 265
 					}
266 266
 				}
267 267
 			} // ignorer ce statut si on ne sait pas comment le filtrer
@@ -299,7 +299,7 @@  discard block
 block discarded – undo
299 299
  * @return array|bool|null
300 300
  */
301 301
 function quete_fichier($id_document, $serveur = '') {
302
-	return sql_getfetsel('fichier', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur);
302
+	return sql_getfetsel('fichier', 'spip_documents', ('id_document='.intval($id_document)), '', [], '', '', $serveur);
303 303
 }
304 304
 
305 305
 /**
@@ -310,7 +310,7 @@  discard block
 block discarded – undo
310 310
  * @return array|bool
311 311
  */
312 312
 function quete_document($id_document, $serveur = '') {
313
-	return sql_fetsel('*', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur);
313
+	return sql_fetsel('*', 'spip_documents', ('id_document='.intval($id_document)), '', [], '', '', $serveur);
314 314
 }
315 315
 
316 316
 /**
@@ -321,7 +321,7 @@  discard block
 block discarded – undo
321 321
  * @return array|bool|null
322 322
  */
323 323
 function quete_meta($nom, $serveur) {
324
-	return sql_getfetsel('valeur', 'spip_meta', 'nom=' . sql_quote($nom), '', '', '', '', $serveur);
324
+	return sql_getfetsel('valeur', 'spip_meta', 'nom='.sql_quote($nom), '', '', '', '', $serveur);
325 325
 }
326 326
 
327 327
 /**
@@ -377,9 +377,9 @@  discard block
 block discarded – undo
377 377
 				// qui permet de distinguer le changement de logo
378 378
 				// et placer un expire sur le dossier IMG/
379 379
 				$res = [
380
-					$on['chemin'] . ($on['timestamp'] ? "?{$on['timestamp']}" : ''),
381
-					($off ? $off['chemin'] . ($off['timestamp'] ? "?{$off['timestamp']}" : '') : ''),
382
-					(!$taille ? '' : (' ' . $taille[3]))
380
+					$on['chemin'].($on['timestamp'] ? "?{$on['timestamp']}" : ''),
381
+					($off ? $off['chemin'].($off['timestamp'] ? "?{$off['timestamp']}" : '') : ''),
382
+					(!$taille ? '' : (' '.$taille[3]))
383 383
 				];
384 384
 				$res['src'] = $res[0];
385 385
 				$res['logo_on'] = $res[0];
@@ -489,7 +489,7 @@  discard block
 block discarded – undo
489 489
 	if (
490 490
 		strcmp($logo, _DIR_PLUGINS) == 0
491 491
 		or strcmp($logo, _DIR_PLUGINS_DIST) == 0
492
-		or strcmp($logo, _DIR_RACINE . 'prive/') == 0
492
+		or strcmp($logo, _DIR_RACINE.'prive/') == 0
493 493
 	) {
494 494
 		return $logo;
495 495
 	}
@@ -560,7 +560,7 @@  discard block
 block discarded – undo
560 560
 
561 561
 	foreach (['titre', 'descriptif', 'credits', 'alt'] as $champ) {
562 562
 		if (!empty($contexte[$champ])) {
563
-			$contexte[$champ] = appliquer_traitement_champ($contexte[$champ] , $champ, 'document');
563
+			$contexte[$champ] = appliquer_traitement_champ($contexte[$champ], $champ, 'document');
564 564
 		}
565 565
 	}
566 566
 
@@ -667,7 +667,7 @@  discard block
 block discarded – undo
667 667
 				$exposer[$m][$type][$principal] = true;
668 668
 				if ($type == 'id_mot') {
669 669
 					if (!$parent) {
670
-						$parent = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot=' . intval($principal), '', '', '', '', $connect);
670
+						$parent = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot='.intval($principal), '', '', '', '', $connect);
671 671
 					}
672 672
 					if ($parent) {
673 673
 						$exposer[$m]['id_groupe'][$parent] = true;
Please login to merge, or discard this patch.
ecrire/balise/id_logo_.php 2 patches
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 
@@ -49,38 +49,38 @@  discard block
 block discarded – undo
49 49
  */
50 50
 function balise_ID_LOGO__dist($p) {
51 51
 
52
-	preg_match(',^ID_LOGO_([A-Z_]+?)(|_NORMAL|_SURVOL|_RUBRIQUE)$,i', $p->nom_champ, $regs);
53
-	$type = strtolower($regs[1]);
54
-	$suite_logo = $regs[2];
55
-
56
-	// cas de #ID_LOGO_SITE_SPIP
57
-	if ($type == 'site_spip') {
58
-		$type = 'site';
59
-		$_id_objet = "\"'0'\"";
60
-	}
61
-
62
-	$id_objet = id_table_objet($type);
63
-	if (!isset($_id_objet)) {
64
-		$_id_objet = champ_sql($id_objet, $p);
65
-	}
66
-
67
-	$connect = $p->id_boucle ? $p->boucles[$p->id_boucle]->sql_serveur : '';
68
-	if ($type == 'document') {
69
-		$qconnect = _q($connect);
70
-		$doc = "quete_document($_id_objet, $qconnect)";
71
-		$code = "table_valeur($doc, 'id_vignette')";
72
-	} elseif ($connect) {
73
-		$code = "''";
74
-		spip_log('Les logos distants ne sont pas prevus');
75
-	} else {
76
-		$champ_logo = 'id';
77
-		$code = generer_code_logo($id_objet, $_id_objet, $type, '', "''", $p, $suite_logo, $champ_logo);
78
-	}
79
-
80
-	$p->code = $code;
81
-	$p->interdire_scripts = false;
82
-
83
-	return $p;
52
+    preg_match(',^ID_LOGO_([A-Z_]+?)(|_NORMAL|_SURVOL|_RUBRIQUE)$,i', $p->nom_champ, $regs);
53
+    $type = strtolower($regs[1]);
54
+    $suite_logo = $regs[2];
55
+
56
+    // cas de #ID_LOGO_SITE_SPIP
57
+    if ($type == 'site_spip') {
58
+        $type = 'site';
59
+        $_id_objet = "\"'0'\"";
60
+    }
61
+
62
+    $id_objet = id_table_objet($type);
63
+    if (!isset($_id_objet)) {
64
+        $_id_objet = champ_sql($id_objet, $p);
65
+    }
66
+
67
+    $connect = $p->id_boucle ? $p->boucles[$p->id_boucle]->sql_serveur : '';
68
+    if ($type == 'document') {
69
+        $qconnect = _q($connect);
70
+        $doc = "quete_document($_id_objet, $qconnect)";
71
+        $code = "table_valeur($doc, 'id_vignette')";
72
+    } elseif ($connect) {
73
+        $code = "''";
74
+        spip_log('Les logos distants ne sont pas prevus');
75
+    } else {
76
+        $champ_logo = 'id';
77
+        $code = generer_code_logo($id_objet, $_id_objet, $type, '', "''", $p, $suite_logo, $champ_logo);
78
+    }
79
+
80
+    $p->code = $code;
81
+    $p->interdire_scripts = false;
82
+
83
+    return $p;
84 84
 }
85 85
 
86 86
 /**
@@ -109,28 +109,28 @@  discard block
 block discarded – undo
109 109
  *     Code compilé retournant le chemin du logo ou le code HTML du logo.
110 110
  **/
111 111
 function generer_code_logo($id_objet, $_id_objet, $type, $align, $_lien, $p, $suite, string $champ = ''): string {
112
-	$onoff = 'ON';
113
-	$_id_rubrique = "''";
112
+    $onoff = 'ON';
113
+    $_id_rubrique = "''";
114 114
 
115
-	if ($type === 'rubrique') {
116
-		$_id_rubrique = "quete_parent($_id_objet)";
117
-	}
115
+    if ($type === 'rubrique') {
116
+        $_id_rubrique = "quete_parent($_id_objet)";
117
+    }
118 118
 
119
-	if ($suite === '_SURVOL') {
120
-		$onoff = 'off';
121
-	} elseif ($suite === '_NORMAL') {
122
-		$onoff = 'on';
123
-	} elseif ($suite === '_RUBRIQUE') {
124
-		$_id_rubrique = champ_sql('id_rubrique', $p);
125
-	}
119
+    if ($suite === '_SURVOL') {
120
+        $onoff = 'off';
121
+    } elseif ($suite === '_NORMAL') {
122
+        $onoff = 'on';
123
+    } elseif ($suite === '_RUBRIQUE') {
124
+        $_id_rubrique = champ_sql('id_rubrique', $p);
125
+    }
126 126
 
127
-	$code = "quete_logo('$id_objet', '$onoff', $_id_objet, $_id_rubrique)";
127
+    $code = "quete_logo('$id_objet', '$onoff', $_id_objet, $_id_rubrique)";
128 128
 
129
-	if ($champ) {
130
-		return "table_valeur($code, '".addslashes($champ)."')";
131
-	}
129
+    if ($champ) {
130
+        return "table_valeur($code, '".addslashes($champ)."')";
131
+    }
132 132
 
133
-	$align = preg_replace(',\W,', '', $align);
133
+    $align = preg_replace(',\W,', '', $align);
134 134
 
135
-	return "quete_html_logo($code, '$align', " . ($_lien ?: "''") . ')';
135
+    return "quete_html_logo($code, '$align', " . ($_lien ?: "''") . ')';
136 136
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -132,5 +132,5 @@
 block discarded – undo
132 132
 
133 133
 	$align = preg_replace(',\W,', '', $align);
134 134
 
135
-	return "quete_html_logo($code, '$align', " . ($_lien ?: "''") . ')';
135
+	return "quete_html_logo($code, '$align', ".($_lien ?: "''").')';
136 136
 }
Please login to merge, or discard this patch.
ecrire/balise/logo_.php 2 patches
Indentation   +85 added lines, -85 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 
@@ -56,88 +56,88 @@  discard block
 block discarded – undo
56 56
  */
57 57
 function balise_LOGO__dist($p) {
58 58
 
59
-	preg_match(',^LOGO_([A-Z_]+?)(|_NORMAL|_SURVOL|_RUBRIQUE)$,i', $p->nom_champ, $regs);
60
-	$type = strtolower($regs[1]);
61
-	$suite_logo = $regs[2];
62
-
63
-	// cas de #LOGO_SITE_SPIP
64
-	if ($type == 'site_spip') {
65
-		$type = 'site';
66
-		$_id_objet = "\"'0'\"";
67
-	}
68
-
69
-	$id_objet = id_table_objet($type);
70
-	if (!isset($_id_objet)) {
71
-		$_id_objet = champ_sql($id_objet, $p);
72
-	}
73
-
74
-	$fichier = ($p->etoile === '**') ? -1 : 0;
75
-	$coord = [];
76
-	$align = $lien = '';
77
-	$mode_logo = '';
78
-
79
-	if ($p->param and !$p->param[0][0]) {
80
-		$params = $p->param[0];
81
-		array_shift($params);
82
-		foreach ($params as $a) {
83
-			if ($a[0]->type === 'texte') {
84
-				$n = $a[0]->texte;
85
-				if (is_numeric($n)) {
86
-					$coord[] = $n;
87
-				} elseif (in_array($n, ['top', 'left', 'right', 'center', 'bottom'])) {
88
-					$align = $n;
89
-				} elseif (in_array($n, ['auto', 'icone', 'apercu', 'vignette'])) {
90
-					$mode_logo = $n;
91
-				}
92
-			} else {
93
-				$lien = calculer_liste($a, $p->descr, $p->boucles, $p->id_boucle);
94
-			}
95
-		}
96
-	}
97
-
98
-	$coord_x = !$coord ? 0 : intval(array_shift($coord));
99
-	$coord_y = !$coord ? 0 : intval(array_shift($coord));
100
-
101
-	if ($p->etoile === '*') {
102
-		include_spip('balise/url_');
103
-		$lien = generer_generer_url_arg($type, $p, $_id_objet);
104
-	}
105
-
106
-	$connect = $p->id_boucle ? $p->boucles[$p->id_boucle]->sql_serveur : '';
107
-	if ($type == 'document') {
108
-		$qconnect = _q($connect);
109
-		$doc = "quete_document($_id_objet, $qconnect)";
110
-		if ($fichier) {
111
-			$code = "quete_logo_file($doc, $qconnect)";
112
-		} else {
113
-			$code = "quete_logo_document($doc, " . ($lien ?: "''") . ", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)";
114
-		}
115
-		// (x=non-faux ? y : '') pour affecter x en retournant y
116
-		if ($p->descr['documents']) {
117
-			$code = '(($doublons["documents"] .= ",". '
118
-				. $_id_objet
119
-				. ") ? $code : '')";
120
-		}
121
-	} elseif ($connect) {
122
-		$code = "''";
123
-		spip_log('Les logos distants ne sont pas prevus');
124
-	} else {
125
-		// pour generer_code_logo
126
-		include_spip('balise/id_logo_');
127
-		$champ_logo = '';
128
-		if ($fichier) {
129
-			$champ_logo = 'fichier';
130
-		}
131
-		$code = generer_code_logo($id_objet, $_id_objet, $type, $align, $lien, $p, $suite_logo, $champ_logo);
132
-	}
133
-
134
-	// demande de reduction sur logo avec ecriture spip 2.1 : #LOGO_xxx{200, 0}
135
-	if ($coord_x or $coord_y) {
136
-		$code = "filtrer('image_graver',filtrer('image_reduire'," . $code . ", '$coord_x', '$coord_y'))";
137
-	}
138
-
139
-	$p->code = $code;
140
-	$p->interdire_scripts = false;
141
-
142
-	return $p;
59
+    preg_match(',^LOGO_([A-Z_]+?)(|_NORMAL|_SURVOL|_RUBRIQUE)$,i', $p->nom_champ, $regs);
60
+    $type = strtolower($regs[1]);
61
+    $suite_logo = $regs[2];
62
+
63
+    // cas de #LOGO_SITE_SPIP
64
+    if ($type == 'site_spip') {
65
+        $type = 'site';
66
+        $_id_objet = "\"'0'\"";
67
+    }
68
+
69
+    $id_objet = id_table_objet($type);
70
+    if (!isset($_id_objet)) {
71
+        $_id_objet = champ_sql($id_objet, $p);
72
+    }
73
+
74
+    $fichier = ($p->etoile === '**') ? -1 : 0;
75
+    $coord = [];
76
+    $align = $lien = '';
77
+    $mode_logo = '';
78
+
79
+    if ($p->param and !$p->param[0][0]) {
80
+        $params = $p->param[0];
81
+        array_shift($params);
82
+        foreach ($params as $a) {
83
+            if ($a[0]->type === 'texte') {
84
+                $n = $a[0]->texte;
85
+                if (is_numeric($n)) {
86
+                    $coord[] = $n;
87
+                } elseif (in_array($n, ['top', 'left', 'right', 'center', 'bottom'])) {
88
+                    $align = $n;
89
+                } elseif (in_array($n, ['auto', 'icone', 'apercu', 'vignette'])) {
90
+                    $mode_logo = $n;
91
+                }
92
+            } else {
93
+                $lien = calculer_liste($a, $p->descr, $p->boucles, $p->id_boucle);
94
+            }
95
+        }
96
+    }
97
+
98
+    $coord_x = !$coord ? 0 : intval(array_shift($coord));
99
+    $coord_y = !$coord ? 0 : intval(array_shift($coord));
100
+
101
+    if ($p->etoile === '*') {
102
+        include_spip('balise/url_');
103
+        $lien = generer_generer_url_arg($type, $p, $_id_objet);
104
+    }
105
+
106
+    $connect = $p->id_boucle ? $p->boucles[$p->id_boucle]->sql_serveur : '';
107
+    if ($type == 'document') {
108
+        $qconnect = _q($connect);
109
+        $doc = "quete_document($_id_objet, $qconnect)";
110
+        if ($fichier) {
111
+            $code = "quete_logo_file($doc, $qconnect)";
112
+        } else {
113
+            $code = "quete_logo_document($doc, " . ($lien ?: "''") . ", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)";
114
+        }
115
+        // (x=non-faux ? y : '') pour affecter x en retournant y
116
+        if ($p->descr['documents']) {
117
+            $code = '(($doublons["documents"] .= ",". '
118
+                . $_id_objet
119
+                . ") ? $code : '')";
120
+        }
121
+    } elseif ($connect) {
122
+        $code = "''";
123
+        spip_log('Les logos distants ne sont pas prevus');
124
+    } else {
125
+        // pour generer_code_logo
126
+        include_spip('balise/id_logo_');
127
+        $champ_logo = '';
128
+        if ($fichier) {
129
+            $champ_logo = 'fichier';
130
+        }
131
+        $code = generer_code_logo($id_objet, $_id_objet, $type, $align, $lien, $p, $suite_logo, $champ_logo);
132
+    }
133
+
134
+    // demande de reduction sur logo avec ecriture spip 2.1 : #LOGO_xxx{200, 0}
135
+    if ($coord_x or $coord_y) {
136
+        $code = "filtrer('image_graver',filtrer('image_reduire'," . $code . ", '$coord_x', '$coord_y'))";
137
+    }
138
+
139
+    $p->code = $code;
140
+    $p->interdire_scripts = false;
141
+
142
+    return $p;
143 143
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
 		if ($fichier) {
111 111
 			$code = "quete_logo_file($doc, $qconnect)";
112 112
 		} else {
113
-			$code = "quete_logo_document($doc, " . ($lien ?: "''") . ", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)";
113
+			$code = "quete_logo_document($doc, ".($lien ?: "''").", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)";
114 114
 		}
115 115
 		// (x=non-faux ? y : '') pour affecter x en retournant y
116 116
 		if ($p->descr['documents']) {
@@ -133,7 +133,7 @@  discard block
 block discarded – undo
133 133
 
134 134
 	// demande de reduction sur logo avec ecriture spip 2.1 : #LOGO_xxx{200, 0}
135 135
 	if ($coord_x or $coord_y) {
136
-		$code = "filtrer('image_graver',filtrer('image_reduire'," . $code . ", '$coord_x', '$coord_y'))";
136
+		$code = "filtrer('image_graver',filtrer('image_reduire',".$code.", '$coord_x', '$coord_y'))";
137 137
 	}
138 138
 
139 139
 	$p->code = $code;
Please login to merge, or discard this patch.
ecrire/inc/filtres_images_lib_mini.php 3 patches
Braces   +4 added lines, -9 removed lines patch added patch discarded remove patch
@@ -542,8 +542,7 @@  discard block
 block discarded – undo
542 542
 			process_image_svg_identite($ret);
543 543
 			$ret['creer'] = false;
544 544
 		}
545
-	}
546
-	else {
545
+	} else {
547 546
 		if (!function_exists($ret['fonction_imagecreatefrom'])) {
548 547
 			return false;
549 548
 		}
@@ -647,8 +646,7 @@  discard block
 block discarded – undo
647 646
 
648 647
 	if (isset($info['mime'])) {
649 648
 		$mime = $info['mime'];
650
-	}
651
-	else {
649
+	} else {
652 650
 		$mime = image_type_to_mime_type($info[2]);
653 651
 	}
654 652
 
@@ -1392,9 +1390,7 @@  discard block
 block discarded – undo
1392 1390
 	if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1393 1391
 		$vignette = $destination . '.' . $format;
1394 1392
 		@copy($image, $vignette);
1395
-	}
1396
-
1397
-	elseif ($valeurs['format_source'] === 'svg') {
1393
+	} elseif ($valeurs['format_source'] === 'svg') {
1398 1394
 		include_spip('inc/svg');
1399 1395
 		if ($svg = svg_redimensionner($valeurs['fichier'], $destWidth, $destHeight)) {
1400 1396
 			$format_sortie = 'svg';
@@ -1837,8 +1833,7 @@  discard block
 block discarded – undo
1837 1833
 		$date = test_espace_prive() ? ('?' . $date) : '';
1838 1834
 
1839 1835
 		return _image_ecrire_tag($image, ['src' => "$logo$date", 'width' => $destWidth, 'height' => $destHeight]);
1840
-	}
1841
-	else {
1836
+	} else {
1842 1837
 		# BMP, tiff ... les redacteurs osent tout!
1843 1838
 		return $img;
1844 1839
 	}
Please login to merge, or discard this patch.
Indentation   +1329 added lines, -1329 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 include_spip('inc/filtres'); // par precaution
23 23
 include_spip('inc/filtres_images_mini'); // par precaution
@@ -37,21 +37,21 @@  discard block
 block discarded – undo
37 37
  *     Le code de la couleur en hexadécimal.
38 38
  */
39 39
 function _couleur_dec_to_hex($red, $green, $blue) {
40
-	$red = dechex($red);
41
-	$green = dechex($green);
42
-	$blue = dechex($blue);
43
-
44
-	if (strlen($red) == 1) {
45
-		$red = '0' . $red;
46
-	}
47
-	if (strlen($green) == 1) {
48
-		$green = '0' . $green;
49
-	}
50
-	if (strlen($blue) == 1) {
51
-		$blue = '0' . $blue;
52
-	}
53
-
54
-	return "$red$green$blue";
40
+    $red = dechex($red);
41
+    $green = dechex($green);
42
+    $blue = dechex($blue);
43
+
44
+    if (strlen($red) == 1) {
45
+        $red = '0' . $red;
46
+    }
47
+    if (strlen($green) == 1) {
48
+        $green = '0' . $green;
49
+    }
50
+    if (strlen($blue) == 1) {
51
+        $blue = '0' . $blue;
52
+    }
53
+
54
+    return "$red$green$blue";
55 55
 }
56 56
 
57 57
 /**
@@ -63,18 +63,18 @@  discard block
 block discarded – undo
63 63
  *     Un tableau des 3 éléments : rouge, vert, bleu.
64 64
  */
65 65
 function _couleur_hex_to_dec($couleur) {
66
-	$couleur ??= '';
67
-	$couleur = couleur_html_to_hex($couleur);
68
-	$couleur = ltrim($couleur, '#');
69
-	if (strlen($couleur) === 3) {
70
-		$couleur = $couleur[0] . $couleur[0] . $couleur[1] . $couleur[1] . $couleur[2] . $couleur[2];
71
-	}
72
-	$retour = [];
73
-	$retour['red'] = hexdec(substr($couleur, 0, 2));
74
-	$retour['green'] = hexdec(substr($couleur, 2, 2));
75
-	$retour['blue'] = hexdec(substr($couleur, 4, 2));
76
-
77
-	return $retour;
66
+    $couleur ??= '';
67
+    $couleur = couleur_html_to_hex($couleur);
68
+    $couleur = ltrim($couleur, '#');
69
+    if (strlen($couleur) === 3) {
70
+        $couleur = $couleur[0] . $couleur[0] . $couleur[1] . $couleur[1] . $couleur[2] . $couleur[2];
71
+    }
72
+    $retour = [];
73
+    $retour['red'] = hexdec(substr($couleur, 0, 2));
74
+    $retour['green'] = hexdec(substr($couleur, 2, 2));
75
+    $retour['blue'] = hexdec(substr($couleur, 4, 2));
76
+
77
+    return $retour;
78 78
 }
79 79
 
80 80
 
@@ -91,8 +91,8 @@  discard block
 block discarded – undo
91 91
  *     Le code de la couleur en hexadécimal.
92 92
  */
93 93
 function _couleur_hsl_to_hex($hue, $saturation, $lightness) {
94
-	$rgb = _couleur_hsl_to_rgb($hue, $saturation, $lightness);
95
-	return _couleur_dec_to_hex($rgb['r'], $rgb['g'], $rgb['b']);
94
+    $rgb = _couleur_hsl_to_rgb($hue, $saturation, $lightness);
95
+    return _couleur_dec_to_hex($rgb['r'], $rgb['g'], $rgb['b']);
96 96
 }
97 97
 
98 98
 /**
@@ -104,8 +104,8 @@  discard block
 block discarded – undo
104 104
  *     Un tableau des 3 éléments : teinte, saturation, luminosité.
105 105
  */
106 106
 function _couleur_hex_to_hsl($couleur) {
107
-	$rgb = _couleur_hex_to_dec($couleur);
108
-	return _couleur_rgb_to_hsl($rgb['red'], $rgb['green'], $rgb['blue']);
107
+    $rgb = _couleur_hex_to_dec($couleur);
108
+    return _couleur_rgb_to_hsl($rgb['red'], $rgb['green'], $rgb['blue']);
109 109
 }
110 110
 
111 111
 /**
@@ -120,59 +120,59 @@  discard block
 block discarded – undo
120 120
  * @return array
121 121
  */
122 122
 function _couleur_rgb_to_hsl($R, $G, $B) {
123
-	$H = null;
124
-	$var_R = ($R / 255); // Where RGB values = 0 ÷ 255
125
-	$var_G = ($G / 255);
126
-	$var_B = ($B / 255);
127
-
128
-	$var_Min = min($var_R, $var_G, $var_B);   //Min. value of RGB
129
-	$var_Max = max($var_R, $var_G, $var_B);   //Max. value of RGB
130
-	$del_Max = $var_Max - $var_Min;           //Delta RGB value
131
-
132
-	$L = ($var_Max + $var_Min) / 2;
133
-
134
-	if ($del_Max == 0) {
135
-		//This is a gray, no chroma...
136
-		$H = 0; //HSL results = 0 ÷ 1
137
-		$S = 0;
138
-	} else {
139
-		// Chromatic data...
140
-		if ($L < 0.5) {
141
-			$S = $del_Max / ($var_Max + $var_Min);
142
-		} else {
143
-			$S = $del_Max / (2 - $var_Max - $var_Min);
144
-		}
145
-
146
-		$del_R = ((($var_Max - $var_R) / 6) + ($del_Max / 2)) / $del_Max;
147
-		$del_G = ((($var_Max - $var_G) / 6) + ($del_Max / 2)) / $del_Max;
148
-		$del_B = ((($var_Max - $var_B) / 6) + ($del_Max / 2)) / $del_Max;
149
-
150
-		if ($var_R == $var_Max) {
151
-			$H = $del_B - $del_G;
152
-		} else {
153
-			if ($var_G == $var_Max) {
154
-				$H = (1 / 3) + $del_R - $del_B;
155
-			} else {
156
-				if ($var_B == $var_Max) {
157
-					$H = (2 / 3) + $del_G - $del_R;
158
-				}
159
-			}
160
-		}
161
-
162
-		if ($H < 0) {
163
-			$H += 1;
164
-		}
165
-		if ($H > 1) {
166
-			$H -= 1;
167
-		}
168
-	}
169
-
170
-	$ret = [];
171
-	$ret['h'] = $H;
172
-	$ret['s'] = $S;
173
-	$ret['l'] = $L;
174
-
175
-	return $ret;
123
+    $H = null;
124
+    $var_R = ($R / 255); // Where RGB values = 0 ÷ 255
125
+    $var_G = ($G / 255);
126
+    $var_B = ($B / 255);
127
+
128
+    $var_Min = min($var_R, $var_G, $var_B);   //Min. value of RGB
129
+    $var_Max = max($var_R, $var_G, $var_B);   //Max. value of RGB
130
+    $del_Max = $var_Max - $var_Min;           //Delta RGB value
131
+
132
+    $L = ($var_Max + $var_Min) / 2;
133
+
134
+    if ($del_Max == 0) {
135
+        //This is a gray, no chroma...
136
+        $H = 0; //HSL results = 0 ÷ 1
137
+        $S = 0;
138
+    } else {
139
+        // Chromatic data...
140
+        if ($L < 0.5) {
141
+            $S = $del_Max / ($var_Max + $var_Min);
142
+        } else {
143
+            $S = $del_Max / (2 - $var_Max - $var_Min);
144
+        }
145
+
146
+        $del_R = ((($var_Max - $var_R) / 6) + ($del_Max / 2)) / $del_Max;
147
+        $del_G = ((($var_Max - $var_G) / 6) + ($del_Max / 2)) / $del_Max;
148
+        $del_B = ((($var_Max - $var_B) / 6) + ($del_Max / 2)) / $del_Max;
149
+
150
+        if ($var_R == $var_Max) {
151
+            $H = $del_B - $del_G;
152
+        } else {
153
+            if ($var_G == $var_Max) {
154
+                $H = (1 / 3) + $del_R - $del_B;
155
+            } else {
156
+                if ($var_B == $var_Max) {
157
+                    $H = (2 / 3) + $del_G - $del_R;
158
+                }
159
+            }
160
+        }
161
+
162
+        if ($H < 0) {
163
+            $H += 1;
164
+        }
165
+        if ($H > 1) {
166
+            $H -= 1;
167
+        }
168
+    }
169
+
170
+    $ret = [];
171
+    $ret['h'] = $H;
172
+    $ret['s'] = $S;
173
+    $ret['l'] = $L;
174
+
175
+    return $ret;
176 176
 }
177 177
 
178 178
 
@@ -188,52 +188,52 @@  discard block
 block discarded – undo
188 188
  * @return array
189 189
  */
190 190
 function _couleur_hsl_to_rgb($H, $S, $L) {
191
-	// helper
192
-	$hue_2_rgb = function ($v1, $v2, $vH) {
193
-		if ($vH < 0) {
194
-			$vH += 1;
195
-		}
196
-		if ($vH > 1) {
197
-			$vH -= 1;
198
-		}
199
-		if ((6 * $vH) < 1) {
200
-			return ($v1 + ($v2 - $v1) * 6 * $vH);
201
-		}
202
-		if ((2 * $vH) < 1) {
203
-			return ($v2);
204
-		}
205
-		if ((3 * $vH) < 2) {
206
-			return ($v1 + ($v2 - $v1) * ((2 / 3) - $vH) * 6);
207
-		}
208
-
209
-		return ($v1);
210
-	};
211
-
212
-	if ($S == 0) {
213
-		// HSV values = 0 -> 1
214
-		$R = $L * 255;
215
-		$G = $L * 255;
216
-		$B = $L * 255;
217
-	} else {
218
-		if ($L < 0.5) {
219
-			$var_2 = $L * (1 + $S);
220
-		} else {
221
-			$var_2 = ($L + $S) - ($S * $L);
222
-		}
223
-
224
-		$var_1 = 2 * $L - $var_2;
225
-
226
-		$R = 255 * $hue_2_rgb($var_1, $var_2, $H + (1 / 3));
227
-		$G = 255 * $hue_2_rgb($var_1, $var_2, $H);
228
-		$B = 255 * $hue_2_rgb($var_1, $var_2, $H - (1 / 3));
229
-	}
230
-
231
-	$ret = [];
232
-	$ret['r'] = floor($R);
233
-	$ret['g'] = floor($G);
234
-	$ret['b'] = floor($B);
235
-
236
-	return $ret;
191
+    // helper
192
+    $hue_2_rgb = function ($v1, $v2, $vH) {
193
+        if ($vH < 0) {
194
+            $vH += 1;
195
+        }
196
+        if ($vH > 1) {
197
+            $vH -= 1;
198
+        }
199
+        if ((6 * $vH) < 1) {
200
+            return ($v1 + ($v2 - $v1) * 6 * $vH);
201
+        }
202
+        if ((2 * $vH) < 1) {
203
+            return ($v2);
204
+        }
205
+        if ((3 * $vH) < 2) {
206
+            return ($v1 + ($v2 - $v1) * ((2 / 3) - $vH) * 6);
207
+        }
208
+
209
+        return ($v1);
210
+    };
211
+
212
+    if ($S == 0) {
213
+        // HSV values = 0 -> 1
214
+        $R = $L * 255;
215
+        $G = $L * 255;
216
+        $B = $L * 255;
217
+    } else {
218
+        if ($L < 0.5) {
219
+            $var_2 = $L * (1 + $S);
220
+        } else {
221
+            $var_2 = ($L + $S) - ($S * $L);
222
+        }
223
+
224
+        $var_1 = 2 * $L - $var_2;
225
+
226
+        $R = 255 * $hue_2_rgb($var_1, $var_2, $H + (1 / 3));
227
+        $G = 255 * $hue_2_rgb($var_1, $var_2, $H);
228
+        $B = 255 * $hue_2_rgb($var_1, $var_2, $H - (1 / 3));
229
+    }
230
+
231
+    $ret = [];
232
+    $ret['r'] = floor($R);
233
+    $ret['g'] = floor($G);
234
+    $ret['b'] = floor($B);
235
+
236
+    return $ret;
237 237
 }
238 238
 
239 239
 /**
@@ -251,11 +251,11 @@  discard block
 block discarded – undo
251 251
  *     true si il faut supprimer le fichier temporaire ; false sinon.
252 252
  */
253 253
 function statut_effacer_images_temporaires($stat) {
254
-	static $statut = false; // par defaut on grave toute les images
255
-	if ($stat === 'get') {
256
-		return $statut;
257
-	}
258
-	$statut = $stat ? true : false;
254
+    static $statut = false; // par defaut on grave toute les images
255
+    if ($stat === 'get') {
256
+        return $statut;
257
+    }
258
+    $statut = $stat ? true : false;
259 259
 }
260 260
 
261 261
 
@@ -308,247 +308,247 @@  discard block
 block discarded – undo
308 308
  *     - array : tableau décrivant de l'image
309 309
  */
310 310
 function _image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_creation = null, $find_in_path = false, $support_svg = false) {
311
-	$ret = [];
312
-	$f = null;
313
-	static $images_recalcul = [];
314
-	if (strlen($img) == 0) {
315
-		return false;
316
-	}
317
-
318
-	$source = trim(extraire_attribut($img, 'src') ?? '');
319
-	if (strlen($source) < 1) {
320
-		$source = $img;
321
-		$img = "<img src='$source' />";
322
-	} elseif (
323
-		preg_match('@^data:image/([^;]*);base64,(.*)$@isS', $source, $regs)
324
-		and $extension = _image_trouver_extension_depuis_mime('image/' . $regs[1])
325
-		and in_array($extension, _image_extensions_acceptees_en_entree())
326
-	) {
327
-		# gerer img src="data:....base64"
328
-		$local = sous_repertoire(_DIR_VAR, 'image-data') . md5($regs[2]) . '.' . _image_extension_normalisee($extension);
329
-		if (!file_exists($local)) {
330
-			ecrire_fichier($local, base64_decode($regs[2]));
331
-		}
332
-		if ($sanitizer = charger_fonction($extension, 'sanitizer', true)) {
333
-			$sanitizer($local);
334
-		}
335
-		$source = $local;
336
-		$img = inserer_attribut($img, 'src', $source);
337
-		# eviter les mauvaises surprises lors de conversions de format
338
-		$img = inserer_attribut($img, 'width', '');
339
-		$img = inserer_attribut($img, 'height', '');
340
-	}
341
-
342
-	// les protocoles web prennent au moins 3 lettres
343
-	if (tester_url_absolue($source)) {
344
-		include_spip('inc/distant');
345
-		$fichier = _DIR_RACINE . copie_locale($source);
346
-		if (!$fichier) {
347
-			return '';
348
-		}
349
-		if (
350
-			$extension = _image_trouver_extension($fichier)
351
-			and $sanitizer = charger_fonction($extension, 'sanitizer', true)
352
-		) {
353
-			$sanitizer($fichier);
354
-		}
355
-	} else {
356
-		// enlever le timestamp eventuel
357
-		if (strpos($source, '?') !== false) {
358
-			$source = preg_replace(',[?][0-9]+$,', '', $source);
359
-		}
360
-		if (
361
-			strpos($source, '?') !== false
362
-			and strncmp($source, _DIR_IMG, strlen(_DIR_IMG)) == 0
363
-			and file_exists($f = preg_replace(',[?].*$,', '', $source))
364
-		) {
365
-			$source = $f;
366
-		}
367
-		$fichier = $source;
368
-	}
369
-
370
-	$terminaison_dest = '';
371
-	if ($terminaison = _image_trouver_extension($fichier)) {
372
-		$terminaison_dest = ($terminaison == 'gif') ? 'png' : $terminaison;
373
-	}
374
-
375
-	if (
376
-		$forcer_format !== false
377
-		// ignorer forcer_format si on a une image svg, que le filtre appelant ne supporte pas SVG, et que le forcage est un autre format image
378
-		and ($terminaison_dest !== 'svg' or $support_svg or !in_array($forcer_format, _image_extensions_acceptees_en_sortie()))
379
-	) {
380
-		$terminaison_dest = $forcer_format;
381
-	}
382
-
383
-	if (!$terminaison_dest) {
384
-		return false;
385
-	}
386
-
387
-	$nom_fichier = substr($fichier, 0, strlen($fichier) - (strlen($terminaison) + 1));
388
-	$fichier_dest = $nom_fichier;
389
-	if (
390
-		($find_in_path and $f = find_in_path($fichier) and $fichier = $f)
391
-		or @file_exists($f = $fichier)
392
-	) {
393
-		// on passe la balise img a taille image qui exraira les attributs si possible
394
-		// au lieu de faire un acces disque sur le fichier
395
-		[$ret['hauteur'], $ret['largeur']] = taille_image($find_in_path ? $f : $img);
396
-		$date_src = @filemtime($f);
397
-	} elseif (
398
-		@file_exists($f = "$fichier.src")
399
-		and lire_fichier($f, $valeurs)
400
-		and $valeurs = unserialize($valeurs)
401
-		and isset($valeurs['hauteur_dest'])
402
-		and isset($valeurs['largeur_dest'])
403
-	) {
404
-		$ret['hauteur'] = $valeurs['hauteur_dest'];
405
-		$ret['largeur'] = $valeurs['largeur_dest'];
406
-		$date_src = $valeurs['date'];
407
-	} // pas de fichier source par la
408
-	else {
409
-		return false;
410
-	}
411
-
412
-	// pas de taille mesurable ?
413
-	if (!$ret['hauteur']
414
-		or !($ret['hauteur'] = intval(round($ret['hauteur'])))
415
-		or !$ret['largeur']
416
-		or !($ret['largeur'] = intval(round($ret['largeur'])))
417
-	) {
418
-		return false;
419
-	}
420
-
421
-	// les images calculees dependent du chemin du fichier source
422
-	// pour une meme image source et un meme filtre on aboutira a 2 fichiers selon si l'appel est dans le public ou dans le prive
423
-	// ce n'est pas totalement optimal en terme de stockage, mais chaque image est associee a un fichier .src
424
-	// qui contient la methode de reconstrucion (le filtre + les arguments d'appel) et les arguments different entre prive et public
425
-	// la mise en commun du fichier image cree donc un bug et des problemes qui necessiteraient beaucoup de complexite de code
426
-	// alors que ca concerne peu de site au final
427
-	// la release de r23632+r23633+r23634 a provoque peu de remontee de bug attestant du peu de sites impactes
428
-	$identifiant = $fichier;
429
-
430
-	// cas general :
431
-	// on a un dossier cache commun et un nom de fichier qui varie avec l'effet
432
-	// cas particulier de reduire :
433
-	// un cache par dimension, et le nom de fichier est conserve, suffixe par la dimension aussi
434
-	$cache = 'cache-gd2';
435
-	if (substr($effet, 0, 7) == 'reduire') {
436
-		[, $maxWidth, $maxHeight] = explode('-', $effet);
437
-		[$destWidth, $destHeight] = _image_ratio($ret['largeur'], $ret['hauteur'], $maxWidth, $maxHeight);
438
-		$ret['largeur_dest'] = $destWidth;
439
-		$ret['hauteur_dest'] = $destHeight;
440
-		$effet = "L{$destWidth}xH$destHeight";
441
-		$cache = 'cache-vignettes';
442
-		$fichier_dest = basename($fichier_dest);
443
-		if (($ret['largeur'] <= $maxWidth) && ($ret['hauteur'] <= $maxHeight)) {
444
-			// on garde la terminaison initiale car image simplement copiee
445
-			// et on postfixe son nom avec un md5 du path
446
-			$terminaison_dest = $terminaison;
447
-			$fichier_dest .= '-' . substr(md5("$identifiant"), 0, 5);
448
-		} else {
449
-			$fichier_dest .= '-' . substr(md5("$identifiant-$effet"), 0, 5);
450
-		}
451
-		$cache = sous_repertoire(_DIR_VAR, $cache);
452
-		$cache = sous_repertoire($cache, $effet);
453
-	} else {
454
-		$fichier_dest = md5("$identifiant-$effet");
455
-		$cache = sous_repertoire(_DIR_VAR, $cache);
456
-		$cache = sous_repertoire($cache, substr($fichier_dest, 0, 2));
457
-		$fichier_dest = substr($fichier_dest, 2);
458
-	}
459
-
460
-	$fichier_dest = $cache . $fichier_dest . '.' . $terminaison_dest;
461
-
462
-	$GLOBALS['images_calculees'][] = $fichier_dest;
463
-
464
-	$creer = true;
465
-	// si recalcul des images demande, recalculer chaque image une fois
466
-	if (defined('_VAR_IMAGES') and _VAR_IMAGES and !isset($images_recalcul[$fichier_dest])) {
467
-		$images_recalcul[$fichier_dest] = true;
468
-	} else {
469
-		if (@file_exists($f = $fichier_dest)) {
470
-			if (filemtime($f) >= $date_src) {
471
-				$creer = false;
472
-			}
473
-		} else {
474
-			if (
475
-				@file_exists($f = "$fichier_dest.src")
476
-				and lire_fichier($f, $valeurs)
477
-				and $valeurs = unserialize($valeurs)
478
-				and $valeurs['date'] >= $date_src
479
-			) {
480
-				$creer = false;
481
-			}
482
-		}
483
-	}
484
-	if ($creer) {
485
-		if (!@file_exists($fichier)) {
486
-			if (!@file_exists("$fichier.src")) {
487
-				spip_log("Image absente : $fichier");
488
-
489
-				return false;
490
-			}
491
-			# on reconstruit l'image source absente a partir de la chaine des .src
492
-			reconstruire_image_intermediaire($fichier);
493
-		}
494
-	}
495
-
496
-	if ($creer) {
497
-		spip_log(
498
-			'filtre image ' . ($fonction_creation ? reset($fonction_creation) : '') . "[$effet] sur $fichier",
499
-			'images' . _LOG_DEBUG
500
-		);
501
-	}
502
-
503
-	$term_fonction = _image_trouver_extension_pertinente($fichier);
504
-	$ret['fonction_imagecreatefrom'] = '_imagecreatefrom' . $term_fonction;
505
-	$ret['fichier'] = $fichier;
506
-	$ret['fonction_image'] = '_image_image' . $terminaison_dest;
507
-	$ret['fichier_dest'] = $fichier_dest;
508
-	$ret['format_source'] = _image_extension_normalisee($terminaison);
509
-	$ret['format_dest'] = $terminaison_dest;
510
-	$ret['date_src'] = $date_src;
511
-	$ret['creer'] = $creer;
512
-	$ret['class'] = extraire_attribut($img, 'class');
513
-	$ret['alt'] = extraire_attribut($img, 'alt');
514
-	$ret['style'] = extraire_attribut($img, 'style');
515
-	$ret['tag'] = $img;
516
-	if ($fonction_creation) {
517
-		$ret['reconstruction'] = $fonction_creation;
518
-		# ecrire ici comment creer le fichier, car il est pas sur qu'on l'ecrira reelement
519
-		# cas de image_reduire qui finalement ne reduit pas l'image source
520
-		# ca evite d'essayer de le creer au prochain hit si il n'est pas la
521
-		#ecrire_fichier($ret['fichier_dest'].'.src',serialize($ret),true);
522
-	}
523
-
524
-	$ret = pipeline('image_preparer_filtre', [
525
-			'args' => [
526
-				'img' => $img,
527
-				'effet' => $effet,
528
-				'forcer_format' => $forcer_format,
529
-				'fonction_creation' => $fonction_creation,
530
-				'find_in_path' => $find_in_path,
531
-			],
532
-			'data' => $ret
533
-		]);
534
-
535
-	// une globale pour le debug en cas de crash memoire
536
-	$GLOBALS['derniere_image_calculee'] = $ret;
537
-
538
-	// traiter le cas particulier des SVG : si le filtre n'a pas annonce explicitement qu'il savait faire, on delegue
539
-	if ($term_fonction === 'svg') {
540
-		if ($creer and !$support_svg) {
541
-			process_image_svg_identite($ret);
542
-			$ret['creer'] = false;
543
-		}
544
-	}
545
-	else {
546
-		if (!function_exists($ret['fonction_imagecreatefrom'])) {
547
-			return false;
548
-		}
549
-	}
550
-
551
-	return $ret;
311
+    $ret = [];
312
+    $f = null;
313
+    static $images_recalcul = [];
314
+    if (strlen($img) == 0) {
315
+        return false;
316
+    }
317
+
318
+    $source = trim(extraire_attribut($img, 'src') ?? '');
319
+    if (strlen($source) < 1) {
320
+        $source = $img;
321
+        $img = "<img src='$source' />";
322
+    } elseif (
323
+        preg_match('@^data:image/([^;]*);base64,(.*)$@isS', $source, $regs)
324
+        and $extension = _image_trouver_extension_depuis_mime('image/' . $regs[1])
325
+        and in_array($extension, _image_extensions_acceptees_en_entree())
326
+    ) {
327
+        # gerer img src="data:....base64"
328
+        $local = sous_repertoire(_DIR_VAR, 'image-data') . md5($regs[2]) . '.' . _image_extension_normalisee($extension);
329
+        if (!file_exists($local)) {
330
+            ecrire_fichier($local, base64_decode($regs[2]));
331
+        }
332
+        if ($sanitizer = charger_fonction($extension, 'sanitizer', true)) {
333
+            $sanitizer($local);
334
+        }
335
+        $source = $local;
336
+        $img = inserer_attribut($img, 'src', $source);
337
+        # eviter les mauvaises surprises lors de conversions de format
338
+        $img = inserer_attribut($img, 'width', '');
339
+        $img = inserer_attribut($img, 'height', '');
340
+    }
341
+
342
+    // les protocoles web prennent au moins 3 lettres
343
+    if (tester_url_absolue($source)) {
344
+        include_spip('inc/distant');
345
+        $fichier = _DIR_RACINE . copie_locale($source);
346
+        if (!$fichier) {
347
+            return '';
348
+        }
349
+        if (
350
+            $extension = _image_trouver_extension($fichier)
351
+            and $sanitizer = charger_fonction($extension, 'sanitizer', true)
352
+        ) {
353
+            $sanitizer($fichier);
354
+        }
355
+    } else {
356
+        // enlever le timestamp eventuel
357
+        if (strpos($source, '?') !== false) {
358
+            $source = preg_replace(',[?][0-9]+$,', '', $source);
359
+        }
360
+        if (
361
+            strpos($source, '?') !== false
362
+            and strncmp($source, _DIR_IMG, strlen(_DIR_IMG)) == 0
363
+            and file_exists($f = preg_replace(',[?].*$,', '', $source))
364
+        ) {
365
+            $source = $f;
366
+        }
367
+        $fichier = $source;
368
+    }
369
+
370
+    $terminaison_dest = '';
371
+    if ($terminaison = _image_trouver_extension($fichier)) {
372
+        $terminaison_dest = ($terminaison == 'gif') ? 'png' : $terminaison;
373
+    }
374
+
375
+    if (
376
+        $forcer_format !== false
377
+        // ignorer forcer_format si on a une image svg, que le filtre appelant ne supporte pas SVG, et que le forcage est un autre format image
378
+        and ($terminaison_dest !== 'svg' or $support_svg or !in_array($forcer_format, _image_extensions_acceptees_en_sortie()))
379
+    ) {
380
+        $terminaison_dest = $forcer_format;
381
+    }
382
+
383
+    if (!$terminaison_dest) {
384
+        return false;
385
+    }
386
+
387
+    $nom_fichier = substr($fichier, 0, strlen($fichier) - (strlen($terminaison) + 1));
388
+    $fichier_dest = $nom_fichier;
389
+    if (
390
+        ($find_in_path and $f = find_in_path($fichier) and $fichier = $f)
391
+        or @file_exists($f = $fichier)
392
+    ) {
393
+        // on passe la balise img a taille image qui exraira les attributs si possible
394
+        // au lieu de faire un acces disque sur le fichier
395
+        [$ret['hauteur'], $ret['largeur']] = taille_image($find_in_path ? $f : $img);
396
+        $date_src = @filemtime($f);
397
+    } elseif (
398
+        @file_exists($f = "$fichier.src")
399
+        and lire_fichier($f, $valeurs)
400
+        and $valeurs = unserialize($valeurs)
401
+        and isset($valeurs['hauteur_dest'])
402
+        and isset($valeurs['largeur_dest'])
403
+    ) {
404
+        $ret['hauteur'] = $valeurs['hauteur_dest'];
405
+        $ret['largeur'] = $valeurs['largeur_dest'];
406
+        $date_src = $valeurs['date'];
407
+    } // pas de fichier source par la
408
+    else {
409
+        return false;
410
+    }
411
+
412
+    // pas de taille mesurable ?
413
+    if (!$ret['hauteur']
414
+        or !($ret['hauteur'] = intval(round($ret['hauteur'])))
415
+        or !$ret['largeur']
416
+        or !($ret['largeur'] = intval(round($ret['largeur'])))
417
+    ) {
418
+        return false;
419
+    }
420
+
421
+    // les images calculees dependent du chemin du fichier source
422
+    // pour une meme image source et un meme filtre on aboutira a 2 fichiers selon si l'appel est dans le public ou dans le prive
423
+    // ce n'est pas totalement optimal en terme de stockage, mais chaque image est associee a un fichier .src
424
+    // qui contient la methode de reconstrucion (le filtre + les arguments d'appel) et les arguments different entre prive et public
425
+    // la mise en commun du fichier image cree donc un bug et des problemes qui necessiteraient beaucoup de complexite de code
426
+    // alors que ca concerne peu de site au final
427
+    // la release de r23632+r23633+r23634 a provoque peu de remontee de bug attestant du peu de sites impactes
428
+    $identifiant = $fichier;
429
+
430
+    // cas general :
431
+    // on a un dossier cache commun et un nom de fichier qui varie avec l'effet
432
+    // cas particulier de reduire :
433
+    // un cache par dimension, et le nom de fichier est conserve, suffixe par la dimension aussi
434
+    $cache = 'cache-gd2';
435
+    if (substr($effet, 0, 7) == 'reduire') {
436
+        [, $maxWidth, $maxHeight] = explode('-', $effet);
437
+        [$destWidth, $destHeight] = _image_ratio($ret['largeur'], $ret['hauteur'], $maxWidth, $maxHeight);
438
+        $ret['largeur_dest'] = $destWidth;
439
+        $ret['hauteur_dest'] = $destHeight;
440
+        $effet = "L{$destWidth}xH$destHeight";
441
+        $cache = 'cache-vignettes';
442
+        $fichier_dest = basename($fichier_dest);
443
+        if (($ret['largeur'] <= $maxWidth) && ($ret['hauteur'] <= $maxHeight)) {
444
+            // on garde la terminaison initiale car image simplement copiee
445
+            // et on postfixe son nom avec un md5 du path
446
+            $terminaison_dest = $terminaison;
447
+            $fichier_dest .= '-' . substr(md5("$identifiant"), 0, 5);
448
+        } else {
449
+            $fichier_dest .= '-' . substr(md5("$identifiant-$effet"), 0, 5);
450
+        }
451
+        $cache = sous_repertoire(_DIR_VAR, $cache);
452
+        $cache = sous_repertoire($cache, $effet);
453
+    } else {
454
+        $fichier_dest = md5("$identifiant-$effet");
455
+        $cache = sous_repertoire(_DIR_VAR, $cache);
456
+        $cache = sous_repertoire($cache, substr($fichier_dest, 0, 2));
457
+        $fichier_dest = substr($fichier_dest, 2);
458
+    }
459
+
460
+    $fichier_dest = $cache . $fichier_dest . '.' . $terminaison_dest;
461
+
462
+    $GLOBALS['images_calculees'][] = $fichier_dest;
463
+
464
+    $creer = true;
465
+    // si recalcul des images demande, recalculer chaque image une fois
466
+    if (defined('_VAR_IMAGES') and _VAR_IMAGES and !isset($images_recalcul[$fichier_dest])) {
467
+        $images_recalcul[$fichier_dest] = true;
468
+    } else {
469
+        if (@file_exists($f = $fichier_dest)) {
470
+            if (filemtime($f) >= $date_src) {
471
+                $creer = false;
472
+            }
473
+        } else {
474
+            if (
475
+                @file_exists($f = "$fichier_dest.src")
476
+                and lire_fichier($f, $valeurs)
477
+                and $valeurs = unserialize($valeurs)
478
+                and $valeurs['date'] >= $date_src
479
+            ) {
480
+                $creer = false;
481
+            }
482
+        }
483
+    }
484
+    if ($creer) {
485
+        if (!@file_exists($fichier)) {
486
+            if (!@file_exists("$fichier.src")) {
487
+                spip_log("Image absente : $fichier");
488
+
489
+                return false;
490
+            }
491
+            # on reconstruit l'image source absente a partir de la chaine des .src
492
+            reconstruire_image_intermediaire($fichier);
493
+        }
494
+    }
495
+
496
+    if ($creer) {
497
+        spip_log(
498
+            'filtre image ' . ($fonction_creation ? reset($fonction_creation) : '') . "[$effet] sur $fichier",
499
+            'images' . _LOG_DEBUG
500
+        );
501
+    }
502
+
503
+    $term_fonction = _image_trouver_extension_pertinente($fichier);
504
+    $ret['fonction_imagecreatefrom'] = '_imagecreatefrom' . $term_fonction;
505
+    $ret['fichier'] = $fichier;
506
+    $ret['fonction_image'] = '_image_image' . $terminaison_dest;
507
+    $ret['fichier_dest'] = $fichier_dest;
508
+    $ret['format_source'] = _image_extension_normalisee($terminaison);
509
+    $ret['format_dest'] = $terminaison_dest;
510
+    $ret['date_src'] = $date_src;
511
+    $ret['creer'] = $creer;
512
+    $ret['class'] = extraire_attribut($img, 'class');
513
+    $ret['alt'] = extraire_attribut($img, 'alt');
514
+    $ret['style'] = extraire_attribut($img, 'style');
515
+    $ret['tag'] = $img;
516
+    if ($fonction_creation) {
517
+        $ret['reconstruction'] = $fonction_creation;
518
+        # ecrire ici comment creer le fichier, car il est pas sur qu'on l'ecrira reelement
519
+        # cas de image_reduire qui finalement ne reduit pas l'image source
520
+        # ca evite d'essayer de le creer au prochain hit si il n'est pas la
521
+        #ecrire_fichier($ret['fichier_dest'].'.src',serialize($ret),true);
522
+    }
523
+
524
+    $ret = pipeline('image_preparer_filtre', [
525
+            'args' => [
526
+                'img' => $img,
527
+                'effet' => $effet,
528
+                'forcer_format' => $forcer_format,
529
+                'fonction_creation' => $fonction_creation,
530
+                'find_in_path' => $find_in_path,
531
+            ],
532
+            'data' => $ret
533
+        ]);
534
+
535
+    // une globale pour le debug en cas de crash memoire
536
+    $GLOBALS['derniere_image_calculee'] = $ret;
537
+
538
+    // traiter le cas particulier des SVG : si le filtre n'a pas annonce explicitement qu'il savait faire, on delegue
539
+    if ($term_fonction === 'svg') {
540
+        if ($creer and !$support_svg) {
541
+            process_image_svg_identite($ret);
542
+            $ret['creer'] = false;
543
+        }
544
+    }
545
+    else {
546
+        if (!function_exists($ret['fonction_imagecreatefrom'])) {
547
+            return false;
548
+        }
549
+    }
550
+
551
+    return $ret;
552 552
 }
553 553
 
554 554
 
@@ -557,54 +557,54 @@  discard block
 block discarded – undo
557 557
  * @return array
558 558
  */
559 559
 function _image_extensions_acceptees_en_entree() {
560
-	static $extensions = null;
561
-	if (empty($extensions)) {
562
-		$extensions = ['png', 'gif', 'jpg', 'jpeg'];
563
-		if (!empty($GLOBALS['meta']['gd_formats'])) {
564
-			// action=tester renseigne gd_formats et detecte le support de webp
565
-			$extensions = array_merge(explode(',', $GLOBALS['meta']['gd_formats']));
566
-			$extensions = array_map('trim', $extensions);
567
-			$extensions = array_filter($extensions);
568
-			if (in_array('jpg', $extensions)) {
569
-				$extensions[] = 'jpeg';
570
-			}
571
-			$extensions = array_unique($extensions);
572
-		}
573
-		$extensions[] = 'svg'; // on le supporte toujours avec des fonctions specifiques
574
-	}
575
-
576
-	return $extensions;
560
+    static $extensions = null;
561
+    if (empty($extensions)) {
562
+        $extensions = ['png', 'gif', 'jpg', 'jpeg'];
563
+        if (!empty($GLOBALS['meta']['gd_formats'])) {
564
+            // action=tester renseigne gd_formats et detecte le support de webp
565
+            $extensions = array_merge(explode(',', $GLOBALS['meta']['gd_formats']));
566
+            $extensions = array_map('trim', $extensions);
567
+            $extensions = array_filter($extensions);
568
+            if (in_array('jpg', $extensions)) {
569
+                $extensions[] = 'jpeg';
570
+            }
571
+            $extensions = array_unique($extensions);
572
+        }
573
+        $extensions[] = 'svg'; // on le supporte toujours avec des fonctions specifiques
574
+    }
575
+
576
+    return $extensions;
577 577
 }
578 578
 
579 579
 /**
580 580
  * @return array|string[]|null
581 581
  */
582 582
 function _image_extensions_acceptees_en_sortie() {
583
-	static $extensions = null;
584
-	if (empty($extensions)) {
585
-		$extensions = _image_extensions_acceptees_en_entree();
586
-		$extensions = array_diff($extensions, ['jpeg']);
587
-		if (in_array('gif', $extensions) and !function_exists('imagegif')) {
588
-			$extensions = array_diff($extensions, ['gif']);
589
-		}
590
-		if (in_array('webp', $extensions) and !function_exists('imagewebp')) {
591
-			$extensions = array_diff($extensions, ['webp']);
592
-		}
593
-	}
594
-
595
-	return $extensions;
583
+    static $extensions = null;
584
+    if (empty($extensions)) {
585
+        $extensions = _image_extensions_acceptees_en_entree();
586
+        $extensions = array_diff($extensions, ['jpeg']);
587
+        if (in_array('gif', $extensions) and !function_exists('imagegif')) {
588
+            $extensions = array_diff($extensions, ['gif']);
589
+        }
590
+        if (in_array('webp', $extensions) and !function_exists('imagewebp')) {
591
+            $extensions = array_diff($extensions, ['webp']);
592
+        }
593
+    }
594
+
595
+    return $extensions;
596 596
 }
597 597
 
598 598
 function _image_extension_normalisee($extension) {
599
-	$extension = strtolower($extension);
600
-	if ($extension === 'jpeg') {
601
-		$extension = 'jpg';
602
-	}
603
-	return $extension;
599
+    $extension = strtolower($extension);
600
+    if ($extension === 'jpeg') {
601
+        $extension = 'jpg';
602
+    }
603
+    return $extension;
604 604
 }
605 605
 
606 606
 function _image_extensions_conservent_transparence() {
607
-	return ['png', 'webp'];
607
+    return ['png', 'webp'];
608 608
 }
609 609
 
610 610
 
@@ -614,12 +614,12 @@  discard block
 block discarded – undo
614 614
  * @return string
615 615
  */
616 616
 function _image_trouver_extension($path) {
617
-	$preg_extensions = implode('|', _image_extensions_acceptees_en_entree());
618
-	if (preg_match(",\.($preg_extensions)($|[?]),i", $path, $regs)) {
619
-		$terminaison = strtolower($regs[1]);
620
-		return $terminaison;
621
-	}
622
-	return '';
617
+    $preg_extensions = implode('|', _image_extensions_acceptees_en_entree());
618
+    if (preg_match(",\.($preg_extensions)($|[?]),i", $path, $regs)) {
619
+        $terminaison = strtolower($regs[1]);
620
+        return $terminaison;
621
+    }
622
+    return '';
623 623
 }
624 624
 
625 625
 /**
@@ -630,33 +630,33 @@  discard block
 block discarded – undo
630 630
  * @return string Extension, dans le format attendu par les fonctions 'gd' ('jpeg' pour les .jpg par exemple)
631 631
  */
632 632
 function _image_trouver_extension_pertinente($path) {
633
-	$path = supprimer_timestamp($path);
634
-	$terminaison = _image_trouver_extension($path);
635
-	if ($terminaison == 'jpg') {
636
-		$terminaison = 'jpeg';
637
-	}
638
-
639
-	if (!file_exists($path)) {
640
-		return $terminaison;
641
-	}
642
-
643
-	if (!$info = @spip_getimagesize($path)) {
644
-		return $terminaison;
645
-	}
646
-
647
-	if (isset($info['mime'])) {
648
-		$mime = $info['mime'];
649
-	}
650
-	else {
651
-		$mime = image_type_to_mime_type($info[2]);
652
-	}
653
-
654
-	$_terminaison = _image_trouver_extension_depuis_mime($mime);
655
-	if ($_terminaison and $_terminaison !== $terminaison) {
656
-		spip_log("Mauvaise extension du fichier : $path . Son type mime est : $mime", 'images.' . _LOG_INFO_IMPORTANTE);
657
-		$terminaison = $_terminaison;
658
-	}
659
-	return $terminaison;
633
+    $path = supprimer_timestamp($path);
634
+    $terminaison = _image_trouver_extension($path);
635
+    if ($terminaison == 'jpg') {
636
+        $terminaison = 'jpeg';
637
+    }
638
+
639
+    if (!file_exists($path)) {
640
+        return $terminaison;
641
+    }
642
+
643
+    if (!$info = @spip_getimagesize($path)) {
644
+        return $terminaison;
645
+    }
646
+
647
+    if (isset($info['mime'])) {
648
+        $mime = $info['mime'];
649
+    }
650
+    else {
651
+        $mime = image_type_to_mime_type($info[2]);
652
+    }
653
+
654
+    $_terminaison = _image_trouver_extension_depuis_mime($mime);
655
+    if ($_terminaison and $_terminaison !== $terminaison) {
656
+        spip_log("Mauvaise extension du fichier : $path . Son type mime est : $mime", 'images.' . _LOG_INFO_IMPORTANTE);
657
+        $terminaison = $_terminaison;
658
+    }
659
+    return $terminaison;
660 660
 }
661 661
 
662 662
 /**
@@ -664,36 +664,36 @@  discard block
 block discarded – undo
664 664
  * @return string
665 665
  */
666 666
 function _image_trouver_extension_depuis_mime($mime) {
667
-	switch (strtolower($mime)) {
668
-		case 'image/png':
669
-		case 'image/x-png':
670
-			$terminaison = 'png';
671
-			break;
672
-
673
-		case 'image/jpg':
674
-		case 'image/jpeg':
675
-		case 'image/pjpeg':
676
-			$terminaison = 'jpeg';
677
-			break;
678
-
679
-		case 'image/gif':
680
-			$terminaison = 'gif';
681
-			break;
682
-
683
-		case 'image/webp':
684
-		case 'image/x-webp':
685
-			$terminaison = 'webp';
686
-			break;
687
-
688
-		case 'image/svg+xml':
689
-			$terminaison = 'svg';
690
-			break;
691
-
692
-		default:
693
-			$terminaison = '';
694
-	}
695
-
696
-	return $terminaison;
667
+    switch (strtolower($mime)) {
668
+        case 'image/png':
669
+        case 'image/x-png':
670
+            $terminaison = 'png';
671
+            break;
672
+
673
+        case 'image/jpg':
674
+        case 'image/jpeg':
675
+        case 'image/pjpeg':
676
+            $terminaison = 'jpeg';
677
+            break;
678
+
679
+        case 'image/gif':
680
+            $terminaison = 'gif';
681
+            break;
682
+
683
+        case 'image/webp':
684
+        case 'image/x-webp':
685
+            $terminaison = 'webp';
686
+            break;
687
+
688
+        case 'image/svg+xml':
689
+            $terminaison = 'svg';
690
+            break;
691
+
692
+        default:
693
+            $terminaison = '';
694
+    }
695
+
696
+    return $terminaison;
697 697
 }
698 698
 
699 699
 
@@ -713,18 +713,18 @@  discard block
 block discarded – undo
713 713
  *     Une ressource de type Image GD.
714 714
  */
715 715
 function _imagecreatefrom_func(string $func, string $filename) {
716
-	if (!function_exists($func)) {
717
-		spip_log("GD indisponible : $func inexistante. Traitement $filename impossible.", _LOG_CRITIQUE);
718
-		erreur_squelette("GD indisponible : $func inexistante. Traitement $filename impossible.");
719
-		return null;
720
-	}
721
-	$img = @$func($filename);
722
-	if (!$img) {
723
-		spip_log("Erreur lecture imagecreatefromjpeg $filename", _LOG_CRITIQUE);
724
-		erreur_squelette("Erreur lecture imagecreatefromjpeg $filename");
725
-		$img = imagecreate(10, 10);
726
-	}
727
-	return $img;
716
+    if (!function_exists($func)) {
717
+        spip_log("GD indisponible : $func inexistante. Traitement $filename impossible.", _LOG_CRITIQUE);
718
+        erreur_squelette("GD indisponible : $func inexistante. Traitement $filename impossible.");
719
+        return null;
720
+    }
721
+    $img = @$func($filename);
722
+    if (!$img) {
723
+        spip_log("Erreur lecture imagecreatefromjpeg $filename", _LOG_CRITIQUE);
724
+        erreur_squelette("Erreur lecture imagecreatefromjpeg $filename");
725
+        $img = imagecreate(10, 10);
726
+    }
727
+    return $img;
728 728
 }
729 729
 
730 730
 /**
@@ -740,7 +740,7 @@  discard block
 block discarded – undo
740 740
  *     Une ressource de type Image GD.
741 741
  */
742 742
 function _imagecreatefromjpeg($filename) {
743
-	return _imagecreatefrom_func('imagecreatefromjpeg', $filename);
743
+    return _imagecreatefrom_func('imagecreatefromjpeg', $filename);
744 744
 }
745 745
 
746 746
 /**
@@ -756,7 +756,7 @@  discard block
 block discarded – undo
756 756
  *     Une ressource de type Image GD.
757 757
  */
758 758
 function _imagecreatefrompng($filename) {
759
-	return _imagecreatefrom_func('imagecreatefrompng', $filename);
759
+    return _imagecreatefrom_func('imagecreatefrompng', $filename);
760 760
 }
761 761
 
762 762
 /**
@@ -772,7 +772,7 @@  discard block
 block discarded – undo
772 772
  *     Une ressource de type Image GD.
773 773
  */
774 774
 function _imagecreatefromgif($filename) {
775
-	return _imagecreatefrom_func('imagecreatefromgif', $filename);
775
+    return _imagecreatefrom_func('imagecreatefromgif', $filename);
776 776
 }
777 777
 
778 778
 
@@ -789,7 +789,7 @@  discard block
 block discarded – undo
789 789
  *     Une ressource de type Image GD.
790 790
  */
791 791
 function _imagecreatefromwebp($filename) {
792
-	return _imagecreatefrom_func('imagecreatefromwebp', $filename);
792
+    return _imagecreatefrom_func('imagecreatefromwebp', $filename);
793 793
 }
794 794
 
795 795
 /**
@@ -807,24 +807,24 @@  discard block
 block discarded – undo
807 807
  *     - true si une image est bien retournée.
808 808
  */
809 809
 function _image_imagepng($img, $fichier) {
810
-	if (!function_exists('imagepng')) {
811
-		return false;
812
-	}
813
-	$tmp = $fichier . '.tmp';
814
-	$ret = imagepng($img, $tmp);
815
-	if (file_exists($tmp)) {
816
-		$taille_test = @getimagesize($tmp);
817
-		if (empty($taille_test[0])) {
818
-			return false;
819
-		}
820
-
821
-		spip_unlink($fichier); // le fichier peut deja exister
822
-		@rename($tmp, $fichier);
823
-
824
-		return $ret;
825
-	}
826
-
827
-	return false;
810
+    if (!function_exists('imagepng')) {
811
+        return false;
812
+    }
813
+    $tmp = $fichier . '.tmp';
814
+    $ret = imagepng($img, $tmp);
815
+    if (file_exists($tmp)) {
816
+        $taille_test = @getimagesize($tmp);
817
+        if (empty($taille_test[0])) {
818
+            return false;
819
+        }
820
+
821
+        spip_unlink($fichier); // le fichier peut deja exister
822
+        @rename($tmp, $fichier);
823
+
824
+        return $ret;
825
+    }
826
+
827
+    return false;
828 828
 }
829 829
 
830 830
 /**
@@ -842,24 +842,24 @@  discard block
 block discarded – undo
842 842
  *     - true si une image est bien retournée.
843 843
  */
844 844
 function _image_imagegif($img, $fichier) {
845
-	if (!function_exists('imagegif')) {
846
-		return false;
847
-	}
848
-	$tmp = $fichier . '.tmp';
849
-	$ret = imagegif($img, $tmp);
850
-	if (file_exists($tmp)) {
851
-		$taille_test = @getimagesize($tmp);
852
-		if (empty($taille_test[0])) {
853
-			return false;
854
-		}
855
-
856
-		spip_unlink($fichier); // le fichier peut deja exister
857
-		@rename($tmp, $fichier);
858
-
859
-		return $ret;
860
-	}
861
-
862
-	return false;
845
+    if (!function_exists('imagegif')) {
846
+        return false;
847
+    }
848
+    $tmp = $fichier . '.tmp';
849
+    $ret = imagegif($img, $tmp);
850
+    if (file_exists($tmp)) {
851
+        $taille_test = @getimagesize($tmp);
852
+        if (empty($taille_test[0])) {
853
+            return false;
854
+        }
855
+
856
+        spip_unlink($fichier); // le fichier peut deja exister
857
+        @rename($tmp, $fichier);
858
+
859
+        return $ret;
860
+    }
861
+
862
+    return false;
863 863
 }
864 864
 
865 865
 /**
@@ -882,29 +882,29 @@  discard block
 block discarded – undo
882 882
  *     - true si une image est bien retournée.
883 883
  */
884 884
 function _image_imagejpg($img, $fichier, $qualite = _IMG_GD_QUALITE) {
885
-	if (!function_exists('imagejpeg')) {
886
-		return false;
887
-	}
888
-	$tmp = $fichier . '.tmp';
885
+    if (!function_exists('imagejpeg')) {
886
+        return false;
887
+    }
888
+    $tmp = $fichier . '.tmp';
889 889
 
890
-	// Enable interlancing
891
-	imageinterlace($img, true);
890
+    // Enable interlancing
891
+    imageinterlace($img, true);
892 892
 
893
-	$ret = imagejpeg($img, $tmp, $qualite);
893
+    $ret = imagejpeg($img, $tmp, $qualite);
894 894
 
895
-	if (file_exists($tmp)) {
896
-		$taille_test = @getimagesize($tmp);
897
-		if (empty($taille_test[0])) {
898
-			return false;
899
-		}
895
+    if (file_exists($tmp)) {
896
+        $taille_test = @getimagesize($tmp);
897
+        if (empty($taille_test[0])) {
898
+            return false;
899
+        }
900 900
 
901
-		spip_unlink($fichier); // le fichier peut deja exister
902
-		@rename($tmp, $fichier);
901
+        spip_unlink($fichier); // le fichier peut deja exister
902
+        @rename($tmp, $fichier);
903 903
 
904
-		return $ret;
905
-	}
904
+        return $ret;
905
+    }
906 906
 
907
-	return false;
907
+    return false;
908 908
 }
909 909
 
910 910
 /**
@@ -922,9 +922,9 @@  discard block
 block discarded – undo
922 922
  *     true si le fichier a bien été créé ; false sinon.
923 923
  */
924 924
 function _image_imageico($img, $fichier) {
925
-	$gd_image_array = [$img];
925
+    $gd_image_array = [$img];
926 926
 
927
-	return ecrire_fichier($fichier, phpthumb_functions::GD2ICOstring($gd_image_array));
927
+    return ecrire_fichier($fichier, phpthumb_functions::GD2ICOstring($gd_image_array));
928 928
 }
929 929
 
930 930
 
@@ -943,24 +943,24 @@  discard block
 block discarded – undo
943 943
  *     - true si une image est bien retournée.
944 944
  */
945 945
 function _image_imagewebp($img, $fichier, $qualite = _IMG_GD_QUALITE) {
946
-	if (!function_exists('imagewebp')) {
947
-		return false;
948
-	}
949
-	$tmp = $fichier . '.tmp';
950
-	$ret = imagewebp($img, $tmp, $qualite);
951
-	if (file_exists($tmp)) {
952
-		$taille_test = @getimagesize($tmp);
953
-		if (empty($taille_test[0])) {
954
-			return false;
955
-		}
956
-
957
-		spip_unlink($fichier); // le fichier peut deja exister
958
-		@rename($tmp, $fichier);
959
-
960
-		return $ret;
961
-	}
962
-
963
-	return false;
946
+    if (!function_exists('imagewebp')) {
947
+        return false;
948
+    }
949
+    $tmp = $fichier . '.tmp';
950
+    $ret = imagewebp($img, $tmp, $qualite);
951
+    if (file_exists($tmp)) {
952
+        $taille_test = @getimagesize($tmp);
953
+        if (empty($taille_test[0])) {
954
+            return false;
955
+        }
956
+
957
+        spip_unlink($fichier); // le fichier peut deja exister
958
+        @rename($tmp, $fichier);
959
+
960
+        return $ret;
961
+    }
962
+
963
+    return false;
964 964
 }
965 965
 
966 966
 /**
@@ -980,35 +980,35 @@  discard block
 block discarded – undo
980 980
  */
981 981
 function _image_imagesvg($img, $fichier) {
982 982
 
983
-	$tmp = $fichier . '.tmp';
984
-	if (strpos($img, '<') === false) {
985
-		$img = supprimer_timestamp($img);
986
-		if (!file_exists($img)) {
987
-			return false;
988
-		}
989
-		@copy($img, $tmp);
990
-		if (filesize($tmp) == filesize($img)) {
991
-			spip_unlink($fichier); // le fichier peut deja exister
992
-			@rename($tmp, $fichier);
993
-			return true;
994
-		}
995
-		return false;
996
-	}
997
-
998
-	file_put_contents($tmp, $img);
999
-	if (file_exists($tmp)) {
1000
-		$taille_test = spip_getimagesize($tmp);
1001
-		if (empty($taille_test[0])) {
1002
-			return false;
1003
-		}
1004
-
1005
-		spip_unlink($fichier); // le fichier peut deja exister
1006
-		@rename($tmp, $fichier);
1007
-
1008
-		return true;
1009
-	}
1010
-
1011
-	return false;
983
+    $tmp = $fichier . '.tmp';
984
+    if (strpos($img, '<') === false) {
985
+        $img = supprimer_timestamp($img);
986
+        if (!file_exists($img)) {
987
+            return false;
988
+        }
989
+        @copy($img, $tmp);
990
+        if (filesize($tmp) == filesize($img)) {
991
+            spip_unlink($fichier); // le fichier peut deja exister
992
+            @rename($tmp, $fichier);
993
+            return true;
994
+        }
995
+        return false;
996
+    }
997
+
998
+    file_put_contents($tmp, $img);
999
+    if (file_exists($tmp)) {
1000
+        $taille_test = spip_getimagesize($tmp);
1001
+        if (empty($taille_test[0])) {
1002
+            return false;
1003
+        }
1004
+
1005
+        spip_unlink($fichier); // le fichier peut deja exister
1006
+        @rename($tmp, $fichier);
1007
+
1008
+        return true;
1009
+    }
1010
+
1011
+    return false;
1012 1012
 }
1013 1013
 
1014 1014
 
@@ -1036,30 +1036,30 @@  discard block
 block discarded – undo
1036 1036
  *     - false sinon.
1037 1037
  */
1038 1038
 function _image_gd_output($img, $valeurs, $qualite = _IMG_GD_QUALITE, $fonction = null) {
1039
-	if (is_null($fonction)) {
1040
-		$fonction = '_image_image' . $valeurs['format_dest'];
1041
-	}
1042
-	$ret = false;
1043
-	#un flag pour reperer les images gravees
1044
-	$lock = (
1045
-		!statut_effacer_images_temporaires('get') // si la fonction n'a pas ete activee, on grave tout
1046
-		or (@file_exists($valeurs['fichier_dest']) and !@file_exists($valeurs['fichier_dest'] . '.src'))
1047
-	);
1048
-	if (
1049
-		function_exists($fonction)
1050
-		&& ($ret = $fonction($img, $valeurs['fichier_dest'], $qualite)) # on a reussi a creer l'image
1051
-		&& isset($valeurs['reconstruction']) # et on sait comment la resonctruire le cas echeant
1052
-		&& !$lock
1053
-	) {
1054
-		if (@file_exists($valeurs['fichier_dest'])) {
1055
-			// dans tous les cas mettre a jour la taille de l'image finale
1056
-			[$valeurs['hauteur_dest'], $valeurs['largeur_dest']] = taille_image($valeurs['fichier_dest']);
1057
-			$valeurs['date'] = @filemtime($valeurs['fichier_dest']); // pour la retrouver apres disparition
1058
-			ecrire_fichier($valeurs['fichier_dest'] . '.src', serialize($valeurs), true);
1059
-		}
1060
-	}
1061
-
1062
-	return $ret;
1039
+    if (is_null($fonction)) {
1040
+        $fonction = '_image_image' . $valeurs['format_dest'];
1041
+    }
1042
+    $ret = false;
1043
+    #un flag pour reperer les images gravees
1044
+    $lock = (
1045
+        !statut_effacer_images_temporaires('get') // si la fonction n'a pas ete activee, on grave tout
1046
+        or (@file_exists($valeurs['fichier_dest']) and !@file_exists($valeurs['fichier_dest'] . '.src'))
1047
+    );
1048
+    if (
1049
+        function_exists($fonction)
1050
+        && ($ret = $fonction($img, $valeurs['fichier_dest'], $qualite)) # on a reussi a creer l'image
1051
+        && isset($valeurs['reconstruction']) # et on sait comment la resonctruire le cas echeant
1052
+        && !$lock
1053
+    ) {
1054
+        if (@file_exists($valeurs['fichier_dest'])) {
1055
+            // dans tous les cas mettre a jour la taille de l'image finale
1056
+            [$valeurs['hauteur_dest'], $valeurs['largeur_dest']] = taille_image($valeurs['fichier_dest']);
1057
+            $valeurs['date'] = @filemtime($valeurs['fichier_dest']); // pour la retrouver apres disparition
1058
+            ecrire_fichier($valeurs['fichier_dest'] . '.src', serialize($valeurs), true);
1059
+        }
1060
+    }
1061
+
1062
+    return $ret;
1063 1063
 }
1064 1064
 
1065 1065
 /**
@@ -1072,27 +1072,27 @@  discard block
 block discarded – undo
1072 1072
  *     Chemin vers le fichier manquant
1073 1073
  **/
1074 1074
 function reconstruire_image_intermediaire($fichier_manquant) {
1075
-	$reconstruire = [];
1076
-	$fichier = $fichier_manquant;
1077
-	while (
1078
-		strpos($fichier, '://') === false
1079
-		and !@file_exists($fichier)
1080
-		and lire_fichier($src = "$fichier.src", $source)
1081
-		and $valeurs = unserialize($source)
1082
-		and ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...)
1083
-	) {
1084
-		spip_unlink($src); // si jamais on a un timeout pendant la reconstruction, elle se fera naturellement au hit suivant
1085
-		$reconstruire[] = $valeurs['reconstruction'];
1086
-	}
1087
-	while (count($reconstruire)) {
1088
-		$r = array_pop($reconstruire);
1089
-		$fonction = $r[0];
1090
-		$args = $r[1];
1091
-		$fonction(...$args);
1092
-	}
1093
-	// cette image intermediaire est commune a plusieurs series de filtre, il faut la conserver
1094
-	// mais l'on peut nettoyer les miettes de sa creation
1095
-	ramasse_miettes($fichier_manquant);
1075
+    $reconstruire = [];
1076
+    $fichier = $fichier_manquant;
1077
+    while (
1078
+        strpos($fichier, '://') === false
1079
+        and !@file_exists($fichier)
1080
+        and lire_fichier($src = "$fichier.src", $source)
1081
+        and $valeurs = unserialize($source)
1082
+        and ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...)
1083
+    ) {
1084
+        spip_unlink($src); // si jamais on a un timeout pendant la reconstruction, elle se fera naturellement au hit suivant
1085
+        $reconstruire[] = $valeurs['reconstruction'];
1086
+    }
1087
+    while (count($reconstruire)) {
1088
+        $r = array_pop($reconstruire);
1089
+        $fonction = $r[0];
1090
+        $args = $r[1];
1091
+        $fonction(...$args);
1092
+    }
1093
+    // cette image intermediaire est commune a plusieurs series de filtre, il faut la conserver
1094
+    // mais l'on peut nettoyer les miettes de sa creation
1095
+    ramasse_miettes($fichier_manquant);
1096 1096
 }
1097 1097
 
1098 1098
 /**
@@ -1112,28 +1112,28 @@  discard block
 block discarded – undo
1112 1112
  *     Chemin du fichier d'image calculé
1113 1113
  **/
1114 1114
 function ramasse_miettes($fichier) {
1115
-	if (
1116
-		strpos($fichier, '://') !== false
1117
-		or !lire_fichier($src = "$fichier.src", $source)
1118
-		or !$valeurs = unserialize($source)
1119
-	) {
1120
-		return;
1121
-	}
1122
-	spip_unlink($src); # on supprime la reference a sa source pour marquer cette image comme non intermediaire
1123
-	while (
1124
-		($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...)
1125
-		and (substr($fichier, 0, strlen(_DIR_VAR)) == _DIR_VAR) # et est dans local
1126
-		and (lire_fichier(
1127
-			$src = "$fichier.src",
1128
-			$source
1129
-		)) # le fichier a une source connue (c'est donc une image calculee intermediaire)
1130
-		and ($valeurs = unserialize($source))  # et valide
1131
-	) {
1132
-		# on efface le fichier
1133
-		spip_unlink($fichier);
1134
-		# mais laisse le .src qui permet de savoir comment reconstruire l'image si besoin
1135
-		#spip_unlink($src);
1136
-	}
1115
+    if (
1116
+        strpos($fichier, '://') !== false
1117
+        or !lire_fichier($src = "$fichier.src", $source)
1118
+        or !$valeurs = unserialize($source)
1119
+    ) {
1120
+        return;
1121
+    }
1122
+    spip_unlink($src); # on supprime la reference a sa source pour marquer cette image comme non intermediaire
1123
+    while (
1124
+        ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...)
1125
+        and (substr($fichier, 0, strlen(_DIR_VAR)) == _DIR_VAR) # et est dans local
1126
+        and (lire_fichier(
1127
+            $src = "$fichier.src",
1128
+            $source
1129
+        )) # le fichier a une source connue (c'est donc une image calculee intermediaire)
1130
+        and ($valeurs = unserialize($source))  # et valide
1131
+    ) {
1132
+        # on efface le fichier
1133
+        spip_unlink($fichier);
1134
+        # mais laisse le .src qui permet de savoir comment reconstruire l'image si besoin
1135
+        #spip_unlink($src);
1136
+    }
1137 1137
 }
1138 1138
 
1139 1139
 
@@ -1158,31 +1158,31 @@  discard block
 block discarded – undo
1158 1158
  *     Code HTML de l'image
1159 1159
  **/
1160 1160
 function image_graver($img) {
1161
-	// appeler le filtre post_image_filtrer qui permet de faire
1162
-	// des traitements auto a la fin d'une serie de filtres
1163
-	$img = pipeline('post_image_filtrer', $img);
1164
-
1165
-	$fichier_ori = $fichier = extraire_attribut($img, 'src');
1166
-	if (($p = strpos($fichier, '?')) !== false) {
1167
-		$fichier = substr($fichier, 0, $p);
1168
-	}
1169
-	if (strlen($fichier) < 1) {
1170
-		$fichier = $img;
1171
-	}
1172
-	# si jamais le fichier final n'a pas ete calcule car suppose temporaire
1173
-	# et qu'il ne s'agit pas d'une URL
1174
-	if (strpos($fichier, '://') === false and !@file_exists($fichier)) {
1175
-		reconstruire_image_intermediaire($fichier);
1176
-	}
1177
-	ramasse_miettes($fichier);
1178
-
1179
-	// ajouter le timestamp si besoin
1180
-	if (strpos($fichier_ori, '?') === false) {
1181
-		// on utilise str_replace pour attraper le onmouseover des logo si besoin
1182
-		$img = str_replace($fichier_ori, timestamp($fichier_ori), $img);
1183
-	}
1184
-
1185
-	return $img;
1161
+    // appeler le filtre post_image_filtrer qui permet de faire
1162
+    // des traitements auto a la fin d'une serie de filtres
1163
+    $img = pipeline('post_image_filtrer', $img);
1164
+
1165
+    $fichier_ori = $fichier = extraire_attribut($img, 'src');
1166
+    if (($p = strpos($fichier, '?')) !== false) {
1167
+        $fichier = substr($fichier, 0, $p);
1168
+    }
1169
+    if (strlen($fichier) < 1) {
1170
+        $fichier = $img;
1171
+    }
1172
+    # si jamais le fichier final n'a pas ete calcule car suppose temporaire
1173
+    # et qu'il ne s'agit pas d'une URL
1174
+    if (strpos($fichier, '://') === false and !@file_exists($fichier)) {
1175
+        reconstruire_image_intermediaire($fichier);
1176
+    }
1177
+    ramasse_miettes($fichier);
1178
+
1179
+    // ajouter le timestamp si besoin
1180
+    if (strpos($fichier_ori, '?') === false) {
1181
+        // on utilise str_replace pour attraper le onmouseover des logo si besoin
1182
+        $img = str_replace($fichier_ori, timestamp($fichier_ori), $img);
1183
+    }
1184
+
1185
+    return $img;
1186 1186
 }
1187 1187
 
1188 1188
 /**
@@ -1209,34 +1209,34 @@  discard block
 block discarded – undo
1209 1209
  *     Code html modifié de la balise.
1210 1210
  **/
1211 1211
 function _image_tag_changer_taille($tag, $width, $height, $style = false) {
1212
-	if ($style === false) {
1213
-		$style = extraire_attribut($tag, 'style');
1214
-	}
1215
-
1216
-	// enlever le width et height du style
1217
-	if ($style) {
1218
-		$style = preg_replace(',(^|;)\s*(width|height)\s*:\s*[^;]+,ims', '', $style);
1219
-	}
1220
-	if ($style and $style[0] === ';') {
1221
-		$style = substr($style, 1);
1222
-	}
1223
-
1224
-	// mettre des attributs de width et height sur les images,
1225
-	// ca accelere le rendu du navigateur
1226
-	// ca permet aux navigateurs de reserver la bonne taille
1227
-	// quand on a desactive l'affichage des images.
1228
-	$tag = inserer_attribut($tag, 'width', round($width));
1229
-	$tag = inserer_attribut($tag, 'height', round($height));
1230
-
1231
-	// attributs deprecies. Transformer en CSS
1232
-	if ($espace = extraire_attribut($tag, 'hspace')) {
1233
-		$style = "margin:{$espace}px;" . $style;
1234
-		$tag = inserer_attribut($tag, 'hspace', '');
1235
-	}
1236
-
1237
-	$tag = inserer_attribut($tag, 'style', (string) $style, true, $style ? false : true);
1238
-
1239
-	return $tag;
1212
+    if ($style === false) {
1213
+        $style = extraire_attribut($tag, 'style');
1214
+    }
1215
+
1216
+    // enlever le width et height du style
1217
+    if ($style) {
1218
+        $style = preg_replace(',(^|;)\s*(width|height)\s*:\s*[^;]+,ims', '', $style);
1219
+    }
1220
+    if ($style and $style[0] === ';') {
1221
+        $style = substr($style, 1);
1222
+    }
1223
+
1224
+    // mettre des attributs de width et height sur les images,
1225
+    // ca accelere le rendu du navigateur
1226
+    // ca permet aux navigateurs de reserver la bonne taille
1227
+    // quand on a desactive l'affichage des images.
1228
+    $tag = inserer_attribut($tag, 'width', round($width));
1229
+    $tag = inserer_attribut($tag, 'height', round($height));
1230
+
1231
+    // attributs deprecies. Transformer en CSS
1232
+    if ($espace = extraire_attribut($tag, 'hspace')) {
1233
+        $style = "margin:{$espace}px;" . $style;
1234
+        $tag = inserer_attribut($tag, 'hspace', '');
1235
+    }
1236
+
1237
+    $tag = inserer_attribut($tag, 'style', (string) $style, true, $style ? false : true);
1238
+
1239
+    return $tag;
1240 1240
 }
1241 1241
 
1242 1242
 
@@ -1262,72 +1262,72 @@  discard block
 block discarded – undo
1262 1262
  *     Retourne le code HTML de l'image
1263 1263
  **/
1264 1264
 function _image_ecrire_tag($valeurs, $surcharge = []) {
1265
-	$valeurs = pipeline('image_ecrire_tag_preparer', $valeurs);
1266
-
1267
-	// fermer les tags img pas bien fermes;
1268
-	$tag = str_replace('>', '/>', str_replace('/>', '>', $valeurs['tag']));
1269
-
1270
-	// le style
1271
-	$style = $valeurs['style'];
1272
-	if (isset($surcharge['style'])) {
1273
-		$style = $surcharge['style'];
1274
-		unset($surcharge['style']);
1275
-	}
1276
-
1277
-	// traiter specifiquement la largeur et la hauteur
1278
-	$width = $valeurs['largeur'];
1279
-	if (isset($surcharge['width'])) {
1280
-		$width = $surcharge['width'];
1281
-		unset($surcharge['width']);
1282
-	}
1283
-	$height = $valeurs['hauteur'];
1284
-	if (isset($surcharge['height'])) {
1285
-		$height = $surcharge['height'];
1286
-		unset($surcharge['height']);
1287
-	}
1288
-
1289
-	$tag = _image_tag_changer_taille($tag, $width, $height, $style);
1290
-	// traiter specifiquement le src qui peut etre repris dans un onmouseout
1291
-	// on remplace toute les ref a src dans le tag
1292
-	$src = extraire_attribut($tag, 'src');
1293
-	if (isset($surcharge['src'])) {
1294
-		$tag = str_replace($src, $surcharge['src'], $tag);
1295
-		// si il y a des & dans src, alors ils peuvent provenir d'un &amp
1296
-		// pas garanti comme methode, mais mieux que rien
1297
-		if (strpos($src, '&') !== false) {
1298
-			$tag = str_replace(str_replace('&', '&amp;', $src), $surcharge['src'], $tag);
1299
-		}
1300
-		$src = $surcharge['src'];
1301
-		unset($surcharge['src']);
1302
-	}
1303
-
1304
-	$class = $valeurs['class'];
1305
-	if (isset($surcharge['class'])) {
1306
-		$class = $surcharge['class'];
1307
-		unset($surcharge['class']);
1308
-	}
1309
-	if (is_scalar($class) && strlen($class)) {
1310
-		$tag = inserer_attribut($tag, 'class', $class);
1311
-	}
1312
-
1313
-	if (count($surcharge)) {
1314
-		foreach ($surcharge as $attribut => $valeur) {
1315
-			$tag = inserer_attribut($tag, $attribut, $valeur);
1316
-		}
1317
-	}
1318
-
1319
-	$tag = pipeline(
1320
-		'image_ecrire_tag_finir',
1321
-		[
1322
-			'args' => [
1323
-				'valeurs' => $valeurs,
1324
-				'surcharge' => $surcharge,
1325
-			],
1326
-			'data' => $tag
1327
-		]
1328
-	);
1329
-
1330
-	return $tag;
1265
+    $valeurs = pipeline('image_ecrire_tag_preparer', $valeurs);
1266
+
1267
+    // fermer les tags img pas bien fermes;
1268
+    $tag = str_replace('>', '/>', str_replace('/>', '>', $valeurs['tag']));
1269
+
1270
+    // le style
1271
+    $style = $valeurs['style'];
1272
+    if (isset($surcharge['style'])) {
1273
+        $style = $surcharge['style'];
1274
+        unset($surcharge['style']);
1275
+    }
1276
+
1277
+    // traiter specifiquement la largeur et la hauteur
1278
+    $width = $valeurs['largeur'];
1279
+    if (isset($surcharge['width'])) {
1280
+        $width = $surcharge['width'];
1281
+        unset($surcharge['width']);
1282
+    }
1283
+    $height = $valeurs['hauteur'];
1284
+    if (isset($surcharge['height'])) {
1285
+        $height = $surcharge['height'];
1286
+        unset($surcharge['height']);
1287
+    }
1288
+
1289
+    $tag = _image_tag_changer_taille($tag, $width, $height, $style);
1290
+    // traiter specifiquement le src qui peut etre repris dans un onmouseout
1291
+    // on remplace toute les ref a src dans le tag
1292
+    $src = extraire_attribut($tag, 'src');
1293
+    if (isset($surcharge['src'])) {
1294
+        $tag = str_replace($src, $surcharge['src'], $tag);
1295
+        // si il y a des & dans src, alors ils peuvent provenir d'un &amp
1296
+        // pas garanti comme methode, mais mieux que rien
1297
+        if (strpos($src, '&') !== false) {
1298
+            $tag = str_replace(str_replace('&', '&amp;', $src), $surcharge['src'], $tag);
1299
+        }
1300
+        $src = $surcharge['src'];
1301
+        unset($surcharge['src']);
1302
+    }
1303
+
1304
+    $class = $valeurs['class'];
1305
+    if (isset($surcharge['class'])) {
1306
+        $class = $surcharge['class'];
1307
+        unset($surcharge['class']);
1308
+    }
1309
+    if (is_scalar($class) && strlen($class)) {
1310
+        $tag = inserer_attribut($tag, 'class', $class);
1311
+    }
1312
+
1313
+    if (count($surcharge)) {
1314
+        foreach ($surcharge as $attribut => $valeur) {
1315
+            $tag = inserer_attribut($tag, $attribut, $valeur);
1316
+        }
1317
+    }
1318
+
1319
+    $tag = pipeline(
1320
+        'image_ecrire_tag_finir',
1321
+        [
1322
+            'args' => [
1323
+                'valeurs' => $valeurs,
1324
+                'surcharge' => $surcharge,
1325
+            ],
1326
+            'data' => $tag
1327
+        ]
1328
+    );
1329
+
1330
+    return $tag;
1331 1331
 }
1332 1332
 
1333 1333
 /**
@@ -1350,268 +1350,268 @@  discard block
 block discarded – undo
1350 1350
  *     Description de l'image, sinon null.
1351 1351
  **/
1352 1352
 function _image_creer_vignette($valeurs, $maxWidth, $maxHeight, $process = 'AUTO', $force = false) {
1353
-	$srcHeight = null;
1354
-	$retour = [];
1355
-	// ordre de preference des formats graphiques pour creer les vignettes
1356
-	// le premier format disponible, selon la methode demandee, est utilise
1357
-	$image = $valeurs['fichier'];
1358
-	$format = $valeurs['format_source'];
1359
-	$destdir = dirname($valeurs['fichier_dest']);
1360
-	$destfile = basename($valeurs['fichier_dest'], '.' . $valeurs['format_dest']);
1361
-
1362
-	$format_sortie = $valeurs['format_dest'];
1363
-
1364
-	if (($process == 'AUTO') and isset($GLOBALS['meta']['image_process'])) {
1365
-		$process = $GLOBALS['meta']['image_process'];
1366
-	}
1367
-
1368
-	// si le doc n'est pas une image dans un format accetpable, refuser
1369
-	if (!$force and !in_array($format, formats_image_acceptables(in_array($process, ['gd1', 'gd2'])))) {
1370
-		return;
1371
-	}
1372
-	$destination = "$destdir/$destfile";
1373
-
1374
-	// calculer la taille
1375
-	if (($srcWidth = $valeurs['largeur']) && ($srcHeight = $valeurs['hauteur'])) {
1376
-		if (!($destWidth = $valeurs['largeur_dest']) || !($destHeight = $valeurs['hauteur_dest'])) {
1377
-			[$destWidth, $destHeight] = _image_ratio($srcWidth, $srcHeight, $maxWidth, $maxHeight);
1378
-		}
1379
-	} elseif ($process == 'convert' or $process == 'imagick') {
1380
-		$destWidth = $maxWidth;
1381
-		$destHeight = $maxHeight;
1382
-	} else {
1383
-		spip_log("echec $process sur $image");
1384
-
1385
-		return;
1386
-	}
1387
-
1388
-	$vignette = '';
1389
-
1390
-	// Si l'image est de la taille demandee (ou plus petite), simplement la retourner
1391
-	if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1392
-		$vignette = $destination . '.' . $format;
1393
-		@copy($image, $vignette);
1394
-	}
1395
-
1396
-	elseif ($valeurs['format_source'] === 'svg') {
1397
-		include_spip('inc/svg');
1398
-		if ($svg = svg_redimensionner($valeurs['fichier'], $destWidth, $destHeight)) {
1399
-			$format_sortie = 'svg';
1400
-			$vignette = $destination . '.' . $format_sortie;
1401
-			$valeurs['fichier_dest'] = $vignette;
1402
-			_image_gd_output($svg, $valeurs);
1403
-		}
1404
-	}
1405
-
1406
-	// imagemagick en ligne de commande
1407
-	elseif ($process == 'convert') {
1408
-		if (!defined('_CONVERT_COMMAND')) {
1409
-			define('_CONVERT_COMMAND', 'convert');
1410
-		} // Securite : mes_options.php peut preciser le chemin absolu
1411
-		if (!defined('_RESIZE_COMMAND')) {
1412
-			define('_RESIZE_COMMAND', _CONVERT_COMMAND . ' -quality ' . _IMG_CONVERT_QUALITE . ' -orient Undefined -resize %xx%y! %src %dest');
1413
-		}
1414
-		$vignette = $destination . '.' . $format_sortie;
1415
-		$commande = str_replace(
1416
-			['%x', '%y', '%src', '%dest'],
1417
-			[
1418
-				$destWidth,
1419
-				$destHeight,
1420
-				escapeshellcmd($image),
1421
-				escapeshellcmd($vignette)
1422
-			],
1423
-			_RESIZE_COMMAND
1424
-		);
1425
-		spip_log($commande);
1426
-		exec($commande);
1427
-		if (!@file_exists($vignette)) {
1428
-			spip_log("echec convert sur $vignette");
1429
-
1430
-			return;  // echec commande
1431
-		}
1432
-	}
1433
-
1434
-	// php5 imagemagick
1435
-	elseif ($process == 'imagick') {
1436
-		if (!class_exists(\Imagick::class)) {
1437
-			spip_log('Classe Imagick absente !', _LOG_ERREUR);
1438
-
1439
-			return;
1440
-		}
1441
-
1442
-		// chemin compatible Windows
1443
-		$output = realpath(dirname($destination));
1444
-		if (!$output) {
1445
-			return;
1446
-		}
1447
-		$vignette = $output . DIRECTORY_SEPARATOR . basename($destination) . '.' . $format_sortie;
1448
-
1449
-		$imagick = new Imagick();
1450
-		$imagick->readImage(realpath($image));
1451
-		$imagick->resizeImage(
1452
-			$destWidth,
1453
-			$destHeight,
1454
-			Imagick::FILTER_LANCZOS,
1455
-			1
1456
-		);//, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100);
1457
-		$imagick->writeImage($vignette);
1458
-
1459
-		if (!@file_exists($vignette)) {
1460
-			spip_log("echec imagick sur $vignette");
1461
-
1462
-			return;
1463
-		}
1464
-		// remettre le chemin relatif car c'est ce qu'attend SPIP pour la suite (en particlier action/tester)
1465
-		$vignette = $destination . '.' . $format_sortie;
1466
-	}
1467
-
1468
-	// netpbm
1469
-	elseif ($process == 'netpbm') {
1470
-		if (!defined('_PNMSCALE_COMMAND')) {
1471
-			define('_PNMSCALE_COMMAND', 'pnmscale');
1472
-		} // Securite : mes_options.php peut preciser le chemin absolu
1473
-		if (_PNMSCALE_COMMAND == '') {
1474
-			return;
1475
-		}
1476
-		$vignette = $destination . '.' . $format_sortie;
1477
-		$pnmtojpeg_command = str_replace('pnmscale', 'pnmtojpeg', _PNMSCALE_COMMAND);
1478
-		if ($format == 'jpg') {
1479
-			$jpegtopnm_command = str_replace('pnmscale', 'jpegtopnm', _PNMSCALE_COMMAND);
1480
-			exec("$jpegtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1481
-			if (!($s = @filesize($vignette))) {
1482
-				spip_unlink($vignette);
1483
-			}
1484
-			if (!@file_exists($vignette)) {
1485
-				spip_log("echec netpbm-jpg sur $vignette");
1486
-
1487
-				return;
1488
-			}
1489
-		} else {
1490
-			if ($format == 'gif') {
1491
-				$giftopnm_command = str_replace('pnmscale', 'giftopnm', _PNMSCALE_COMMAND);
1492
-				exec("$giftopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1493
-				if (!($s = @filesize($vignette))) {
1494
-					spip_unlink($vignette);
1495
-				}
1496
-				if (!@file_exists($vignette)) {
1497
-					spip_log("echec netpbm-gif sur $vignette");
1498
-
1499
-					return;
1500
-				}
1501
-			} else {
1502
-				if ($format == 'png') {
1503
-					$pngtopnm_command = str_replace('pnmscale', 'pngtopnm', _PNMSCALE_COMMAND);
1504
-					exec("$pngtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1505
-					if (!($s = @filesize($vignette))) {
1506
-						spip_unlink($vignette);
1507
-					}
1508
-					if (!@file_exists($vignette)) {
1509
-						spip_log("echec netpbm-png sur $vignette");
1510
-
1511
-						return;
1512
-					}
1513
-				}
1514
-			}
1515
-		}
1516
-	}
1517
-
1518
-	// gd ou gd2
1519
-	elseif ($process == 'gd1' or $process == 'gd2') {
1520
-		if (!function_exists('gd_info')) {
1521
-			spip_log('Librairie GD absente !', _LOG_ERREUR);
1522
-
1523
-			return;
1524
-		}
1525
-		if (_IMG_GD_MAX_PIXELS && $srcWidth * $srcHeight > _IMG_GD_MAX_PIXELS) {
1526
-			spip_log('vignette gd1/gd2 impossible : ' . $srcWidth * $srcHeight . 'pixels');
1527
-
1528
-			return;
1529
-		}
1530
-		$destFormat = $format_sortie;
1531
-		if (!$destFormat) {
1532
-			spip_log("pas de format pour $image");
1533
-
1534
-			return;
1535
-		}
1536
-
1537
-		$fonction_imagecreatefrom = $valeurs['fonction_imagecreatefrom'];
1538
-		if (!function_exists($fonction_imagecreatefrom)) {
1539
-			return;
1540
-		}
1541
-		$srcImage = @$fonction_imagecreatefrom($image);
1542
-		if (!$srcImage) {
1543
-			spip_log('echec gd1/gd2');
1544
-
1545
-			return;
1546
-		}
1547
-
1548
-		// Initialisation de l'image destination
1549
-		$destImage = null;
1550
-		if ($process == 'gd2' and $destFormat != 'gif') {
1551
-			$destImage = ImageCreateTrueColor($destWidth, $destHeight);
1552
-		}
1553
-		if (!$destImage) {
1554
-			$destImage = ImageCreate($destWidth, $destHeight);
1555
-		}
1556
-
1557
-		// Recopie de l'image d'origine avec adaptation de la taille
1558
-		$ok = false;
1559
-		if (($process == 'gd2') and function_exists('ImageCopyResampled')) {
1560
-			if ($format == 'gif') {
1561
-				// Si un GIF est transparent,
1562
-				// fabriquer un PNG transparent
1563
-				$transp = imagecolortransparent($srcImage);
1564
-				if ($transp > 0) {
1565
-					$destFormat = 'png';
1566
-				}
1567
-			}
1568
-			if (in_array($destFormat, _image_extensions_conservent_transparence())) {
1569
-				// Conserver la transparence
1570
-				if (function_exists('imageAntiAlias')) {
1571
-					imageAntiAlias($destImage, true);
1572
-				}
1573
-				@imagealphablending($destImage, false);
1574
-				@imagesavealpha($destImage, true);
1575
-			}
1576
-			$ok = @ImageCopyResampled($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
1577
-		}
1578
-		if (!$ok) {
1579
-			$ok = ImageCopyResized($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
1580
-		}
1581
-
1582
-		// Sauvegarde de l'image destination
1583
-		$valeurs['fichier_dest'] = $vignette = "$destination.$destFormat";
1584
-		$valeurs['format_dest'] = $format = $destFormat;
1585
-		_image_gd_output($destImage, $valeurs);
1586
-
1587
-		if ($srcImage) {
1588
-			ImageDestroy($srcImage);
1589
-		}
1590
-		ImageDestroy($destImage);
1591
-	}
1592
-
1593
-	if (!$vignette or !$size = @spip_getimagesize($vignette)) {
1594
-		$size = [$destWidth, $destHeight];
1595
-	}
1596
-
1597
-	// Gaffe: en safe mode, pas d'acces a la vignette,
1598
-	// donc risque de balancer "width='0'", ce qui masque l'image sous MSIE
1599
-	if ($size[0] < 1) {
1600
-		$size[0] = $destWidth;
1601
-	}
1602
-	if ($size[1] < 1) {
1603
-		$size[1] = $destHeight;
1604
-	}
1605
-
1606
-	$retour['width'] = $largeur = $size[0];
1607
-	$retour['height'] = $hauteur = $size[1];
1608
-
1609
-	$retour['fichier'] = $vignette;
1610
-	$retour['format'] = $format;
1611
-	$retour['date'] = @filemtime($vignette);
1612
-
1613
-	// renvoyer l'image
1614
-	return $retour;
1353
+    $srcHeight = null;
1354
+    $retour = [];
1355
+    // ordre de preference des formats graphiques pour creer les vignettes
1356
+    // le premier format disponible, selon la methode demandee, est utilise
1357
+    $image = $valeurs['fichier'];
1358
+    $format = $valeurs['format_source'];
1359
+    $destdir = dirname($valeurs['fichier_dest']);
1360
+    $destfile = basename($valeurs['fichier_dest'], '.' . $valeurs['format_dest']);
1361
+
1362
+    $format_sortie = $valeurs['format_dest'];
1363
+
1364
+    if (($process == 'AUTO') and isset($GLOBALS['meta']['image_process'])) {
1365
+        $process = $GLOBALS['meta']['image_process'];
1366
+    }
1367
+
1368
+    // si le doc n'est pas une image dans un format accetpable, refuser
1369
+    if (!$force and !in_array($format, formats_image_acceptables(in_array($process, ['gd1', 'gd2'])))) {
1370
+        return;
1371
+    }
1372
+    $destination = "$destdir/$destfile";
1373
+
1374
+    // calculer la taille
1375
+    if (($srcWidth = $valeurs['largeur']) && ($srcHeight = $valeurs['hauteur'])) {
1376
+        if (!($destWidth = $valeurs['largeur_dest']) || !($destHeight = $valeurs['hauteur_dest'])) {
1377
+            [$destWidth, $destHeight] = _image_ratio($srcWidth, $srcHeight, $maxWidth, $maxHeight);
1378
+        }
1379
+    } elseif ($process == 'convert' or $process == 'imagick') {
1380
+        $destWidth = $maxWidth;
1381
+        $destHeight = $maxHeight;
1382
+    } else {
1383
+        spip_log("echec $process sur $image");
1384
+
1385
+        return;
1386
+    }
1387
+
1388
+    $vignette = '';
1389
+
1390
+    // Si l'image est de la taille demandee (ou plus petite), simplement la retourner
1391
+    if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1392
+        $vignette = $destination . '.' . $format;
1393
+        @copy($image, $vignette);
1394
+    }
1395
+
1396
+    elseif ($valeurs['format_source'] === 'svg') {
1397
+        include_spip('inc/svg');
1398
+        if ($svg = svg_redimensionner($valeurs['fichier'], $destWidth, $destHeight)) {
1399
+            $format_sortie = 'svg';
1400
+            $vignette = $destination . '.' . $format_sortie;
1401
+            $valeurs['fichier_dest'] = $vignette;
1402
+            _image_gd_output($svg, $valeurs);
1403
+        }
1404
+    }
1405
+
1406
+    // imagemagick en ligne de commande
1407
+    elseif ($process == 'convert') {
1408
+        if (!defined('_CONVERT_COMMAND')) {
1409
+            define('_CONVERT_COMMAND', 'convert');
1410
+        } // Securite : mes_options.php peut preciser le chemin absolu
1411
+        if (!defined('_RESIZE_COMMAND')) {
1412
+            define('_RESIZE_COMMAND', _CONVERT_COMMAND . ' -quality ' . _IMG_CONVERT_QUALITE . ' -orient Undefined -resize %xx%y! %src %dest');
1413
+        }
1414
+        $vignette = $destination . '.' . $format_sortie;
1415
+        $commande = str_replace(
1416
+            ['%x', '%y', '%src', '%dest'],
1417
+            [
1418
+                $destWidth,
1419
+                $destHeight,
1420
+                escapeshellcmd($image),
1421
+                escapeshellcmd($vignette)
1422
+            ],
1423
+            _RESIZE_COMMAND
1424
+        );
1425
+        spip_log($commande);
1426
+        exec($commande);
1427
+        if (!@file_exists($vignette)) {
1428
+            spip_log("echec convert sur $vignette");
1429
+
1430
+            return;  // echec commande
1431
+        }
1432
+    }
1433
+
1434
+    // php5 imagemagick
1435
+    elseif ($process == 'imagick') {
1436
+        if (!class_exists(\Imagick::class)) {
1437
+            spip_log('Classe Imagick absente !', _LOG_ERREUR);
1438
+
1439
+            return;
1440
+        }
1441
+
1442
+        // chemin compatible Windows
1443
+        $output = realpath(dirname($destination));
1444
+        if (!$output) {
1445
+            return;
1446
+        }
1447
+        $vignette = $output . DIRECTORY_SEPARATOR . basename($destination) . '.' . $format_sortie;
1448
+
1449
+        $imagick = new Imagick();
1450
+        $imagick->readImage(realpath($image));
1451
+        $imagick->resizeImage(
1452
+            $destWidth,
1453
+            $destHeight,
1454
+            Imagick::FILTER_LANCZOS,
1455
+            1
1456
+        );//, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100);
1457
+        $imagick->writeImage($vignette);
1458
+
1459
+        if (!@file_exists($vignette)) {
1460
+            spip_log("echec imagick sur $vignette");
1461
+
1462
+            return;
1463
+        }
1464
+        // remettre le chemin relatif car c'est ce qu'attend SPIP pour la suite (en particlier action/tester)
1465
+        $vignette = $destination . '.' . $format_sortie;
1466
+    }
1467
+
1468
+    // netpbm
1469
+    elseif ($process == 'netpbm') {
1470
+        if (!defined('_PNMSCALE_COMMAND')) {
1471
+            define('_PNMSCALE_COMMAND', 'pnmscale');
1472
+        } // Securite : mes_options.php peut preciser le chemin absolu
1473
+        if (_PNMSCALE_COMMAND == '') {
1474
+            return;
1475
+        }
1476
+        $vignette = $destination . '.' . $format_sortie;
1477
+        $pnmtojpeg_command = str_replace('pnmscale', 'pnmtojpeg', _PNMSCALE_COMMAND);
1478
+        if ($format == 'jpg') {
1479
+            $jpegtopnm_command = str_replace('pnmscale', 'jpegtopnm', _PNMSCALE_COMMAND);
1480
+            exec("$jpegtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1481
+            if (!($s = @filesize($vignette))) {
1482
+                spip_unlink($vignette);
1483
+            }
1484
+            if (!@file_exists($vignette)) {
1485
+                spip_log("echec netpbm-jpg sur $vignette");
1486
+
1487
+                return;
1488
+            }
1489
+        } else {
1490
+            if ($format == 'gif') {
1491
+                $giftopnm_command = str_replace('pnmscale', 'giftopnm', _PNMSCALE_COMMAND);
1492
+                exec("$giftopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1493
+                if (!($s = @filesize($vignette))) {
1494
+                    spip_unlink($vignette);
1495
+                }
1496
+                if (!@file_exists($vignette)) {
1497
+                    spip_log("echec netpbm-gif sur $vignette");
1498
+
1499
+                    return;
1500
+                }
1501
+            } else {
1502
+                if ($format == 'png') {
1503
+                    $pngtopnm_command = str_replace('pnmscale', 'pngtopnm', _PNMSCALE_COMMAND);
1504
+                    exec("$pngtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1505
+                    if (!($s = @filesize($vignette))) {
1506
+                        spip_unlink($vignette);
1507
+                    }
1508
+                    if (!@file_exists($vignette)) {
1509
+                        spip_log("echec netpbm-png sur $vignette");
1510
+
1511
+                        return;
1512
+                    }
1513
+                }
1514
+            }
1515
+        }
1516
+    }
1517
+
1518
+    // gd ou gd2
1519
+    elseif ($process == 'gd1' or $process == 'gd2') {
1520
+        if (!function_exists('gd_info')) {
1521
+            spip_log('Librairie GD absente !', _LOG_ERREUR);
1522
+
1523
+            return;
1524
+        }
1525
+        if (_IMG_GD_MAX_PIXELS && $srcWidth * $srcHeight > _IMG_GD_MAX_PIXELS) {
1526
+            spip_log('vignette gd1/gd2 impossible : ' . $srcWidth * $srcHeight . 'pixels');
1527
+
1528
+            return;
1529
+        }
1530
+        $destFormat = $format_sortie;
1531
+        if (!$destFormat) {
1532
+            spip_log("pas de format pour $image");
1533
+
1534
+            return;
1535
+        }
1536
+
1537
+        $fonction_imagecreatefrom = $valeurs['fonction_imagecreatefrom'];
1538
+        if (!function_exists($fonction_imagecreatefrom)) {
1539
+            return;
1540
+        }
1541
+        $srcImage = @$fonction_imagecreatefrom($image);
1542
+        if (!$srcImage) {
1543
+            spip_log('echec gd1/gd2');
1544
+
1545
+            return;
1546
+        }
1547
+
1548
+        // Initialisation de l'image destination
1549
+        $destImage = null;
1550
+        if ($process == 'gd2' and $destFormat != 'gif') {
1551
+            $destImage = ImageCreateTrueColor($destWidth, $destHeight);
1552
+        }
1553
+        if (!$destImage) {
1554
+            $destImage = ImageCreate($destWidth, $destHeight);
1555
+        }
1556
+
1557
+        // Recopie de l'image d'origine avec adaptation de la taille
1558
+        $ok = false;
1559
+        if (($process == 'gd2') and function_exists('ImageCopyResampled')) {
1560
+            if ($format == 'gif') {
1561
+                // Si un GIF est transparent,
1562
+                // fabriquer un PNG transparent
1563
+                $transp = imagecolortransparent($srcImage);
1564
+                if ($transp > 0) {
1565
+                    $destFormat = 'png';
1566
+                }
1567
+            }
1568
+            if (in_array($destFormat, _image_extensions_conservent_transparence())) {
1569
+                // Conserver la transparence
1570
+                if (function_exists('imageAntiAlias')) {
1571
+                    imageAntiAlias($destImage, true);
1572
+                }
1573
+                @imagealphablending($destImage, false);
1574
+                @imagesavealpha($destImage, true);
1575
+            }
1576
+            $ok = @ImageCopyResampled($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
1577
+        }
1578
+        if (!$ok) {
1579
+            $ok = ImageCopyResized($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
1580
+        }
1581
+
1582
+        // Sauvegarde de l'image destination
1583
+        $valeurs['fichier_dest'] = $vignette = "$destination.$destFormat";
1584
+        $valeurs['format_dest'] = $format = $destFormat;
1585
+        _image_gd_output($destImage, $valeurs);
1586
+
1587
+        if ($srcImage) {
1588
+            ImageDestroy($srcImage);
1589
+        }
1590
+        ImageDestroy($destImage);
1591
+    }
1592
+
1593
+    if (!$vignette or !$size = @spip_getimagesize($vignette)) {
1594
+        $size = [$destWidth, $destHeight];
1595
+    }
1596
+
1597
+    // Gaffe: en safe mode, pas d'acces a la vignette,
1598
+    // donc risque de balancer "width='0'", ce qui masque l'image sous MSIE
1599
+    if ($size[0] < 1) {
1600
+        $size[0] = $destWidth;
1601
+    }
1602
+    if ($size[1] < 1) {
1603
+        $size[1] = $destHeight;
1604
+    }
1605
+
1606
+    $retour['width'] = $largeur = $size[0];
1607
+    $retour['height'] = $hauteur = $size[1];
1608
+
1609
+    $retour['fichier'] = $vignette;
1610
+    $retour['format'] = $format;
1611
+    $retour['date'] = @filemtime($vignette);
1612
+
1613
+    // renvoyer l'image
1614
+    return $retour;
1615 1615
 }
1616 1616
 
1617 1617
 /**
@@ -1631,25 +1631,25 @@  discard block
 block discarded – undo
1631 1631
  * @return array Liste [ largeur, hauteur, ratio de réduction ]
1632 1632
  **/
1633 1633
 function _image_ratio(int $srcWidth, int $srcHeight, int $maxWidth, int $maxHeight): array {
1634
-	$ratioWidth = $srcWidth / $maxWidth;
1635
-	$ratioHeight = $srcHeight / $maxHeight;
1636
-
1637
-	if ($srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1638
-		$destWidth = $srcWidth;
1639
-		$destHeight = $srcHeight;
1640
-	} elseif ($ratioWidth < $ratioHeight) {
1641
-		$destWidth = $srcWidth / $ratioHeight;
1642
-		$destHeight = $maxHeight;
1643
-	} else {
1644
-		$destWidth = $maxWidth;
1645
-		$destHeight = $srcHeight / $ratioWidth;
1646
-	}
1647
-
1648
-	return [
1649
-		intval(round($destWidth)),
1650
-		intval(round($destHeight)),
1651
-		max($ratioWidth, $ratioHeight)
1652
-	];
1634
+    $ratioWidth = $srcWidth / $maxWidth;
1635
+    $ratioHeight = $srcHeight / $maxHeight;
1636
+
1637
+    if ($srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1638
+        $destWidth = $srcWidth;
1639
+        $destHeight = $srcHeight;
1640
+    } elseif ($ratioWidth < $ratioHeight) {
1641
+        $destWidth = $srcWidth / $ratioHeight;
1642
+        $destHeight = $maxHeight;
1643
+    } else {
1644
+        $destWidth = $maxWidth;
1645
+        $destHeight = $srcHeight / $ratioWidth;
1646
+    }
1647
+
1648
+    return [
1649
+        intval(round($destWidth)),
1650
+        intval(round($destHeight)),
1651
+        max($ratioWidth, $ratioHeight)
1652
+    ];
1653 1653
 }
1654 1654
 
1655 1655
 /**
@@ -1669,25 +1669,25 @@  discard block
 block discarded – undo
1669 1669
  * @return array Liste [ largeur, hauteur, ratio de réduction ]
1670 1670
  **/
1671 1671
 function ratio_passe_partout(int $srcWidth, int $srcHeight, int $maxWidth, int $maxHeight): array {
1672
-	$ratioWidth = $srcWidth / $maxWidth;
1673
-	$ratioHeight = $srcHeight / $maxHeight;
1674
-
1675
-	if ($srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1676
-		$destWidth = $srcWidth;
1677
-		$destHeight = $srcHeight;
1678
-	} elseif ($ratioWidth > $ratioHeight) {
1679
-		$destWidth = $srcWidth / $ratioHeight;
1680
-		$destHeight = $maxHeight;
1681
-	} else {
1682
-		$destWidth = $maxWidth;
1683
-		$destHeight = $srcHeight / $ratioWidth;
1684
-	}
1685
-
1686
-	return [
1687
-		intval(round($destWidth)),
1688
-		intval(round($destHeight)),
1689
-		min($ratioWidth, $ratioHeight)
1690
-	];
1672
+    $ratioWidth = $srcWidth / $maxWidth;
1673
+    $ratioHeight = $srcHeight / $maxHeight;
1674
+
1675
+    if ($srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1676
+        $destWidth = $srcWidth;
1677
+        $destHeight = $srcHeight;
1678
+    } elseif ($ratioWidth > $ratioHeight) {
1679
+        $destWidth = $srcWidth / $ratioHeight;
1680
+        $destHeight = $maxHeight;
1681
+    } else {
1682
+        $destWidth = $maxWidth;
1683
+        $destHeight = $srcHeight / $ratioWidth;
1684
+    }
1685
+
1686
+    return [
1687
+        intval(round($destWidth)),
1688
+        intval(round($destHeight)),
1689
+        min($ratioWidth, $ratioHeight)
1690
+    ];
1691 1691
 }
1692 1692
 
1693 1693
 
@@ -1700,12 +1700,12 @@  discard block
 block discarded – undo
1700 1700
  * @return string
1701 1701
  */
1702 1702
 function process_image_svg_identite($image) {
1703
-	if ($image['creer']) {
1704
-		$source = $image['fichier'];
1705
-		_image_gd_output($source, $image);
1706
-	}
1703
+    if ($image['creer']) {
1704
+        $source = $image['fichier'];
1705
+        _image_gd_output($source, $image);
1706
+    }
1707 1707
 
1708
-	return _image_ecrire_tag($image, ['src' => $image['fichier_dest']]);
1708
+    return _image_ecrire_tag($image, ['src' => $image['fichier_dest']]);
1709 1709
 }
1710 1710
 
1711 1711
 
@@ -1738,109 +1738,109 @@  discard block
 block discarded – undo
1738 1738
  *     Code HTML de la balise img produite
1739 1739
  **/
1740 1740
 function process_image_reduire($fonction, $img, $taille, $taille_y, $force, $process = 'AUTO') {
1741
-	$image = false;
1742
-	if (($process == 'AUTO') and isset($GLOBALS['meta']['image_process'])) {
1743
-		$process = $GLOBALS['meta']['image_process'];
1744
-	}
1745
-	# determiner le format de sortie
1746
-	$format_sortie = false; // le choix par defaut sera bon
1747
-	if ($process == 'netpbm') {
1748
-		$format_sortie = 'jpg';
1749
-	} elseif ($process == 'gd1' or $process == 'gd2') {
1750
-		$image = _image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}", $format_sortie, $fonction, false, _SVG_SUPPORTED);
1751
-		// on verifie que l'extension choisie est bonne (en principe oui)
1752
-		$gd_formats = formats_image_acceptables(true);
1753
-		if (
1754
-			is_array($image)
1755
-			and (!in_array($image['format_dest'], $gd_formats)
1756
-				or (!in_array($image['format_dest'], _image_extensions_acceptees_en_sortie()))
1757
-			)
1758
-		) {
1759
-			if ($image['format_source'] == 'jpg') {
1760
-				$formats_sortie = ['jpg', 'png', 'gif'];
1761
-			} else // les gif sont passes en png preferentiellement pour etre homogene aux autres filtres images
1762
-			{
1763
-				$formats_sortie = ['png', 'jpg', 'gif'];
1764
-			}
1765
-			// Choisir le format destination
1766
-			// - on sauve de preference en JPEG (meilleure compression)
1767
-			// - pour le GIF : les GD recentes peuvent le lire mais pas l'ecrire
1768
-			# bug : gd_formats contient la liste des fichiers qu'on sait *lire*,
1769
-			# pas *ecrire*
1770
-			$format_sortie = '';
1771
-			foreach ($formats_sortie as $fmt) {
1772
-				if (in_array($fmt, $gd_formats) and in_array($fmt, _image_extensions_acceptees_en_sortie())) {
1773
-					$format_sortie = $fmt;
1774
-					break;
1775
-				}
1776
-			}
1777
-			$image = false;
1778
-		}
1779
-	}
1780
-
1781
-	if (!is_array($image)) {
1782
-		$image = _image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}", $format_sortie, $fonction, false, _SVG_SUPPORTED);
1783
-	}
1784
-
1785
-	if (!is_array($image) or !$image['largeur'] or !$image['hauteur']) {
1786
-		spip_log("image_reduire_src:pas de version locale de $img ou extension non prise en charge");
1787
-		// on peut resizer en mode html si on dispose des elements
1788
-		[$srcw, $srch] = taille_image($img);
1789
-		if ($srcw and $srch) {
1790
-			[$w, $h] = _image_ratio($srcw, $srch, $taille, $taille_y);
1791
-
1792
-			return _image_tag_changer_taille($img, $w, $h);
1793
-		}
1794
-		// la on n'a pas d'infos sur l'image source... on refile le truc a css
1795
-		// sous la forme style='max-width: NNpx;'
1796
-		return inserer_attribut(
1797
-			$img,
1798
-			'style',
1799
-			"max-width: {$taille}px;max-width: min(100%,{$taille}px); max-height: {$taille_y}px"
1800
-		);
1801
-	}
1802
-
1803
-	// si l'image est plus petite que la cible retourner une copie cachee de l'image
1804
-	if (($image['largeur'] <= $taille) && ($image['hauteur'] <= $taille_y)) {
1805
-		if ($image['creer']) {
1806
-			@copy($image['fichier'], $image['fichier_dest']);
1807
-		}
1808
-
1809
-		return _image_ecrire_tag($image, ['src' => $image['fichier_dest']]);
1810
-	}
1811
-
1812
-	if ($image['creer'] == false && !$force) {
1813
-		return _image_ecrire_tag(
1814
-			$image,
1815
-			['src' => $image['fichier_dest'], 'width' => $image['largeur_dest'], 'height' => $image['hauteur_dest']]
1816
-		);
1817
-	}
1818
-
1819
-	if (in_array($image['format_source'], _image_extensions_acceptees_en_entree())) {
1820
-		$destWidth = $image['largeur_dest'];
1821
-		$destHeight = $image['hauteur_dest'];
1822
-		$logo = $image['fichier'];
1823
-		$date = $image['date_src'];
1824
-		$preview = _image_creer_vignette($image, $taille, $taille_y, $process, $force);
1825
-
1826
-		if ($preview && $preview['fichier']) {
1827
-			$logo = $preview['fichier'];
1828
-			$destWidth = $preview['width'];
1829
-			$destHeight = $preview['height'];
1830
-			$date = $preview['date'];
1831
-		}
1832
-		// dans l'espace prive mettre un timestamp sur l'adresse
1833
-		// de l'image, de facon a tromper le cache du navigateur
1834
-		// quand on fait supprimer/reuploader un logo
1835
-		// (pas de filemtime si SAFE MODE)
1836
-		$date = test_espace_prive() ? ('?' . $date) : '';
1837
-
1838
-		return _image_ecrire_tag($image, ['src' => "$logo$date", 'width' => $destWidth, 'height' => $destHeight]);
1839
-	}
1840
-	else {
1841
-		# BMP, tiff ... les redacteurs osent tout!
1842
-		return $img;
1843
-	}
1741
+    $image = false;
1742
+    if (($process == 'AUTO') and isset($GLOBALS['meta']['image_process'])) {
1743
+        $process = $GLOBALS['meta']['image_process'];
1744
+    }
1745
+    # determiner le format de sortie
1746
+    $format_sortie = false; // le choix par defaut sera bon
1747
+    if ($process == 'netpbm') {
1748
+        $format_sortie = 'jpg';
1749
+    } elseif ($process == 'gd1' or $process == 'gd2') {
1750
+        $image = _image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}", $format_sortie, $fonction, false, _SVG_SUPPORTED);
1751
+        // on verifie que l'extension choisie est bonne (en principe oui)
1752
+        $gd_formats = formats_image_acceptables(true);
1753
+        if (
1754
+            is_array($image)
1755
+            and (!in_array($image['format_dest'], $gd_formats)
1756
+                or (!in_array($image['format_dest'], _image_extensions_acceptees_en_sortie()))
1757
+            )
1758
+        ) {
1759
+            if ($image['format_source'] == 'jpg') {
1760
+                $formats_sortie = ['jpg', 'png', 'gif'];
1761
+            } else // les gif sont passes en png preferentiellement pour etre homogene aux autres filtres images
1762
+            {
1763
+                $formats_sortie = ['png', 'jpg', 'gif'];
1764
+            }
1765
+            // Choisir le format destination
1766
+            // - on sauve de preference en JPEG (meilleure compression)
1767
+            // - pour le GIF : les GD recentes peuvent le lire mais pas l'ecrire
1768
+            # bug : gd_formats contient la liste des fichiers qu'on sait *lire*,
1769
+            # pas *ecrire*
1770
+            $format_sortie = '';
1771
+            foreach ($formats_sortie as $fmt) {
1772
+                if (in_array($fmt, $gd_formats) and in_array($fmt, _image_extensions_acceptees_en_sortie())) {
1773
+                    $format_sortie = $fmt;
1774
+                    break;
1775
+                }
1776
+            }
1777
+            $image = false;
1778
+        }
1779
+    }
1780
+
1781
+    if (!is_array($image)) {
1782
+        $image = _image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}", $format_sortie, $fonction, false, _SVG_SUPPORTED);
1783
+    }
1784
+
1785
+    if (!is_array($image) or !$image['largeur'] or !$image['hauteur']) {
1786
+        spip_log("image_reduire_src:pas de version locale de $img ou extension non prise en charge");
1787
+        // on peut resizer en mode html si on dispose des elements
1788
+        [$srcw, $srch] = taille_image($img);
1789
+        if ($srcw and $srch) {
1790
+            [$w, $h] = _image_ratio($srcw, $srch, $taille, $taille_y);
1791
+
1792
+            return _image_tag_changer_taille($img, $w, $h);
1793
+        }
1794
+        // la on n'a pas d'infos sur l'image source... on refile le truc a css
1795
+        // sous la forme style='max-width: NNpx;'
1796
+        return inserer_attribut(
1797
+            $img,
1798
+            'style',
1799
+            "max-width: {$taille}px;max-width: min(100%,{$taille}px); max-height: {$taille_y}px"
1800
+        );
1801
+    }
1802
+
1803
+    // si l'image est plus petite que la cible retourner une copie cachee de l'image
1804
+    if (($image['largeur'] <= $taille) && ($image['hauteur'] <= $taille_y)) {
1805
+        if ($image['creer']) {
1806
+            @copy($image['fichier'], $image['fichier_dest']);
1807
+        }
1808
+
1809
+        return _image_ecrire_tag($image, ['src' => $image['fichier_dest']]);
1810
+    }
1811
+
1812
+    if ($image['creer'] == false && !$force) {
1813
+        return _image_ecrire_tag(
1814
+            $image,
1815
+            ['src' => $image['fichier_dest'], 'width' => $image['largeur_dest'], 'height' => $image['hauteur_dest']]
1816
+        );
1817
+    }
1818
+
1819
+    if (in_array($image['format_source'], _image_extensions_acceptees_en_entree())) {
1820
+        $destWidth = $image['largeur_dest'];
1821
+        $destHeight = $image['hauteur_dest'];
1822
+        $logo = $image['fichier'];
1823
+        $date = $image['date_src'];
1824
+        $preview = _image_creer_vignette($image, $taille, $taille_y, $process, $force);
1825
+
1826
+        if ($preview && $preview['fichier']) {
1827
+            $logo = $preview['fichier'];
1828
+            $destWidth = $preview['width'];
1829
+            $destHeight = $preview['height'];
1830
+            $date = $preview['date'];
1831
+        }
1832
+        // dans l'espace prive mettre un timestamp sur l'adresse
1833
+        // de l'image, de facon a tromper le cache du navigateur
1834
+        // quand on fait supprimer/reuploader un logo
1835
+        // (pas de filemtime si SAFE MODE)
1836
+        $date = test_espace_prive() ? ('?' . $date) : '';
1837
+
1838
+        return _image_ecrire_tag($image, ['src' => "$logo$date", 'width' => $destWidth, 'height' => $destHeight]);
1839
+    }
1840
+    else {
1841
+        # BMP, tiff ... les redacteurs osent tout!
1842
+        return $img;
1843
+    }
1844 1844
 }
1845 1845
 
1846 1846
 /**
@@ -1854,145 +1854,145 @@  discard block
 block discarded – undo
1854 1854
  * Class phpthumb_functions
1855 1855
  */
1856 1856
 class phpthumb_functions {
1857
-	/**
1858
-	 * Retourne la couleur d'un pixel dans une image
1859
-	 *
1860
-	 * @param resource|GdImage $img
1861
-	 * @param int $x
1862
-	 * @param int $y
1863
-	 * @return array|bool
1864
-	 */
1865
-	public static function GetPixelColor(&$img, $x, $y) {
1866
-		if (is_resource($img) || (is_object($img) && $img instanceof \GdImage)) {
1867
-			return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y));
1868
-		}
1869
-		return false;
1870
-	}
1871
-
1872
-	/**
1873
-	 * Retourne un nombre dans une représentation en Little Endian
1874
-	 *
1875
-	 * @param int $number
1876
-	 * @param int $minbytes
1877
-	 * @return string
1878
-	 */
1879
-	public static function LittleEndian2String($number, $minbytes = 1) {
1880
-		$intstring = '';
1881
-		while ($number > 0) {
1882
-			$intstring = $intstring . chr($number & 255);
1883
-			$number >>= 8;
1884
-		}
1885
-
1886
-		return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT);
1887
-	}
1888
-
1889
-	/**
1890
-	 * Transforme une ressource GD en image au format ICO
1891
-	 *
1892
-	 * @param array $gd_image_array
1893
-	 *     Tableau de ressources d'images GD
1894
-	 * @return string
1895
-	 *     Image au format ICO
1896
-	 */
1897
-	public static function GD2ICOstring(&$gd_image_array) {
1898
-		foreach ($gd_image_array as $key => $gd_image) {
1899
-			$ImageWidths[$key] = ImageSX($gd_image);
1900
-			$ImageHeights[$key] = ImageSY($gd_image);
1901
-			$bpp[$key] = ImageIsTrueColor($gd_image) ? 32 : 24;
1902
-			$totalcolors[$key] = ImageColorsTotal($gd_image);
1903
-
1904
-			$icXOR[$key] = '';
1905
-			for ($y = $ImageHeights[$key] - 1; $y >= 0; $y--) {
1906
-				for ($x = 0; $x < $ImageWidths[$key]; $x++) {
1907
-					$argb = phpthumb_functions::GetPixelColor($gd_image, $x, $y);
1908
-					$a = round(255 * ((127 - $argb['alpha']) / 127));
1909
-					$r = $argb['red'];
1910
-					$g = $argb['green'];
1911
-					$b = $argb['blue'];
1912
-
1913
-					if ($bpp[$key] == 32) {
1914
-						$icXOR[$key] .= chr($b) . chr($g) . chr($r) . chr($a);
1915
-					} elseif ($bpp[$key] == 24) {
1916
-						$icXOR[$key] .= chr($b) . chr($g) . chr($r);
1917
-					}
1918
-
1919
-					if ($a < 128) {
1920
-						@$icANDmask[$key][$y] .= '1';
1921
-					} else {
1922
-						@$icANDmask[$key][$y] .= '0';
1923
-					}
1924
-				}
1925
-				// mask bits are 32-bit aligned per scanline
1926
-				while (strlen($icANDmask[$key][$y]) % 32) {
1927
-					$icANDmask[$key][$y] .= '0';
1928
-				}
1929
-			}
1930
-			$icAND[$key] = '';
1931
-			foreach ($icANDmask[$key] as $y => $scanlinemaskbits) {
1932
-				for ($i = 0; $i < strlen($scanlinemaskbits); $i += 8) {
1933
-					$icAND[$key] .= chr(bindec(str_pad(substr($scanlinemaskbits, $i, 8), 8, '0', STR_PAD_LEFT)));
1934
-				}
1935
-			}
1936
-		}
1937
-
1938
-		foreach ($gd_image_array as $key => $gd_image) {
1939
-			$biSizeImage = $ImageWidths[$key] * $ImageHeights[$key] * ($bpp[$key] / 8);
1940
-
1941
-			// BITMAPINFOHEADER - 40 bytes
1942
-			$BitmapInfoHeader[$key] = '';
1943
-			$BitmapInfoHeader[$key] .= "\x28\x00\x00\x00";                // DWORD  biSize;
1944
-			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4);    // LONG   biWidth;
1945
-			// The biHeight member specifies the combined
1946
-			// height of the XOR and AND masks.
1947
-			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG   biHeight;
1948
-			$BitmapInfoHeader[$key] .= "\x01\x00";                    // WORD   biPlanes;
1949
-			$BitmapInfoHeader[$key] .= chr($bpp[$key]) . "\x00";              // wBitCount;
1950
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biCompression;
1951
-			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4);      // DWORD  biSizeImage;
1952
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // LONG   biXPelsPerMeter;
1953
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // LONG   biYPelsPerMeter;
1954
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biClrUsed;
1955
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biClrImportant;
1956
-		}
1957
-
1958
-
1959
-		$icondata = "\x00\x00";                    // idReserved;   // Reserved (must be 0)
1960
-		$icondata .= "\x01\x00";                    // idType;	   // Resource Type (1 for icons)
1961
-		$icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2);  // idCount;	  // How many images?
1962
-
1963
-		$dwImageOffset = 6 + (count($gd_image_array) * 16);
1964
-		foreach ($gd_image_array as $key => $gd_image) {
1965
-			// ICONDIRENTRY   idEntries[1]; // An entry for each image (idCount of 'em)
1966
-
1967
-			$icondata .= chr($ImageWidths[$key]);           // bWidth;		  // Width, in pixels, of the image
1968
-			$icondata .= chr($ImageHeights[$key]);          // bHeight;		 // Height, in pixels, of the image
1969
-			$icondata .= chr($totalcolors[$key]);           // bColorCount;	 // Number of colors in image (0 if >=8bpp)
1970
-			$icondata .= "\x00";                    // bReserved;	   // Reserved ( must be 0)
1971
-
1972
-			$icondata .= "\x01\x00";                  // wPlanes;		 // Color Planes
1973
-			$icondata .= chr($bpp[$key]) . "\x00";            // wBitCount;	   // Bits per pixel
1974
-
1975
-			$dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]);
1976
-			$icondata .= phpthumb_functions::LittleEndian2String(
1977
-				$dwBytesInRes,
1978
-				4
1979
-			);     // dwBytesInRes;	// How many bytes in this resource?
1980
-
1981
-			$icondata .= phpthumb_functions::LittleEndian2String(
1982
-				$dwImageOffset,
1983
-				4
1984
-			);    // dwImageOffset;   // Where in the file is this image?
1985
-			$dwImageOffset += strlen($BitmapInfoHeader[$key]);
1986
-			$dwImageOffset += strlen($icXOR[$key]);
1987
-			$dwImageOffset += strlen($icAND[$key]);
1988
-		}
1989
-
1990
-		foreach ($gd_image_array as $key => $gd_image) {
1991
-			$icondata .= $BitmapInfoHeader[$key];
1992
-			$icondata .= $icXOR[$key];
1993
-			$icondata .= $icAND[$key];
1994
-		}
1995
-
1996
-		return $icondata;
1997
-	}
1857
+    /**
1858
+     * Retourne la couleur d'un pixel dans une image
1859
+     *
1860
+     * @param resource|GdImage $img
1861
+     * @param int $x
1862
+     * @param int $y
1863
+     * @return array|bool
1864
+     */
1865
+    public static function GetPixelColor(&$img, $x, $y) {
1866
+        if (is_resource($img) || (is_object($img) && $img instanceof \GdImage)) {
1867
+            return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y));
1868
+        }
1869
+        return false;
1870
+    }
1871
+
1872
+    /**
1873
+     * Retourne un nombre dans une représentation en Little Endian
1874
+     *
1875
+     * @param int $number
1876
+     * @param int $minbytes
1877
+     * @return string
1878
+     */
1879
+    public static function LittleEndian2String($number, $minbytes = 1) {
1880
+        $intstring = '';
1881
+        while ($number > 0) {
1882
+            $intstring = $intstring . chr($number & 255);
1883
+            $number >>= 8;
1884
+        }
1885
+
1886
+        return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT);
1887
+    }
1888
+
1889
+    /**
1890
+     * Transforme une ressource GD en image au format ICO
1891
+     *
1892
+     * @param array $gd_image_array
1893
+     *     Tableau de ressources d'images GD
1894
+     * @return string
1895
+     *     Image au format ICO
1896
+     */
1897
+    public static function GD2ICOstring(&$gd_image_array) {
1898
+        foreach ($gd_image_array as $key => $gd_image) {
1899
+            $ImageWidths[$key] = ImageSX($gd_image);
1900
+            $ImageHeights[$key] = ImageSY($gd_image);
1901
+            $bpp[$key] = ImageIsTrueColor($gd_image) ? 32 : 24;
1902
+            $totalcolors[$key] = ImageColorsTotal($gd_image);
1903
+
1904
+            $icXOR[$key] = '';
1905
+            for ($y = $ImageHeights[$key] - 1; $y >= 0; $y--) {
1906
+                for ($x = 0; $x < $ImageWidths[$key]; $x++) {
1907
+                    $argb = phpthumb_functions::GetPixelColor($gd_image, $x, $y);
1908
+                    $a = round(255 * ((127 - $argb['alpha']) / 127));
1909
+                    $r = $argb['red'];
1910
+                    $g = $argb['green'];
1911
+                    $b = $argb['blue'];
1912
+
1913
+                    if ($bpp[$key] == 32) {
1914
+                        $icXOR[$key] .= chr($b) . chr($g) . chr($r) . chr($a);
1915
+                    } elseif ($bpp[$key] == 24) {
1916
+                        $icXOR[$key] .= chr($b) . chr($g) . chr($r);
1917
+                    }
1918
+
1919
+                    if ($a < 128) {
1920
+                        @$icANDmask[$key][$y] .= '1';
1921
+                    } else {
1922
+                        @$icANDmask[$key][$y] .= '0';
1923
+                    }
1924
+                }
1925
+                // mask bits are 32-bit aligned per scanline
1926
+                while (strlen($icANDmask[$key][$y]) % 32) {
1927
+                    $icANDmask[$key][$y] .= '0';
1928
+                }
1929
+            }
1930
+            $icAND[$key] = '';
1931
+            foreach ($icANDmask[$key] as $y => $scanlinemaskbits) {
1932
+                for ($i = 0; $i < strlen($scanlinemaskbits); $i += 8) {
1933
+                    $icAND[$key] .= chr(bindec(str_pad(substr($scanlinemaskbits, $i, 8), 8, '0', STR_PAD_LEFT)));
1934
+                }
1935
+            }
1936
+        }
1937
+
1938
+        foreach ($gd_image_array as $key => $gd_image) {
1939
+            $biSizeImage = $ImageWidths[$key] * $ImageHeights[$key] * ($bpp[$key] / 8);
1940
+
1941
+            // BITMAPINFOHEADER - 40 bytes
1942
+            $BitmapInfoHeader[$key] = '';
1943
+            $BitmapInfoHeader[$key] .= "\x28\x00\x00\x00";                // DWORD  biSize;
1944
+            $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4);    // LONG   biWidth;
1945
+            // The biHeight member specifies the combined
1946
+            // height of the XOR and AND masks.
1947
+            $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG   biHeight;
1948
+            $BitmapInfoHeader[$key] .= "\x01\x00";                    // WORD   biPlanes;
1949
+            $BitmapInfoHeader[$key] .= chr($bpp[$key]) . "\x00";              // wBitCount;
1950
+            $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biCompression;
1951
+            $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4);      // DWORD  biSizeImage;
1952
+            $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // LONG   biXPelsPerMeter;
1953
+            $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // LONG   biYPelsPerMeter;
1954
+            $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biClrUsed;
1955
+            $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biClrImportant;
1956
+        }
1957
+
1958
+
1959
+        $icondata = "\x00\x00";                    // idReserved;   // Reserved (must be 0)
1960
+        $icondata .= "\x01\x00";                    // idType;	   // Resource Type (1 for icons)
1961
+        $icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2);  // idCount;	  // How many images?
1962
+
1963
+        $dwImageOffset = 6 + (count($gd_image_array) * 16);
1964
+        foreach ($gd_image_array as $key => $gd_image) {
1965
+            // ICONDIRENTRY   idEntries[1]; // An entry for each image (idCount of 'em)
1966
+
1967
+            $icondata .= chr($ImageWidths[$key]);           // bWidth;		  // Width, in pixels, of the image
1968
+            $icondata .= chr($ImageHeights[$key]);          // bHeight;		 // Height, in pixels, of the image
1969
+            $icondata .= chr($totalcolors[$key]);           // bColorCount;	 // Number of colors in image (0 if >=8bpp)
1970
+            $icondata .= "\x00";                    // bReserved;	   // Reserved ( must be 0)
1971
+
1972
+            $icondata .= "\x01\x00";                  // wPlanes;		 // Color Planes
1973
+            $icondata .= chr($bpp[$key]) . "\x00";            // wBitCount;	   // Bits per pixel
1974
+
1975
+            $dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]);
1976
+            $icondata .= phpthumb_functions::LittleEndian2String(
1977
+                $dwBytesInRes,
1978
+                4
1979
+            );     // dwBytesInRes;	// How many bytes in this resource?
1980
+
1981
+            $icondata .= phpthumb_functions::LittleEndian2String(
1982
+                $dwImageOffset,
1983
+                4
1984
+            );    // dwImageOffset;   // Where in the file is this image?
1985
+            $dwImageOffset += strlen($BitmapInfoHeader[$key]);
1986
+            $dwImageOffset += strlen($icXOR[$key]);
1987
+            $dwImageOffset += strlen($icAND[$key]);
1988
+        }
1989
+
1990
+        foreach ($gd_image_array as $key => $gd_image) {
1991
+            $icondata .= $BitmapInfoHeader[$key];
1992
+            $icondata .= $icXOR[$key];
1993
+            $icondata .= $icAND[$key];
1994
+        }
1995
+
1996
+        return $icondata;
1997
+    }
1998 1998
 }
Please login to merge, or discard this patch.
Spacing   +67 added lines, -67 removed lines patch added patch discarded remove patch
@@ -42,13 +42,13 @@  discard block
 block discarded – undo
42 42
 	$blue = dechex($blue);
43 43
 
44 44
 	if (strlen($red) == 1) {
45
-		$red = '0' . $red;
45
+		$red = '0'.$red;
46 46
 	}
47 47
 	if (strlen($green) == 1) {
48
-		$green = '0' . $green;
48
+		$green = '0'.$green;
49 49
 	}
50 50
 	if (strlen($blue) == 1) {
51
-		$blue = '0' . $blue;
51
+		$blue = '0'.$blue;
52 52
 	}
53 53
 
54 54
 	return "$red$green$blue";
@@ -67,7 +67,7 @@  discard block
 block discarded – undo
67 67
 	$couleur = couleur_html_to_hex($couleur);
68 68
 	$couleur = ltrim($couleur, '#');
69 69
 	if (strlen($couleur) === 3) {
70
-		$couleur = $couleur[0] . $couleur[0] . $couleur[1] . $couleur[1] . $couleur[2] . $couleur[2];
70
+		$couleur = $couleur[0].$couleur[0].$couleur[1].$couleur[1].$couleur[2].$couleur[2];
71 71
 	}
72 72
 	$retour = [];
73 73
 	$retour['red'] = hexdec(substr($couleur, 0, 2));
@@ -125,9 +125,9 @@  discard block
 block discarded – undo
125 125
 	$var_G = ($G / 255);
126 126
 	$var_B = ($B / 255);
127 127
 
128
-	$var_Min = min($var_R, $var_G, $var_B);   //Min. value of RGB
129
-	$var_Max = max($var_R, $var_G, $var_B);   //Max. value of RGB
130
-	$del_Max = $var_Max - $var_Min;           //Delta RGB value
128
+	$var_Min = min($var_R, $var_G, $var_B); //Min. value of RGB
129
+	$var_Max = max($var_R, $var_G, $var_B); //Max. value of RGB
130
+	$del_Max = $var_Max - $var_Min; //Delta RGB value
131 131
 
132 132
 	$L = ($var_Max + $var_Min) / 2;
133 133
 
@@ -189,7 +189,7 @@  discard block
 block discarded – undo
189 189
  */
190 190
 function _couleur_hsl_to_rgb($H, $S, $L) {
191 191
 	// helper
192
-	$hue_2_rgb = function ($v1, $v2, $vH) {
192
+	$hue_2_rgb = function($v1, $v2, $vH) {
193 193
 		if ($vH < 0) {
194 194
 			$vH += 1;
195 195
 		}
@@ -321,11 +321,11 @@  discard block
 block discarded – undo
321 321
 		$img = "<img src='$source' />";
322 322
 	} elseif (
323 323
 		preg_match('@^data:image/([^;]*);base64,(.*)$@isS', $source, $regs)
324
-		and $extension = _image_trouver_extension_depuis_mime('image/' . $regs[1])
324
+		and $extension = _image_trouver_extension_depuis_mime('image/'.$regs[1])
325 325
 		and in_array($extension, _image_extensions_acceptees_en_entree())
326 326
 	) {
327 327
 		# gerer img src="data:....base64"
328
-		$local = sous_repertoire(_DIR_VAR, 'image-data') . md5($regs[2]) . '.' . _image_extension_normalisee($extension);
328
+		$local = sous_repertoire(_DIR_VAR, 'image-data').md5($regs[2]).'.'._image_extension_normalisee($extension);
329 329
 		if (!file_exists($local)) {
330 330
 			ecrire_fichier($local, base64_decode($regs[2]));
331 331
 		}
@@ -342,7 +342,7 @@  discard block
 block discarded – undo
342 342
 	// les protocoles web prennent au moins 3 lettres
343 343
 	if (tester_url_absolue($source)) {
344 344
 		include_spip('inc/distant');
345
-		$fichier = _DIR_RACINE . copie_locale($source);
345
+		$fichier = _DIR_RACINE.copie_locale($source);
346 346
 		if (!$fichier) {
347 347
 			return '';
348 348
 		}
@@ -444,9 +444,9 @@  discard block
 block discarded – undo
444 444
 			// on garde la terminaison initiale car image simplement copiee
445 445
 			// et on postfixe son nom avec un md5 du path
446 446
 			$terminaison_dest = $terminaison;
447
-			$fichier_dest .= '-' . substr(md5("$identifiant"), 0, 5);
447
+			$fichier_dest .= '-'.substr(md5("$identifiant"), 0, 5);
448 448
 		} else {
449
-			$fichier_dest .= '-' . substr(md5("$identifiant-$effet"), 0, 5);
449
+			$fichier_dest .= '-'.substr(md5("$identifiant-$effet"), 0, 5);
450 450
 		}
451 451
 		$cache = sous_repertoire(_DIR_VAR, $cache);
452 452
 		$cache = sous_repertoire($cache, $effet);
@@ -457,7 +457,7 @@  discard block
 block discarded – undo
457 457
 		$fichier_dest = substr($fichier_dest, 2);
458 458
 	}
459 459
 
460
-	$fichier_dest = $cache . $fichier_dest . '.' . $terminaison_dest;
460
+	$fichier_dest = $cache.$fichier_dest.'.'.$terminaison_dest;
461 461
 
462 462
 	$GLOBALS['images_calculees'][] = $fichier_dest;
463 463
 
@@ -495,15 +495,15 @@  discard block
 block discarded – undo
495 495
 
496 496
 	if ($creer) {
497 497
 		spip_log(
498
-			'filtre image ' . ($fonction_creation ? reset($fonction_creation) : '') . "[$effet] sur $fichier",
499
-			'images' . _LOG_DEBUG
498
+			'filtre image '.($fonction_creation ? reset($fonction_creation) : '')."[$effet] sur $fichier",
499
+			'images'._LOG_DEBUG
500 500
 		);
501 501
 	}
502 502
 
503 503
 	$term_fonction = _image_trouver_extension_pertinente($fichier);
504
-	$ret['fonction_imagecreatefrom'] = '_imagecreatefrom' . $term_fonction;
504
+	$ret['fonction_imagecreatefrom'] = '_imagecreatefrom'.$term_fonction;
505 505
 	$ret['fichier'] = $fichier;
506
-	$ret['fonction_image'] = '_image_image' . $terminaison_dest;
506
+	$ret['fonction_image'] = '_image_image'.$terminaison_dest;
507 507
 	$ret['fichier_dest'] = $fichier_dest;
508 508
 	$ret['format_source'] = _image_extension_normalisee($terminaison);
509 509
 	$ret['format_dest'] = $terminaison_dest;
@@ -653,7 +653,7 @@  discard block
 block discarded – undo
653 653
 
654 654
 	$_terminaison = _image_trouver_extension_depuis_mime($mime);
655 655
 	if ($_terminaison and $_terminaison !== $terminaison) {
656
-		spip_log("Mauvaise extension du fichier : $path . Son type mime est : $mime", 'images.' . _LOG_INFO_IMPORTANTE);
656
+		spip_log("Mauvaise extension du fichier : $path . Son type mime est : $mime", 'images.'._LOG_INFO_IMPORTANTE);
657 657
 		$terminaison = $_terminaison;
658 658
 	}
659 659
 	return $terminaison;
@@ -810,7 +810,7 @@  discard block
 block discarded – undo
810 810
 	if (!function_exists('imagepng')) {
811 811
 		return false;
812 812
 	}
813
-	$tmp = $fichier . '.tmp';
813
+	$tmp = $fichier.'.tmp';
814 814
 	$ret = imagepng($img, $tmp);
815 815
 	if (file_exists($tmp)) {
816 816
 		$taille_test = @getimagesize($tmp);
@@ -845,7 +845,7 @@  discard block
 block discarded – undo
845 845
 	if (!function_exists('imagegif')) {
846 846
 		return false;
847 847
 	}
848
-	$tmp = $fichier . '.tmp';
848
+	$tmp = $fichier.'.tmp';
849 849
 	$ret = imagegif($img, $tmp);
850 850
 	if (file_exists($tmp)) {
851 851
 		$taille_test = @getimagesize($tmp);
@@ -885,7 +885,7 @@  discard block
 block discarded – undo
885 885
 	if (!function_exists('imagejpeg')) {
886 886
 		return false;
887 887
 	}
888
-	$tmp = $fichier . '.tmp';
888
+	$tmp = $fichier.'.tmp';
889 889
 
890 890
 	// Enable interlancing
891 891
 	imageinterlace($img, true);
@@ -946,7 +946,7 @@  discard block
 block discarded – undo
946 946
 	if (!function_exists('imagewebp')) {
947 947
 		return false;
948 948
 	}
949
-	$tmp = $fichier . '.tmp';
949
+	$tmp = $fichier.'.tmp';
950 950
 	$ret = imagewebp($img, $tmp, $qualite);
951 951
 	if (file_exists($tmp)) {
952 952
 		$taille_test = @getimagesize($tmp);
@@ -980,7 +980,7 @@  discard block
 block discarded – undo
980 980
  */
981 981
 function _image_imagesvg($img, $fichier) {
982 982
 
983
-	$tmp = $fichier . '.tmp';
983
+	$tmp = $fichier.'.tmp';
984 984
 	if (strpos($img, '<') === false) {
985 985
 		$img = supprimer_timestamp($img);
986 986
 		if (!file_exists($img)) {
@@ -1037,13 +1037,13 @@  discard block
 block discarded – undo
1037 1037
  */
1038 1038
 function _image_gd_output($img, $valeurs, $qualite = _IMG_GD_QUALITE, $fonction = null) {
1039 1039
 	if (is_null($fonction)) {
1040
-		$fonction = '_image_image' . $valeurs['format_dest'];
1040
+		$fonction = '_image_image'.$valeurs['format_dest'];
1041 1041
 	}
1042 1042
 	$ret = false;
1043 1043
 	#un flag pour reperer les images gravees
1044 1044
 	$lock = (
1045 1045
 		!statut_effacer_images_temporaires('get') // si la fonction n'a pas ete activee, on grave tout
1046
-		or (@file_exists($valeurs['fichier_dest']) and !@file_exists($valeurs['fichier_dest'] . '.src'))
1046
+		or (@file_exists($valeurs['fichier_dest']) and !@file_exists($valeurs['fichier_dest'].'.src'))
1047 1047
 	);
1048 1048
 	if (
1049 1049
 		function_exists($fonction)
@@ -1055,7 +1055,7 @@  discard block
 block discarded – undo
1055 1055
 			// dans tous les cas mettre a jour la taille de l'image finale
1056 1056
 			[$valeurs['hauteur_dest'], $valeurs['largeur_dest']] = taille_image($valeurs['fichier_dest']);
1057 1057
 			$valeurs['date'] = @filemtime($valeurs['fichier_dest']); // pour la retrouver apres disparition
1058
-			ecrire_fichier($valeurs['fichier_dest'] . '.src', serialize($valeurs), true);
1058
+			ecrire_fichier($valeurs['fichier_dest'].'.src', serialize($valeurs), true);
1059 1059
 		}
1060 1060
 	}
1061 1061
 
@@ -1230,7 +1230,7 @@  discard block
 block discarded – undo
1230 1230
 
1231 1231
 	// attributs deprecies. Transformer en CSS
1232 1232
 	if ($espace = extraire_attribut($tag, 'hspace')) {
1233
-		$style = "margin:{$espace}px;" . $style;
1233
+		$style = "margin:{$espace}px;".$style;
1234 1234
 		$tag = inserer_attribut($tag, 'hspace', '');
1235 1235
 	}
1236 1236
 
@@ -1357,7 +1357,7 @@  discard block
 block discarded – undo
1357 1357
 	$image = $valeurs['fichier'];
1358 1358
 	$format = $valeurs['format_source'];
1359 1359
 	$destdir = dirname($valeurs['fichier_dest']);
1360
-	$destfile = basename($valeurs['fichier_dest'], '.' . $valeurs['format_dest']);
1360
+	$destfile = basename($valeurs['fichier_dest'], '.'.$valeurs['format_dest']);
1361 1361
 
1362 1362
 	$format_sortie = $valeurs['format_dest'];
1363 1363
 
@@ -1389,7 +1389,7 @@  discard block
 block discarded – undo
1389 1389
 
1390 1390
 	// Si l'image est de la taille demandee (ou plus petite), simplement la retourner
1391 1391
 	if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1392
-		$vignette = $destination . '.' . $format;
1392
+		$vignette = $destination.'.'.$format;
1393 1393
 		@copy($image, $vignette);
1394 1394
 	}
1395 1395
 
@@ -1397,7 +1397,7 @@  discard block
 block discarded – undo
1397 1397
 		include_spip('inc/svg');
1398 1398
 		if ($svg = svg_redimensionner($valeurs['fichier'], $destWidth, $destHeight)) {
1399 1399
 			$format_sortie = 'svg';
1400
-			$vignette = $destination . '.' . $format_sortie;
1400
+			$vignette = $destination.'.'.$format_sortie;
1401 1401
 			$valeurs['fichier_dest'] = $vignette;
1402 1402
 			_image_gd_output($svg, $valeurs);
1403 1403
 		}
@@ -1409,9 +1409,9 @@  discard block
 block discarded – undo
1409 1409
 			define('_CONVERT_COMMAND', 'convert');
1410 1410
 		} // Securite : mes_options.php peut preciser le chemin absolu
1411 1411
 		if (!defined('_RESIZE_COMMAND')) {
1412
-			define('_RESIZE_COMMAND', _CONVERT_COMMAND . ' -quality ' . _IMG_CONVERT_QUALITE . ' -orient Undefined -resize %xx%y! %src %dest');
1412
+			define('_RESIZE_COMMAND', _CONVERT_COMMAND.' -quality '._IMG_CONVERT_QUALITE.' -orient Undefined -resize %xx%y! %src %dest');
1413 1413
 		}
1414
-		$vignette = $destination . '.' . $format_sortie;
1414
+		$vignette = $destination.'.'.$format_sortie;
1415 1415
 		$commande = str_replace(
1416 1416
 			['%x', '%y', '%src', '%dest'],
1417 1417
 			[
@@ -1427,7 +1427,7 @@  discard block
 block discarded – undo
1427 1427
 		if (!@file_exists($vignette)) {
1428 1428
 			spip_log("echec convert sur $vignette");
1429 1429
 
1430
-			return;  // echec commande
1430
+			return; // echec commande
1431 1431
 		}
1432 1432
 	}
1433 1433
 
@@ -1444,7 +1444,7 @@  discard block
 block discarded – undo
1444 1444
 		if (!$output) {
1445 1445
 			return;
1446 1446
 		}
1447
-		$vignette = $output . DIRECTORY_SEPARATOR . basename($destination) . '.' . $format_sortie;
1447
+		$vignette = $output.DIRECTORY_SEPARATOR.basename($destination).'.'.$format_sortie;
1448 1448
 
1449 1449
 		$imagick = new Imagick();
1450 1450
 		$imagick->readImage(realpath($image));
@@ -1453,7 +1453,7 @@  discard block
 block discarded – undo
1453 1453
 			$destHeight,
1454 1454
 			Imagick::FILTER_LANCZOS,
1455 1455
 			1
1456
-		);//, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100);
1456
+		); //, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100);
1457 1457
 		$imagick->writeImage($vignette);
1458 1458
 
1459 1459
 		if (!@file_exists($vignette)) {
@@ -1462,7 +1462,7 @@  discard block
 block discarded – undo
1462 1462
 			return;
1463 1463
 		}
1464 1464
 		// remettre le chemin relatif car c'est ce qu'attend SPIP pour la suite (en particlier action/tester)
1465
-		$vignette = $destination . '.' . $format_sortie;
1465
+		$vignette = $destination.'.'.$format_sortie;
1466 1466
 	}
1467 1467
 
1468 1468
 	// netpbm
@@ -1473,11 +1473,11 @@  discard block
 block discarded – undo
1473 1473
 		if (_PNMSCALE_COMMAND == '') {
1474 1474
 			return;
1475 1475
 		}
1476
-		$vignette = $destination . '.' . $format_sortie;
1476
+		$vignette = $destination.'.'.$format_sortie;
1477 1477
 		$pnmtojpeg_command = str_replace('pnmscale', 'pnmtojpeg', _PNMSCALE_COMMAND);
1478 1478
 		if ($format == 'jpg') {
1479 1479
 			$jpegtopnm_command = str_replace('pnmscale', 'jpegtopnm', _PNMSCALE_COMMAND);
1480
-			exec("$jpegtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1480
+			exec("$jpegtopnm_command $image | "._PNMSCALE_COMMAND." -width $destWidth | $pnmtojpeg_command > $vignette");
1481 1481
 			if (!($s = @filesize($vignette))) {
1482 1482
 				spip_unlink($vignette);
1483 1483
 			}
@@ -1489,7 +1489,7 @@  discard block
 block discarded – undo
1489 1489
 		} else {
1490 1490
 			if ($format == 'gif') {
1491 1491
 				$giftopnm_command = str_replace('pnmscale', 'giftopnm', _PNMSCALE_COMMAND);
1492
-				exec("$giftopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1492
+				exec("$giftopnm_command $image | "._PNMSCALE_COMMAND." -width $destWidth | $pnmtojpeg_command > $vignette");
1493 1493
 				if (!($s = @filesize($vignette))) {
1494 1494
 					spip_unlink($vignette);
1495 1495
 				}
@@ -1501,7 +1501,7 @@  discard block
 block discarded – undo
1501 1501
 			} else {
1502 1502
 				if ($format == 'png') {
1503 1503
 					$pngtopnm_command = str_replace('pnmscale', 'pngtopnm', _PNMSCALE_COMMAND);
1504
-					exec("$pngtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1504
+					exec("$pngtopnm_command $image | "._PNMSCALE_COMMAND." -width $destWidth | $pnmtojpeg_command > $vignette");
1505 1505
 					if (!($s = @filesize($vignette))) {
1506 1506
 						spip_unlink($vignette);
1507 1507
 					}
@@ -1523,7 +1523,7 @@  discard block
 block discarded – undo
1523 1523
 			return;
1524 1524
 		}
1525 1525
 		if (_IMG_GD_MAX_PIXELS && $srcWidth * $srcHeight > _IMG_GD_MAX_PIXELS) {
1526
-			spip_log('vignette gd1/gd2 impossible : ' . $srcWidth * $srcHeight . 'pixels');
1526
+			spip_log('vignette gd1/gd2 impossible : '.$srcWidth * $srcHeight.'pixels');
1527 1527
 
1528 1528
 			return;
1529 1529
 		}
@@ -1833,7 +1833,7 @@  discard block
 block discarded – undo
1833 1833
 		// de l'image, de facon a tromper le cache du navigateur
1834 1834
 		// quand on fait supprimer/reuploader un logo
1835 1835
 		// (pas de filemtime si SAFE MODE)
1836
-		$date = test_espace_prive() ? ('?' . $date) : '';
1836
+		$date = test_espace_prive() ? ('?'.$date) : '';
1837 1837
 
1838 1838
 		return _image_ecrire_tag($image, ['src' => "$logo$date", 'width' => $destWidth, 'height' => $destHeight]);
1839 1839
 	}
@@ -1879,7 +1879,7 @@  discard block
 block discarded – undo
1879 1879
 	public static function LittleEndian2String($number, $minbytes = 1) {
1880 1880
 		$intstring = '';
1881 1881
 		while ($number > 0) {
1882
-			$intstring = $intstring . chr($number & 255);
1882
+			$intstring = $intstring.chr($number & 255);
1883 1883
 			$number >>= 8;
1884 1884
 		}
1885 1885
 
@@ -1911,9 +1911,9 @@  discard block
 block discarded – undo
1911 1911
 					$b = $argb['blue'];
1912 1912
 
1913 1913
 					if ($bpp[$key] == 32) {
1914
-						$icXOR[$key] .= chr($b) . chr($g) . chr($r) . chr($a);
1914
+						$icXOR[$key] .= chr($b).chr($g).chr($r).chr($a);
1915 1915
 					} elseif ($bpp[$key] == 24) {
1916
-						$icXOR[$key] .= chr($b) . chr($g) . chr($r);
1916
+						$icXOR[$key] .= chr($b).chr($g).chr($r);
1917 1917
 					}
1918 1918
 
1919 1919
 					if ($a < 128) {
@@ -1940,48 +1940,48 @@  discard block
 block discarded – undo
1940 1940
 
1941 1941
 			// BITMAPINFOHEADER - 40 bytes
1942 1942
 			$BitmapInfoHeader[$key] = '';
1943
-			$BitmapInfoHeader[$key] .= "\x28\x00\x00\x00";                // DWORD  biSize;
1944
-			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4);    // LONG   biWidth;
1943
+			$BitmapInfoHeader[$key] .= "\x28\x00\x00\x00"; // DWORD  biSize;
1944
+			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4); // LONG   biWidth;
1945 1945
 			// The biHeight member specifies the combined
1946 1946
 			// height of the XOR and AND masks.
1947 1947
 			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG   biHeight;
1948
-			$BitmapInfoHeader[$key] .= "\x01\x00";                    // WORD   biPlanes;
1949
-			$BitmapInfoHeader[$key] .= chr($bpp[$key]) . "\x00";              // wBitCount;
1950
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biCompression;
1951
-			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4);      // DWORD  biSizeImage;
1952
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // LONG   biXPelsPerMeter;
1953
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // LONG   biYPelsPerMeter;
1954
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biClrUsed;
1955
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biClrImportant;
1948
+			$BitmapInfoHeader[$key] .= "\x01\x00"; // WORD   biPlanes;
1949
+			$BitmapInfoHeader[$key] .= chr($bpp[$key])."\x00"; // wBitCount;
1950
+			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD  biCompression;
1951
+			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4); // DWORD  biSizeImage;
1952
+			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // LONG   biXPelsPerMeter;
1953
+			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // LONG   biYPelsPerMeter;
1954
+			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD  biClrUsed;
1955
+			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD  biClrImportant;
1956 1956
 		}
1957 1957
 
1958 1958
 
1959
-		$icondata = "\x00\x00";                    // idReserved;   // Reserved (must be 0)
1960
-		$icondata .= "\x01\x00";                    // idType;	   // Resource Type (1 for icons)
1961
-		$icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2);  // idCount;	  // How many images?
1959
+		$icondata = "\x00\x00"; // idReserved;   // Reserved (must be 0)
1960
+		$icondata .= "\x01\x00"; // idType;	   // Resource Type (1 for icons)
1961
+		$icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2); // idCount;	  // How many images?
1962 1962
 
1963 1963
 		$dwImageOffset = 6 + (count($gd_image_array) * 16);
1964 1964
 		foreach ($gd_image_array as $key => $gd_image) {
1965 1965
 			// ICONDIRENTRY   idEntries[1]; // An entry for each image (idCount of 'em)
1966 1966
 
1967
-			$icondata .= chr($ImageWidths[$key]);           // bWidth;		  // Width, in pixels, of the image
1968
-			$icondata .= chr($ImageHeights[$key]);          // bHeight;		 // Height, in pixels, of the image
1969
-			$icondata .= chr($totalcolors[$key]);           // bColorCount;	 // Number of colors in image (0 if >=8bpp)
1970
-			$icondata .= "\x00";                    // bReserved;	   // Reserved ( must be 0)
1967
+			$icondata .= chr($ImageWidths[$key]); // bWidth;		  // Width, in pixels, of the image
1968
+			$icondata .= chr($ImageHeights[$key]); // bHeight;		 // Height, in pixels, of the image
1969
+			$icondata .= chr($totalcolors[$key]); // bColorCount;	 // Number of colors in image (0 if >=8bpp)
1970
+			$icondata .= "\x00"; // bReserved;	   // Reserved ( must be 0)
1971 1971
 
1972
-			$icondata .= "\x01\x00";                  // wPlanes;		 // Color Planes
1973
-			$icondata .= chr($bpp[$key]) . "\x00";            // wBitCount;	   // Bits per pixel
1972
+			$icondata .= "\x01\x00"; // wPlanes;		 // Color Planes
1973
+			$icondata .= chr($bpp[$key])."\x00"; // wBitCount;	   // Bits per pixel
1974 1974
 
1975 1975
 			$dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]);
1976 1976
 			$icondata .= phpthumb_functions::LittleEndian2String(
1977 1977
 				$dwBytesInRes,
1978 1978
 				4
1979
-			);     // dwBytesInRes;	// How many bytes in this resource?
1979
+			); // dwBytesInRes;	// How many bytes in this resource?
1980 1980
 
1981 1981
 			$icondata .= phpthumb_functions::LittleEndian2String(
1982 1982
 				$dwImageOffset,
1983 1983
 				4
1984
-			);    // dwImageOffset;   // Where in the file is this image?
1984
+			); // dwImageOffset;   // Where in the file is this image?
1985 1985
 			$dwImageOffset += strlen($BitmapInfoHeader[$key]);
1986 1986
 			$dwImageOffset += strlen($icXOR[$key]);
1987 1987
 			$dwImageOffset += strlen($icAND[$key]);
Please login to merge, or discard this patch.
prive/formulaires/inscription.php 2 patches
Indentation   +124 added lines, -124 removed lines patch added patch discarded remove patch
@@ -11,7 +11,7 @@  discard block
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 /**
@@ -40,24 +40,24 @@  discard block
 block discarded – undo
40 40
  */
41 41
 function formulaires_inscription_charger_dist($mode = '', $options = [], $retour = '') {
42 42
 
43
-	$id = ($options['id'] ?? 0);
43
+    $id = ($options['id'] ?? 0);
44 44
 
45
-	// fournir le mode de la config ou tester si l'argument du formulaire est un mode accepte par celle-ci
46
-	// pas de formulaire si le mode est interdit
47
-	include_spip('inc/autoriser');
48
-	if (!autoriser('inscrireauteur', $mode, $id)) {
49
-		return false;
50
-	}
45
+    // fournir le mode de la config ou tester si l'argument du formulaire est un mode accepte par celle-ci
46
+    // pas de formulaire si le mode est interdit
47
+    include_spip('inc/autoriser');
48
+    if (!autoriser('inscrireauteur', $mode, $id)) {
49
+        return false;
50
+    }
51 51
 
52
-	// pas de formulaire si on a déjà une session avec un statut égal ou meilleur au mode
53
-	if (isset($GLOBALS['visiteur_session']['statut']) and ($GLOBALS['visiteur_session']['statut'] <= $mode)) {
54
-		return false;
55
-	}
52
+    // pas de formulaire si on a déjà une session avec un statut égal ou meilleur au mode
53
+    if (isset($GLOBALS['visiteur_session']['statut']) and ($GLOBALS['visiteur_session']['statut'] <= $mode)) {
54
+        return false;
55
+    }
56 56
 
57 57
 
58
-	$valeurs = array('nom_inscription' => '', 'mail_inscription' => '', 'id' => $id, '_mode' => $mode);
58
+    $valeurs = array('nom_inscription' => '', 'mail_inscription' => '', 'id' => $id, '_mode' => $mode);
59 59
 
60
-	return $valeurs;
60
+    return $valeurs;
61 61
 }
62 62
 
63 63
 
@@ -70,69 +70,69 @@  discard block
 block discarded – undo
70 70
  * @return array
71 71
  */
72 72
 function formulaires_inscription_verifier_dist($mode = '', $options = [], $retour = '') {
73
-	set_request('_upgrade_auteur'); // securite
74
-	include_spip('inc/filtres');
75
-	$erreurs = array();
76
-
77
-	$id = ($options['id'] ?? 0);
78
-
79
-	include_spip('inc/autoriser');
80
-	if (!autoriser('inscrireauteur', $mode, $id)
81
-		or (strlen(_request('nobot')) > 0)
82
-	) {
83
-		$erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
84
-	}
85
-
86
-	if (!$nom = _request('nom_inscription')) {
87
-		$erreurs['nom_inscription'] = _T('info_obligatoire');
88
-	} elseif (!nom_acceptable(_request('nom_inscription'))) {
89
-		$erreurs['nom_inscription'] = _T('ecrire:info_nom_pas_conforme');
90
-	}
91
-	if (!$mail = strval(_request('mail_inscription'))) {
92
-		$erreurs['mail_inscription'] = _T('info_obligatoire');
93
-	}
94
-
95
-	// compatibilite avec anciennes fonction surchargeables
96
-	// plus de definition par defaut
97
-	if (!count($erreurs)) {
98
-		include_spip('action/inscrire_auteur');
99
-		if (function_exists('test_inscription')) {
100
-			$f = 'test_inscription';
101
-		} else {
102
-			$f = 'test_inscription_dist';
103
-		}
104
-		$declaration = $f($mode, $mail, $nom, $options);
105
-		if (is_string($declaration)) {
106
-			$k = (strpos($declaration, 'mail') !== false) ?
107
-				'mail_inscription' : 'nom_inscription';
108
-			$erreurs[$k] = _T($declaration);
109
-		} else {
110
-			include_spip('base/abstract_sql');
111
-
112
-			if ($row = sql_fetsel(
113
-				'statut, id_auteur, login, email',
114
-				'spip_auteurs',
115
-				'email=' . sql_quote($declaration['email'])
116
-			)) {
117
-				if (($row['statut'] == '5poubelle') and empty($declaration['pass'])) {
118
-					// irrecuperable
119
-					$erreurs['message_erreur'] = _T('form_forum_access_refuse');
120
-				} else {
121
-					if (($row['statut'] != 'nouveau') and empty($declaration['pass'])) {
122
-						if (intval($row['statut']) > intval($mode)) {
123
-							set_request('_upgrade_auteur', $row['id_auteur']);
124
-						} else {
125
-							// deja inscrit
126
-							$erreurs['message_erreur'] = _T('form_forum_email_deja_enregistre');
127
-						}
128
-					}
129
-				}
130
-				spip_log($row['id_auteur'] . ' veut se resinscrire');
131
-			}
132
-		}
133
-	}
134
-
135
-	return $erreurs;
73
+    set_request('_upgrade_auteur'); // securite
74
+    include_spip('inc/filtres');
75
+    $erreurs = array();
76
+
77
+    $id = ($options['id'] ?? 0);
78
+
79
+    include_spip('inc/autoriser');
80
+    if (!autoriser('inscrireauteur', $mode, $id)
81
+        or (strlen(_request('nobot')) > 0)
82
+    ) {
83
+        $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
84
+    }
85
+
86
+    if (!$nom = _request('nom_inscription')) {
87
+        $erreurs['nom_inscription'] = _T('info_obligatoire');
88
+    } elseif (!nom_acceptable(_request('nom_inscription'))) {
89
+        $erreurs['nom_inscription'] = _T('ecrire:info_nom_pas_conforme');
90
+    }
91
+    if (!$mail = strval(_request('mail_inscription'))) {
92
+        $erreurs['mail_inscription'] = _T('info_obligatoire');
93
+    }
94
+
95
+    // compatibilite avec anciennes fonction surchargeables
96
+    // plus de definition par defaut
97
+    if (!count($erreurs)) {
98
+        include_spip('action/inscrire_auteur');
99
+        if (function_exists('test_inscription')) {
100
+            $f = 'test_inscription';
101
+        } else {
102
+            $f = 'test_inscription_dist';
103
+        }
104
+        $declaration = $f($mode, $mail, $nom, $options);
105
+        if (is_string($declaration)) {
106
+            $k = (strpos($declaration, 'mail') !== false) ?
107
+                'mail_inscription' : 'nom_inscription';
108
+            $erreurs[$k] = _T($declaration);
109
+        } else {
110
+            include_spip('base/abstract_sql');
111
+
112
+            if ($row = sql_fetsel(
113
+                'statut, id_auteur, login, email',
114
+                'spip_auteurs',
115
+                'email=' . sql_quote($declaration['email'])
116
+            )) {
117
+                if (($row['statut'] == '5poubelle') and empty($declaration['pass'])) {
118
+                    // irrecuperable
119
+                    $erreurs['message_erreur'] = _T('form_forum_access_refuse');
120
+                } else {
121
+                    if (($row['statut'] != 'nouveau') and empty($declaration['pass'])) {
122
+                        if (intval($row['statut']) > intval($mode)) {
123
+                            set_request('_upgrade_auteur', $row['id_auteur']);
124
+                        } else {
125
+                            // deja inscrit
126
+                            $erreurs['message_erreur'] = _T('form_forum_email_deja_enregistre');
127
+                        }
128
+                    }
129
+                }
130
+                spip_log($row['id_auteur'] . ' veut se resinscrire');
131
+            }
132
+        }
133
+    }
134
+
135
+    return $erreurs;
136 136
 }
137 137
 
138 138
 /**
@@ -144,51 +144,51 @@  discard block
 block discarded – undo
144 144
  * @return array
145 145
  */
146 146
 function formulaires_inscription_traiter_dist($mode = '', array $options = [], $retour = '') {
147
-	if ($retour) {
148
-		refuser_traiter_formulaire_ajax();
149
-	}
150
-
151
-	include_spip('inc/filtres');
152
-	include_spip('inc/autoriser');
153
-
154
-	$id = ($options['id'] ?? 0);
155
-
156
-	if (!autoriser('inscrireauteur', $mode, $id)) {
157
-		$desc = 'rien a faire ici';
158
-	} else {
159
-		if ($id_auteur = _request('_upgrade_auteur')) {
160
-			include_spip('action/editer_auteur');
161
-			autoriser_exception('modifier', 'auteur', $id_auteur);
162
-			autoriser_exception('instituer', 'auteur', $id_auteur);
163
-			auteur_modifier($id_auteur, array('statut' => $mode));
164
-			autoriser_exception('modifier', 'auteur', $id_auteur, false);
165
-			autoriser_exception('instituer', 'auteur', $id_auteur, false);
166
-
167
-			return array('message_ok' => _T('form_forum_email_deja_enregistre'), 'id_auteur' => $id_auteur);
168
-		}
169
-
170
-		$nom = _request('nom_inscription');
171
-		$mail_complet = _request('mail_inscription');
172
-
173
-		$inscrire_auteur = charger_fonction('inscrire_auteur', 'action');
174
-		$desc = $inscrire_auteur($mode, $mail_complet, $nom, $options);
175
-	}
176
-
177
-	// erreur ?
178
-	if (is_string($desc)) {
179
-		return array('message_erreur' => $desc);
180
-	} // OK
181
-	else {
182
-		$retours = array(
183
-			'message_ok' => _T('form_forum_identifiant_mail'),
184
-			'id_auteur' => $desc['id_auteur'],
185
-		);
186
-
187
-		// Si on demande à rediriger juste après validation du formulaire
188
-		if ($retour) {
189
-			$retours['redirect'] = $retour;
190
-		}
191
-
192
-		return $retours;
193
-	}
147
+    if ($retour) {
148
+        refuser_traiter_formulaire_ajax();
149
+    }
150
+
151
+    include_spip('inc/filtres');
152
+    include_spip('inc/autoriser');
153
+
154
+    $id = ($options['id'] ?? 0);
155
+
156
+    if (!autoriser('inscrireauteur', $mode, $id)) {
157
+        $desc = 'rien a faire ici';
158
+    } else {
159
+        if ($id_auteur = _request('_upgrade_auteur')) {
160
+            include_spip('action/editer_auteur');
161
+            autoriser_exception('modifier', 'auteur', $id_auteur);
162
+            autoriser_exception('instituer', 'auteur', $id_auteur);
163
+            auteur_modifier($id_auteur, array('statut' => $mode));
164
+            autoriser_exception('modifier', 'auteur', $id_auteur, false);
165
+            autoriser_exception('instituer', 'auteur', $id_auteur, false);
166
+
167
+            return array('message_ok' => _T('form_forum_email_deja_enregistre'), 'id_auteur' => $id_auteur);
168
+        }
169
+
170
+        $nom = _request('nom_inscription');
171
+        $mail_complet = _request('mail_inscription');
172
+
173
+        $inscrire_auteur = charger_fonction('inscrire_auteur', 'action');
174
+        $desc = $inscrire_auteur($mode, $mail_complet, $nom, $options);
175
+    }
176
+
177
+    // erreur ?
178
+    if (is_string($desc)) {
179
+        return array('message_erreur' => $desc);
180
+    } // OK
181
+    else {
182
+        $retours = array(
183
+            'message_ok' => _T('form_forum_identifiant_mail'),
184
+            'id_auteur' => $desc['id_auteur'],
185
+        );
186
+
187
+        // Si on demande à rediriger juste après validation du formulaire
188
+        if ($retour) {
189
+            $retours['redirect'] = $retour;
190
+        }
191
+
192
+        return $retours;
193
+    }
194 194
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -112,7 +112,7 @@  discard block
 block discarded – undo
112 112
 			if ($row = sql_fetsel(
113 113
 				'statut, id_auteur, login, email',
114 114
 				'spip_auteurs',
115
-				'email=' . sql_quote($declaration['email'])
115
+				'email='.sql_quote($declaration['email'])
116 116
 			)) {
117 117
 				if (($row['statut'] == '5poubelle') and empty($declaration['pass'])) {
118 118
 					// irrecuperable
@@ -127,7 +127,7 @@  discard block
 block discarded – undo
127 127
 						}
128 128
 					}
129 129
 				}
130
-				spip_log($row['id_auteur'] . ' veut se resinscrire');
130
+				spip_log($row['id_auteur'].' veut se resinscrire');
131 131
 			}
132 132
 		}
133 133
 	}
Please login to merge, or discard this patch.
ecrire/balise/formulaire_inscription.php 3 patches
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('base/abstract_sql');
@@ -44,7 +44,7 @@  discard block
 block discarded – undo
44 44
  *     Pile complétée du code compilé
45 45
  **/
46 46
 function balise_FORMULAIRE_INSCRIPTION($p) {
47
-	return calculer_balise_dynamique($p, 'FORMULAIRE_INSCRIPTION', []);
47
+    return calculer_balise_dynamique($p, 'FORMULAIRE_INSCRIPTION', []);
48 48
 }
49 49
 
50 50
 /**
@@ -74,19 +74,19 @@  discard block
 block discarded – undo
74 74
  *   - chaîne vide sinon.
75 75
  */
76 76
 function balise_FORMULAIRE_INSCRIPTION_stat($args, $context_compil) {
77
-	[$mode, $id_ou_options, $retour] = array_pad($args, 3, null);
77
+    [$mode, $id_ou_options, $retour] = array_pad($args, 3, null);
78 78
 
79
-	// Compatibilité avec l'ancien param "id" dans les deux sens
80
-	if (!is_array($id_ou_options)) {
81
-		$options = ['id' => intval($id_ou_options)];
82
-		$id = $options['id'];
83
-	}else {
84
-		$options = $id_ou_options;
85
-		$id = (int) ($id_ou_options['id'] ?? 0);
86
-	}
79
+    // Compatibilité avec l'ancien param "id" dans les deux sens
80
+    if (!is_array($id_ou_options)) {
81
+        $options = ['id' => intval($id_ou_options)];
82
+        $id = $options['id'];
83
+    }else {
84
+        $options = $id_ou_options;
85
+        $id = (int) ($id_ou_options['id'] ?? 0);
86
+    }
87 87
 
88
-	include_spip('action/inscrire_auteur');
89
-	$mode = tester_statut_inscription($mode, $id);
88
+    include_spip('action/inscrire_auteur');
89
+    $mode = tester_statut_inscription($mode, $id);
90 90
 
91
-	return $mode ? [$mode, $options, $retour] : '';
91
+    return $mode ? [$mode, $options, $retour] : '';
92 92
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -80,7 +80,7 @@
 block discarded – undo
80 80
 	if (!is_array($id_ou_options)) {
81 81
 		$options = ['id' => intval($id_ou_options)];
82 82
 		$id = $options['id'];
83
-	}else {
83
+	} else {
84 84
 		$options = $id_ou_options;
85 85
 		$id = (int) ($id_ou_options['id'] ?? 0);
86 86
 	}
Please login to merge, or discard this patch.
Braces   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -80,7 +80,7 @@
 block discarded – undo
80 80
 	if (!is_array($id_ou_options)) {
81 81
 		$options = ['id' => intval($id_ou_options)];
82 82
 		$id = $options['id'];
83
-	}else {
83
+	} else {
84 84
 		$options = $id_ou_options;
85 85
 		$id = (int) ($id_ou_options['id'] ?? 0);
86 86
 	}
Please login to merge, or discard this patch.