Completed
Push — master ( c76770...babdec )
by cam
01:26
created
ecrire/lang/public_fr_fem.php 1 patch
Indentation   +115 added lines, -115 removed lines patch added patch discarded remove patch
@@ -4,123 +4,123 @@
 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
-	'accueil_site' => 'Accueil',
14
-	'article' => 'Article',
15
-	'articles' => 'Articles',
16
-	'articles_auteur' => 'Articles de cette autrice',
17
-	'articles_populaires' => 'Articles les plus populaires',
18
-	'articles_rubrique' => 'Articles de cette rubrique',
19
-	'aucun_article' => 'Il n’y a pas d’article à cette adresse',
20
-	'aucun_auteur' => 'Il n’y a pas d’autrice à cette adresse',
21
-	'aucun_site' => 'Il n’y a pas de site à cette adresse',
22
-	'aucune_breve' => 'Il n’y a pas de brève à cette adresse',
23
-	'aucune_rubrique' => 'Il n’y a pas de rubrique à cette adresse',
24
-	'auteur' => 'Autrice',
25
-	'autres' => 'Autres',
26
-	'autres_breves' => 'Autres brèves',
27
-	'autres_groupes_mots_clefs' => 'Autres groupes de mots-clés',
28
-	'autres_sites' => 'Autres sites',
29
-
30
-	// B
31
-	'bonjour' => 'Bonjour',
32
-
33
-	// C
34
-	'commenter_site' => 'Commenter ce site',
35
-	'contact' => 'Contact',
36
-	'copie_document_impossible' => 'Impossible de copier le document',
37
-
38
-	// D
39
-	'date' => 'Date',
40
-	'dernier_ajout' => 'Dernier ajout',
41
-	'dernieres_breves' => 'Dernières brèves',
42
-	'derniers_articles' => 'Derniers articles',
43
-	'derniers_commentaires' => 'Derniers commentaires',
44
-	'derniers_messages_forum' => 'Derniers messages publiés dans les forums',
45
-
46
-	// E
47
-	'edition_mode_texte' => 'Édition en mode texte de',
48
-	'en_reponse' => 'En réponse à :',
49
-	'en_resume' => 'En résumé',
50
-	'envoyer_message' => 'Envoyer un message',
51
-	'espace_prive' => 'Espace privé',
52
-
53
-	// F
54
-	'formats_acceptes' => 'Formats acceptés : @formats@.',
55
-
56
-	// H
57
-	'hierarchie_site' => 'Hiérarchie du site',
58
-
59
-	// J
60
-	'jours' => 'jours',
61
-
62
-	// L
63
-	'lien_connecter' => 'Se connecter',
64
-
65
-	// M
66
-	'meme_auteur' => 'De la même autrice',
67
-	'meme_rubrique' => 'Dans la même rubrique',
68
-	'memes_auteurs' => 'Des mêmes autrices',
69
-	'message' => 'Message',
70
-	'messages_forum' => 'Messages',
71
-	'messages_recents' => 'Messages de forums les plus récents',
72
-	'mots_clef' => 'Mot-clé',
73
-	'mots_clefs' => 'Mots-clés',
74
-	'mots_clefs_meme_groupe' => 'Mots-clés dans le même groupe',
75
-
76
-	// N
77
-	'navigation' => 'Navigation',
78
-	'nom' => 'Nom',
79
-	'nouveautes' => 'Les nouveautés',
80
-	'nouveautes_web' => 'Nouveautés sur le Web',
81
-	'nouveaux_articles' => 'Nouveaux articles',
82
-	'nouvelles_breves' => 'Nouvelles brèves',
83
-
84
-	// P
85
-	'page_precedente' => 'page précédente',
86
-	'page_suivante' => 'page suivante',
87
-	'par_auteur' => 'par ',
88
-	'participer_site' => 'Vous pouvez participer à la vie de ce site et proposer vos propres articles en vous inscrivant ci-dessous. Vous recevrez immédiatement un email vous indiquant vos codes d’accès à l’espace privé du site.',
89
-	'plan_site' => 'Plan du site',
90
-	'popularite' => 'Popularité',
91
-	'poster_message' => 'Poster un message',
92
-	'proposer_site' => 'Vous pouvez proposer un site à ajouter dans cette rubrique :',
93
-
94
-	// R
95
-	'repondre_article' => 'Répondre à cet article',
96
-	'repondre_breve' => 'Répondre à cette brève',
97
-	'resultats_recherche' => 'Résultats de la recherche',
98
-	'retour_debut_forums' => 'Retour au début des forums',
99
-	'rss_abonnement' => 'Copiez l’URL suivante dans votre agrégateur :',
100
-	'rss_abonnement_titre' => 'S’abonner',
101
-	'rss_abonnement_titre_page' => 'S’abonner à',
102
-	'rss_explication' => 'Un fil RSS recueille les informations de mise à jour d’un site. Il fournit le contenu des billets ou des commentaires ou un extrait de ceux-ci, ainsi qu’un lien vers les versions complètes et quelques autres informations. Ce fil a pour vocation d’être lu par un agrégateur RSS.',
103
-	'rss_explication_titre' => 'Qu’est-ce qu’un flux RSS ?',
104
-	'rubrique' => 'Rubrique',
105
-	'rubriques' => 'Rubriques',
106
-
107
-	// S
108
-	'signatures_petition' => 'Signatures',
109
-	'site_realise_avec_spip' => 'Site réalisé avec SPIP',
110
-	'sites_web' => 'Sites Web',
111
-	'sous_rubriques' => 'Sous-rubriques',
112
-	'spam' => 'Spam',
113
-	'suite' => 'suite',
114
-	'sur_web' => 'Sur le Web',
115
-	'syndiquer_rubrique' => 'Syndiquer cette rubrique',
116
-	'syndiquer_site' => 'Syndiquer tout le site',
117
-
118
-	// T
119
-	'texte_lettre_information' => 'Voici la lettre d’information du site',
120
-	'texte_lettre_information_2' => 'Cette lettre recense les nouveautés publiées depuis',
121
-
122
-	// V
123
-	'ver_imprimer' => 'Version à imprimer',
124
-	'voir_en_ligne' => 'Voir en ligne',
125
-	'voir_squelette' => 'voir le squelette de cette page'
12
+    // A
13
+    'accueil_site' => 'Accueil',
14
+    'article' => 'Article',
15
+    'articles' => 'Articles',
16
+    'articles_auteur' => 'Articles de cette autrice',
17
+    'articles_populaires' => 'Articles les plus populaires',
18
+    'articles_rubrique' => 'Articles de cette rubrique',
19
+    'aucun_article' => 'Il n’y a pas d’article à cette adresse',
20
+    'aucun_auteur' => 'Il n’y a pas d’autrice à cette adresse',
21
+    'aucun_site' => 'Il n’y a pas de site à cette adresse',
22
+    'aucune_breve' => 'Il n’y a pas de brève à cette adresse',
23
+    'aucune_rubrique' => 'Il n’y a pas de rubrique à cette adresse',
24
+    'auteur' => 'Autrice',
25
+    'autres' => 'Autres',
26
+    'autres_breves' => 'Autres brèves',
27
+    'autres_groupes_mots_clefs' => 'Autres groupes de mots-clés',
28
+    'autres_sites' => 'Autres sites',
29
+
30
+    // B
31
+    'bonjour' => 'Bonjour',
32
+
33
+    // C
34
+    'commenter_site' => 'Commenter ce site',
35
+    'contact' => 'Contact',
36
+    'copie_document_impossible' => 'Impossible de copier le document',
37
+
38
+    // D
39
+    'date' => 'Date',
40
+    'dernier_ajout' => 'Dernier ajout',
41
+    'dernieres_breves' => 'Dernières brèves',
42
+    'derniers_articles' => 'Derniers articles',
43
+    'derniers_commentaires' => 'Derniers commentaires',
44
+    'derniers_messages_forum' => 'Derniers messages publiés dans les forums',
45
+
46
+    // E
47
+    'edition_mode_texte' => 'Édition en mode texte de',
48
+    'en_reponse' => 'En réponse à :',
49
+    'en_resume' => 'En résumé',
50
+    'envoyer_message' => 'Envoyer un message',
51
+    'espace_prive' => 'Espace privé',
52
+
53
+    // F
54
+    'formats_acceptes' => 'Formats acceptés : @formats@.',
55
+
56
+    // H
57
+    'hierarchie_site' => 'Hiérarchie du site',
58
+
59
+    // J
60
+    'jours' => 'jours',
61
+
62
+    // L
63
+    'lien_connecter' => 'Se connecter',
64
+
65
+    // M
66
+    'meme_auteur' => 'De la même autrice',
67
+    'meme_rubrique' => 'Dans la même rubrique',
68
+    'memes_auteurs' => 'Des mêmes autrices',
69
+    'message' => 'Message',
70
+    'messages_forum' => 'Messages',
71
+    'messages_recents' => 'Messages de forums les plus récents',
72
+    'mots_clef' => 'Mot-clé',
73
+    'mots_clefs' => 'Mots-clés',
74
+    'mots_clefs_meme_groupe' => 'Mots-clés dans le même groupe',
75
+
76
+    // N
77
+    'navigation' => 'Navigation',
78
+    'nom' => 'Nom',
79
+    'nouveautes' => 'Les nouveautés',
80
+    'nouveautes_web' => 'Nouveautés sur le Web',
81
+    'nouveaux_articles' => 'Nouveaux articles',
82
+    'nouvelles_breves' => 'Nouvelles brèves',
83
+
84
+    // P
85
+    'page_precedente' => 'page précédente',
86
+    'page_suivante' => 'page suivante',
87
+    'par_auteur' => 'par ',
88
+    'participer_site' => 'Vous pouvez participer à la vie de ce site et proposer vos propres articles en vous inscrivant ci-dessous. Vous recevrez immédiatement un email vous indiquant vos codes d’accès à l’espace privé du site.',
89
+    'plan_site' => 'Plan du site',
90
+    'popularite' => 'Popularité',
91
+    'poster_message' => 'Poster un message',
92
+    'proposer_site' => 'Vous pouvez proposer un site à ajouter dans cette rubrique :',
93
+
94
+    // R
95
+    'repondre_article' => 'Répondre à cet article',
96
+    'repondre_breve' => 'Répondre à cette brève',
97
+    'resultats_recherche' => 'Résultats de la recherche',
98
+    'retour_debut_forums' => 'Retour au début des forums',
99
+    'rss_abonnement' => 'Copiez l’URL suivante dans votre agrégateur :',
100
+    'rss_abonnement_titre' => 'S’abonner',
101
+    'rss_abonnement_titre_page' => 'S’abonner à',
102
+    'rss_explication' => 'Un fil RSS recueille les informations de mise à jour d’un site. Il fournit le contenu des billets ou des commentaires ou un extrait de ceux-ci, ainsi qu’un lien vers les versions complètes et quelques autres informations. Ce fil a pour vocation d’être lu par un agrégateur RSS.',
103
+    'rss_explication_titre' => 'Qu’est-ce qu’un flux RSS ?',
104
+    'rubrique' => 'Rubrique',
105
+    'rubriques' => 'Rubriques',
106
+
107
+    // S
108
+    'signatures_petition' => 'Signatures',
109
+    'site_realise_avec_spip' => 'Site réalisé avec SPIP',
110
+    'sites_web' => 'Sites Web',
111
+    'sous_rubriques' => 'Sous-rubriques',
112
+    'spam' => 'Spam',
113
+    'suite' => 'suite',
114
+    'sur_web' => 'Sur le Web',
115
+    'syndiquer_rubrique' => 'Syndiquer cette rubrique',
116
+    'syndiquer_site' => 'Syndiquer tout le site',
117
+
118
+    // T
119
+    'texte_lettre_information' => 'Voici la lettre d’information du site',
120
+    'texte_lettre_information_2' => 'Cette lettre recense les nouveautés publiées depuis',
121
+
122
+    // V
123
+    'ver_imprimer' => 'Version à imprimer',
124
+    'voir_en_ligne' => 'Voir en ligne',
125
+    'voir_squelette' => 'voir le squelette de cette page'
126 126
 );
Please login to merge, or discard this patch.
ecrire/lang/public_pt.php 1 patch
Indentation   +115 added lines, -115 removed lines patch added patch discarded remove patch
@@ -4,123 +4,123 @@
 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
-	'accueil_site' => 'Página inicial do sítio',
14
-	'article' => 'Artigo',
15
-	'articles' => 'Artigos',
16
-	'articles_auteur' => 'Artigos deste autor',
17
-	'articles_populaires' => 'Artigos mais populares',
18
-	'articles_rubrique' => 'Artigos desta rubrica',
19
-	'aucun_article' => 'Nenhum artigo neste endereço',
20
-	'aucun_auteur' => 'Nenhum autor neste endereço',
21
-	'aucun_site' => 'Nenhum sítio neste endereço',
22
-	'aucune_breve' => 'Nenhuma notícia neste endereço',
23
-	'aucune_rubrique' => 'Nenhuma rubrica neste endereço',
24
-	'auteur' => 'Autor',
25
-	'autres' => 'Outros',
26
-	'autres_breves' => 'Outras notícias',
27
-	'autres_groupes_mots_clefs' => 'Outros grupos de palavras-chave',
28
-	'autres_sites' => 'Outros sítios',
29
-
30
-	// B
31
-	'bonjour' => 'Bom dia',
32
-
33
-	// C
34
-	'commenter_site' => 'Comentar este sítio',
35
-	'contact' => 'Contacto',
36
-	'copie_document_impossible' => 'Impossível copiar este documento',
37
-
38
-	// D
39
-	'date' => 'Data',
40
-	'dernier_ajout' => 'Última actualização',
41
-	'dernieres_breves' => 'Últimas notícias',
42
-	'derniers_articles' => 'Últimos artigos',
43
-	'derniers_commentaires' => 'Últimos comentários',
44
-	'derniers_messages_forum' => 'Últimas mensagens publicadas nos fóruns',
45
-
46
-	// E
47
-	'edition_mode_texte' => 'Edição apenas em modo de texto',
48
-	'en_reponse' => 'Em resposta a :',
49
-	'en_resume' => 'Em resumo',
50
-	'envoyer_message' => 'Enviar uma mensagem',
51
-	'espace_prive' => 'Área privada',
52
-
53
-	// F
54
-	'formats_acceptes' => 'Formatos válidos : @formats@.',
55
-
56
-	// H
57
-	'hierarchie_site' => 'Mapa do sítio',
58
-
59
-	// J
60
-	'jours' => 'dias',
61
-
62
-	// L
63
-	'lien_connecter' => 'Entrar',
64
-
65
-	// M
66
-	'meme_auteur' => 'Do mesmo autor',
67
-	'meme_rubrique' => 'Na mesma rubrica',
68
-	'memes_auteurs' => 'Dos mesmos autores',
69
-	'message' => 'Mensagem',
70
-	'messages_forum' => 'Mensagens de fórum',
71
-	'messages_recents' => 'Mensagens de fóruns mais recentes',
72
-	'mots_clef' => 'Palavra-chave',
73
-	'mots_clefs' => 'Palavras-chave',
74
-	'mots_clefs_meme_groupe' => 'Palavras-chave no mesmo grupo',
75
-
76
-	// N
77
-	'navigation' => 'Navegação',
78
-	'nom' => 'Nome',
79
-	'nouveautes' => 'As novidades',
80
-	'nouveautes_web' => 'Novidades na Web',
81
-	'nouveaux_articles' => 'Novos artigos',
82
-	'nouvelles_breves' => 'Novas notícias',
83
-
84
-	// P
85
-	'page_precedente' => 'página anterior',
86
-	'page_suivante' => 'página seguinte',
87
-	'par_auteur' => 'por',
88
-	'participer_site' => 'Pode participar na vida deste sítio e propor os seus próprios artigos, inscrevendo-se mais abaixo. Receberá imediatamente um email com os seus códigos de acesso ao espaço privado do sítio.',
89
-	'plan_site' => 'Mapa do sítio',
90
-	'popularite' => 'Popularidade',
91
-	'poster_message' => 'Enviar uma mensagem',
92
-	'proposer_site' => 'Você pode propor um sítio a adicionar a esta rubrica :',
93
-
94
-	// R
95
-	'repondre_article' => 'Comentar este artigo',
96
-	'repondre_breve' => 'Comentar esta notícia',
97
-	'resultats_recherche' => 'Resultados da pesquisa',
98
-	'retour_debut_forums' => 'Regresso ao início dos fóruns',
99
-	'rss_abonnement' => 'Copie o seguinte URL para o seu agregador de conteúdos:',
100
-	'rss_abonnement_titre' => 'Subscrever',
101
-	'rss_abonnement_titre_page' => 'Subscrever',
102
-	'rss_explication' => 'Um "feed" RSS recolhe informação actualizada a partir de um sítio. Fornece o conteúdo das publicações ou comentários ou um extracto dos mesmos, bem como um link para as versões completas e outras informações. Este "feed" destina-se a ser lido por um agregador RSS.',
103
-	'rss_explication_titre' => 'O que é um "feed RSS"?',
104
-	'rubrique' => 'Rubrica',
105
-	'rubriques' => 'Rubricas',
106
-
107
-	// S
108
-	'signatures_petition' => 'Assinaturas',
109
-	'site_realise_avec_spip' => 'Sítio realizado com SPIP',
110
-	'sites_web' => 'Sítios Web',
111
-	'sous_rubriques' => 'Sub-rubricas',
112
-	'spam' => 'Spam',
113
-	'suite' => 'continuação',
114
-	'sur_web' => 'Na Web',
115
-	'syndiquer_rubrique' => 'Subscrever esta rubrica',
116
-	'syndiquer_site' => 'Subscrever todo o sítio',
117
-
118
-	// T
119
-	'texte_lettre_information' => 'Eis a carta de informação do sítio',
120
-	'texte_lettre_information_2' => 'Este sítio contém novos itens publicados desde',
121
-
122
-	// V
123
-	'ver_imprimer' => 'Versão para imprimir',
124
-	'voir_en_ligne' => 'Ver online',
125
-	'voir_squelette' => 'exibir o modelo desta página'
12
+    // A
13
+    'accueil_site' => 'Página inicial do sítio',
14
+    'article' => 'Artigo',
15
+    'articles' => 'Artigos',
16
+    'articles_auteur' => 'Artigos deste autor',
17
+    'articles_populaires' => 'Artigos mais populares',
18
+    'articles_rubrique' => 'Artigos desta rubrica',
19
+    'aucun_article' => 'Nenhum artigo neste endereço',
20
+    'aucun_auteur' => 'Nenhum autor neste endereço',
21
+    'aucun_site' => 'Nenhum sítio neste endereço',
22
+    'aucune_breve' => 'Nenhuma notícia neste endereço',
23
+    'aucune_rubrique' => 'Nenhuma rubrica neste endereço',
24
+    'auteur' => 'Autor',
25
+    'autres' => 'Outros',
26
+    'autres_breves' => 'Outras notícias',
27
+    'autres_groupes_mots_clefs' => 'Outros grupos de palavras-chave',
28
+    'autres_sites' => 'Outros sítios',
29
+
30
+    // B
31
+    'bonjour' => 'Bom dia',
32
+
33
+    // C
34
+    'commenter_site' => 'Comentar este sítio',
35
+    'contact' => 'Contacto',
36
+    'copie_document_impossible' => 'Impossível copiar este documento',
37
+
38
+    // D
39
+    'date' => 'Data',
40
+    'dernier_ajout' => 'Última actualização',
41
+    'dernieres_breves' => 'Últimas notícias',
42
+    'derniers_articles' => 'Últimos artigos',
43
+    'derniers_commentaires' => 'Últimos comentários',
44
+    'derniers_messages_forum' => 'Últimas mensagens publicadas nos fóruns',
45
+
46
+    // E
47
+    'edition_mode_texte' => 'Edição apenas em modo de texto',
48
+    'en_reponse' => 'Em resposta a :',
49
+    'en_resume' => 'Em resumo',
50
+    'envoyer_message' => 'Enviar uma mensagem',
51
+    'espace_prive' => 'Área privada',
52
+
53
+    // F
54
+    'formats_acceptes' => 'Formatos válidos : @formats@.',
55
+
56
+    // H
57
+    'hierarchie_site' => 'Mapa do sítio',
58
+
59
+    // J
60
+    'jours' => 'dias',
61
+
62
+    // L
63
+    'lien_connecter' => 'Entrar',
64
+
65
+    // M
66
+    'meme_auteur' => 'Do mesmo autor',
67
+    'meme_rubrique' => 'Na mesma rubrica',
68
+    'memes_auteurs' => 'Dos mesmos autores',
69
+    'message' => 'Mensagem',
70
+    'messages_forum' => 'Mensagens de fórum',
71
+    'messages_recents' => 'Mensagens de fóruns mais recentes',
72
+    'mots_clef' => 'Palavra-chave',
73
+    'mots_clefs' => 'Palavras-chave',
74
+    'mots_clefs_meme_groupe' => 'Palavras-chave no mesmo grupo',
75
+
76
+    // N
77
+    'navigation' => 'Navegação',
78
+    'nom' => 'Nome',
79
+    'nouveautes' => 'As novidades',
80
+    'nouveautes_web' => 'Novidades na Web',
81
+    'nouveaux_articles' => 'Novos artigos',
82
+    'nouvelles_breves' => 'Novas notícias',
83
+
84
+    // P
85
+    'page_precedente' => 'página anterior',
86
+    'page_suivante' => 'página seguinte',
87
+    'par_auteur' => 'por',
88
+    'participer_site' => 'Pode participar na vida deste sítio e propor os seus próprios artigos, inscrevendo-se mais abaixo. Receberá imediatamente um email com os seus códigos de acesso ao espaço privado do sítio.',
89
+    'plan_site' => 'Mapa do sítio',
90
+    'popularite' => 'Popularidade',
91
+    'poster_message' => 'Enviar uma mensagem',
92
+    'proposer_site' => 'Você pode propor um sítio a adicionar a esta rubrica :',
93
+
94
+    // R
95
+    'repondre_article' => 'Comentar este artigo',
96
+    'repondre_breve' => 'Comentar esta notícia',
97
+    'resultats_recherche' => 'Resultados da pesquisa',
98
+    'retour_debut_forums' => 'Regresso ao início dos fóruns',
99
+    'rss_abonnement' => 'Copie o seguinte URL para o seu agregador de conteúdos:',
100
+    'rss_abonnement_titre' => 'Subscrever',
101
+    'rss_abonnement_titre_page' => 'Subscrever',
102
+    'rss_explication' => 'Um "feed" RSS recolhe informação actualizada a partir de um sítio. Fornece o conteúdo das publicações ou comentários ou um extracto dos mesmos, bem como um link para as versões completas e outras informações. Este "feed" destina-se a ser lido por um agregador RSS.',
103
+    'rss_explication_titre' => 'O que é um "feed RSS"?',
104
+    'rubrique' => 'Rubrica',
105
+    'rubriques' => 'Rubricas',
106
+
107
+    // S
108
+    'signatures_petition' => 'Assinaturas',
109
+    'site_realise_avec_spip' => 'Sítio realizado com SPIP',
110
+    'sites_web' => 'Sítios Web',
111
+    'sous_rubriques' => 'Sub-rubricas',
112
+    'spam' => 'Spam',
113
+    'suite' => 'continuação',
114
+    'sur_web' => 'Na Web',
115
+    'syndiquer_rubrique' => 'Subscrever esta rubrica',
116
+    'syndiquer_site' => 'Subscrever todo o sítio',
117
+
118
+    // T
119
+    'texte_lettre_information' => 'Eis a carta de informação do sítio',
120
+    'texte_lettre_information_2' => 'Este sítio contém novos itens publicados desde',
121
+
122
+    // V
123
+    'ver_imprimer' => 'Versão para imprimir',
124
+    'voir_en_ligne' => 'Ver online',
125
+    'voir_squelette' => 'exibir o modelo desta página'
126 126
 );
Please login to merge, or discard this patch.
prive/formulaires/configurer_ecran_connexion.php 1 patch
Indentation   +74 added lines, -74 removed lines patch added patch discarded remove patch
@@ -1,94 +1,94 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 function formulaires_configurer_ecran_connexion_data(): array {
4
-	return [
5
-		'couleur_defaut' => '#db1762',
6
-		'img_fond' => _DIR_IMG . 'spip_fond_login.jpg',
7
-	];
4
+    return [
5
+        'couleur_defaut' => '#db1762',
6
+        'img_fond' => _DIR_IMG . 'spip_fond_login.jpg',
7
+    ];
8 8
 }
9 9
 
10 10
 function formulaires_configurer_ecran_connexion_charger_dist() {
11
-	include_spip('inc/config');
12
-	include_spip('inc/autoriser');
11
+    include_spip('inc/config');
12
+    include_spip('inc/autoriser');
13 13
 
14
-	$data = formulaires_configurer_ecran_connexion_data();
14
+    $data = formulaires_configurer_ecran_connexion_data();
15 15
 
16
-	$valeurs = [
17
-		'couleur_login' => lire_config('couleur_login', $data['couleur_defaut']),
18
-		'couleur_defaut_login' => $data['couleur_defaut'],
19
-		'upload_image_fond_login' => '',
20
-	];
16
+    $valeurs = [
17
+        'couleur_login' => lire_config('couleur_login', $data['couleur_defaut']),
18
+        'couleur_defaut_login' => $data['couleur_defaut'],
19
+        'upload_image_fond_login' => '',
20
+    ];
21 21
 
22
-	if (file_exists($data['img_fond'])) {
23
-		$valeurs['src_img'] = $data['img_fond'];
24
-	}
22
+    if (file_exists($data['img_fond'])) {
23
+        $valeurs['src_img'] = $data['img_fond'];
24
+    }
25 25
 
26
-	return $valeurs;
26
+    return $valeurs;
27 27
 }
28 28
 
29 29
 
30 30
 function formulaires_configurer_ecran_connexion_verifier_dist() {
31
-	$erreurs = [];
32
-
33
-	if (_request('supprimer_image_fond_login')) {
34
-		// rien à tester
35
-	}
36
-
37
-	elseif (_request('supprimer_couleur_login')) {
38
-		// rien à tester
39
-	}
40
-
41
-	elseif (!empty($_FILES['upload_image_fond_login'])) {
42
-		$file = $_FILES['upload_image_fond_login'];
43
-		include_spip('inc/documents');
44
-		$extension = pathinfo($file['name'], PATHINFO_EXTENSION);
45
-		$extension = corriger_extension(strtolower($extension));
46
-		if (!in_array($extension, ['jpg'])) {
47
-			$erreurs['upload_image_fond_login'] = _T('erreur_type_fichier');
48
-		}
49
-	}
50
-
51
-	return $erreurs;
31
+    $erreurs = [];
32
+
33
+    if (_request('supprimer_image_fond_login')) {
34
+        // rien à tester
35
+    }
36
+
37
+    elseif (_request('supprimer_couleur_login')) {
38
+        // rien à tester
39
+    }
40
+
41
+    elseif (!empty($_FILES['upload_image_fond_login'])) {
42
+        $file = $_FILES['upload_image_fond_login'];
43
+        include_spip('inc/documents');
44
+        $extension = pathinfo($file['name'], PATHINFO_EXTENSION);
45
+        $extension = corriger_extension(strtolower($extension));
46
+        if (!in_array($extension, ['jpg'])) {
47
+            $erreurs['upload_image_fond_login'] = _T('erreur_type_fichier');
48
+        }
49
+    }
50
+
51
+    return $erreurs;
52 52
 }
53 53
 
54 54
 
55 55
 function formulaires_configurer_ecran_connexion_traiter_dist() {
56 56
 
57
-	$retours = [
58
-		'message_ok' => _T('config_info_enregistree'),
59
-		'editable' => true,
60
-	];
61
-
62
-	include_spip('inc/config');
63
-	$data = formulaires_configurer_ecran_connexion_data();
64
-	$dest = $data['img_fond'];
65
-
66
-	if (_request('couleur_login')) {
67
-		$color = _request('couleur_login');
68
-		if ($color === $data['couleur_defaut']) {
69
-			effacer_config('couleur_login');
70
-		} else {
71
-			ecrire_config('couleur_login', $color);
72
-		}
73
-	}
74
-
75
-	if (_request('supprimer_image_fond_login')) {
76
-		@unlink($dest);
77
-	}
78
-
79
-	elseif (_request('supprimer_couleur_login')) {
80
-		effacer_config('couleur_login');
81
-		set_request('couleur_login', null);
82
-	}
83
-
84
-	elseif (!empty($_FILES['upload_image_fond_login'])) {
85
-		$file = $_FILES['upload_image_fond_login'];
86
-		include_spip('inc/documents');
87
-		deplacer_fichier_upload($file['tmp_name'], $dest);
88
-	}
89
-
90
-	include_spip('inc/invalideur');
91
-	suivre_invalideur('1'); # tout effacer
92
-
93
-	return $retours;
57
+    $retours = [
58
+        'message_ok' => _T('config_info_enregistree'),
59
+        'editable' => true,
60
+    ];
61
+
62
+    include_spip('inc/config');
63
+    $data = formulaires_configurer_ecran_connexion_data();
64
+    $dest = $data['img_fond'];
65
+
66
+    if (_request('couleur_login')) {
67
+        $color = _request('couleur_login');
68
+        if ($color === $data['couleur_defaut']) {
69
+            effacer_config('couleur_login');
70
+        } else {
71
+            ecrire_config('couleur_login', $color);
72
+        }
73
+    }
74
+
75
+    if (_request('supprimer_image_fond_login')) {
76
+        @unlink($dest);
77
+    }
78
+
79
+    elseif (_request('supprimer_couleur_login')) {
80
+        effacer_config('couleur_login');
81
+        set_request('couleur_login', null);
82
+    }
83
+
84
+    elseif (!empty($_FILES['upload_image_fond_login'])) {
85
+        $file = $_FILES['upload_image_fond_login'];
86
+        include_spip('inc/documents');
87
+        deplacer_fichier_upload($file['tmp_name'], $dest);
88
+    }
89
+
90
+    include_spip('inc/invalideur');
91
+    suivre_invalideur('1'); # tout effacer
92
+
93
+    return $retours;
94 94
 }
Please login to merge, or discard this patch.
ecrire/public.php 1 patch
Indentation   +188 added lines, -188 removed lines patch added patch discarded remove patch
@@ -21,193 +21,193 @@
 block discarded – undo
21 21
 // par souci de compatiilite).
22 22
 
23 23
 if (isset($GLOBALS['_INC_PUBLIC']) and $GLOBALS['_INC_PUBLIC']) {
24
-	echo recuperer_fond($fond, $contexte_inclus, [], _request('connect') ?? '');
24
+    echo recuperer_fond($fond, $contexte_inclus, [], _request('connect') ?? '');
25 25
 } else {
26
-	$GLOBALS['_INC_PUBLIC'] = 1;
27
-	define('_PIPELINE_SUFFIX', test_espace_prive() ? '_prive' : '');
28
-
29
-	// Faut-il initialiser SPIP ? (oui dans le cas general)
30
-	if (!defined('_DIR_RESTREINT_ABS')) {
31
-		if (
32
-			defined('_DIR_RESTREINT')
33
-			and @file_exists(_ROOT_RESTREINT . 'inc_version.php')
34
-		) {
35
-			include_once _ROOT_RESTREINT . 'inc_version.php';
36
-		} else {
37
-			die('inc_version absent ?');
38
-		}
39
-	} // $fond defini dans le fichier d'appel ?
40
-
41
-	else {
42
-		if (isset($fond) and !_request('fond')) {
43
-		} // fond demande dans l'url par page=xxxx ?
44
-		else {
45
-			if (isset($_GET[_SPIP_PAGE])) {
46
-				$fond = (string)$_GET[_SPIP_PAGE];
47
-
48
-				// Securite
49
-				if (
50
-					strstr($fond, '/')
51
-					and !(
52
-						isset($GLOBALS['visiteur_session']) // pour eviter d'evaluer la suite pour les anonymes
53
-						and include_spip('inc/autoriser')
54
-						and autoriser('webmestre'))
55
-				) {
56
-					include_spip('inc/minipres');
57
-					echo minipres();
58
-					exit;
59
-				}
60
-				// l'argument Page a priorite sur l'argument action
61
-				// le cas se presente a cause des RewriteRule d'Apache
62
-				// qui permettent d'ajouter un argument dans la QueryString
63
-				// mais pas d'en retirer un en conservant les autres.
64
-				if (isset($_GET['action']) and $_GET['action'] === $fond) {
65
-					unset($_GET['action']);
66
-				}
67
-				# sinon, fond par defaut
68
-			} else {
69
-				// sinon fond par defaut (cf. assembler.php)
70
-				$fond = pipeline('detecter_fond_par_defaut', '');
71
-			}
72
-		}
73
-	}
74
-
75
-	$tableau_des_temps = [];
76
-
77
-	// Particularites de certains squelettes
78
-	if ($fond == 'login') {
79
-		$forcer_lang = true;
80
-	}
81
-
82
-	if (
83
-		isset($forcer_lang) and $forcer_lang and ($forcer_lang !== 'non')
84
-		and !_request('action')
85
-		and $_SERVER['REQUEST_METHOD'] != 'POST'
86
-	) {
87
-		include_spip('inc/lang');
88
-		verifier_lang_url();
89
-	}
90
-
91
-	$lang = !isset($_GET['lang']) ? '' : lang_select($_GET['lang']);
92
-
93
-	// Charger l'aiguilleur des traitements derogatoires
94
-	// (action en base SQL, formulaires CVT, AJax)
95
-	if (_request('action') or _request('var_ajax') or _request('formulaire_action')) {
96
-		include_spip('public/aiguiller');
97
-		if (
98
-			// cas des appels actions ?action=xxx
99
-			traiter_appels_actions()
100
-			or
101
-			// cas des hits ajax sur les inclusions ajax
102
-			traiter_appels_inclusions_ajax()
103
-			or
104
-			// cas des formulaires charger/verifier/traiter
105
-			traiter_formulaires_dynamiques()
106
-		) {
107
-			// lancer les taches sur affichage final, comme le cron
108
-			// mais sans rien afficher
109
-			$GLOBALS['html'] = false; // ne rien afficher
110
-			pipeline('affichage_final' . _PIPELINE_SUFFIX, '');
111
-			exit; // le hit est fini !
112
-		}
113
-	}
114
-
115
-	// Il y a du texte a produire, charger le metteur en page
116
-	include_spip('public/assembler');
117
-	$page = assembler($fond, _request('connect') ?? '');
118
-
119
-	if (isset($page['status'])) {
120
-		include_spip('inc/headers');
121
-		http_response_code($page['status']);
122
-	}
123
-
124
-	// Content-Type ?
125
-	if (!isset($page['entetes']['Content-Type'])) {
126
-		$charset = $GLOBALS['meta']['charset'] ?? 'utf-8';
127
-		$page['entetes']['Content-Type'] = 'text/html; charset=' . $charset;
128
-		$html = true;
129
-	} else {
130
-		$html = preg_match(',^\s*text/html,', $page['entetes']['Content-Type']);
131
-	}
132
-
133
-	// Tester si on est admin et il y a des choses supplementaires a dire
134
-	// type tableau pour y mettre des choses au besoin.
135
-	$debug = ((_request('var_mode') == 'debug') or $tableau_des_temps) ? [1] : [];
136
-
137
-	// affiche-t-on les boutons d'administration ? voir f_admin()
138
-	$affiche_boutons_admin = ($html and (
139
-			(isset($_COOKIE['spip_admin']) and (!isset($flag_preserver) or !$flag_preserver))
140
-			or ($debug and include_spip('inc/autoriser') and autoriser('debug'))
141
-			or (defined('_VAR_PREVIEW') and _VAR_PREVIEW)
142
-		));
143
-
144
-	if ($affiche_boutons_admin) {
145
-		include_spip('balise/formulaire_admin');
146
-	}
147
-
148
-
149
-	// Execution de la page calculee
150
-
151
-	// traitements sur les entetes avant envoi
152
-	// peut servir pour le plugin de stats
153
-	$page['entetes'] = pipeline('affichage_entetes_final' . _PIPELINE_SUFFIX, $page['entetes']);
154
-
155
-
156
-	// eval $page et affecte $res
157
-	include _ROOT_RESTREINT . 'public/evaluer_page.php';
158
-	envoyer_entetes($page['entetes']);
159
-	if ($res === false) {
160
-		include_spip('inc/autoriser');
161
-		$err = _T('zbug_erreur_execution_page');
162
-		if (autoriser('webmestre')) {
163
-			$err .= "\n<hr />\n"
164
-				. highlight_string($page['codephp'], true)
165
-				. "\n<hr />\n";
166
-		}
167
-		$msg = [$err];
168
-		erreur_squelette($msg);
169
-	}
170
-
171
-	//
172
-	// Envoyer le resultat apres post-traitements
173
-	//
174
-	// (c'est ici qu'on fait var_recherche, validation, boutons d'admin,
175
-	// cf. public/assembler.php)
176
-	echo pipeline('affichage_final' . _PIPELINE_SUFFIX, $page['texte']);
177
-
178
-	if ($lang) {
179
-		lang_select();
180
-	}
181
-	// l'affichage de la page a pu lever des erreurs (inclusion manquante)
182
-	// il faut tester a nouveau
183
-	$debug = ((_request('var_mode') == 'debug') or $tableau_des_temps) ? [1] : [];
184
-
185
-	// Appel au debusqueur en cas d'erreurs ou de demande de trace
186
-	// at last
187
-	if ($debug) {
188
-		// en cas d'erreur, retester l'affichage
189
-		if ($html and ($affiche_boutons_admin or $debug)) {
190
-			$var_mode_affiche = _request('var_mode_affiche');
191
-			$var_mode_objet = _request('var_mode_objet');
192
-			$GLOBALS['debug_objets'][$var_mode_affiche][$var_mode_objet . 'tout'] = ($var_mode_affiche == 'validation' ? $page['texte'] : '');
193
-			echo erreur_squelette(false);
194
-		}
195
-	} else {
196
-		if (
197
-			isset($GLOBALS['meta']['date_prochain_postdate'])
198
-			and $GLOBALS['meta']['date_prochain_postdate'] <= time()
199
-		) {
200
-			include_spip('inc/rubriques');
201
-			calculer_prochain_postdate(true);
202
-		}
203
-
204
-		// Effectuer une tache de fond ?
205
-		// si _DIRECT_CRON_FORCE est present, on force l'appel
206
-		if (defined('_DIRECT_CRON_FORCE')) {
207
-			cron();
208
-		}
209
-
210
-		// sauver le cache chemin si necessaire
211
-		save_path_cache();
212
-	}
26
+    $GLOBALS['_INC_PUBLIC'] = 1;
27
+    define('_PIPELINE_SUFFIX', test_espace_prive() ? '_prive' : '');
28
+
29
+    // Faut-il initialiser SPIP ? (oui dans le cas general)
30
+    if (!defined('_DIR_RESTREINT_ABS')) {
31
+        if (
32
+            defined('_DIR_RESTREINT')
33
+            and @file_exists(_ROOT_RESTREINT . 'inc_version.php')
34
+        ) {
35
+            include_once _ROOT_RESTREINT . 'inc_version.php';
36
+        } else {
37
+            die('inc_version absent ?');
38
+        }
39
+    } // $fond defini dans le fichier d'appel ?
40
+
41
+    else {
42
+        if (isset($fond) and !_request('fond')) {
43
+        } // fond demande dans l'url par page=xxxx ?
44
+        else {
45
+            if (isset($_GET[_SPIP_PAGE])) {
46
+                $fond = (string)$_GET[_SPIP_PAGE];
47
+
48
+                // Securite
49
+                if (
50
+                    strstr($fond, '/')
51
+                    and !(
52
+                        isset($GLOBALS['visiteur_session']) // pour eviter d'evaluer la suite pour les anonymes
53
+                        and include_spip('inc/autoriser')
54
+                        and autoriser('webmestre'))
55
+                ) {
56
+                    include_spip('inc/minipres');
57
+                    echo minipres();
58
+                    exit;
59
+                }
60
+                // l'argument Page a priorite sur l'argument action
61
+                // le cas se presente a cause des RewriteRule d'Apache
62
+                // qui permettent d'ajouter un argument dans la QueryString
63
+                // mais pas d'en retirer un en conservant les autres.
64
+                if (isset($_GET['action']) and $_GET['action'] === $fond) {
65
+                    unset($_GET['action']);
66
+                }
67
+                # sinon, fond par defaut
68
+            } else {
69
+                // sinon fond par defaut (cf. assembler.php)
70
+                $fond = pipeline('detecter_fond_par_defaut', '');
71
+            }
72
+        }
73
+    }
74
+
75
+    $tableau_des_temps = [];
76
+
77
+    // Particularites de certains squelettes
78
+    if ($fond == 'login') {
79
+        $forcer_lang = true;
80
+    }
81
+
82
+    if (
83
+        isset($forcer_lang) and $forcer_lang and ($forcer_lang !== 'non')
84
+        and !_request('action')
85
+        and $_SERVER['REQUEST_METHOD'] != 'POST'
86
+    ) {
87
+        include_spip('inc/lang');
88
+        verifier_lang_url();
89
+    }
90
+
91
+    $lang = !isset($_GET['lang']) ? '' : lang_select($_GET['lang']);
92
+
93
+    // Charger l'aiguilleur des traitements derogatoires
94
+    // (action en base SQL, formulaires CVT, AJax)
95
+    if (_request('action') or _request('var_ajax') or _request('formulaire_action')) {
96
+        include_spip('public/aiguiller');
97
+        if (
98
+            // cas des appels actions ?action=xxx
99
+            traiter_appels_actions()
100
+            or
101
+            // cas des hits ajax sur les inclusions ajax
102
+            traiter_appels_inclusions_ajax()
103
+            or
104
+            // cas des formulaires charger/verifier/traiter
105
+            traiter_formulaires_dynamiques()
106
+        ) {
107
+            // lancer les taches sur affichage final, comme le cron
108
+            // mais sans rien afficher
109
+            $GLOBALS['html'] = false; // ne rien afficher
110
+            pipeline('affichage_final' . _PIPELINE_SUFFIX, '');
111
+            exit; // le hit est fini !
112
+        }
113
+    }
114
+
115
+    // Il y a du texte a produire, charger le metteur en page
116
+    include_spip('public/assembler');
117
+    $page = assembler($fond, _request('connect') ?? '');
118
+
119
+    if (isset($page['status'])) {
120
+        include_spip('inc/headers');
121
+        http_response_code($page['status']);
122
+    }
123
+
124
+    // Content-Type ?
125
+    if (!isset($page['entetes']['Content-Type'])) {
126
+        $charset = $GLOBALS['meta']['charset'] ?? 'utf-8';
127
+        $page['entetes']['Content-Type'] = 'text/html; charset=' . $charset;
128
+        $html = true;
129
+    } else {
130
+        $html = preg_match(',^\s*text/html,', $page['entetes']['Content-Type']);
131
+    }
132
+
133
+    // Tester si on est admin et il y a des choses supplementaires a dire
134
+    // type tableau pour y mettre des choses au besoin.
135
+    $debug = ((_request('var_mode') == 'debug') or $tableau_des_temps) ? [1] : [];
136
+
137
+    // affiche-t-on les boutons d'administration ? voir f_admin()
138
+    $affiche_boutons_admin = ($html and (
139
+            (isset($_COOKIE['spip_admin']) and (!isset($flag_preserver) or !$flag_preserver))
140
+            or ($debug and include_spip('inc/autoriser') and autoriser('debug'))
141
+            or (defined('_VAR_PREVIEW') and _VAR_PREVIEW)
142
+        ));
143
+
144
+    if ($affiche_boutons_admin) {
145
+        include_spip('balise/formulaire_admin');
146
+    }
147
+
148
+
149
+    // Execution de la page calculee
150
+
151
+    // traitements sur les entetes avant envoi
152
+    // peut servir pour le plugin de stats
153
+    $page['entetes'] = pipeline('affichage_entetes_final' . _PIPELINE_SUFFIX, $page['entetes']);
154
+
155
+
156
+    // eval $page et affecte $res
157
+    include _ROOT_RESTREINT . 'public/evaluer_page.php';
158
+    envoyer_entetes($page['entetes']);
159
+    if ($res === false) {
160
+        include_spip('inc/autoriser');
161
+        $err = _T('zbug_erreur_execution_page');
162
+        if (autoriser('webmestre')) {
163
+            $err .= "\n<hr />\n"
164
+                . highlight_string($page['codephp'], true)
165
+                . "\n<hr />\n";
166
+        }
167
+        $msg = [$err];
168
+        erreur_squelette($msg);
169
+    }
170
+
171
+    //
172
+    // Envoyer le resultat apres post-traitements
173
+    //
174
+    // (c'est ici qu'on fait var_recherche, validation, boutons d'admin,
175
+    // cf. public/assembler.php)
176
+    echo pipeline('affichage_final' . _PIPELINE_SUFFIX, $page['texte']);
177
+
178
+    if ($lang) {
179
+        lang_select();
180
+    }
181
+    // l'affichage de la page a pu lever des erreurs (inclusion manquante)
182
+    // il faut tester a nouveau
183
+    $debug = ((_request('var_mode') == 'debug') or $tableau_des_temps) ? [1] : [];
184
+
185
+    // Appel au debusqueur en cas d'erreurs ou de demande de trace
186
+    // at last
187
+    if ($debug) {
188
+        // en cas d'erreur, retester l'affichage
189
+        if ($html and ($affiche_boutons_admin or $debug)) {
190
+            $var_mode_affiche = _request('var_mode_affiche');
191
+            $var_mode_objet = _request('var_mode_objet');
192
+            $GLOBALS['debug_objets'][$var_mode_affiche][$var_mode_objet . 'tout'] = ($var_mode_affiche == 'validation' ? $page['texte'] : '');
193
+            echo erreur_squelette(false);
194
+        }
195
+    } else {
196
+        if (
197
+            isset($GLOBALS['meta']['date_prochain_postdate'])
198
+            and $GLOBALS['meta']['date_prochain_postdate'] <= time()
199
+        ) {
200
+            include_spip('inc/rubriques');
201
+            calculer_prochain_postdate(true);
202
+        }
203
+
204
+        // Effectuer une tache de fond ?
205
+        // si _DIRECT_CRON_FORCE est present, on force l'appel
206
+        if (defined('_DIRECT_CRON_FORCE')) {
207
+            cron();
208
+        }
209
+
210
+        // sauver le cache chemin si necessaire
211
+        save_path_cache();
212
+    }
213 213
 }
Please login to merge, or discard this patch.
ecrire/plugins/get_infos.php 1 patch
Indentation   +101 added lines, -101 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
 /**
@@ -33,110 +33,110 @@  discard block
 block discarded – undo
33 33
  * @return array
34 34
  */
35 35
 function plugins_get_infos_dist($plug = false, $reload = false, $dir = _DIR_PLUGINS, $clean_old = false) {
36
-	$contenu = null;
37
-	$res = null;
38
-	static $cache = '';
39
-	static $filecache = '';
40
-
41
-	if ($cache === '') {
42
-		$filecache = _DIR_TMP . 'plugin_xml_cache.gz';
43
-		if (is_file($filecache)) {
44
-			lire_fichier($filecache, $contenu);
45
-			$cache = unserialize($contenu);
46
-		}
47
-		if (!is_array($cache)) {
48
-			$cache = [];
49
-		}
50
-	}
51
-
52
-	if (defined('_VAR_MODE') and _VAR_MODE == 'recalcul') {
53
-		$reload = true;
54
-	}
55
-
56
-	if ($plug === false) {
57
-		ecrire_fichier($filecache, serialize($cache));
58
-
59
-		return $cache;
60
-	} elseif (is_string($plug)) {
61
-		$res = plugins_get_infos_un($plug, $reload, $dir, $cache);
62
-	} elseif (is_array($plug)) {
63
-		$res = false;
64
-		if (!$reload) {
65
-			$reload = -1;
66
-		}
67
-		foreach ($plug as $nom) {
68
-			$res |= plugins_get_infos_un($nom, $reload, $dir, $cache);
69
-		}
70
-
71
-		// Nettoyer le cache des vieux plugins qui ne sont plus la
72
-		if ($clean_old and isset($cache[$dir]) and is_countable($cache[$dir]) ? count($cache[$dir]) : 0) {
73
-			foreach (array_keys($cache[$dir]) as $p) {
74
-				if (!in_array($p, $plug)) {
75
-					unset($cache[$dir][$p]);
76
-				}
77
-			}
78
-		}
79
-	}
80
-	if ($res) {
81
-		ecrire_fichier($filecache, serialize($cache));
82
-	}
83
-	if (!isset($cache[$dir])) {
84
-		return [];
85
-	}
86
-	if (is_string($plug)) {
87
-		return $cache[$dir][$plug] ?? [];
88
-	} else {
89
-		return $cache[$dir];
90
-	}
36
+    $contenu = null;
37
+    $res = null;
38
+    static $cache = '';
39
+    static $filecache = '';
40
+
41
+    if ($cache === '') {
42
+        $filecache = _DIR_TMP . 'plugin_xml_cache.gz';
43
+        if (is_file($filecache)) {
44
+            lire_fichier($filecache, $contenu);
45
+            $cache = unserialize($contenu);
46
+        }
47
+        if (!is_array($cache)) {
48
+            $cache = [];
49
+        }
50
+    }
51
+
52
+    if (defined('_VAR_MODE') and _VAR_MODE == 'recalcul') {
53
+        $reload = true;
54
+    }
55
+
56
+    if ($plug === false) {
57
+        ecrire_fichier($filecache, serialize($cache));
58
+
59
+        return $cache;
60
+    } elseif (is_string($plug)) {
61
+        $res = plugins_get_infos_un($plug, $reload, $dir, $cache);
62
+    } elseif (is_array($plug)) {
63
+        $res = false;
64
+        if (!$reload) {
65
+            $reload = -1;
66
+        }
67
+        foreach ($plug as $nom) {
68
+            $res |= plugins_get_infos_un($nom, $reload, $dir, $cache);
69
+        }
70
+
71
+        // Nettoyer le cache des vieux plugins qui ne sont plus la
72
+        if ($clean_old and isset($cache[$dir]) and is_countable($cache[$dir]) ? count($cache[$dir]) : 0) {
73
+            foreach (array_keys($cache[$dir]) as $p) {
74
+                if (!in_array($p, $plug)) {
75
+                    unset($cache[$dir][$p]);
76
+                }
77
+            }
78
+        }
79
+    }
80
+    if ($res) {
81
+        ecrire_fichier($filecache, serialize($cache));
82
+    }
83
+    if (!isset($cache[$dir])) {
84
+        return [];
85
+    }
86
+    if (is_string($plug)) {
87
+        return $cache[$dir][$plug] ?? [];
88
+    } else {
89
+        return $cache[$dir];
90
+    }
91 91
 }
92 92
 
93 93
 
94 94
 function plugins_get_infos_un($plug, $reload, $dir, &$cache) {
95
-	if (!is_readable($file = "$dir$plug/paquet.xml")) {
96
-		return false;
97
-	}
98
-	$time = intval(@filemtime($file));
99
-	if ($time < 0) {
100
-		return false;
101
-	}
102
-	$md5 = md5_file($file);
103
-
104
-	$pcache = $cache[$dir][$plug] ?? ['filemtime' => 0, 'md5_file' => ''];
105
-
106
-	// si le cache est valide
107
-	if (
108
-		(intval($reload) <= 0)
109
-		and ($time > 0)
110
-		and ($time <= $pcache['filemtime'])
111
-		and $md5 == $pcache['md5_file']
112
-	) {
113
-		return false;
114
-	}
115
-
116
-	// si on arrive pas a lire le fichier, se contenter du cache
117
-	if (!($texte = spip_file_get_contents($file))) {
118
-		return false;
119
-	}
120
-
121
-	$f = charger_fonction('infos_paquet', 'plugins');
122
-	$ret = $f($texte, $plug, $dir);
123
-	$ret['filemtime'] = $time;
124
-	$ret['md5_file'] = $md5;
125
-	// Si on lit le paquet.xml de SPIP, on rajoute un procure php afin que les plugins puissent
126
-	// utiliser un necessite php. SPIP procure donc la version php courante du serveur.
127
-	// chaque librairie php est aussi procurée, par exemple 'php:curl'.
128
-	if (isset($ret['prefix']) and $ret['prefix'] == 'spip') {
129
-		$ret['procure']['php'] = ['nom' => 'php', 'version' => phpversion()];
130
-		foreach (get_loaded_extensions() as $ext) {
131
-			$ret['procure']['php:' . $ext] = ['nom' => 'php:' . $ext, 'version' => phpversion($ext)];
132
-		}
133
-	}
134
-	$diff = ($ret != $pcache);
135
-
136
-	if ($diff) {
137
-		$cache[$dir][$plug] = $ret;
95
+    if (!is_readable($file = "$dir$plug/paquet.xml")) {
96
+        return false;
97
+    }
98
+    $time = intval(@filemtime($file));
99
+    if ($time < 0) {
100
+        return false;
101
+    }
102
+    $md5 = md5_file($file);
103
+
104
+    $pcache = $cache[$dir][$plug] ?? ['filemtime' => 0, 'md5_file' => ''];
105
+
106
+    // si le cache est valide
107
+    if (
108
+        (intval($reload) <= 0)
109
+        and ($time > 0)
110
+        and ($time <= $pcache['filemtime'])
111
+        and $md5 == $pcache['md5_file']
112
+    ) {
113
+        return false;
114
+    }
115
+
116
+    // si on arrive pas a lire le fichier, se contenter du cache
117
+    if (!($texte = spip_file_get_contents($file))) {
118
+        return false;
119
+    }
120
+
121
+    $f = charger_fonction('infos_paquet', 'plugins');
122
+    $ret = $f($texte, $plug, $dir);
123
+    $ret['filemtime'] = $time;
124
+    $ret['md5_file'] = $md5;
125
+    // Si on lit le paquet.xml de SPIP, on rajoute un procure php afin que les plugins puissent
126
+    // utiliser un necessite php. SPIP procure donc la version php courante du serveur.
127
+    // chaque librairie php est aussi procurée, par exemple 'php:curl'.
128
+    if (isset($ret['prefix']) and $ret['prefix'] == 'spip') {
129
+        $ret['procure']['php'] = ['nom' => 'php', 'version' => phpversion()];
130
+        foreach (get_loaded_extensions() as $ext) {
131
+            $ret['procure']['php:' . $ext] = ['nom' => 'php:' . $ext, 'version' => phpversion($ext)];
132
+        }
133
+    }
134
+    $diff = ($ret != $pcache);
135
+
136
+    if ($diff) {
137
+        $cache[$dir][$plug] = $ret;
138 138
 #       echo count($cache[$dir]), $dir,$plug, " $reloadc<br>";
139
-	}
139
+    }
140 140
 
141
-	return $diff;
141
+    return $diff;
142 142
 }
Please login to merge, or discard this patch.
ecrire/plugins/extraire_pipelines.php 1 patch
Indentation   +24 added lines, -24 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
 
@@ -21,28 +21,28 @@  discard block
 block discarded – undo
21 21
  * @param array $arbre
22 22
  */
23 23
 function plugins_extraire_pipelines_dist(&$arbre) {
24
-	$pipes = null;
25
-	$tag = null;
26
-	$pipeline = [];
27
-	if (spip_xml_match_nodes(',^pipeline,', $arbre, $pipes)) {
28
-		foreach ($pipes as $tag => $p) {
29
-			if (!is_array($p[0])) {
30
-				[$tag, $att] = spip_xml_decompose_tag($tag);
31
-				$pipeline[] = $att;
32
-			} else {
33
-				foreach ($p as $pipe) {
34
-					$att = [];
35
-					if (is_array($pipe)) {
36
-						foreach ($pipe as $k => $t) {
37
-							$att[$k] = trim(end($t));
38
-						}
39
-					}
40
-					$pipeline[] = $att;
41
-				}
42
-			}
43
-		}
44
-		unset($arbre[$tag]);
45
-	}
24
+    $pipes = null;
25
+    $tag = null;
26
+    $pipeline = [];
27
+    if (spip_xml_match_nodes(',^pipeline,', $arbre, $pipes)) {
28
+        foreach ($pipes as $tag => $p) {
29
+            if (!is_array($p[0])) {
30
+                [$tag, $att] = spip_xml_decompose_tag($tag);
31
+                $pipeline[] = $att;
32
+            } else {
33
+                foreach ($p as $pipe) {
34
+                    $att = [];
35
+                    if (is_array($pipe)) {
36
+                        foreach ($pipe as $k => $t) {
37
+                            $att[$k] = trim(end($t));
38
+                        }
39
+                    }
40
+                    $pipeline[] = $att;
41
+                }
42
+            }
43
+        }
44
+        unset($arbre[$tag]);
45
+    }
46 46
 
47
-	return $pipeline;
47
+    return $pipeline;
48 48
 }
Please login to merge, or discard this patch.
ecrire/plugins/infos_paquet.php 1 patch
Indentation   +207 added lines, -207 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
 /**
@@ -25,64 +25,64 @@  discard block
 block discarded – undo
25 25
  * @return array
26 26
  */
27 27
 function plugins_infos_paquet($desc, $plug = '', $dir_plugins = _DIR_PLUGINS) {
28
-	static $process = [ // tableau constant
29
-		'debut' => 'paquet_debutElement',
30
-		'fin' => 'paquet_finElement',
31
-		'text' => 'paquet_textElement'
32
-	];
33
-
34
-	$valider_xml = charger_fonction('valider', 'xml');
35
-	$vxml = $valider_xml($desc, false, $process, 'paquet.dtd', 'utf-8');
36
-	if (!$vxml->err) {
37
-		// On veut toutes les variantes selon la version de SPIP
38
-		if (!$plug) {
39
-			return $vxml->versions;
40
-		}
41
-
42
-		// compatibilite avec l'existant:
43
-		$tree = $vxml->versions['0'];
44
-
45
-		// l'arbre renvoie parfois un tag vide... etrange. Pas la peine de garder ca.
46
-		if (isset($tree['']) and !strlen($tree[''])) {
47
-			unset($tree['']);
48
-		}
49
-
50
-		$tree['slogan'] = $tree['prefix'] . '_slogan';
51
-		$tree['description'] = $tree['prefix'] . '_description';
52
-		paquet_readable_files($tree, "$dir_plugins$plug/");
53
-		if (!$tree['chemin']) {
54
-			$tree['chemin'] = [];
55
-		}
56
-
57
-		// On verifie qu'il existe des balises spip qu'il faudrait rajouter dans
58
-		// la structure d'infos du paquet en fonction de la version spip courante
59
-		if ((is_countable($vxml->versions) ? count($vxml->versions) : 0) > 1) {
60
-			$vspip = $GLOBALS['spip_version_branche'];
61
-			foreach ($vxml->versions as $_compatibilite => $_version) {
62
-				if (
63
-					($_version['balise'] == 'spip')
64
-					and (plugin_version_compatible($_compatibilite, $vspip, 'spip'))
65
-				) {
66
-					// on merge les sous-balises de la balise spip compatible avec celles de la
67
-					// balise paquet
68
-					foreach ($_version as $_index => $_balise) {
69
-						if ($_index and $_index != 'balise') {
70
-							$tree[$_index] = array_merge($tree[$_index], $_balise);
71
-						}
72
-					}
73
-				}
74
-			}
75
-		}
76
-
77
-		return $tree;
78
-	}
79
-
80
-	// Prendre les messages d'erreur sans les numeros de lignes
81
-	$msg = array_column($vxml->err, 0);
82
-	$t = _T('plugins_erreur', ['plugins' => $plug]);
83
-	array_unshift($msg, $t . " <ul class='erreur_xml'><li>" . reset($msg) . '</li></ul>');
84
-
85
-	return ['erreur' => $msg];
28
+    static $process = [ // tableau constant
29
+        'debut' => 'paquet_debutElement',
30
+        'fin' => 'paquet_finElement',
31
+        'text' => 'paquet_textElement'
32
+    ];
33
+
34
+    $valider_xml = charger_fonction('valider', 'xml');
35
+    $vxml = $valider_xml($desc, false, $process, 'paquet.dtd', 'utf-8');
36
+    if (!$vxml->err) {
37
+        // On veut toutes les variantes selon la version de SPIP
38
+        if (!$plug) {
39
+            return $vxml->versions;
40
+        }
41
+
42
+        // compatibilite avec l'existant:
43
+        $tree = $vxml->versions['0'];
44
+
45
+        // l'arbre renvoie parfois un tag vide... etrange. Pas la peine de garder ca.
46
+        if (isset($tree['']) and !strlen($tree[''])) {
47
+            unset($tree['']);
48
+        }
49
+
50
+        $tree['slogan'] = $tree['prefix'] . '_slogan';
51
+        $tree['description'] = $tree['prefix'] . '_description';
52
+        paquet_readable_files($tree, "$dir_plugins$plug/");
53
+        if (!$tree['chemin']) {
54
+            $tree['chemin'] = [];
55
+        }
56
+
57
+        // On verifie qu'il existe des balises spip qu'il faudrait rajouter dans
58
+        // la structure d'infos du paquet en fonction de la version spip courante
59
+        if ((is_countable($vxml->versions) ? count($vxml->versions) : 0) > 1) {
60
+            $vspip = $GLOBALS['spip_version_branche'];
61
+            foreach ($vxml->versions as $_compatibilite => $_version) {
62
+                if (
63
+                    ($_version['balise'] == 'spip')
64
+                    and (plugin_version_compatible($_compatibilite, $vspip, 'spip'))
65
+                ) {
66
+                    // on merge les sous-balises de la balise spip compatible avec celles de la
67
+                    // balise paquet
68
+                    foreach ($_version as $_index => $_balise) {
69
+                        if ($_index and $_index != 'balise') {
70
+                            $tree[$_index] = array_merge($tree[$_index], $_balise);
71
+                        }
72
+                    }
73
+                }
74
+            }
75
+        }
76
+
77
+        return $tree;
78
+    }
79
+
80
+    // Prendre les messages d'erreur sans les numeros de lignes
81
+    $msg = array_column($vxml->err, 0);
82
+    $t = _T('plugins_erreur', ['plugins' => $plug]);
83
+    array_unshift($msg, $t . " <ul class='erreur_xml'><li>" . reset($msg) . '</li></ul>');
84
+
85
+    return ['erreur' => $msg];
86 86
 }
87 87
 
88 88
 /**
@@ -94,11 +94,11 @@  discard block
 block discarded – undo
94 94
  * @return void
95 95
  */
96 96
 function paquet_readable_files(&$tree, $dir) {
97
-	$prefix = strtolower($tree['prefix']);
97
+    $prefix = strtolower($tree['prefix']);
98 98
 
99
-	$tree['options'] = (is_readable($dir . $f = ($prefix . '_options.php'))) ? [$f] : [];
100
-	$tree['fonctions'] = (is_readable($dir . $f = ($prefix . '_fonctions.php'))) ? [$f] : [];
101
-	$tree['install'] = (is_readable($dir . $f = ($prefix . '_administrations.php'))) ? [$f] : [];
99
+    $tree['options'] = (is_readable($dir . $f = ($prefix . '_options.php'))) ? [$f] : [];
100
+    $tree['fonctions'] = (is_readable($dir . $f = ($prefix . '_fonctions.php'))) ? [$f] : [];
101
+    $tree['install'] = (is_readable($dir . $f = ($prefix . '_administrations.php'))) ? [$f] : [];
102 102
 }
103 103
 
104 104
 /**
@@ -115,35 +115,35 @@  discard block
 block discarded – undo
115 115
  * @param array $attrs
116 116
  */
117 117
 function paquet_debutElement($phraseur, $name, $attrs) {
118
-	xml_debutElement($phraseur, $name, $attrs);
119
-	if ($phraseur->err) {
120
-		return;
121
-	}
122
-	if (($name == 'paquet') or ($name == 'spip')) {
123
-		if ($name == 'spip') {
124
-			$n = $attrs['compatibilite'];
125
-			$attrs = [];
126
-		} else {
127
-			$n = '0';
128
-			$phraseur->contenu['paquet'] = $attrs;
129
-			$attrs['menu'] = [];
130
-			$attrs['chemin'] = [];
131
-			$attrs['necessite'] = [];
132
-			$attrs['lib'] = [];
133
-			$attrs['onglet'] = [];
134
-			$attrs['procure'] = [];
135
-			$attrs['pipeline'] = [];
136
-			$attrs['utilise'] = [];
137
-			$attrs['style'] = [];
138
-			$attrs['script'] = [];
139
-			$attrs['genie'] = [];
140
-		}
141
-		$phraseur->contenu['compatible'] = $n;
142
-		$phraseur->versions[$phraseur->contenu['compatible']] = $attrs;
143
-	} else {
144
-		$phraseur->versions[$phraseur->contenu['compatible']][$name][0] = $attrs;
145
-	}
146
-	$phraseur->versions[$phraseur->contenu['compatible']][''] = '';
118
+    xml_debutElement($phraseur, $name, $attrs);
119
+    if ($phraseur->err) {
120
+        return;
121
+    }
122
+    if (($name == 'paquet') or ($name == 'spip')) {
123
+        if ($name == 'spip') {
124
+            $n = $attrs['compatibilite'];
125
+            $attrs = [];
126
+        } else {
127
+            $n = '0';
128
+            $phraseur->contenu['paquet'] = $attrs;
129
+            $attrs['menu'] = [];
130
+            $attrs['chemin'] = [];
131
+            $attrs['necessite'] = [];
132
+            $attrs['lib'] = [];
133
+            $attrs['onglet'] = [];
134
+            $attrs['procure'] = [];
135
+            $attrs['pipeline'] = [];
136
+            $attrs['utilise'] = [];
137
+            $attrs['style'] = [];
138
+            $attrs['script'] = [];
139
+            $attrs['genie'] = [];
140
+        }
141
+        $phraseur->contenu['compatible'] = $n;
142
+        $phraseur->versions[$phraseur->contenu['compatible']] = $attrs;
143
+    } else {
144
+        $phraseur->versions[$phraseur->contenu['compatible']][$name][0] = $attrs;
145
+    }
146
+    $phraseur->versions[$phraseur->contenu['compatible']][''] = '';
147 147
 }
148 148
 
149 149
 /**
@@ -155,11 +155,11 @@  discard block
 block discarded – undo
155 155
  * @param string $data
156 156
  */
157 157
 function paquet_textElement($phraseur, $data) {
158
-	xml_textElement($phraseur, $data);
159
-	if ($phraseur->err or !(trim($data))) {
160
-		return;
161
-	}
162
-	$phraseur->versions[$phraseur->contenu['compatible']][''] .= $data;
158
+    xml_textElement($phraseur, $data);
159
+    if ($phraseur->err or !(trim($data))) {
160
+        return;
161
+    }
162
+    $phraseur->versions[$phraseur->contenu['compatible']][''] .= $data;
163 163
 }
164 164
 
165 165
 /**
@@ -171,32 +171,32 @@  discard block
 block discarded – undo
171 171
  * @param string $name
172 172
  */
173 173
 function paquet_finElement($phraseur, $name) {
174
-	if ($phraseur->err) {
175
-		return;
176
-	}
177
-	$n = $phraseur->contenu['compatible'];
178
-
179
-	if (isset($phraseur->versions[$n][$name][0]) and is_array($phraseur->versions[$n][$name][0])) {
180
-		$attrs = $phraseur->versions[$n][$name][0];
181
-		unset($phraseur->versions[$n][$name][0]);
182
-	} else {
183
-		$attrs = [];
184
-	}
185
-
186
-	$texte = trim($phraseur->versions[$n]['']);
187
-	$phraseur->versions[$n][''] = '';
188
-
189
-	$f = 'info_paquet_' . $name;
190
-	if (function_exists($f)) {
191
-		$f($phraseur, $attrs, $texte);
192
-	} elseif (!$attrs) {
193
-		$phraseur->versions[$n][$name] = $texte;
194
-	} else {
195
-		// Traitement generique. Si $attrs['nom'] n'existe pas, ce n'est pas normal ici
196
-		$phraseur->versions[$n][$name][$attrs['nom']] = $attrs;
197
-		#	  echo("<br>pour $name $n " . $attrs['nom']); var_dump($phraseur->versions[$n]);
198
-	}
199
-	xml_finElement($phraseur, $name, $attrs);
174
+    if ($phraseur->err) {
175
+        return;
176
+    }
177
+    $n = $phraseur->contenu['compatible'];
178
+
179
+    if (isset($phraseur->versions[$n][$name][0]) and is_array($phraseur->versions[$n][$name][0])) {
180
+        $attrs = $phraseur->versions[$n][$name][0];
181
+        unset($phraseur->versions[$n][$name][0]);
182
+    } else {
183
+        $attrs = [];
184
+    }
185
+
186
+    $texte = trim($phraseur->versions[$n]['']);
187
+    $phraseur->versions[$n][''] = '';
188
+
189
+    $f = 'info_paquet_' . $name;
190
+    if (function_exists($f)) {
191
+        $f($phraseur, $attrs, $texte);
192
+    } elseif (!$attrs) {
193
+        $phraseur->versions[$n][$name] = $texte;
194
+    } else {
195
+        // Traitement generique. Si $attrs['nom'] n'existe pas, ce n'est pas normal ici
196
+        $phraseur->versions[$n][$name][$attrs['nom']] = $attrs;
197
+        #	  echo("<br>pour $name $n " . $attrs['nom']); var_dump($phraseur->versions[$n]);
198
+    }
199
+    xml_finElement($phraseur, $name, $attrs);
200 200
 }
201 201
 
202 202
 /**
@@ -208,13 +208,13 @@  discard block
 block discarded – undo
208 208
  * @param string $texte
209 209
  */
210 210
 function info_paquet_licence($phraseur, $attrs, $texte) {
211
-	if (isset($attrs['lien'])) {
212
-		$lien = $attrs['lien'];
213
-	} else {
214
-		$lien = '';
215
-	}
216
-	$n = $phraseur->contenu['compatible'];
217
-	$phraseur->versions[$n]['licence'][] = ['nom' => $texte, 'url' => $lien];
211
+    if (isset($attrs['lien'])) {
212
+        $lien = $attrs['lien'];
213
+    } else {
214
+        $lien = '';
215
+    }
216
+    $n = $phraseur->contenu['compatible'];
217
+    $phraseur->versions[$n]['licence'][] = ['nom' => $texte, 'url' => $lien];
218 218
 }
219 219
 
220 220
 /**
@@ -226,14 +226,14 @@  discard block
 block discarded – undo
226 226
  * @param string $texte
227 227
  */
228 228
 function info_paquet_chemin($phraseur, $attrs, $texte) {
229
-	$n = $phraseur->contenu['compatible'];
230
-	if (isset($attrs['path'])) {
231
-		if (isset($attrs['type'])) {
232
-			$phraseur->versions[$n]['chemin'][] = ['path' => $attrs['path'], 'type' => $attrs['type']];
233
-		} else {
234
-			$phraseur->versions[$n]['chemin'][] = ['path' => $attrs['path']];
235
-		}
236
-	}
229
+    $n = $phraseur->contenu['compatible'];
230
+    if (isset($attrs['path'])) {
231
+        if (isset($attrs['type'])) {
232
+            $phraseur->versions[$n]['chemin'][] = ['path' => $attrs['path'], 'type' => $attrs['type']];
233
+        } else {
234
+            $phraseur->versions[$n]['chemin'][] = ['path' => $attrs['path']];
235
+        }
236
+    }
237 237
 }
238 238
 
239 239
 
@@ -247,24 +247,24 @@  discard block
 block discarded – undo
247 247
  * @param string $texte
248 248
  */
249 249
 function info_paquet_auteur($phraseur, $attrs, $texte) {
250
-	#  echo 'auteur ', $texte;  var_dump($attrs);
251
-	if (isset($attrs['mail'])) {
252
-		if (strpos($attrs['mail'], '@')) {
253
-			$attrs['mail'] = str_replace('@', ' AT ', $attrs['mail']);
254
-		}
255
-		$mail = $attrs['mail'];
256
-	} else {
257
-		$mail = '';
258
-	}
259
-
260
-	if (isset($attrs['lien'])) {
261
-		$lien = $attrs['lien'];
262
-	} else {
263
-		$lien = '';
264
-	}
265
-
266
-	$n = $phraseur->contenu['compatible'];
267
-	$phraseur->versions[$n]['auteur'][] = ['nom' => $texte, 'url' => $lien, 'mail' => $mail];
250
+    #  echo 'auteur ', $texte;  var_dump($attrs);
251
+    if (isset($attrs['mail'])) {
252
+        if (strpos($attrs['mail'], '@')) {
253
+            $attrs['mail'] = str_replace('@', ' AT ', $attrs['mail']);
254
+        }
255
+        $mail = $attrs['mail'];
256
+    } else {
257
+        $mail = '';
258
+    }
259
+
260
+    if (isset($attrs['lien'])) {
261
+        $lien = $attrs['lien'];
262
+    } else {
263
+        $lien = '';
264
+    }
265
+
266
+    $n = $phraseur->contenu['compatible'];
267
+    $phraseur->versions[$n]['auteur'][] = ['nom' => $texte, 'url' => $lien, 'mail' => $mail];
268 268
 }
269 269
 
270 270
 /**
@@ -277,14 +277,14 @@  discard block
 block discarded – undo
277 277
  */
278 278
 function info_paquet_credit($phraseur, $attrs, $texte) {
279 279
 
280
-	if (isset($attrs['lien'])) {
281
-		$lien = $attrs['lien'];
282
-	} else {
283
-		$lien = '';
284
-	}
280
+    if (isset($attrs['lien'])) {
281
+        $lien = $attrs['lien'];
282
+    } else {
283
+        $lien = '';
284
+    }
285 285
 
286
-	$n = $phraseur->contenu['compatible'];
287
-	$phraseur->versions[$n]['credit'][] = ['nom' => $texte, 'url' => $lien];
286
+    $n = $phraseur->contenu['compatible'];
287
+    $phraseur->versions[$n]['credit'][] = ['nom' => $texte, 'url' => $lien];
288 288
 }
289 289
 
290 290
 /**
@@ -296,8 +296,8 @@  discard block
 block discarded – undo
296 296
  * @param string $texte
297 297
  */
298 298
 function info_paquet_copyright($phraseur, $attrs, $texte) {
299
-	$n = $phraseur->contenu['compatible'];
300
-	$phraseur->versions[$n]['copyright'][] = $texte;
299
+    $n = $phraseur->contenu['compatible'];
300
+    $phraseur->versions[$n]['copyright'][] = $texte;
301 301
 }
302 302
 
303 303
 /**
@@ -309,9 +309,9 @@  discard block
 block discarded – undo
309 309
  * @param string $texte
310 310
  */
311 311
 function info_paquet_paquet($phraseur, $attrs, $texte) {
312
-	$n = 0;
313
-	$phraseur->versions[$n]['dtd'] = 'paquet';
314
-	$phraseur->versions[$n]['balise'] = 'paquet';
312
+    $n = 0;
313
+    $phraseur->versions[$n]['dtd'] = 'paquet';
314
+    $phraseur->versions[$n]['balise'] = 'paquet';
315 315
 }
316 316
 
317 317
 /**
@@ -323,8 +323,8 @@  discard block
 block discarded – undo
323 323
  * @param string $texte
324 324
  **/
325 325
 function info_paquet_traduire($phraseur, $attrs, $texte) {
326
-	$n = $phraseur->contenu['compatible'];
327
-	$phraseur->versions[$n]['traduire'][] = $attrs;
326
+    $n = $phraseur->contenu['compatible'];
327
+    $phraseur->versions[$n]['traduire'][] = $attrs;
328 328
 }
329 329
 
330 330
 /**
@@ -336,8 +336,8 @@  discard block
 block discarded – undo
336 336
  * @param string $texte
337 337
  */
338 338
 function info_paquet_spip($phraseur, $attrs, $texte) {
339
-	$n = $phraseur->contenu['compatible'];
340
-	$phraseur->versions[$n]['balise'] = 'spip';
339
+    $n = $phraseur->contenu['compatible'];
340
+    $phraseur->versions[$n]['balise'] = 'spip';
341 341
 }
342 342
 
343 343
 
@@ -349,8 +349,8 @@  discard block
 block discarded – undo
349 349
  * @param string $texte
350 350
  */
351 351
 function info_paquet_pipeline($phraseur, $attrs, $texte) {
352
-	$n = $phraseur->contenu['compatible'];
353
-	$phraseur->versions[$n]['pipeline'][] = $attrs;
352
+    $n = $phraseur->contenu['compatible'];
353
+    $phraseur->versions[$n]['pipeline'][] = $attrs;
354 354
 }
355 355
 
356 356
 
@@ -363,23 +363,23 @@  discard block
 block discarded – undo
363 363
  * @param string $texte
364 364
  */
365 365
 function info_paquet_style($phraseur, $attrs, $texte) {
366
-	$lien = $chemin = $type = $media = '';
367
-
368
-	include_spip('inc/utils');
369
-	if (tester_url_absolue($attrs['source'])) {
370
-		$lien = $attrs['source'];
371
-	} else {
372
-		$chemin = $attrs['source'];
373
-	}
374
-	if (isset($attrs['type'])) {
375
-		$type = $attrs['type'];
376
-	}
377
-	if (isset($attrs['media'])) {
378
-		$media = $attrs['media'];
379
-	}
380
-
381
-	$n = $phraseur->contenu['compatible'];
382
-	$phraseur->versions[$n]['style'][] = ['url' => $lien, 'path' => $chemin, 'type' => $type, 'media' => $media];
366
+    $lien = $chemin = $type = $media = '';
367
+
368
+    include_spip('inc/utils');
369
+    if (tester_url_absolue($attrs['source'])) {
370
+        $lien = $attrs['source'];
371
+    } else {
372
+        $chemin = $attrs['source'];
373
+    }
374
+    if (isset($attrs['type'])) {
375
+        $type = $attrs['type'];
376
+    }
377
+    if (isset($attrs['media'])) {
378
+        $media = $attrs['media'];
379
+    }
380
+
381
+    $n = $phraseur->contenu['compatible'];
382
+    $phraseur->versions[$n]['style'][] = ['url' => $lien, 'path' => $chemin, 'type' => $type, 'media' => $media];
383 383
 }
384 384
 
385 385
 
@@ -392,20 +392,20 @@  discard block
 block discarded – undo
392 392
  * @param string $texte
393 393
  */
394 394
 function info_paquet_script($phraseur, $attrs, $texte) {
395
-	$lien = $chemin = $type = $media = '';
396
-
397
-	include_spip('inc/utils');
398
-	if (tester_url_absolue($attrs['source'])) {
399
-		$lien = $attrs['source'];
400
-	} else {
401
-		$chemin = $attrs['source'];
402
-	}
403
-	if (isset($attrs['type'])) {
404
-		$type = $attrs['type'];
405
-	}
406
-
407
-	$n = $phraseur->contenu['compatible'];
408
-	$phraseur->versions[$n]['script'][] = ['url' => $lien, 'path' => $chemin, 'type' => $type];
395
+    $lien = $chemin = $type = $media = '';
396
+
397
+    include_spip('inc/utils');
398
+    if (tester_url_absolue($attrs['source'])) {
399
+        $lien = $attrs['source'];
400
+    } else {
401
+        $chemin = $attrs['source'];
402
+    }
403
+    if (isset($attrs['type'])) {
404
+        $type = $attrs['type'];
405
+    }
406
+
407
+    $n = $phraseur->contenu['compatible'];
408
+    $phraseur->versions[$n]['script'][] = ['url' => $lien, 'path' => $chemin, 'type' => $type];
409 409
 }
410 410
 
411 411
 /**
@@ -416,6 +416,6 @@  discard block
 block discarded – undo
416 416
  * @param string $texte
417 417
  */
418 418
 function info_paquet_genie($phraseur, $attrs, $texte) {
419
-	$n = $phraseur->contenu['compatible'];
420
-	$phraseur->versions[$n]['genie'][] = $attrs;
419
+    $n = $phraseur->contenu['compatible'];
420
+    $phraseur->versions[$n]['genie'][] = $attrs;
421 421
 }
Please login to merge, or discard this patch.
ecrire/plugins/installer.php 1 patch
Indentation   +135 added lines, -135 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
 
19 19
 
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 
24 24
 /**
@@ -54,96 +54,96 @@  discard block
 block discarded – undo
54 54
  */
55 55
 function plugins_installer_dist($plug, $action, $dir_type = '_DIR_PLUGINS') {
56 56
 
57
-	// Charger les informations du XML du plugin et vérification de l'existence d'une installation
58
-	$get_infos = charger_fonction('get_infos', 'plugins');
59
-	$infos = $get_infos($plug, false, constant($dir_type));
60
-	if (!isset($infos['install']) or !$infos['install']) {
61
-		return false;
62
-	}
63
-
64
-	// Passer en chemin absolu si possible, c'est plus efficace
65
-	$dir = str_replace('_DIR_', '_ROOT_', $dir_type);
66
-	if (!defined($dir)) {
67
-		$dir = $dir_type;
68
-	}
69
-	$dir = constant($dir);
70
-	foreach ($infos['install'] as $file) {
71
-		$file = $dir . $plug . '/' . trim($file);
72
-		if (file_exists($file)) {
73
-			include_once($file);
74
-		}
75
-	}
76
-
77
-	// Détermination de la table meta et du nom de la meta plugin
78
-	$table = 'meta';
79
-	if (isset($infos['meta']) and ($infos['meta'] !== 'meta')) {
80
-		$table = $infos['meta'];
81
-		// S'assurer que les metas de la table spécifique sont bien accessibles dans la globale
82
-		lire_metas($table);
83
-	}
84
-	$nom_meta = $infos['prefix'] . '_base_version';
85
-
86
-	// Détermination de la fonction à appeler et de ses arguments
87
-	$f = $infos['prefix'] . '_install';
88
-	if (!function_exists($f)) {
89
-		$f = isset($infos['schema']) ? 'spip_plugin_install' : '';
90
-		$arg = $infos;
91
-		// On passe la table et la meta pour éviter de les recalculer dans la fonction appelée
92
-		$arg['meta'] = $table;
93
-		$arg['nom_meta'] = $nom_meta;
94
-	} else {
95
-		// Ancienne méthode d'installation - TODO à supprimer à terme
96
-		// stupide: info deja dans le nom
97
-		$arg = $infos['prefix'];
98
-	}
99
-	$version = $infos['schema'] ?? '';
100
-
101
-	if (!$f) {
102
-		// installation sans operation particuliere
103
-		$infos['install_test'] = [true, ''];
104
-		return $infos;
105
-	}
106
-
107
-	// Tester si l'action demandée est nécessaire ou pas.
108
-	$test = $f('test', $arg, $version);
109
-	if ($action == 'uninstall') {
110
-		$test = !$test;
111
-	}
112
-	// Si deja fait, on ne fait rien et on ne dit rien
113
-	if ($test) {
114
-		return true;
115
-	}
116
-
117
-	// Si install et que l'on a la meta d'installation, c'est un upgrade. On le consigne dans $infos
118
-	// pour renvoyer le bon message en retour de la fonction.
119
-	if ($action == 'install' && !empty($GLOBALS[$table][$nom_meta])) {
120
-		$infos['upgrade'] = true;
121
-	}
122
-
123
-	// executer l'installation ou l'inverse
124
-	// et renvoyer la trace (mais il faudrait passer en AJAX plutot)
125
-	ob_start();
126
-	$f($action, $arg, $version);
127
-	$aff = ob_get_contents();
128
-	ob_end_clean();
129
-
130
-	// vider le cache des descriptions de tables a chaque (de)installation
131
-	$trouver_table = charger_fonction('trouver_table', 'base');
132
-	$trouver_table('');
133
-	$infos['install_test'] = [$f('test', $arg, $version), $aff];
134
-
135
-	// Si la table meta n'est pas spip_meta et qu'on est dans la première installation du plugin
136
-	// on force la création du fichier cache à la date du moment.
137
-	// On relit les metas de la table pour être sur que la globale soit à jour pour touch_meta.
138
-	if (
139
-		($table !== 'meta')
140
-		and ($action == 'install')
141
-		and empty($infos['upgrade'])
142
-	) {
143
-		touch_meta(false, $table);
144
-	}
145
-
146
-	return $infos;
57
+    // Charger les informations du XML du plugin et vérification de l'existence d'une installation
58
+    $get_infos = charger_fonction('get_infos', 'plugins');
59
+    $infos = $get_infos($plug, false, constant($dir_type));
60
+    if (!isset($infos['install']) or !$infos['install']) {
61
+        return false;
62
+    }
63
+
64
+    // Passer en chemin absolu si possible, c'est plus efficace
65
+    $dir = str_replace('_DIR_', '_ROOT_', $dir_type);
66
+    if (!defined($dir)) {
67
+        $dir = $dir_type;
68
+    }
69
+    $dir = constant($dir);
70
+    foreach ($infos['install'] as $file) {
71
+        $file = $dir . $plug . '/' . trim($file);
72
+        if (file_exists($file)) {
73
+            include_once($file);
74
+        }
75
+    }
76
+
77
+    // Détermination de la table meta et du nom de la meta plugin
78
+    $table = 'meta';
79
+    if (isset($infos['meta']) and ($infos['meta'] !== 'meta')) {
80
+        $table = $infos['meta'];
81
+        // S'assurer que les metas de la table spécifique sont bien accessibles dans la globale
82
+        lire_metas($table);
83
+    }
84
+    $nom_meta = $infos['prefix'] . '_base_version';
85
+
86
+    // Détermination de la fonction à appeler et de ses arguments
87
+    $f = $infos['prefix'] . '_install';
88
+    if (!function_exists($f)) {
89
+        $f = isset($infos['schema']) ? 'spip_plugin_install' : '';
90
+        $arg = $infos;
91
+        // On passe la table et la meta pour éviter de les recalculer dans la fonction appelée
92
+        $arg['meta'] = $table;
93
+        $arg['nom_meta'] = $nom_meta;
94
+    } else {
95
+        // Ancienne méthode d'installation - TODO à supprimer à terme
96
+        // stupide: info deja dans le nom
97
+        $arg = $infos['prefix'];
98
+    }
99
+    $version = $infos['schema'] ?? '';
100
+
101
+    if (!$f) {
102
+        // installation sans operation particuliere
103
+        $infos['install_test'] = [true, ''];
104
+        return $infos;
105
+    }
106
+
107
+    // Tester si l'action demandée est nécessaire ou pas.
108
+    $test = $f('test', $arg, $version);
109
+    if ($action == 'uninstall') {
110
+        $test = !$test;
111
+    }
112
+    // Si deja fait, on ne fait rien et on ne dit rien
113
+    if ($test) {
114
+        return true;
115
+    }
116
+
117
+    // Si install et que l'on a la meta d'installation, c'est un upgrade. On le consigne dans $infos
118
+    // pour renvoyer le bon message en retour de la fonction.
119
+    if ($action == 'install' && !empty($GLOBALS[$table][$nom_meta])) {
120
+        $infos['upgrade'] = true;
121
+    }
122
+
123
+    // executer l'installation ou l'inverse
124
+    // et renvoyer la trace (mais il faudrait passer en AJAX plutot)
125
+    ob_start();
126
+    $f($action, $arg, $version);
127
+    $aff = ob_get_contents();
128
+    ob_end_clean();
129
+
130
+    // vider le cache des descriptions de tables a chaque (de)installation
131
+    $trouver_table = charger_fonction('trouver_table', 'base');
132
+    $trouver_table('');
133
+    $infos['install_test'] = [$f('test', $arg, $version), $aff];
134
+
135
+    // Si la table meta n'est pas spip_meta et qu'on est dans la première installation du plugin
136
+    // on force la création du fichier cache à la date du moment.
137
+    // On relit les metas de la table pour être sur que la globale soit à jour pour touch_meta.
138
+    if (
139
+        ($table !== 'meta')
140
+        and ($action == 'install')
141
+        and empty($infos['upgrade'])
142
+    ) {
143
+        touch_meta(false, $table);
144
+    }
145
+
146
+    return $infos;
147 147
 }
148 148
 
149 149
 /**
@@ -159,25 +159,25 @@  discard block
 block discarded – undo
159 159
  * @return bool|void
160 160
  */
161 161
 function spip_plugin_install($action, $infos, $version_cible) {
162
-	$nom_meta = $infos['nom_meta'];
163
-	$table = $infos['meta'];
164
-	switch ($action) {
165
-		case 'test':
166
-			return (isset($GLOBALS[$table])
167
-				and isset($GLOBALS[$table][$nom_meta])
168
-				and spip_version_compare($GLOBALS[$table][$nom_meta], $version_cible, '>='));
169
-			break;
170
-		case 'install':
171
-			if (function_exists($upgrade = $infos['prefix'] . '_upgrade')) {
172
-				$upgrade($nom_meta, $version_cible, $table);
173
-			}
174
-			break;
175
-		case 'uninstall':
176
-			if (function_exists($vider_tables = $infos['prefix'] . '_vider_tables')) {
177
-				$vider_tables($nom_meta, $table);
178
-			}
179
-			break;
180
-	}
162
+    $nom_meta = $infos['nom_meta'];
163
+    $table = $infos['meta'];
164
+    switch ($action) {
165
+        case 'test':
166
+            return (isset($GLOBALS[$table])
167
+                and isset($GLOBALS[$table][$nom_meta])
168
+                and spip_version_compare($GLOBALS[$table][$nom_meta], $version_cible, '>='));
169
+            break;
170
+        case 'install':
171
+            if (function_exists($upgrade = $infos['prefix'] . '_upgrade')) {
172
+                $upgrade($nom_meta, $version_cible, $table);
173
+            }
174
+            break;
175
+        case 'uninstall':
176
+            if (function_exists($vider_tables = $infos['prefix'] . '_vider_tables')) {
177
+                $vider_tables($nom_meta, $table);
178
+            }
179
+            break;
180
+    }
181 181
 }
182 182
 
183 183
 
@@ -196,29 +196,29 @@  discard block
 block discarded – undo
196 196
  * @return array Tableau des plugins actifs
197 197
  **/
198 198
 function liste_plugin_actifs() {
199
-	$liste = $GLOBALS['meta']['plugin'] ?? '';
200
-	if (!$liste) {
201
-		return [];
202
-	}
203
-	if (!is_array($liste = unserialize($liste))) {
204
-		// compatibilite pre 1.9.2, mettre a jour la meta
205
-		spip_log("MAJ meta plugin vieille version : $liste", 'plugin');
206
-		$new = true;
207
-		[, $liste] = liste_plugin_valides(explode(',', $liste));
208
-	} else {
209
-		$new = false;
210
-		// compat au moment d'une migration depuis version anterieure
211
-		// si pas de dir_type, alors c'est _DIR_PLUGINS
212
-		foreach ($liste as $prefix => $infos) {
213
-			if (!isset($infos['dir_type'])) {
214
-				$liste[$prefix]['dir_type'] = '_DIR_PLUGINS';
215
-				$new = true;
216
-			}
217
-		}
218
-	}
219
-	if ($new) {
220
-		ecrire_meta('plugin', serialize($liste));
221
-	}
222
-
223
-	return $liste;
199
+    $liste = $GLOBALS['meta']['plugin'] ?? '';
200
+    if (!$liste) {
201
+        return [];
202
+    }
203
+    if (!is_array($liste = unserialize($liste))) {
204
+        // compatibilite pre 1.9.2, mettre a jour la meta
205
+        spip_log("MAJ meta plugin vieille version : $liste", 'plugin');
206
+        $new = true;
207
+        [, $liste] = liste_plugin_valides(explode(',', $liste));
208
+    } else {
209
+        $new = false;
210
+        // compat au moment d'une migration depuis version anterieure
211
+        // si pas de dir_type, alors c'est _DIR_PLUGINS
212
+        foreach ($liste as $prefix => $infos) {
213
+            if (!isset($infos['dir_type'])) {
214
+                $liste[$prefix]['dir_type'] = '_DIR_PLUGINS';
215
+                $new = true;
216
+            }
217
+        }
218
+    }
219
+    if ($new) {
220
+        ecrire_meta('plugin', serialize($liste));
221
+    }
222
+
223
+    return $liste;
224 224
 }
Please login to merge, or discard this patch.
ecrire/maj/legacy/v30.php 1 patch
Indentation   +230 added lines, -230 removed lines patch added patch discarded remove patch
@@ -18,18 +18,18 @@  discard block
 block discarded – undo
18 18
  * @package SPIP\Core\SQL\Upgrade
19 19
  **/
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 
24 24
 
25 25
 $GLOBALS['maj'][16428] = [
26
-	['maj_liens', 'auteur'], // creer la table liens
27
-	['maj_liens', 'auteur', 'article'],
28
-	['sql_drop_table', 'spip_auteurs_articles'],
29
-	['maj_liens', 'auteur', 'rubrique'],
30
-	['sql_drop_table', 'spip_auteurs_rubriques'],
31
-	['maj_liens', 'auteur', 'message'],
32
-	['sql_drop_table', 'spip_auteurs_messages'],
26
+    ['maj_liens', 'auteur'], // creer la table liens
27
+    ['maj_liens', 'auteur', 'article'],
28
+    ['sql_drop_table', 'spip_auteurs_articles'],
29
+    ['maj_liens', 'auteur', 'rubrique'],
30
+    ['sql_drop_table', 'spip_auteurs_rubriques'],
31
+    ['maj_liens', 'auteur', 'message'],
32
+    ['sql_drop_table', 'spip_auteurs_messages'],
33 33
 ];
34 34
 
35 35
 /**
@@ -55,89 +55,89 @@  discard block
 block discarded – undo
55 55
  */
56 56
 function maj_liens($pivot, $l = '') {
57 57
 
58
-	@define('_LOG_FILTRE_GRAVITE', 8);
59
-
60
-	$exceptions_pluriel = ['forum' => 'forum', 'syndic' => 'syndic'];
61
-
62
-	$pivot = preg_replace(',[^\w],', '', $pivot); // securite
63
-	$pivots = ($exceptions_pluriel[$pivot] ?? $pivot . 's');
64
-	$liens = 'spip_' . $pivots . '_liens';
65
-	$id_pivot = 'id_' . $pivot;
66
-	// Creer spip_auteurs_liens
67
-	global $tables_auxiliaires;
68
-	if (!$l) {
69
-		include_spip('base/auxiliaires');
70
-		include_spip('base/create');
71
-		creer_ou_upgrader_table($liens, $tables_auxiliaires[$liens], false);
72
-	} else {
73
-		// Preparer
74
-		$l = preg_replace(',[^\w],', '', $l); // securite
75
-		$primary = "id_$l";
76
-		$objet = ($l == 'syndic' ? 'site' : $l);
77
-		$ls = ($exceptions_pluriel[$l] ?? $l . 's');
78
-		$ancienne_table = 'spip_' . $pivots . '_' . $ls;
79
-		$pool = 400;
80
-
81
-		$trouver_table = charger_fonction('trouver_table', 'base');
82
-		if (!$desc = $trouver_table($ancienne_table)) {
83
-			return;
84
-		}
85
-
86
-		// securite pour ne pas perdre de donnees
87
-		if (!$trouver_table($liens)) {
88
-			return;
89
-		}
90
-
91
-		$champs = $desc['field'];
92
-		if (isset($champs['maj'])) {
93
-			unset($champs['maj']);
94
-		}
95
-		if (isset($champs[$primary])) {
96
-			unset($champs[$primary]);
97
-		}
98
-
99
-		$champs = array_keys($champs);
100
-		// ne garder que les champs qui existent sur la table destination
101
-		if ($desc_cible = $trouver_table($liens)) {
102
-			$champs = array_intersect($champs, array_keys($desc_cible['field']));
103
-		}
104
-
105
-		$champs[] = "$primary as id_objet";
106
-		$champs[] = "'$objet' as objet";
107
-		$champs = implode(', ', $champs);
108
-
109
-		// Recopier les donnees
110
-		$sub_pool = 100;
111
-		while ($ids = array_map('reset', sql_allfetsel("$primary", $ancienne_table, '', '', '', "0,$sub_pool"))) {
112
-			$insert = [];
113
-			foreach ($ids as $id) {
114
-				$n = sql_countsel($liens, "objet='$objet' AND id_objet=" . intval($id));
115
-				while ($t = sql_allfetsel($champs, $ancienne_table, "$primary=" . intval($id), '', $id_pivot, "$n,$pool")) {
116
-					$n += is_countable($t) ? count($t) : 0;
117
-					// empiler en s'assurant a minima de l'unicite
118
-					while ($r = array_shift($t)) {
119
-						$insert[$r[$id_pivot] . ':' . $r['id_objet']] = $r;
120
-					}
121
-					if (count($insert) >= $sub_pool) {
122
-						maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
123
-						$insert = [];
124
-					}
125
-					// si timeout, sortir, la relance nous ramenera dans cette fonction
126
-					// et on verifiera/repartira de la
127
-					if (time() >= _TIME_OUT) {
128
-						return;
129
-					}
130
-				}
131
-				if (time() >= _TIME_OUT) {
132
-					return;
133
-				}
134
-			}
135
-			if (count($insert)) {
136
-				maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
137
-			}
138
-			sql_delete($ancienne_table, sql_in($primary, $ids));
139
-		}
140
-	}
58
+    @define('_LOG_FILTRE_GRAVITE', 8);
59
+
60
+    $exceptions_pluriel = ['forum' => 'forum', 'syndic' => 'syndic'];
61
+
62
+    $pivot = preg_replace(',[^\w],', '', $pivot); // securite
63
+    $pivots = ($exceptions_pluriel[$pivot] ?? $pivot . 's');
64
+    $liens = 'spip_' . $pivots . '_liens';
65
+    $id_pivot = 'id_' . $pivot;
66
+    // Creer spip_auteurs_liens
67
+    global $tables_auxiliaires;
68
+    if (!$l) {
69
+        include_spip('base/auxiliaires');
70
+        include_spip('base/create');
71
+        creer_ou_upgrader_table($liens, $tables_auxiliaires[$liens], false);
72
+    } else {
73
+        // Preparer
74
+        $l = preg_replace(',[^\w],', '', $l); // securite
75
+        $primary = "id_$l";
76
+        $objet = ($l == 'syndic' ? 'site' : $l);
77
+        $ls = ($exceptions_pluriel[$l] ?? $l . 's');
78
+        $ancienne_table = 'spip_' . $pivots . '_' . $ls;
79
+        $pool = 400;
80
+
81
+        $trouver_table = charger_fonction('trouver_table', 'base');
82
+        if (!$desc = $trouver_table($ancienne_table)) {
83
+            return;
84
+        }
85
+
86
+        // securite pour ne pas perdre de donnees
87
+        if (!$trouver_table($liens)) {
88
+            return;
89
+        }
90
+
91
+        $champs = $desc['field'];
92
+        if (isset($champs['maj'])) {
93
+            unset($champs['maj']);
94
+        }
95
+        if (isset($champs[$primary])) {
96
+            unset($champs[$primary]);
97
+        }
98
+
99
+        $champs = array_keys($champs);
100
+        // ne garder que les champs qui existent sur la table destination
101
+        if ($desc_cible = $trouver_table($liens)) {
102
+            $champs = array_intersect($champs, array_keys($desc_cible['field']));
103
+        }
104
+
105
+        $champs[] = "$primary as id_objet";
106
+        $champs[] = "'$objet' as objet";
107
+        $champs = implode(', ', $champs);
108
+
109
+        // Recopier les donnees
110
+        $sub_pool = 100;
111
+        while ($ids = array_map('reset', sql_allfetsel("$primary", $ancienne_table, '', '', '', "0,$sub_pool"))) {
112
+            $insert = [];
113
+            foreach ($ids as $id) {
114
+                $n = sql_countsel($liens, "objet='$objet' AND id_objet=" . intval($id));
115
+                while ($t = sql_allfetsel($champs, $ancienne_table, "$primary=" . intval($id), '', $id_pivot, "$n,$pool")) {
116
+                    $n += is_countable($t) ? count($t) : 0;
117
+                    // empiler en s'assurant a minima de l'unicite
118
+                    while ($r = array_shift($t)) {
119
+                        $insert[$r[$id_pivot] . ':' . $r['id_objet']] = $r;
120
+                    }
121
+                    if (count($insert) >= $sub_pool) {
122
+                        maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
123
+                        $insert = [];
124
+                    }
125
+                    // si timeout, sortir, la relance nous ramenera dans cette fonction
126
+                    // et on verifiera/repartira de la
127
+                    if (time() >= _TIME_OUT) {
128
+                        return;
129
+                    }
130
+                }
131
+                if (time() >= _TIME_OUT) {
132
+                    return;
133
+                }
134
+            }
135
+            if (count($insert)) {
136
+                maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
137
+            }
138
+            sql_delete($ancienne_table, sql_in($primary, $ids));
139
+        }
140
+    }
141 141
 }
142 142
 
143 143
 /**
@@ -151,86 +151,86 @@  discard block
 block discarded – undo
151 151
  * @return void
152 152
  **/
153 153
 function maj_liens_insertq_multi_check($table, $couples, $desc = []) {
154
-	$n_before = sql_countsel($table);
155
-	sql_insertq_multi($table, $couples, $desc);
156
-	$n_after = sql_countsel($table);
157
-	if (($n_after - $n_before) == count($couples)) {
158
-		return;
159
-	}
160
-	// si ecart, on recommence l'insertion ligne par ligne...
161
-	// moins rapide mais secure : seul le couple en doublon echouera, et non toute la serie
162
-	foreach ($couples as $c) {
163
-		sql_insertq($table, $c, $desc);
164
-	}
154
+    $n_before = sql_countsel($table);
155
+    sql_insertq_multi($table, $couples, $desc);
156
+    $n_after = sql_countsel($table);
157
+    if (($n_after - $n_before) == count($couples)) {
158
+        return;
159
+    }
160
+    // si ecart, on recommence l'insertion ligne par ligne...
161
+    // moins rapide mais secure : seul le couple en doublon echouera, et non toute la serie
162
+    foreach ($couples as $c) {
163
+        sql_insertq($table, $c, $desc);
164
+    }
165 165
 }
166 166
 
167 167
 $GLOBALS['maj'][17311] = [
168
-	[
169
-		'ecrire_meta',
170
-		'multi_objets',
171
-		implode(
172
-			',',
173
-			array_diff(
174
-				[
175
-					(isset($GLOBALS['meta']['multi_rubriques']) and $GLOBALS['meta']['multi_rubriques'] == 'oui')
176
-						? 'spip_rubriques' : '',
177
-					(isset($GLOBALS['meta']['multi_articles']) and $GLOBALS['meta']['multi_articles'] == 'oui')
178
-						? 'spip_articles' : ''
179
-				],
180
-				['']
181
-			)
182
-		)
183
-	],
184
-	[
185
-		'ecrire_meta',
186
-		'gerer_trad_objets',
187
-		implode(
188
-			',',
189
-			array_diff(
190
-				[
191
-					(isset($GLOBALS['meta']['gerer_trad']) and $GLOBALS['meta']['gerer_trad'] == 'oui')
192
-						? 'spip_articles' : ''
193
-				],
194
-				['']
195
-			)
196
-		)
197
-	],
168
+    [
169
+        'ecrire_meta',
170
+        'multi_objets',
171
+        implode(
172
+            ',',
173
+            array_diff(
174
+                [
175
+                    (isset($GLOBALS['meta']['multi_rubriques']) and $GLOBALS['meta']['multi_rubriques'] == 'oui')
176
+                        ? 'spip_rubriques' : '',
177
+                    (isset($GLOBALS['meta']['multi_articles']) and $GLOBALS['meta']['multi_articles'] == 'oui')
178
+                        ? 'spip_articles' : ''
179
+                ],
180
+                ['']
181
+            )
182
+        )
183
+    ],
184
+    [
185
+        'ecrire_meta',
186
+        'gerer_trad_objets',
187
+        implode(
188
+            ',',
189
+            array_diff(
190
+                [
191
+                    (isset($GLOBALS['meta']['gerer_trad']) and $GLOBALS['meta']['gerer_trad'] == 'oui')
192
+                        ? 'spip_articles' : ''
193
+                ],
194
+                ['']
195
+            )
196
+        )
197
+    ],
198 198
 ];
199 199
 $GLOBALS['maj'][17555] = [
200
-	['sql_alter', "TABLE spip_resultats ADD table_objet varchar(30) DEFAULT '' NOT NULL"],
201
-	['sql_alter', "TABLE spip_resultats ADD serveur char(16) DEFAULT '' NOT NULL"],
200
+    ['sql_alter', "TABLE spip_resultats ADD table_objet varchar(30) DEFAULT '' NOT NULL"],
201
+    ['sql_alter', "TABLE spip_resultats ADD serveur char(16) DEFAULT '' NOT NULL"],
202 202
 ];
203 203
 
204 204
 $GLOBALS['maj'][17563] = [
205
-	['sql_alter', "TABLE spip_articles ADD virtuel VARCHAR(255) DEFAULT '' NOT NULL"],
206
-	['sql_update', 'spip_articles', ['virtuel' => 'SUBSTRING(chapo,2)', 'chapo' => "''"], "chapo LIKE '=_%'"],
205
+    ['sql_alter', "TABLE spip_articles ADD virtuel VARCHAR(255) DEFAULT '' NOT NULL"],
206
+    ['sql_update', 'spip_articles', ['virtuel' => 'SUBSTRING(chapo,2)', 'chapo' => "''"], "chapo LIKE '=_%'"],
207 207
 ];
208 208
 
209 209
 $GLOBALS['maj'][17577] = [
210
-	['maj_tables', ['spip_jobs', 'spip_jobs_liens']],
210
+    ['maj_tables', ['spip_jobs', 'spip_jobs_liens']],
211 211
 ];
212 212
 
213 213
 $GLOBALS['maj'][17743] = [
214
-	['sql_update', 'spip_auteurs', ['prefs' => 'bio', 'bio' => "''"], "statut='nouveau' AND bio<>''"],
214
+    ['sql_update', 'spip_auteurs', ['prefs' => 'bio', 'bio' => "''"], "statut='nouveau' AND bio<>''"],
215 215
 ];
216 216
 
217 217
 $GLOBALS['maj'][18219] = [
218
-	['sql_alter', 'TABLE spip_rubriques DROP id_import'],
219
-	['sql_alter', 'TABLE spip_rubriques DROP export'],
218
+    ['sql_alter', 'TABLE spip_rubriques DROP id_import'],
219
+    ['sql_alter', 'TABLE spip_rubriques DROP export'],
220 220
 ];
221 221
 
222 222
 $GLOBALS['maj'][18310] = [
223
-	['sql_alter', "TABLE spip_auteurs_liens CHANGE vu vu VARCHAR(6) DEFAULT 'non' NOT NULL"],
223
+    ['sql_alter', "TABLE spip_auteurs_liens CHANGE vu vu VARCHAR(6) DEFAULT 'non' NOT NULL"],
224 224
 ];
225 225
 
226 226
 $GLOBALS['maj'][18597] = [
227
-	['sql_alter', "TABLE spip_rubriques ADD profondeur smallint(5) DEFAULT '0' NOT NULL"],
228
-	['maj_propager_les_secteurs'],
227
+    ['sql_alter', "TABLE spip_rubriques ADD profondeur smallint(5) DEFAULT '0' NOT NULL"],
228
+    ['maj_propager_les_secteurs'],
229 229
 ];
230 230
 
231 231
 $GLOBALS['maj'][18955] = [
232
-	['sql_alter', 'TABLE spip_auteurs_liens ADD INDEX id_objet (id_objet)'],
233
-	['sql_alter', 'TABLE spip_auteurs_liens ADD INDEX objet (objet)'],
232
+    ['sql_alter', 'TABLE spip_auteurs_liens ADD INDEX id_objet (id_objet)'],
233
+    ['sql_alter', 'TABLE spip_auteurs_liens ADD INDEX objet (objet)'],
234 234
 ];
235 235
 
236 236
 /**
@@ -239,8 +239,8 @@  discard block
 block discarded – undo
239 239
  * @uses propager_les_secteurs()
240 240
  **/
241 241
 function maj_propager_les_secteurs() {
242
-	include_spip('inc/rubriques');
243
-	propager_les_secteurs();
242
+    include_spip('inc/rubriques');
243
+    propager_les_secteurs();
244 244
 }
245 245
 
246 246
 /**
@@ -253,87 +253,87 @@  discard block
 block discarded – undo
253 253
 function maj_collation_sqlite() {
254 254
 
255 255
 
256
-	include_spip('base/dump');
257
-	$tables = base_lister_toutes_tables();
258
-
259
-	// rien a faire si base non sqlite
260
-	if (strncmp($GLOBALS['connexions'][0]['type'], 'sqlite', 6) !== 0) {
261
-		return;
262
-	}
263
-
264
-	$trouver_table = charger_fonction('trouver_table', 'base');
265
-	// forcer le vidage de cache
266
-	$trouver_table('');
267
-
268
-	// cas particulier spip_auteurs : retablir le collate binary sur le login
269
-	$desc = $trouver_table('spip_auteurs');
270
-	spip_log('spip_auteurs : ' . var_export($desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE);
271
-	if (stripos($desc['field']['login'], 'BINARY') === false) {
272
-		spip_log('Retablir champ login BINARY sur table spip_auteurs', 'maj');
273
-		sql_alter('table spip_auteurs change login login VARCHAR(255) BINARY');
274
-		$trouver_table('');
275
-		$new_desc = $trouver_table('spip_auteurs');
276
-		spip_log('Apres conversion spip_auteurs : ' . var_export($new_desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE);
277
-	}
278
-
279
-	foreach ($tables as $table) {
280
-		if (time() >= _TIME_OUT) {
281
-			return;
282
-		}
283
-		if ($desc = $trouver_table($table)) {
284
-			$desc_collate = _sqlite_remplacements_definitions_table($desc['field']);
285
-			if ($d = array_diff($desc['field'], $desc_collate)) {
286
-				spip_log("Table $table COLLATE incorrects", 'maj');
287
-
288
-				// cas particulier spip_urls :
289
-				// supprimer les doublons avant conversion sinon echec (on garde les urls les plus recentes)
290
-				if ($table == 'spip_urls') {
291
-					// par date DESC pour conserver les urls les plus recentes
292
-					$data = sql_allfetsel('*', 'spip_urls', '', '', 'date DESC');
293
-					$urls = [];
294
-					foreach ($data as $d) {
295
-						$key = $d['id_parent'] . '::' . strtolower($d['url']);
296
-						if (!isset($urls[$key])) {
297
-							$urls[$key] = true;
298
-						} else {
299
-							spip_log(
300
-								'Suppression doublon dans spip_urls avant conversion : ' . serialize($d),
301
-								'maj.' . _LOG_INFO_IMPORTANTE
302
-							);
303
-							sql_delete('spip_urls', 'id_parent=' . sql_quote($d['id_parent']) . ' AND url=' . sql_quote($d['url']));
304
-						}
305
-					}
306
-				}
307
-				foreach ($desc['field'] as $field => $type) {
308
-					if ($desc['field'][$field] !== $desc_collate[$field]) {
309
-						spip_log("Conversion COLLATE table $table", 'maj.' . _LOG_INFO_IMPORTANTE);
310
-						sql_alter("table $table change $field $field " . $desc_collate[$field]);
311
-						$trouver_table('');
312
-						$new_desc = $trouver_table($table);
313
-						spip_log(
314
-							"Apres conversion $table : " . var_export($new_desc['field'], true),
315
-							'maj.' . _LOG_INFO_IMPORTANTE
316
-						);
317
-						continue 2; // inutile de continuer pour cette table : un seul alter remet tout a jour en sqlite
318
-					}
319
-				}
320
-			}
321
-		}
322
-	}
323
-
324
-	// forcer le vidage de cache
325
-	$trouver_table('');
256
+    include_spip('base/dump');
257
+    $tables = base_lister_toutes_tables();
258
+
259
+    // rien a faire si base non sqlite
260
+    if (strncmp($GLOBALS['connexions'][0]['type'], 'sqlite', 6) !== 0) {
261
+        return;
262
+    }
263
+
264
+    $trouver_table = charger_fonction('trouver_table', 'base');
265
+    // forcer le vidage de cache
266
+    $trouver_table('');
267
+
268
+    // cas particulier spip_auteurs : retablir le collate binary sur le login
269
+    $desc = $trouver_table('spip_auteurs');
270
+    spip_log('spip_auteurs : ' . var_export($desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE);
271
+    if (stripos($desc['field']['login'], 'BINARY') === false) {
272
+        spip_log('Retablir champ login BINARY sur table spip_auteurs', 'maj');
273
+        sql_alter('table spip_auteurs change login login VARCHAR(255) BINARY');
274
+        $trouver_table('');
275
+        $new_desc = $trouver_table('spip_auteurs');
276
+        spip_log('Apres conversion spip_auteurs : ' . var_export($new_desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE);
277
+    }
278
+
279
+    foreach ($tables as $table) {
280
+        if (time() >= _TIME_OUT) {
281
+            return;
282
+        }
283
+        if ($desc = $trouver_table($table)) {
284
+            $desc_collate = _sqlite_remplacements_definitions_table($desc['field']);
285
+            if ($d = array_diff($desc['field'], $desc_collate)) {
286
+                spip_log("Table $table COLLATE incorrects", 'maj');
287
+
288
+                // cas particulier spip_urls :
289
+                // supprimer les doublons avant conversion sinon echec (on garde les urls les plus recentes)
290
+                if ($table == 'spip_urls') {
291
+                    // par date DESC pour conserver les urls les plus recentes
292
+                    $data = sql_allfetsel('*', 'spip_urls', '', '', 'date DESC');
293
+                    $urls = [];
294
+                    foreach ($data as $d) {
295
+                        $key = $d['id_parent'] . '::' . strtolower($d['url']);
296
+                        if (!isset($urls[$key])) {
297
+                            $urls[$key] = true;
298
+                        } else {
299
+                            spip_log(
300
+                                'Suppression doublon dans spip_urls avant conversion : ' . serialize($d),
301
+                                'maj.' . _LOG_INFO_IMPORTANTE
302
+                            );
303
+                            sql_delete('spip_urls', 'id_parent=' . sql_quote($d['id_parent']) . ' AND url=' . sql_quote($d['url']));
304
+                        }
305
+                    }
306
+                }
307
+                foreach ($desc['field'] as $field => $type) {
308
+                    if ($desc['field'][$field] !== $desc_collate[$field]) {
309
+                        spip_log("Conversion COLLATE table $table", 'maj.' . _LOG_INFO_IMPORTANTE);
310
+                        sql_alter("table $table change $field $field " . $desc_collate[$field]);
311
+                        $trouver_table('');
312
+                        $new_desc = $trouver_table($table);
313
+                        spip_log(
314
+                            "Apres conversion $table : " . var_export($new_desc['field'], true),
315
+                            'maj.' . _LOG_INFO_IMPORTANTE
316
+                        );
317
+                        continue 2; // inutile de continuer pour cette table : un seul alter remet tout a jour en sqlite
318
+                    }
319
+                }
320
+            }
321
+        }
322
+    }
323
+
324
+    // forcer le vidage de cache
325
+    $trouver_table('');
326 326
 }
327 327
 
328 328
 
329 329
 $GLOBALS['maj'][19236] = [
330
-	['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom='version_installee'"], // version base principale
331
-	['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom LIKE '%_base_version'"],  // version base plugins
332
-	['maj_collation_sqlite'],
330
+    ['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom='version_installee'"], // version base principale
331
+    ['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom LIKE '%_base_version'"],  // version base plugins
332
+    ['maj_collation_sqlite'],
333 333
 ];
334 334
 
335 335
 $GLOBALS['maj'][19268] = [
336
-	['supprimer_toutes_sessions'],
336
+    ['supprimer_toutes_sessions'],
337 337
 ];
338 338
 
339 339
 /**
@@ -342,13 +342,13 @@  discard block
 block discarded – undo
342 342
  * Obligera tous les auteurs à se reconnecter !
343 343
  **/
344 344
 function supprimer_toutes_sessions() {
345
-	spip_log('supprimer sessions auteur');
346
-	if ($dir = opendir(_DIR_SESSIONS)) {
347
-		while (($f = readdir($dir)) !== false) {
348
-			spip_unlink(_DIR_SESSIONS . $f);
349
-			if (time() >= _TIME_OUT) {
350
-				return;
351
-			}
352
-		}
353
-	}
345
+    spip_log('supprimer sessions auteur');
346
+    if ($dir = opendir(_DIR_SESSIONS)) {
347
+        while (($f = readdir($dir)) !== false) {
348
+            spip_unlink(_DIR_SESSIONS . $f);
349
+            if (time() >= _TIME_OUT) {
350
+                return;
351
+            }
352
+        }
353
+    }
354 354
 }
Please login to merge, or discard this patch.