@@ -4,571 +4,571 @@ discard block |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'access_interface_graphique' => 'Voltar à interface gráfica completa', |
|
| 14 | - 'access_mode_texte' => 'Exibir a interface textual simplificada', |
|
| 15 | - 'admin_debug' => 'debug', |
|
| 16 | - 'admin_modifier_article' => 'Modificar este artigo', |
|
| 17 | - 'admin_modifier_auteur' => 'Modificar este autor', |
|
| 18 | - 'admin_modifier_breve' => 'Modificar esta notícia', |
|
| 19 | - 'admin_modifier_mot' => 'Modificar esta palavra-chave', |
|
| 20 | - 'admin_modifier_rubrique' => 'Modificar esta rubrica', |
|
| 21 | - 'admin_recalculer' => 'Recompor esta página', |
|
| 22 | - 'afficher_calendrier' => 'Exibir o calendário', |
|
| 23 | - 'afficher_trad' => 'exibir as traduções', |
|
| 24 | - 'alerte_maj_impossible' => '<b>Alerta !</b> A actualização da base de dados SQL para a versão @version@ é impossível, talvez por causa de um problema de permissão de modificação na base de dados. Por favor contacte o seu serviço de hospedagem.', |
|
| 25 | - 'alerte_modif_info_concourante' => 'ATTENÇÃO : Esta informação já foi modificada noutro menu. O valor actual é :', |
|
| 26 | - 'analyse_xml' => 'Análise XML', |
|
| 27 | - 'annuler' => 'Cancelar', |
|
| 28 | - 'antispam_champ_vide' => 'Por favor deixe este campo vazio :', |
|
| 29 | - 'articles_recents' => 'Artigos mais recentes', |
|
| 30 | - 'avis_archive_incorrect' => 'o ficheiro arquivo não é um ficheiro SPIP', |
|
| 31 | - 'avis_archive_invalide' => 'o ficheiro arquivo não é válido ', |
|
| 32 | - 'avis_attention' => ' ATENÇÂO!', |
|
| 33 | - 'avis_champ_incorrect_type_objet' => 'Nome de campo incorrecto @name@ para objecto de tipo @type@', |
|
| 34 | - 'avis_colonne_inexistante' => 'A coluna @col@ não existe', |
|
| 35 | - 'avis_erreur' => 'Erro: ver mais abaixo', |
|
| 36 | - 'avis_erreur_connexion' => 'Erro de ligação ', |
|
| 37 | - 'avis_erreur_cookie' => 'problema de cookie', |
|
| 38 | - 'avis_erreur_fonction_contexte' => 'Erro de programação. Não se pode chamar esta função neste contexto.', |
|
| 39 | - 'avis_erreur_mysql' => 'Erro SQL', |
|
| 40 | - 'avis_erreur_sauvegarde' => 'Erro na cópia de segurança (@type@ @id_objet@) !', |
|
| 41 | - 'avis_erreur_visiteur' => 'Problema de acesso à área privada', |
|
| 12 | + // A |
|
| 13 | + 'access_interface_graphique' => 'Voltar à interface gráfica completa', |
|
| 14 | + 'access_mode_texte' => 'Exibir a interface textual simplificada', |
|
| 15 | + 'admin_debug' => 'debug', |
|
| 16 | + 'admin_modifier_article' => 'Modificar este artigo', |
|
| 17 | + 'admin_modifier_auteur' => 'Modificar este autor', |
|
| 18 | + 'admin_modifier_breve' => 'Modificar esta notícia', |
|
| 19 | + 'admin_modifier_mot' => 'Modificar esta palavra-chave', |
|
| 20 | + 'admin_modifier_rubrique' => 'Modificar esta rubrica', |
|
| 21 | + 'admin_recalculer' => 'Recompor esta página', |
|
| 22 | + 'afficher_calendrier' => 'Exibir o calendário', |
|
| 23 | + 'afficher_trad' => 'exibir as traduções', |
|
| 24 | + 'alerte_maj_impossible' => '<b>Alerta !</b> A actualização da base de dados SQL para a versão @version@ é impossível, talvez por causa de um problema de permissão de modificação na base de dados. Por favor contacte o seu serviço de hospedagem.', |
|
| 25 | + 'alerte_modif_info_concourante' => 'ATTENÇÃO : Esta informação já foi modificada noutro menu. O valor actual é :', |
|
| 26 | + 'analyse_xml' => 'Análise XML', |
|
| 27 | + 'annuler' => 'Cancelar', |
|
| 28 | + 'antispam_champ_vide' => 'Por favor deixe este campo vazio :', |
|
| 29 | + 'articles_recents' => 'Artigos mais recentes', |
|
| 30 | + 'avis_archive_incorrect' => 'o ficheiro arquivo não é um ficheiro SPIP', |
|
| 31 | + 'avis_archive_invalide' => 'o ficheiro arquivo não é válido ', |
|
| 32 | + 'avis_attention' => ' ATENÇÂO!', |
|
| 33 | + 'avis_champ_incorrect_type_objet' => 'Nome de campo incorrecto @name@ para objecto de tipo @type@', |
|
| 34 | + 'avis_colonne_inexistante' => 'A coluna @col@ não existe', |
|
| 35 | + 'avis_erreur' => 'Erro: ver mais abaixo', |
|
| 36 | + 'avis_erreur_connexion' => 'Erro de ligação ', |
|
| 37 | + 'avis_erreur_cookie' => 'problema de cookie', |
|
| 38 | + 'avis_erreur_fonction_contexte' => 'Erro de programação. Não se pode chamar esta função neste contexto.', |
|
| 39 | + 'avis_erreur_mysql' => 'Erro SQL', |
|
| 40 | + 'avis_erreur_sauvegarde' => 'Erro na cópia de segurança (@type@ @id_objet@) !', |
|
| 41 | + 'avis_erreur_visiteur' => 'Problema de acesso à área privada', |
|
| 42 | 42 | |
| 43 | - // B |
|
| 44 | - 'barre_a_accent_grave' => 'Inserir um A maiúsculo com acento grave', |
|
| 45 | - 'barre_aide' => 'Utilize as abreviaturas tipográficas para enriquecer a sua paginação.', |
|
| 46 | - 'barre_e_accent_aigu' => 'Inserir um E maiúsculo com acento agudo ', |
|
| 47 | - 'barre_eo' => 'Inserir um E no O', |
|
| 48 | - 'barre_eo_maj' => 'Inserir um E no O maiúsculo', |
|
| 49 | - 'barre_euro' => 'Inserir o símbolo €', |
|
| 50 | - 'barre_gras' => ' Escrever em {{negro}}', |
|
| 51 | - 'barre_guillemets' => 'Colocar entre "aspas" ', |
|
| 52 | - 'barre_guillemets_simples' => 'Colocar entre ’aspas simples’', |
|
| 53 | - 'barre_intertitre' => 'Transfomar em {{{intertítulo}}} ', |
|
| 54 | - 'barre_italic' => 'Pôr em itálico ', |
|
| 55 | - 'barre_lien' => 'Transformar em [ligação hipertexto->http://...]', |
|
| 56 | - 'barre_lien_input' => 'Por favor indique o endereço da sua ligação (pode indicar um endereço Web sob a forma http://www.monsite/com ou simplesmente indicar o número de um artigo deste sítio.) ', |
|
| 57 | - 'barre_note' => 'Transformar em [[Nota de rodapé ]]', |
|
| 58 | - 'barre_paragraphe' => 'Criar um parágrafo', |
|
| 59 | - 'barre_quote' => '<quote>Citar uma mensagem</quote>', |
|
| 60 | - 'bouton_changer' => 'Modificar', |
|
| 61 | - 'bouton_chercher' => 'Procurar', |
|
| 62 | - 'bouton_choisir' => 'Seleccionar', |
|
| 63 | - 'bouton_deplacer' => 'Mover', |
|
| 64 | - 'bouton_download' => 'Download', |
|
| 65 | - 'bouton_enregistrer' => 'Guardar', |
|
| 66 | - 'bouton_radio_desactiver_messagerie_interne' => 'Desactivar a caixa de correio interno', |
|
| 67 | - 'bouton_radio_envoi_annonces' => 'Enviar os anúncios editoriais', |
|
| 68 | - 'bouton_radio_non_envoi_annonces' => 'Não enviar anúncios', |
|
| 69 | - 'bouton_radio_non_envoi_liste_nouveautes' => 'Não enviar a lista das novidades', |
|
| 70 | - 'bouton_recharger_page' => 'recarregar esta página', |
|
| 71 | - 'bouton_telecharger' => 'Carregar', |
|
| 72 | - 'bouton_upload' => 'Carregar', |
|
| 73 | - 'bouton_valider' => 'Submeter', |
|
| 43 | + // B |
|
| 44 | + 'barre_a_accent_grave' => 'Inserir um A maiúsculo com acento grave', |
|
| 45 | + 'barre_aide' => 'Utilize as abreviaturas tipográficas para enriquecer a sua paginação.', |
|
| 46 | + 'barre_e_accent_aigu' => 'Inserir um E maiúsculo com acento agudo ', |
|
| 47 | + 'barre_eo' => 'Inserir um E no O', |
|
| 48 | + 'barre_eo_maj' => 'Inserir um E no O maiúsculo', |
|
| 49 | + 'barre_euro' => 'Inserir o símbolo €', |
|
| 50 | + 'barre_gras' => ' Escrever em {{negro}}', |
|
| 51 | + 'barre_guillemets' => 'Colocar entre "aspas" ', |
|
| 52 | + 'barre_guillemets_simples' => 'Colocar entre ’aspas simples’', |
|
| 53 | + 'barre_intertitre' => 'Transfomar em {{{intertítulo}}} ', |
|
| 54 | + 'barre_italic' => 'Pôr em itálico ', |
|
| 55 | + 'barre_lien' => 'Transformar em [ligação hipertexto->http://...]', |
|
| 56 | + 'barre_lien_input' => 'Por favor indique o endereço da sua ligação (pode indicar um endereço Web sob a forma http://www.monsite/com ou simplesmente indicar o número de um artigo deste sítio.) ', |
|
| 57 | + 'barre_note' => 'Transformar em [[Nota de rodapé ]]', |
|
| 58 | + 'barre_paragraphe' => 'Criar um parágrafo', |
|
| 59 | + 'barre_quote' => '<quote>Citar uma mensagem</quote>', |
|
| 60 | + 'bouton_changer' => 'Modificar', |
|
| 61 | + 'bouton_chercher' => 'Procurar', |
|
| 62 | + 'bouton_choisir' => 'Seleccionar', |
|
| 63 | + 'bouton_deplacer' => 'Mover', |
|
| 64 | + 'bouton_download' => 'Download', |
|
| 65 | + 'bouton_enregistrer' => 'Guardar', |
|
| 66 | + 'bouton_radio_desactiver_messagerie_interne' => 'Desactivar a caixa de correio interno', |
|
| 67 | + 'bouton_radio_envoi_annonces' => 'Enviar os anúncios editoriais', |
|
| 68 | + 'bouton_radio_non_envoi_annonces' => 'Não enviar anúncios', |
|
| 69 | + 'bouton_radio_non_envoi_liste_nouveautes' => 'Não enviar a lista das novidades', |
|
| 70 | + 'bouton_recharger_page' => 'recarregar esta página', |
|
| 71 | + 'bouton_telecharger' => 'Carregar', |
|
| 72 | + 'bouton_upload' => 'Carregar', |
|
| 73 | + 'bouton_valider' => 'Submeter', |
|
| 74 | 74 | |
| 75 | - // C |
|
| 76 | - 'cal_apresmidi' => 'tarde', |
|
| 77 | - 'cal_jour_entier' => 'dia todo', |
|
| 78 | - 'cal_matin' => 'manhã', |
|
| 79 | - 'cal_par_jour' => 'calendário por dia', |
|
| 80 | - 'cal_par_mois' => 'calendário por mês', |
|
| 81 | - 'cal_par_semaine' => 'calendário por semana', |
|
| 82 | - 'choix_couleur_interface' => 'cor', |
|
| 83 | - 'choix_interface' => 'escolha da interface', |
|
| 84 | - 'colonne' => 'Coluna', |
|
| 85 | - 'confirm_changer_statut' => 'Atenção, solicitou a alteração do estatuto deste elemento. Deseja continuar?', |
|
| 86 | - 'correcte' => 'correcto', |
|
| 75 | + // C |
|
| 76 | + 'cal_apresmidi' => 'tarde', |
|
| 77 | + 'cal_jour_entier' => 'dia todo', |
|
| 78 | + 'cal_matin' => 'manhã', |
|
| 79 | + 'cal_par_jour' => 'calendário por dia', |
|
| 80 | + 'cal_par_mois' => 'calendário por mês', |
|
| 81 | + 'cal_par_semaine' => 'calendário por semana', |
|
| 82 | + 'choix_couleur_interface' => 'cor', |
|
| 83 | + 'choix_interface' => 'escolha da interface', |
|
| 84 | + 'colonne' => 'Coluna', |
|
| 85 | + 'confirm_changer_statut' => 'Atenção, solicitou a alteração do estatuto deste elemento. Deseja continuar?', |
|
| 86 | + 'correcte' => 'correcto', |
|
| 87 | 87 | |
| 88 | - // D |
|
| 89 | - 'date_aujourdhui' => 'hoje', |
|
| 90 | - 'date_avant_jc' => 'a. J.C.', |
|
| 91 | - 'date_dans' => 'entre @delai@', |
|
| 92 | - 'date_de_mois_1' => '@j@ de @nommois@', |
|
| 93 | - 'date_de_mois_10' => '@j@ de @nommois@', |
|
| 94 | - 'date_de_mois_11' => '@j@ de @nommois@', |
|
| 95 | - 'date_de_mois_12' => '@j@ de @nommois@', |
|
| 96 | - 'date_de_mois_2' => '@j@ de @nommois@', |
|
| 97 | - 'date_de_mois_3' => '@j@ de @nommois@', |
|
| 98 | - 'date_de_mois_4' => '@j@ de @nommois@', |
|
| 99 | - 'date_de_mois_5' => '@j@ de @nommois@', |
|
| 100 | - 'date_de_mois_6' => '@j@ de @nommois@', |
|
| 101 | - 'date_de_mois_7' => '@j@ de @nommois@', |
|
| 102 | - 'date_de_mois_8' => '@j@ de @nommois@', |
|
| 103 | - 'date_de_mois_9' => '@j@ de @nommois@', |
|
| 104 | - 'date_demain' => 'amanhã', |
|
| 105 | - 'date_fmt_heures_minutes' => '@h@h@m@min', |
|
| 106 | - 'date_fmt_heures_minutes_court' => '@h@:@m@', |
|
| 107 | - 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 108 | - 'date_fmt_jour_heure' => '@jour@ a @heure@', |
|
| 109 | - 'date_fmt_jour_heure_debut_fin' => '@jour@ de @heure_debut@ a @heure_fin@', # MODIF |
|
| 110 | - 'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ de @heure_debut@@dtabbr@ a @dtstart@@heure_fin@@dtend@', # MODIF |
|
| 111 | - 'date_fmt_jour_mois' => '@jour@ de @nommois@', |
|
| 112 | - 'date_fmt_jour_mois_annee' => '@jour@ de @nommois@ de @annee@', |
|
| 113 | - 'date_fmt_mois_annee' => '@nommois@ de @annee@', |
|
| 114 | - 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 115 | - 'date_fmt_nomjour_date' => ' @nomjour@ @date@', |
|
| 116 | - 'date_fmt_periode' => 'De @date_debut@ a @date_fin@', |
|
| 117 | - 'date_fmt_periode_abbr' => 'De @dtart@@date_debut@@dtabbr@ a @dtend@@date_fin@@dtabbr@', |
|
| 118 | - 'date_fmt_periode_from' => 'De', |
|
| 119 | - 'date_fmt_periode_to' => 'a', |
|
| 120 | - 'date_heures' => 'horas', |
|
| 121 | - 'date_hier' => 'ontem', |
|
| 122 | - 'date_il_y_a' => 'há @delai@', |
|
| 123 | - 'date_jnum1' => '1', |
|
| 124 | - 'date_jnum10' => '10', |
|
| 125 | - 'date_jnum11' => '11', |
|
| 126 | - 'date_jnum12' => '12', |
|
| 127 | - 'date_jnum13' => '13', |
|
| 128 | - 'date_jnum14' => '14', |
|
| 129 | - 'date_jnum15' => '15', |
|
| 130 | - 'date_jnum16' => '16', |
|
| 131 | - 'date_jnum17' => '17', |
|
| 132 | - 'date_jnum18' => '18', |
|
| 133 | - 'date_jnum19' => '19', |
|
| 134 | - 'date_jnum2' => '2', |
|
| 135 | - 'date_jnum20' => '20', |
|
| 136 | - 'date_jnum21' => '21', |
|
| 137 | - 'date_jnum22' => '22', |
|
| 138 | - 'date_jnum23' => '23', |
|
| 139 | - 'date_jnum24' => '24', |
|
| 140 | - 'date_jnum25' => '25', |
|
| 141 | - 'date_jnum26' => '26', |
|
| 142 | - 'date_jnum27' => '27', |
|
| 143 | - 'date_jnum28' => '28', |
|
| 144 | - 'date_jnum29' => '29', |
|
| 145 | - 'date_jnum3' => '3', |
|
| 146 | - 'date_jnum30' => '30', |
|
| 147 | - 'date_jnum31' => '31', |
|
| 148 | - 'date_jnum4' => '4', |
|
| 149 | - 'date_jnum5' => '5', |
|
| 150 | - 'date_jnum6' => '6', |
|
| 151 | - 'date_jnum7' => '7', |
|
| 152 | - 'date_jnum8' => '8', |
|
| 153 | - 'date_jnum9' => '9', |
|
| 154 | - 'date_jour_1' => 'domingo', |
|
| 155 | - 'date_jour_1_abbr' => 'Dom.', |
|
| 156 | - 'date_jour_1_initiale' => 'D.', |
|
| 157 | - 'date_jour_2' => 'segunda-feira', |
|
| 158 | - 'date_jour_2_abbr' => 'Seg.', |
|
| 159 | - 'date_jour_2_initiale' => 'S.', |
|
| 160 | - 'date_jour_3' => 'terça-feira', |
|
| 161 | - 'date_jour_3_abbr' => 'Ter.', |
|
| 162 | - 'date_jour_3_initiale' => 'T.', |
|
| 163 | - 'date_jour_4' => 'quarta-feira', |
|
| 164 | - 'date_jour_4_abbr' => 'Qua.', |
|
| 165 | - 'date_jour_4_initiale' => 'Q.', |
|
| 166 | - 'date_jour_5' => 'quinta-feira', |
|
| 167 | - 'date_jour_5_abbr' => 'Qui.', |
|
| 168 | - 'date_jour_5_initiale' => 'Q.', |
|
| 169 | - 'date_jour_6' => 'sexta-feira', |
|
| 170 | - 'date_jour_6_abbr' => 'Sex.', |
|
| 171 | - 'date_jour_6_initiale' => 'S.', |
|
| 172 | - 'date_jour_7' => 'sábado', |
|
| 173 | - 'date_jour_7_abbr' => 'Sab.', |
|
| 174 | - 'date_jour_7_initiale' => 'S.', |
|
| 175 | - 'date_jours' => 'dias', |
|
| 176 | - 'date_minutes' => 'minutos', |
|
| 177 | - 'date_mois' => 'meses', |
|
| 178 | - 'date_mois_1' => 'Janeiro', |
|
| 179 | - 'date_mois_10' => 'Outubro', |
|
| 180 | - 'date_mois_10_abbr' => 'Out.', |
|
| 181 | - 'date_mois_11' => 'Novembro', |
|
| 182 | - 'date_mois_11_abbr' => 'Nov.', |
|
| 183 | - 'date_mois_12' => 'Dezembro', |
|
| 184 | - 'date_mois_12_abbr' => 'Dez.', |
|
| 185 | - 'date_mois_1_abbr' => 'Jan.', |
|
| 186 | - 'date_mois_2' => 'Fevereiro', |
|
| 187 | - 'date_mois_2_abbr' => 'Feb.', |
|
| 188 | - 'date_mois_3' => 'Março', |
|
| 189 | - 'date_mois_3_abbr' => 'Mar', |
|
| 190 | - 'date_mois_4' => 'Abril', |
|
| 191 | - 'date_mois_4_abbr' => 'Abr.', |
|
| 192 | - 'date_mois_5' => 'Maio', |
|
| 193 | - 'date_mois_5_abbr' => 'Mai', |
|
| 194 | - 'date_mois_6' => 'Junho', |
|
| 195 | - 'date_mois_6_abbr' => 'Jun', |
|
| 196 | - 'date_mois_7' => 'Julho', |
|
| 197 | - 'date_mois_7_abbr' => 'Jul', |
|
| 198 | - 'date_mois_8' => 'Agosto', |
|
| 199 | - 'date_mois_8_abbr' => 'Ago', |
|
| 200 | - 'date_mois_9' => 'Setembro', |
|
| 201 | - 'date_mois_9_abbr' => 'Set', |
|
| 202 | - 'date_saison_1' => 'inverno', |
|
| 203 | - 'date_saison_2' => 'primavera', |
|
| 204 | - 'date_saison_3' => 'verão', |
|
| 205 | - 'date_saison_4' => 'outono', |
|
| 206 | - 'date_secondes' => 'segundos', |
|
| 207 | - 'date_semaines' => 'semanas', |
|
| 208 | - 'date_un_mois' => 'mês', |
|
| 209 | - 'date_une_heure' => 'hora', |
|
| 210 | - 'date_une_minute' => 'minuto', |
|
| 211 | - 'date_une_seconde' => 'segundo', |
|
| 212 | - 'date_une_semaine' => 'semana', |
|
| 213 | - 'dirs_commencer' => 'a fim de começar realmente a instalação', |
|
| 214 | - 'dirs_preliminaire' => 'Preliminar : <b>Configurar os direitos de acesso</b>', |
|
| 215 | - 'dirs_probleme_droits' => 'Problema de direitos de acesso', |
|
| 216 | - 'dirs_repertoires_absents' => '<b>Os seguintes directórios não foram encontrados : <ul>@bad_dirs@.</ul> </b> |
|
| 88 | + // D |
|
| 89 | + 'date_aujourdhui' => 'hoje', |
|
| 90 | + 'date_avant_jc' => 'a. J.C.', |
|
| 91 | + 'date_dans' => 'entre @delai@', |
|
| 92 | + 'date_de_mois_1' => '@j@ de @nommois@', |
|
| 93 | + 'date_de_mois_10' => '@j@ de @nommois@', |
|
| 94 | + 'date_de_mois_11' => '@j@ de @nommois@', |
|
| 95 | + 'date_de_mois_12' => '@j@ de @nommois@', |
|
| 96 | + 'date_de_mois_2' => '@j@ de @nommois@', |
|
| 97 | + 'date_de_mois_3' => '@j@ de @nommois@', |
|
| 98 | + 'date_de_mois_4' => '@j@ de @nommois@', |
|
| 99 | + 'date_de_mois_5' => '@j@ de @nommois@', |
|
| 100 | + 'date_de_mois_6' => '@j@ de @nommois@', |
|
| 101 | + 'date_de_mois_7' => '@j@ de @nommois@', |
|
| 102 | + 'date_de_mois_8' => '@j@ de @nommois@', |
|
| 103 | + 'date_de_mois_9' => '@j@ de @nommois@', |
|
| 104 | + 'date_demain' => 'amanhã', |
|
| 105 | + 'date_fmt_heures_minutes' => '@h@h@m@min', |
|
| 106 | + 'date_fmt_heures_minutes_court' => '@h@:@m@', |
|
| 107 | + 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 108 | + 'date_fmt_jour_heure' => '@jour@ a @heure@', |
|
| 109 | + 'date_fmt_jour_heure_debut_fin' => '@jour@ de @heure_debut@ a @heure_fin@', # MODIF |
|
| 110 | + 'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ de @heure_debut@@dtabbr@ a @dtstart@@heure_fin@@dtend@', # MODIF |
|
| 111 | + 'date_fmt_jour_mois' => '@jour@ de @nommois@', |
|
| 112 | + 'date_fmt_jour_mois_annee' => '@jour@ de @nommois@ de @annee@', |
|
| 113 | + 'date_fmt_mois_annee' => '@nommois@ de @annee@', |
|
| 114 | + 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 115 | + 'date_fmt_nomjour_date' => ' @nomjour@ @date@', |
|
| 116 | + 'date_fmt_periode' => 'De @date_debut@ a @date_fin@', |
|
| 117 | + 'date_fmt_periode_abbr' => 'De @dtart@@date_debut@@dtabbr@ a @dtend@@date_fin@@dtabbr@', |
|
| 118 | + 'date_fmt_periode_from' => 'De', |
|
| 119 | + 'date_fmt_periode_to' => 'a', |
|
| 120 | + 'date_heures' => 'horas', |
|
| 121 | + 'date_hier' => 'ontem', |
|
| 122 | + 'date_il_y_a' => 'há @delai@', |
|
| 123 | + 'date_jnum1' => '1', |
|
| 124 | + 'date_jnum10' => '10', |
|
| 125 | + 'date_jnum11' => '11', |
|
| 126 | + 'date_jnum12' => '12', |
|
| 127 | + 'date_jnum13' => '13', |
|
| 128 | + 'date_jnum14' => '14', |
|
| 129 | + 'date_jnum15' => '15', |
|
| 130 | + 'date_jnum16' => '16', |
|
| 131 | + 'date_jnum17' => '17', |
|
| 132 | + 'date_jnum18' => '18', |
|
| 133 | + 'date_jnum19' => '19', |
|
| 134 | + 'date_jnum2' => '2', |
|
| 135 | + 'date_jnum20' => '20', |
|
| 136 | + 'date_jnum21' => '21', |
|
| 137 | + 'date_jnum22' => '22', |
|
| 138 | + 'date_jnum23' => '23', |
|
| 139 | + 'date_jnum24' => '24', |
|
| 140 | + 'date_jnum25' => '25', |
|
| 141 | + 'date_jnum26' => '26', |
|
| 142 | + 'date_jnum27' => '27', |
|
| 143 | + 'date_jnum28' => '28', |
|
| 144 | + 'date_jnum29' => '29', |
|
| 145 | + 'date_jnum3' => '3', |
|
| 146 | + 'date_jnum30' => '30', |
|
| 147 | + 'date_jnum31' => '31', |
|
| 148 | + 'date_jnum4' => '4', |
|
| 149 | + 'date_jnum5' => '5', |
|
| 150 | + 'date_jnum6' => '6', |
|
| 151 | + 'date_jnum7' => '7', |
|
| 152 | + 'date_jnum8' => '8', |
|
| 153 | + 'date_jnum9' => '9', |
|
| 154 | + 'date_jour_1' => 'domingo', |
|
| 155 | + 'date_jour_1_abbr' => 'Dom.', |
|
| 156 | + 'date_jour_1_initiale' => 'D.', |
|
| 157 | + 'date_jour_2' => 'segunda-feira', |
|
| 158 | + 'date_jour_2_abbr' => 'Seg.', |
|
| 159 | + 'date_jour_2_initiale' => 'S.', |
|
| 160 | + 'date_jour_3' => 'terça-feira', |
|
| 161 | + 'date_jour_3_abbr' => 'Ter.', |
|
| 162 | + 'date_jour_3_initiale' => 'T.', |
|
| 163 | + 'date_jour_4' => 'quarta-feira', |
|
| 164 | + 'date_jour_4_abbr' => 'Qua.', |
|
| 165 | + 'date_jour_4_initiale' => 'Q.', |
|
| 166 | + 'date_jour_5' => 'quinta-feira', |
|
| 167 | + 'date_jour_5_abbr' => 'Qui.', |
|
| 168 | + 'date_jour_5_initiale' => 'Q.', |
|
| 169 | + 'date_jour_6' => 'sexta-feira', |
|
| 170 | + 'date_jour_6_abbr' => 'Sex.', |
|
| 171 | + 'date_jour_6_initiale' => 'S.', |
|
| 172 | + 'date_jour_7' => 'sábado', |
|
| 173 | + 'date_jour_7_abbr' => 'Sab.', |
|
| 174 | + 'date_jour_7_initiale' => 'S.', |
|
| 175 | + 'date_jours' => 'dias', |
|
| 176 | + 'date_minutes' => 'minutos', |
|
| 177 | + 'date_mois' => 'meses', |
|
| 178 | + 'date_mois_1' => 'Janeiro', |
|
| 179 | + 'date_mois_10' => 'Outubro', |
|
| 180 | + 'date_mois_10_abbr' => 'Out.', |
|
| 181 | + 'date_mois_11' => 'Novembro', |
|
| 182 | + 'date_mois_11_abbr' => 'Nov.', |
|
| 183 | + 'date_mois_12' => 'Dezembro', |
|
| 184 | + 'date_mois_12_abbr' => 'Dez.', |
|
| 185 | + 'date_mois_1_abbr' => 'Jan.', |
|
| 186 | + 'date_mois_2' => 'Fevereiro', |
|
| 187 | + 'date_mois_2_abbr' => 'Feb.', |
|
| 188 | + 'date_mois_3' => 'Março', |
|
| 189 | + 'date_mois_3_abbr' => 'Mar', |
|
| 190 | + 'date_mois_4' => 'Abril', |
|
| 191 | + 'date_mois_4_abbr' => 'Abr.', |
|
| 192 | + 'date_mois_5' => 'Maio', |
|
| 193 | + 'date_mois_5_abbr' => 'Mai', |
|
| 194 | + 'date_mois_6' => 'Junho', |
|
| 195 | + 'date_mois_6_abbr' => 'Jun', |
|
| 196 | + 'date_mois_7' => 'Julho', |
|
| 197 | + 'date_mois_7_abbr' => 'Jul', |
|
| 198 | + 'date_mois_8' => 'Agosto', |
|
| 199 | + 'date_mois_8_abbr' => 'Ago', |
|
| 200 | + 'date_mois_9' => 'Setembro', |
|
| 201 | + 'date_mois_9_abbr' => 'Set', |
|
| 202 | + 'date_saison_1' => 'inverno', |
|
| 203 | + 'date_saison_2' => 'primavera', |
|
| 204 | + 'date_saison_3' => 'verão', |
|
| 205 | + 'date_saison_4' => 'outono', |
|
| 206 | + 'date_secondes' => 'segundos', |
|
| 207 | + 'date_semaines' => 'semanas', |
|
| 208 | + 'date_un_mois' => 'mês', |
|
| 209 | + 'date_une_heure' => 'hora', |
|
| 210 | + 'date_une_minute' => 'minuto', |
|
| 211 | + 'date_une_seconde' => 'segundo', |
|
| 212 | + 'date_une_semaine' => 'semana', |
|
| 213 | + 'dirs_commencer' => 'a fim de começar realmente a instalação', |
|
| 214 | + 'dirs_preliminaire' => 'Preliminar : <b>Configurar os direitos de acesso</b>', |
|
| 215 | + 'dirs_probleme_droits' => 'Problema de direitos de acesso', |
|
| 216 | + 'dirs_repertoires_absents' => '<b>Os seguintes directórios não foram encontrados : <ul>@bad_dirs@.</ul> </b> |
|
| 217 | 217 | <p>É provável que resulte de um problema de má colocação de maiúsculas ou minúsculas. |
| 218 | 218 | Verifique que as minúsculas e maiúsculas destes directórios concordam com o que está exibido |
| 219 | 219 | acima; se não for o caso, renomeie os repertórios com o seu software FTP de modo a corrigir o erro. |
| 220 | 220 | <p>Terminada esta operação, poderá</p>', |
| 221 | - 'dirs_repertoires_suivants' => '<b>Os seguintes directórios não estão acessíveis para escrita: <ul>@bad_dirs@.</ul> </b> |
|
| 221 | + 'dirs_repertoires_suivants' => '<b>Os seguintes directórios não estão acessíveis para escrita: <ul>@bad_dirs@.</ul> </b> |
|
| 222 | 222 | <p>Para corrigir, utilize o seu programa de FTP para configurar os direitos de acesso de cada um |
| 223 | 223 | destes directórios. O procedimento está explicado em detalhe no manual de instalação. |
| 224 | 224 | <p>Uma vez efectuada esta alteração, poderá', |
| 225 | - 'double_occurrence' => 'Dupla ocorrência de @balise@', |
|
| 225 | + 'double_occurrence' => 'Dupla ocorrência de @balise@', |
|
| 226 | 226 | |
| 227 | - // E |
|
| 228 | - 'en_cours' => 'em curso', |
|
| 229 | - 'envoi_via_le_site' => 'Envio pelo sítio', |
|
| 230 | - 'erreur' => 'Erro', |
|
| 231 | - 'erreur_balise_non_fermee' => 'última tag não fechada :', |
|
| 232 | - 'erreur_technique_ajaxform' => 'Ooops. Uum erro inesperado impediu o formulário de ser enviado. Por favor tente novamente.', |
|
| 233 | - 'erreur_technique_enregistrement_champs' => 'Um erro técnico impediu o registo correcto do campo @champs@.', |
|
| 234 | - 'erreur_technique_enregistrement_impossible' => 'Um erro técnico impediu o registo.', |
|
| 235 | - 'erreur_texte' => 'erro(s)', |
|
| 236 | - 'etape' => 'Etapa', |
|
| 227 | + // E |
|
| 228 | + 'en_cours' => 'em curso', |
|
| 229 | + 'envoi_via_le_site' => 'Envio pelo sítio', |
|
| 230 | + 'erreur' => 'Erro', |
|
| 231 | + 'erreur_balise_non_fermee' => 'última tag não fechada :', |
|
| 232 | + 'erreur_technique_ajaxform' => 'Ooops. Uum erro inesperado impediu o formulário de ser enviado. Por favor tente novamente.', |
|
| 233 | + 'erreur_technique_enregistrement_champs' => 'Um erro técnico impediu o registo correcto do campo @champs@.', |
|
| 234 | + 'erreur_technique_enregistrement_impossible' => 'Um erro técnico impediu o registo.', |
|
| 235 | + 'erreur_texte' => 'erro(s)', |
|
| 236 | + 'etape' => 'Etapa', |
|
| 237 | 237 | |
| 238 | - // F |
|
| 239 | - 'fichier_introuvable' => 'Ficheiro @fichier@ não localizado', # MODIF |
|
| 240 | - 'form_auteur_confirmation' => 'Confirme o seu endereço e-mail', |
|
| 241 | - 'form_auteur_email_modifie' => 'O seu endereço e-mail foi alterado.', |
|
| 242 | - 'form_auteur_envoi_mail_confirmation' => 'Um e-mail de confirmação foi enviado para @email@. Para validar o seu endereço de e-mail, deve abrir o endereço Web mencionado na mensagem.', |
|
| 243 | - 'form_auteur_mail_confirmation' => 'Olá, |
|
| 238 | + // F |
|
| 239 | + 'fichier_introuvable' => 'Ficheiro @fichier@ não localizado', # MODIF |
|
| 240 | + 'form_auteur_confirmation' => 'Confirme o seu endereço e-mail', |
|
| 241 | + 'form_auteur_email_modifie' => 'O seu endereço e-mail foi alterado.', |
|
| 242 | + 'form_auteur_envoi_mail_confirmation' => 'Um e-mail de confirmação foi enviado para @email@. Para validar o seu endereço de e-mail, deve abrir o endereço Web mencionado na mensagem.', |
|
| 243 | + 'form_auteur_mail_confirmation' => 'Olá, |
|
| 244 | 244 | |
| 245 | 245 | Pediu para alterar o seu endereço e-mail. Para confirmar o seu novo endereço, precisa de se conectar ao endereço abaixo (caso contrário, o seu pedido será ignorado) : |
| 246 | 246 | |
| 247 | 247 | @url@ |
| 248 | 248 | ', |
| 249 | - 'form_deja_inscrit' => 'Já está inscrito.', |
|
| 250 | - 'form_email_non_valide' => 'O seu endereço email não é válido', |
|
| 251 | - 'form_forum_access_refuse' => 'Você já não tem acesso a este sítio', |
|
| 252 | - 'form_forum_bonjour' => 'Bom dia @nom@,', |
|
| 253 | - 'form_forum_confirmer_email' => 'Para confirmar o seu endereço e-maill, abra esta ligação : @url_confirm@', |
|
| 254 | - 'form_forum_email_deja_enregistre' => 'Este endereço e-mail já está registado,pode portanto utilizar a sua palavra-passe habitual', |
|
| 255 | - 'form_forum_identifiant_mail' => 'O seu novo identificador acabou de lhe ser enviado por email.', |
|
| 256 | - 'form_forum_identifiants' => 'Identificadores pessoais', |
|
| 257 | - 'form_forum_indiquer_nom_email' => 'Indicar aqui o seu nome e o seu endereço email. O seu identificador pessoal ser-lhe-á enviado rapidamente por correio electrónico.', |
|
| 258 | - 'form_forum_login' => 'login:', |
|
| 259 | - 'form_forum_message_auto' => '(esta é uma mensagem automática)', |
|
| 260 | - 'form_forum_pass' => 'palavra-passe', |
|
| 261 | - 'form_forum_probleme_mail' => 'Problema de mail :o identificador não pôde ser enviado', |
|
| 262 | - 'form_forum_voici1' => 'Aqui estão os seus dados para poder aceder ao sítio Internet do "@nom_site_spip@" (@adresse_site@):', |
|
| 263 | - 'form_forum_voici2' => 'Eis os seus identificadores para propor artigos no |
|
| 249 | + 'form_deja_inscrit' => 'Já está inscrito.', |
|
| 250 | + 'form_email_non_valide' => 'O seu endereço email não é válido', |
|
| 251 | + 'form_forum_access_refuse' => 'Você já não tem acesso a este sítio', |
|
| 252 | + 'form_forum_bonjour' => 'Bom dia @nom@,', |
|
| 253 | + 'form_forum_confirmer_email' => 'Para confirmar o seu endereço e-maill, abra esta ligação : @url_confirm@', |
|
| 254 | + 'form_forum_email_deja_enregistre' => 'Este endereço e-mail já está registado,pode portanto utilizar a sua palavra-passe habitual', |
|
| 255 | + 'form_forum_identifiant_mail' => 'O seu novo identificador acabou de lhe ser enviado por email.', |
|
| 256 | + 'form_forum_identifiants' => 'Identificadores pessoais', |
|
| 257 | + 'form_forum_indiquer_nom_email' => 'Indicar aqui o seu nome e o seu endereço email. O seu identificador pessoal ser-lhe-á enviado rapidamente por correio electrónico.', |
|
| 258 | + 'form_forum_login' => 'login:', |
|
| 259 | + 'form_forum_message_auto' => '(esta é uma mensagem automática)', |
|
| 260 | + 'form_forum_pass' => 'palavra-passe', |
|
| 261 | + 'form_forum_probleme_mail' => 'Problema de mail :o identificador não pôde ser enviado', |
|
| 262 | + 'form_forum_voici1' => 'Aqui estão os seus dados para poder aceder ao sítio Internet do "@nom_site_spip@" (@adresse_site@):', |
|
| 263 | + 'form_forum_voici2' => 'Eis os seus identificadores para propor artigos no |
|
| 264 | 264 | sítio "@nom_site_spip@" (@adresse_login@):', |
| 265 | - 'form_indiquer_email' => 'Por favor indique o seu endereço email.', |
|
| 266 | - 'form_indiquer_nom' => 'Por favor indique o seu nome.', |
|
| 267 | - 'form_indiquer_nom_site' => 'Por favor indique o nome do seu sítio.', |
|
| 268 | - 'form_pet_deja_enregistre' => 'Este sítio já está registado', |
|
| 269 | - 'form_pet_signature_pasprise' => 'A sua assinatura não está tomada em conta.', |
|
| 270 | - 'form_prop_confirmer_envoi' => 'Confirmar o envio', |
|
| 271 | - 'form_prop_description' => 'Descrição/comentário', |
|
| 272 | - 'form_prop_enregistre' => 'A sua proposta foi registada. Aparecerá online após a validação pelos responsáveis deste sítio.', |
|
| 273 | - 'form_prop_envoyer' => 'Enviar uma mensagem', |
|
| 274 | - 'form_prop_indiquer_email' => 'Por favor indique um endereço email válido', |
|
| 275 | - 'form_prop_indiquer_nom_site' => 'Por favor indique o nome do sítio.', |
|
| 276 | - 'form_prop_indiquer_sujet' => 'Por favor indique um tema', |
|
| 277 | - 'form_prop_message_envoye' => 'Mensagem enviada', |
|
| 278 | - 'form_prop_non_enregistre' => 'A sua proposta não foi registada.', |
|
| 279 | - 'form_prop_sujet' => 'Tema', |
|
| 280 | - 'form_prop_url_site' => 'Endereço (URL) do sítio', |
|
| 281 | - 'forum_non_inscrit' => 'Não está inscrito, ou o endereço ou a palavra-passe estão errados.', |
|
| 282 | - 'forum_par_auteur' => 'por @auteur@', |
|
| 283 | - 'forum_titre_erreur' => 'Erro...', |
|
| 265 | + 'form_indiquer_email' => 'Por favor indique o seu endereço email.', |
|
| 266 | + 'form_indiquer_nom' => 'Por favor indique o seu nome.', |
|
| 267 | + 'form_indiquer_nom_site' => 'Por favor indique o nome do seu sítio.', |
|
| 268 | + 'form_pet_deja_enregistre' => 'Este sítio já está registado', |
|
| 269 | + 'form_pet_signature_pasprise' => 'A sua assinatura não está tomada em conta.', |
|
| 270 | + 'form_prop_confirmer_envoi' => 'Confirmar o envio', |
|
| 271 | + 'form_prop_description' => 'Descrição/comentário', |
|
| 272 | + 'form_prop_enregistre' => 'A sua proposta foi registada. Aparecerá online após a validação pelos responsáveis deste sítio.', |
|
| 273 | + 'form_prop_envoyer' => 'Enviar uma mensagem', |
|
| 274 | + 'form_prop_indiquer_email' => 'Por favor indique um endereço email válido', |
|
| 275 | + 'form_prop_indiquer_nom_site' => 'Por favor indique o nome do sítio.', |
|
| 276 | + 'form_prop_indiquer_sujet' => 'Por favor indique um tema', |
|
| 277 | + 'form_prop_message_envoye' => 'Mensagem enviada', |
|
| 278 | + 'form_prop_non_enregistre' => 'A sua proposta não foi registada.', |
|
| 279 | + 'form_prop_sujet' => 'Tema', |
|
| 280 | + 'form_prop_url_site' => 'Endereço (URL) do sítio', |
|
| 281 | + 'forum_non_inscrit' => 'Não está inscrito, ou o endereço ou a palavra-passe estão errados.', |
|
| 282 | + 'forum_par_auteur' => 'por @auteur@', |
|
| 283 | + 'forum_titre_erreur' => 'Erro...', |
|
| 284 | 284 | |
| 285 | - // I |
|
| 286 | - 'ical_texte_rss_articles' => 'O ficheiro «backend» dos artigos deste sítio encontra-se neste endereço:', |
|
| 287 | - 'ical_texte_rss_articles2' => 'Pode igualmente obter os ficheiros «backend» para os artigos de cada rubrica do sítio:', |
|
| 288 | - 'ical_texte_rss_breves' => 'Existe também um ficheiro contendo notícias do sítio. Especificando um número de rubrica, obterá unicamente as notícias dessa rubrica.', |
|
| 289 | - 'icone_a_suivre' => 'Continua', |
|
| 290 | - 'icone_admin_site' => 'Administração do sítio', |
|
| 291 | - 'icone_agenda' => 'Agenda e correio', |
|
| 292 | - 'icone_aide_ligne' => 'Ajuda', |
|
| 293 | - 'icone_articles' => 'Artigos', |
|
| 294 | - 'icone_auteurs' => 'Autores', |
|
| 295 | - 'icone_brouteur' => 'Navegação rápida', |
|
| 296 | - 'icone_configuration_site' => 'Configuração', |
|
| 297 | - 'icone_configurer_site' => 'Configurar o seu sítio', |
|
| 298 | - 'icone_creer_nouvel_auteur' => 'Criar um novo autor', |
|
| 299 | - 'icone_creer_rubrique' => 'Criar uma rubrica', |
|
| 300 | - 'icone_creer_sous_rubrique' => 'Criar uma sub-rubrica', |
|
| 301 | - 'icone_deconnecter' => 'Sair', |
|
| 302 | - 'icone_discussions' => 'Discussões', |
|
| 303 | - 'icone_doc_rubrique' => 'Documentos das rubricas', |
|
| 304 | - 'icone_ecrire_article' => 'Escrever um novo artigo', |
|
| 305 | - 'icone_edition_site' => 'Edição', |
|
| 306 | - 'icone_gestion_langues' => 'Opções de idiomas', |
|
| 307 | - 'icone_informations_personnelles' => 'Informações pessoais', |
|
| 308 | - 'icone_interface_complet' => 'interface completa', |
|
| 309 | - 'icone_interface_simple' => 'Interface simplificada', |
|
| 310 | - 'icone_maintenance_site' => 'Manutenção do sítio', |
|
| 311 | - 'icone_messagerie_personnelle' => 'Mensagens privadas', |
|
| 312 | - 'icone_repartition_debut' => 'Exibir a distribuição desde o início', |
|
| 313 | - 'icone_rubriques' => 'Rubricas', |
|
| 314 | - 'icone_sauver_site' => 'Cópia de segurança do sítio', |
|
| 315 | - 'icone_site_entier' => 'Todo o sítio', |
|
| 316 | - 'icone_sites_references' => 'Sítios referenciados', |
|
| 317 | - 'icone_statistiques' => 'Estatísticas do sítio', |
|
| 318 | - 'icone_suivi_activite' => 'Acompanhar a actividade do sítio', |
|
| 319 | - 'icone_suivi_actualite' => 'Evolução do sítio', |
|
| 320 | - 'icone_suivi_pettions' => 'Seguir/gerir os abaixo-assinados', |
|
| 321 | - 'icone_suivi_revisions' => 'Modificações dos artigos', |
|
| 322 | - 'icone_supprimer_document' => 'Suprimir este documento', |
|
| 323 | - 'icone_supprimer_image' => 'Suprimir esta imagem', |
|
| 324 | - 'icone_tous_articles' => 'Todos os seus artigos', |
|
| 325 | - 'icone_tous_auteur' => 'Todos os autores', |
|
| 326 | - 'icone_tous_visiteur' => 'Todos os visitantes', |
|
| 327 | - 'icone_visiter_site' => 'Visitar o sítio público', |
|
| 328 | - 'icone_voir_en_ligne' => 'Ver online', |
|
| 329 | - 'img_indisponible' => 'imagem indisponível', |
|
| 330 | - 'impossible' => 'impossível', |
|
| 331 | - 'info_a_suivre' => 'A SEGUIR »', |
|
| 332 | - 'info_acces_interdit' => 'Acesso proibido', |
|
| 333 | - 'info_acces_refuse' => 'Acesso recusado', |
|
| 334 | - 'info_action' => 'Acção : @action@', |
|
| 335 | - 'info_administrer_rubriques' => 'Pode administrar esta rubrica e as suas sub-rubricas', |
|
| 336 | - 'info_adresse_non_indiquee' => 'Não indicou endereço a testar !', |
|
| 337 | - 'info_aide' => 'AJUDA', |
|
| 338 | - 'info_ajouter_mot' => 'Acrescentar esta palavra', |
|
| 339 | - 'info_annonce' => 'ANÚNCIO', |
|
| 340 | - 'info_annonces_generales' => 'Anúncios gerais :', |
|
| 341 | - 'info_article_propose' => 'Artigo proposto', |
|
| 342 | - 'info_article_publie' => 'Artigo publicado', |
|
| 343 | - 'info_article_redaction' => 'Artigo em curso de redacção', |
|
| 344 | - 'info_article_refuse' => 'Artigo recusado', |
|
| 345 | - 'info_article_supprime' => 'Artigo suprimido', |
|
| 346 | - 'info_articles' => 'Artigos', |
|
| 347 | - 'info_articles_a_valider' => 'Os artigos a validar', |
|
| 348 | - 'info_articles_nb' => '@nb@ artigos', |
|
| 349 | - 'info_articles_proposes' => 'Artigos propostos', |
|
| 350 | - 'info_articles_un' => '1 artigo', |
|
| 351 | - 'info_auteurs_nombre' => 'autor(es) :', |
|
| 352 | - 'info_authentification_ftp' => 'Autenticação (por FTP)', |
|
| 353 | - 'info_breves_2' => 'notícias', |
|
| 354 | - 'info_breves_nb' => '@nb@ notícias', |
|
| 355 | - 'info_breves_un' => '1 notícia', |
|
| 356 | - 'info_connexion_refusee' => 'Ligação recusada', |
|
| 357 | - 'info_contact_developpeur' => 'Por favor contacte um programador', |
|
| 358 | - 'info_contenance' => 'Este sítio contém:', |
|
| 359 | - 'info_contribution' => 'contribuições de fórum', |
|
| 360 | - 'info_copyright' => '@spip@ é um software livre distribuído @lien_gpl@.', |
|
| 361 | - 'info_copyright_doc' => 'Para mais informações, visite o sítio <a href="@spipnet@">@spipnet_affiche@</a', |
|
| 362 | - 'info_copyright_gpl' => 'sob licença GPL', |
|
| 363 | - 'info_cours_edition' => 'Os seus artigos em curso de redacção', # MODIF |
|
| 364 | - 'info_creer_repertoire' => 'Por favor crie um ficheiro ou um directório chamado :', |
|
| 365 | - 'info_creer_repertoire_2' => 'dentro do sub-directório <b>@repertoire@</b>, depois :', |
|
| 366 | - 'info_creer_vignette' => 'criação automática de miniatura', |
|
| 367 | - 'info_creerdansrubrique_non_autorise' => 'Não tem direitos suficientes para criar conteúdo nesta rubrica.', |
|
| 368 | - 'info_deplier' => 'Desenvolver', |
|
| 369 | - 'info_descriptif_nombre' => 'descritivo(s) :', |
|
| 370 | - 'info_description' => 'Descrição :', |
|
| 371 | - 'info_description_2' => 'Descrição :', |
|
| 372 | - 'info_dimension' => 'Dimensões :', |
|
| 373 | - 'info_documents_nb' => '@nb@ documentos', |
|
| 374 | - 'info_documents_un' => '1 documento', |
|
| 375 | - 'info_ecire_message_prive' => 'Escrever uma mensagem privada', |
|
| 376 | - 'info_email_invalide' => 'Endereço email inválido.', |
|
| 377 | - 'info_en_cours_validation' => 'Os seus artigos em curso de redação', |
|
| 378 | - 'info_en_ligne' => 'Actualmente online:', |
|
| 379 | - 'info_envoyer_message_prive' => 'Enviar uma mensagem privada a este autor', |
|
| 380 | - 'info_erreur_requete' => 'Erro no pedido :', |
|
| 381 | - 'info_erreur_squelette2' => 'Modelo <b>@fichier@</b> não disponível...', |
|
| 382 | - 'info_erreur_systeme' => 'Erro de Sistema (errno @errsys@)', |
|
| 383 | - 'info_erreur_systeme2' => 'O disco rígido poderá estar cheio, ou a base de dados danificada.<br /> |
|
| 285 | + // I |
|
| 286 | + 'ical_texte_rss_articles' => 'O ficheiro «backend» dos artigos deste sítio encontra-se neste endereço:', |
|
| 287 | + 'ical_texte_rss_articles2' => 'Pode igualmente obter os ficheiros «backend» para os artigos de cada rubrica do sítio:', |
|
| 288 | + 'ical_texte_rss_breves' => 'Existe também um ficheiro contendo notícias do sítio. Especificando um número de rubrica, obterá unicamente as notícias dessa rubrica.', |
|
| 289 | + 'icone_a_suivre' => 'Continua', |
|
| 290 | + 'icone_admin_site' => 'Administração do sítio', |
|
| 291 | + 'icone_agenda' => 'Agenda e correio', |
|
| 292 | + 'icone_aide_ligne' => 'Ajuda', |
|
| 293 | + 'icone_articles' => 'Artigos', |
|
| 294 | + 'icone_auteurs' => 'Autores', |
|
| 295 | + 'icone_brouteur' => 'Navegação rápida', |
|
| 296 | + 'icone_configuration_site' => 'Configuração', |
|
| 297 | + 'icone_configurer_site' => 'Configurar o seu sítio', |
|
| 298 | + 'icone_creer_nouvel_auteur' => 'Criar um novo autor', |
|
| 299 | + 'icone_creer_rubrique' => 'Criar uma rubrica', |
|
| 300 | + 'icone_creer_sous_rubrique' => 'Criar uma sub-rubrica', |
|
| 301 | + 'icone_deconnecter' => 'Sair', |
|
| 302 | + 'icone_discussions' => 'Discussões', |
|
| 303 | + 'icone_doc_rubrique' => 'Documentos das rubricas', |
|
| 304 | + 'icone_ecrire_article' => 'Escrever um novo artigo', |
|
| 305 | + 'icone_edition_site' => 'Edição', |
|
| 306 | + 'icone_gestion_langues' => 'Opções de idiomas', |
|
| 307 | + 'icone_informations_personnelles' => 'Informações pessoais', |
|
| 308 | + 'icone_interface_complet' => 'interface completa', |
|
| 309 | + 'icone_interface_simple' => 'Interface simplificada', |
|
| 310 | + 'icone_maintenance_site' => 'Manutenção do sítio', |
|
| 311 | + 'icone_messagerie_personnelle' => 'Mensagens privadas', |
|
| 312 | + 'icone_repartition_debut' => 'Exibir a distribuição desde o início', |
|
| 313 | + 'icone_rubriques' => 'Rubricas', |
|
| 314 | + 'icone_sauver_site' => 'Cópia de segurança do sítio', |
|
| 315 | + 'icone_site_entier' => 'Todo o sítio', |
|
| 316 | + 'icone_sites_references' => 'Sítios referenciados', |
|
| 317 | + 'icone_statistiques' => 'Estatísticas do sítio', |
|
| 318 | + 'icone_suivi_activite' => 'Acompanhar a actividade do sítio', |
|
| 319 | + 'icone_suivi_actualite' => 'Evolução do sítio', |
|
| 320 | + 'icone_suivi_pettions' => 'Seguir/gerir os abaixo-assinados', |
|
| 321 | + 'icone_suivi_revisions' => 'Modificações dos artigos', |
|
| 322 | + 'icone_supprimer_document' => 'Suprimir este documento', |
|
| 323 | + 'icone_supprimer_image' => 'Suprimir esta imagem', |
|
| 324 | + 'icone_tous_articles' => 'Todos os seus artigos', |
|
| 325 | + 'icone_tous_auteur' => 'Todos os autores', |
|
| 326 | + 'icone_tous_visiteur' => 'Todos os visitantes', |
|
| 327 | + 'icone_visiter_site' => 'Visitar o sítio público', |
|
| 328 | + 'icone_voir_en_ligne' => 'Ver online', |
|
| 329 | + 'img_indisponible' => 'imagem indisponível', |
|
| 330 | + 'impossible' => 'impossível', |
|
| 331 | + 'info_a_suivre' => 'A SEGUIR »', |
|
| 332 | + 'info_acces_interdit' => 'Acesso proibido', |
|
| 333 | + 'info_acces_refuse' => 'Acesso recusado', |
|
| 334 | + 'info_action' => 'Acção : @action@', |
|
| 335 | + 'info_administrer_rubriques' => 'Pode administrar esta rubrica e as suas sub-rubricas', |
|
| 336 | + 'info_adresse_non_indiquee' => 'Não indicou endereço a testar !', |
|
| 337 | + 'info_aide' => 'AJUDA', |
|
| 338 | + 'info_ajouter_mot' => 'Acrescentar esta palavra', |
|
| 339 | + 'info_annonce' => 'ANÚNCIO', |
|
| 340 | + 'info_annonces_generales' => 'Anúncios gerais :', |
|
| 341 | + 'info_article_propose' => 'Artigo proposto', |
|
| 342 | + 'info_article_publie' => 'Artigo publicado', |
|
| 343 | + 'info_article_redaction' => 'Artigo em curso de redacção', |
|
| 344 | + 'info_article_refuse' => 'Artigo recusado', |
|
| 345 | + 'info_article_supprime' => 'Artigo suprimido', |
|
| 346 | + 'info_articles' => 'Artigos', |
|
| 347 | + 'info_articles_a_valider' => 'Os artigos a validar', |
|
| 348 | + 'info_articles_nb' => '@nb@ artigos', |
|
| 349 | + 'info_articles_proposes' => 'Artigos propostos', |
|
| 350 | + 'info_articles_un' => '1 artigo', |
|
| 351 | + 'info_auteurs_nombre' => 'autor(es) :', |
|
| 352 | + 'info_authentification_ftp' => 'Autenticação (por FTP)', |
|
| 353 | + 'info_breves_2' => 'notícias', |
|
| 354 | + 'info_breves_nb' => '@nb@ notícias', |
|
| 355 | + 'info_breves_un' => '1 notícia', |
|
| 356 | + 'info_connexion_refusee' => 'Ligação recusada', |
|
| 357 | + 'info_contact_developpeur' => 'Por favor contacte um programador', |
|
| 358 | + 'info_contenance' => 'Este sítio contém:', |
|
| 359 | + 'info_contribution' => 'contribuições de fórum', |
|
| 360 | + 'info_copyright' => '@spip@ é um software livre distribuído @lien_gpl@.', |
|
| 361 | + 'info_copyright_doc' => 'Para mais informações, visite o sítio <a href="@spipnet@">@spipnet_affiche@</a', |
|
| 362 | + 'info_copyright_gpl' => 'sob licença GPL', |
|
| 363 | + 'info_cours_edition' => 'Os seus artigos em curso de redacção', # MODIF |
|
| 364 | + 'info_creer_repertoire' => 'Por favor crie um ficheiro ou um directório chamado :', |
|
| 365 | + 'info_creer_repertoire_2' => 'dentro do sub-directório <b>@repertoire@</b>, depois :', |
|
| 366 | + 'info_creer_vignette' => 'criação automática de miniatura', |
|
| 367 | + 'info_creerdansrubrique_non_autorise' => 'Não tem direitos suficientes para criar conteúdo nesta rubrica.', |
|
| 368 | + 'info_deplier' => 'Desenvolver', |
|
| 369 | + 'info_descriptif_nombre' => 'descritivo(s) :', |
|
| 370 | + 'info_description' => 'Descrição :', |
|
| 371 | + 'info_description_2' => 'Descrição :', |
|
| 372 | + 'info_dimension' => 'Dimensões :', |
|
| 373 | + 'info_documents_nb' => '@nb@ documentos', |
|
| 374 | + 'info_documents_un' => '1 documento', |
|
| 375 | + 'info_ecire_message_prive' => 'Escrever uma mensagem privada', |
|
| 376 | + 'info_email_invalide' => 'Endereço email inválido.', |
|
| 377 | + 'info_en_cours_validation' => 'Os seus artigos em curso de redação', |
|
| 378 | + 'info_en_ligne' => 'Actualmente online:', |
|
| 379 | + 'info_envoyer_message_prive' => 'Enviar uma mensagem privada a este autor', |
|
| 380 | + 'info_erreur_requete' => 'Erro no pedido :', |
|
| 381 | + 'info_erreur_squelette2' => 'Modelo <b>@fichier@</b> não disponível...', |
|
| 382 | + 'info_erreur_systeme' => 'Erro de Sistema (errno @errsys@)', |
|
| 383 | + 'info_erreur_systeme2' => 'O disco rígido poderá estar cheio, ou a base de dados danificada.<br /> |
|
| 384 | 384 | <span style="color:red;">Tente <a href=\'@script@\'>reparar a base de dados </a>, ou contacte o seu fornecedor de internet.</span>', |
| 385 | - 'info_fini' => 'Terminou !', |
|
| 386 | - 'info_format_image' => 'Formatos de imagens que podem ser utilizadas para criar vinhetas : @gd_formats@.', |
|
| 387 | - 'info_format_non_defini' => 'formato não definido', |
|
| 388 | - 'info_grand_ecran' => 'Ecrã total', |
|
| 389 | - 'info_image_aide' => 'AJUDA', |
|
| 390 | - 'info_image_process_titre' => 'Como criar miniaturas', |
|
| 391 | - 'info_impossible_lire_page' => '<b>Erro !</b> Impossível ler a página<tt><html>@test_proxy@</html></tt> através do proxy <tt>', |
|
| 392 | - 'info_installation_systeme_publication' => 'Instalação do sistema de publicação', |
|
| 393 | - 'info_installer_documents' => 'Pode instalar automaticamente todos os documentos contidos na pasta @upload@.', |
|
| 394 | - 'info_installer_ftp' => 'Como administrador, pode instalar (por FTP) ficheiros na pasta @upload@ para depois seleccioná-los directamente aqui.', |
|
| 395 | - 'info_installer_images' => 'Pode instalar imagens nos formatos JPEG, GIF e PNG.', |
|
| 396 | - 'info_installer_images_dossier' => 'Instalar imagens na pasta @upload@ para poder seleccioná-los aqui.', |
|
| 397 | - 'info_interface_complete' => 'Interface completa', |
|
| 398 | - 'info_interface_simple' => 'Interface simplificada', |
|
| 399 | - 'info_joindre_document_article' => 'Pode juntar a este artigo documentos de tipo', |
|
| 400 | - 'info_joindre_document_rubrique' => 'Pode acrescentar a esta rubrica documentos de tipo', |
|
| 401 | - 'info_joindre_documents_article' => 'Pode juntar ao seu artigo documentos de tipo :', |
|
| 402 | - 'info_l_article' => 'o artigo', |
|
| 403 | - 'info_la_breve' => 'a notícia', |
|
| 404 | - 'info_la_rubrique' => 'a rubrica', |
|
| 405 | - 'info_langue_principale' => 'Idioma principal do sítio', |
|
| 406 | - 'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ pixels', |
|
| 407 | - 'info_les_auteurs_1' => 'por @les_auteurs@', |
|
| 408 | - 'info_logo_format_interdit' => 'Apenas os ícones nos formatos @formats@ estão autorizados.', |
|
| 409 | - 'info_logo_max_poids' => 'Os ícones devem obrigatoriamente ter menos de @maxi@ (este arquivo tem @actuel@).', |
|
| 410 | - 'info_mail_fournisseur' => 'você@seucorreio.com', |
|
| 411 | - 'info_message_2' => 'MENSAGEM', |
|
| 412 | - 'info_message_supprime' => 'MENSAGEM ELIMINADA', |
|
| 413 | - 'info_messages_nb' => '@nb@ mensagens', |
|
| 414 | - 'info_messages_un' => '1 mensagem', |
|
| 415 | - 'info_mise_en_ligne' => 'Data de colocação online :', |
|
| 416 | - 'info_modification_parametres_securite' => 'modificação dos parâmetros de segurança', |
|
| 417 | - 'info_mois_courant' => 'Durante o mês :', |
|
| 418 | - 'info_mot_cle_ajoute' => 'A seguinte palavra-chave foi acrescentada a', |
|
| 419 | - 'info_multi_herit' => 'Idioma por defeito', |
|
| 420 | - 'info_multi_langues_soulignees' => 'Os <u>idiomas sublinhadas</u> beneficiam de uma tradução de todos os textos da interface. Se seleccionar esses idiomas, muitos elementos do sítio público (datas, formulários) serão automaticamente traduzidos. Para os idiomas não sublinhadas, esses elementos aparecerão no idioma principal do sítio.', |
|
| 421 | - 'info_multilinguisme' => 'Multilinguismo', |
|
| 422 | - 'info_nom_non_utilisateurs_connectes' => 'O seu nome não aparece na lista dos utilizadores ligados.', |
|
| 423 | - 'info_nom_utilisateurs_connectes' => 'O seu nome aparece na lista dos utilizadores ligados.', |
|
| 424 | - 'info_nombre_en_ligne' => 'Actualmente online :', |
|
| 425 | - 'info_non_resultat' => 'Nenhum resultado para "@cherche_mot@"', |
|
| 426 | - 'info_non_utilisation_messagerie' => 'Não utiliza o correio interno deste sítio.', |
|
| 427 | - 'info_nouveau_message' => 'TEM UMA NOVA MENSAGEM', |
|
| 428 | - 'info_nouveaux_messages' => 'TEM @total_messages@ NOVAS MENSAGENS', |
|
| 429 | - 'info_numero_abbreviation' => '<N° >', |
|
| 430 | - 'info_obligatoire' => 'Esta informação é obrigatória', |
|
| 431 | - 'info_pense_bete' => 'MEMORANDO', |
|
| 432 | - 'info_petit_ecran' => 'Ecrã Pequeno', |
|
| 433 | - 'info_petition_close' => 'Petição encerrada', |
|
| 434 | - 'info_pixels' => 'pixels', |
|
| 435 | - 'info_plusieurs_mots_trouves' => 'Muitas palavras-chave encontradas para "@cherche_mot@":', |
|
| 436 | - 'info_portfolio_automatique' => 'Portfolio automático :', |
|
| 437 | - 'info_premier_resultat' => '[@debut_limit@ primeiros resultados em @total@]', |
|
| 438 | - 'info_premier_resultat_sur' => '[@debut_limit@ primeiros resultados em @total@]', |
|
| 439 | - 'info_propose_1' => '[@nom_site_spip@] Proposto : @titre@', |
|
| 440 | - 'info_propose_2' => 'Artigos propostos |
|
| 385 | + 'info_fini' => 'Terminou !', |
|
| 386 | + 'info_format_image' => 'Formatos de imagens que podem ser utilizadas para criar vinhetas : @gd_formats@.', |
|
| 387 | + 'info_format_non_defini' => 'formato não definido', |
|
| 388 | + 'info_grand_ecran' => 'Ecrã total', |
|
| 389 | + 'info_image_aide' => 'AJUDA', |
|
| 390 | + 'info_image_process_titre' => 'Como criar miniaturas', |
|
| 391 | + 'info_impossible_lire_page' => '<b>Erro !</b> Impossível ler a página<tt><html>@test_proxy@</html></tt> através do proxy <tt>', |
|
| 392 | + 'info_installation_systeme_publication' => 'Instalação do sistema de publicação', |
|
| 393 | + 'info_installer_documents' => 'Pode instalar automaticamente todos os documentos contidos na pasta @upload@.', |
|
| 394 | + 'info_installer_ftp' => 'Como administrador, pode instalar (por FTP) ficheiros na pasta @upload@ para depois seleccioná-los directamente aqui.', |
|
| 395 | + 'info_installer_images' => 'Pode instalar imagens nos formatos JPEG, GIF e PNG.', |
|
| 396 | + 'info_installer_images_dossier' => 'Instalar imagens na pasta @upload@ para poder seleccioná-los aqui.', |
|
| 397 | + 'info_interface_complete' => 'Interface completa', |
|
| 398 | + 'info_interface_simple' => 'Interface simplificada', |
|
| 399 | + 'info_joindre_document_article' => 'Pode juntar a este artigo documentos de tipo', |
|
| 400 | + 'info_joindre_document_rubrique' => 'Pode acrescentar a esta rubrica documentos de tipo', |
|
| 401 | + 'info_joindre_documents_article' => 'Pode juntar ao seu artigo documentos de tipo :', |
|
| 402 | + 'info_l_article' => 'o artigo', |
|
| 403 | + 'info_la_breve' => 'a notícia', |
|
| 404 | + 'info_la_rubrique' => 'a rubrica', |
|
| 405 | + 'info_langue_principale' => 'Idioma principal do sítio', |
|
| 406 | + 'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ pixels', |
|
| 407 | + 'info_les_auteurs_1' => 'por @les_auteurs@', |
|
| 408 | + 'info_logo_format_interdit' => 'Apenas os ícones nos formatos @formats@ estão autorizados.', |
|
| 409 | + 'info_logo_max_poids' => 'Os ícones devem obrigatoriamente ter menos de @maxi@ (este arquivo tem @actuel@).', |
|
| 410 | + 'info_mail_fournisseur' => 'você@seucorreio.com', |
|
| 411 | + 'info_message_2' => 'MENSAGEM', |
|
| 412 | + 'info_message_supprime' => 'MENSAGEM ELIMINADA', |
|
| 413 | + 'info_messages_nb' => '@nb@ mensagens', |
|
| 414 | + 'info_messages_un' => '1 mensagem', |
|
| 415 | + 'info_mise_en_ligne' => 'Data de colocação online :', |
|
| 416 | + 'info_modification_parametres_securite' => 'modificação dos parâmetros de segurança', |
|
| 417 | + 'info_mois_courant' => 'Durante o mês :', |
|
| 418 | + 'info_mot_cle_ajoute' => 'A seguinte palavra-chave foi acrescentada a', |
|
| 419 | + 'info_multi_herit' => 'Idioma por defeito', |
|
| 420 | + 'info_multi_langues_soulignees' => 'Os <u>idiomas sublinhadas</u> beneficiam de uma tradução de todos os textos da interface. Se seleccionar esses idiomas, muitos elementos do sítio público (datas, formulários) serão automaticamente traduzidos. Para os idiomas não sublinhadas, esses elementos aparecerão no idioma principal do sítio.', |
|
| 421 | + 'info_multilinguisme' => 'Multilinguismo', |
|
| 422 | + 'info_nom_non_utilisateurs_connectes' => 'O seu nome não aparece na lista dos utilizadores ligados.', |
|
| 423 | + 'info_nom_utilisateurs_connectes' => 'O seu nome aparece na lista dos utilizadores ligados.', |
|
| 424 | + 'info_nombre_en_ligne' => 'Actualmente online :', |
|
| 425 | + 'info_non_resultat' => 'Nenhum resultado para "@cherche_mot@"', |
|
| 426 | + 'info_non_utilisation_messagerie' => 'Não utiliza o correio interno deste sítio.', |
|
| 427 | + 'info_nouveau_message' => 'TEM UMA NOVA MENSAGEM', |
|
| 428 | + 'info_nouveaux_messages' => 'TEM @total_messages@ NOVAS MENSAGENS', |
|
| 429 | + 'info_numero_abbreviation' => '<N° >', |
|
| 430 | + 'info_obligatoire' => 'Esta informação é obrigatória', |
|
| 431 | + 'info_pense_bete' => 'MEMORANDO', |
|
| 432 | + 'info_petit_ecran' => 'Ecrã Pequeno', |
|
| 433 | + 'info_petition_close' => 'Petição encerrada', |
|
| 434 | + 'info_pixels' => 'pixels', |
|
| 435 | + 'info_plusieurs_mots_trouves' => 'Muitas palavras-chave encontradas para "@cherche_mot@":', |
|
| 436 | + 'info_portfolio_automatique' => 'Portfolio automático :', |
|
| 437 | + 'info_premier_resultat' => '[@debut_limit@ primeiros resultados em @total@]', |
|
| 438 | + 'info_premier_resultat_sur' => '[@debut_limit@ primeiros resultados em @total@]', |
|
| 439 | + 'info_propose_1' => '[@nom_site_spip@] Proposto : @titre@', |
|
| 440 | + 'info_propose_2' => 'Artigos propostos |
|
| 441 | 441 | ----------------', |
| 442 | - 'info_propose_3' => 'O artigo "@titre@" é proposto para publicação.', |
|
| 443 | - 'info_propose_4' => 'Está convidado a vir consultá-lo e a dar a sua opinião', |
|
| 444 | - 'info_propose_5' => 'no fórum que lhe está ligado. Está disponível no endereço:', |
|
| 445 | - 'info_publie_01' => 'O artigo "@titre@" foi validado por @connect_nom@.', |
|
| 446 | - 'info_publie_1' => '[@nom_site_spip@] PUBLICADO : @titre@', |
|
| 447 | - 'info_publie_2' => 'Artigo publicado |
|
| 442 | + 'info_propose_3' => 'O artigo "@titre@" é proposto para publicação.', |
|
| 443 | + 'info_propose_4' => 'Está convidado a vir consultá-lo e a dar a sua opinião', |
|
| 444 | + 'info_propose_5' => 'no fórum que lhe está ligado. Está disponível no endereço:', |
|
| 445 | + 'info_publie_01' => 'O artigo "@titre@" foi validado por @connect_nom@.', |
|
| 446 | + 'info_publie_1' => '[@nom_site_spip@] PUBLICADO : @titre@', |
|
| 447 | + 'info_publie_2' => 'Artigo publicado |
|
| 448 | 448 | --------------', |
| 449 | - 'info_rechercher' => 'Procurar', |
|
| 450 | - 'info_rechercher_02' => 'Procurar :', |
|
| 451 | - 'info_remplacer_vignette' => 'Substituir a miniatura por defeito por um logotipo personalizado :', |
|
| 452 | - 'info_rubriques_nb' => '@nb@ rubricas', |
|
| 453 | - 'info_rubriques_un' => '1 rubrica', |
|
| 454 | - 'info_sans_titre_2' => 'sem título', |
|
| 455 | - 'info_selectionner_fichier' => 'Pode seleccionar um ficheiro da pasta @upload@', |
|
| 456 | - 'info_selectionner_fichier_2' => 'Seleccionar um ficheiro :', |
|
| 457 | - 'info_sites_nb' => '@nb@ sítios', |
|
| 458 | - 'info_sites_un' => '1 sítio', |
|
| 459 | - 'info_supprimer_vignette' => 'suprimir a miniatura', |
|
| 460 | - 'info_symbole_bleu' => 'O símbolo <b>azul</b> indica um<b>memorando </b>: isto é uma mensagem para o seu uso pessoal.', |
|
| 461 | - 'info_symbole_jaune' => 'O símbolo<b>amarelo</b> indica um <b>anúncio a todos os redactores</b> : modificável por todos os administradores, e visível por todos os redactores.', |
|
| 462 | - 'info_symbole_vert' => 'O símbolo<b>verde</b> indica as <b>mensagens trocadas com outros utilizadores</b> do sítio.', |
|
| 463 | - 'info_telecharger_nouveau_logo' => 'Telecarregar um novo logotipo :', |
|
| 464 | - 'info_telecharger_ordinateur' => 'Telecarregar do seu computador :', |
|
| 465 | - 'info_tous_resultats_enregistres' => '[todos os resultados estão registados]', |
|
| 466 | - 'info_tout_afficher' => 'Exibir tudo', |
|
| 467 | - 'info_travaux_texte' => 'Este sítio ainda não está configurado. Volte mais tarde...', |
|
| 468 | - 'info_travaux_titre' => 'Sítio em construção', |
|
| 469 | - 'info_trop_resultat' => 'Demasiado resultados para "@cherche_mot@". Por favor afine a pesquisa.', |
|
| 470 | - 'info_utilisation_messagerie_interne' => 'Você utiliza o correio interno deste sítio.', |
|
| 471 | - 'info_valider_lien' => 'validar esta ligação', |
|
| 472 | - 'info_verifier_image' => ', Por favor verifique se as suas imagens foram transferidas correctamente.', |
|
| 473 | - 'info_vignette_defaut' => 'Miniatura por defeito', |
|
| 474 | - 'info_vignette_personnalisee' => 'Miniatura personalizada', |
|
| 475 | - 'info_visite' => 'visita :', |
|
| 476 | - 'info_vos_rendez_vous' => 'Os seus futuros encontros', |
|
| 477 | - 'infos_vos_pense_bete' => 'Os seus memorandos', |
|
| 449 | + 'info_rechercher' => 'Procurar', |
|
| 450 | + 'info_rechercher_02' => 'Procurar :', |
|
| 451 | + 'info_remplacer_vignette' => 'Substituir a miniatura por defeito por um logotipo personalizado :', |
|
| 452 | + 'info_rubriques_nb' => '@nb@ rubricas', |
|
| 453 | + 'info_rubriques_un' => '1 rubrica', |
|
| 454 | + 'info_sans_titre_2' => 'sem título', |
|
| 455 | + 'info_selectionner_fichier' => 'Pode seleccionar um ficheiro da pasta @upload@', |
|
| 456 | + 'info_selectionner_fichier_2' => 'Seleccionar um ficheiro :', |
|
| 457 | + 'info_sites_nb' => '@nb@ sítios', |
|
| 458 | + 'info_sites_un' => '1 sítio', |
|
| 459 | + 'info_supprimer_vignette' => 'suprimir a miniatura', |
|
| 460 | + 'info_symbole_bleu' => 'O símbolo <b>azul</b> indica um<b>memorando </b>: isto é uma mensagem para o seu uso pessoal.', |
|
| 461 | + 'info_symbole_jaune' => 'O símbolo<b>amarelo</b> indica um <b>anúncio a todos os redactores</b> : modificável por todos os administradores, e visível por todos os redactores.', |
|
| 462 | + 'info_symbole_vert' => 'O símbolo<b>verde</b> indica as <b>mensagens trocadas com outros utilizadores</b> do sítio.', |
|
| 463 | + 'info_telecharger_nouveau_logo' => 'Telecarregar um novo logotipo :', |
|
| 464 | + 'info_telecharger_ordinateur' => 'Telecarregar do seu computador :', |
|
| 465 | + 'info_tous_resultats_enregistres' => '[todos os resultados estão registados]', |
|
| 466 | + 'info_tout_afficher' => 'Exibir tudo', |
|
| 467 | + 'info_travaux_texte' => 'Este sítio ainda não está configurado. Volte mais tarde...', |
|
| 468 | + 'info_travaux_titre' => 'Sítio em construção', |
|
| 469 | + 'info_trop_resultat' => 'Demasiado resultados para "@cherche_mot@". Por favor afine a pesquisa.', |
|
| 470 | + 'info_utilisation_messagerie_interne' => 'Você utiliza o correio interno deste sítio.', |
|
| 471 | + 'info_valider_lien' => 'validar esta ligação', |
|
| 472 | + 'info_verifier_image' => ', Por favor verifique se as suas imagens foram transferidas correctamente.', |
|
| 473 | + 'info_vignette_defaut' => 'Miniatura por defeito', |
|
| 474 | + 'info_vignette_personnalisee' => 'Miniatura personalizada', |
|
| 475 | + 'info_visite' => 'visita :', |
|
| 476 | + 'info_vos_rendez_vous' => 'Os seus futuros encontros', |
|
| 477 | + 'infos_vos_pense_bete' => 'Os seus memorandos', |
|
| 478 | 478 | |
| 479 | - // L |
|
| 480 | - 'label_ajout_id_rapide' => 'Adição rápida', |
|
| 481 | - 'label_poids_fichier' => 'Dimensões', |
|
| 482 | - 'lien_afficher_icones_seuls' => 'Exibir apenas os ícones', |
|
| 483 | - 'lien_afficher_texte_icones' => 'Exibir ícones e o texto', |
|
| 484 | - 'lien_afficher_texte_seul' => 'Exibir apenas o texto', |
|
| 485 | - 'lien_liberer' => 'desbloquear', |
|
| 486 | - 'lien_liberer_tous' => 'desbloquear estes artigos', |
|
| 487 | - 'lien_nouvea_pense_bete' => 'NOVO MEMORANDO', |
|
| 488 | - 'lien_nouveau_message' => 'NOVA MENSAGEM', |
|
| 489 | - 'lien_nouvelle_annonce' => 'NOVO ANÚNCIO', |
|
| 490 | - 'lien_petitions' => 'PETIÇÃO', |
|
| 491 | - 'lien_popularite' => 'popularidade : @popularite@%', |
|
| 492 | - 'lien_racine_site' => 'RAIZ DO SÍTIO', |
|
| 493 | - 'lien_reessayer' => 'tentar de novo', |
|
| 494 | - 'lien_repondre_message' => 'Responder a esta mensagem', |
|
| 495 | - 'lien_supprimer' => 'eliminar', |
|
| 496 | - 'lien_tout_afficher' => 'Exibir tudo', |
|
| 497 | - 'lien_visite_site' => 'visitar este sítio', |
|
| 498 | - 'lien_visites' => '@visites@ visitas', |
|
| 499 | - 'lien_voir_auteur' => 'Ver este autor', |
|
| 500 | - 'ligne' => 'Linha', |
|
| 501 | - 'login' => 'Ligação', |
|
| 502 | - 'login_acces_prive' => 'acesso ao espaço privado', |
|
| 503 | - 'login_autre_identifiant' => 'ligar-se sob um outro identificador', |
|
| 504 | - 'login_cookie_accepte' => 'Por favor configure o seu navegador para que os aceite (pelo menos para este sítio).', |
|
| 505 | - 'login_cookie_oblige' => 'Para se identificar de maneira segura neste sítio, deve aceitar os cookies.', |
|
| 506 | - 'login_deconnexion_ok' => 'Ligação terminada.', |
|
| 507 | - 'login_erreur_pass' => 'Erro de palavra-passe', |
|
| 508 | - 'login_espace_prive' => 'área privada', |
|
| 509 | - 'login_identifiant_inconnu' => 'O identificador « @login@ » é desconhecido.', |
|
| 510 | - 'login_login' => 'Login :', |
|
| 511 | - 'login_login2' => 'Login ou endereço de e-mail :', |
|
| 512 | - 'login_login_pass_incorrect' => '(Login ou palavra-passe incorrecta.)', |
|
| 513 | - 'login_motpasseoublie' => 'palavra - passe esquecida ?', |
|
| 514 | - 'login_non_securise' => 'Atenção, este formulário não é seguro. |
|
| 479 | + // L |
|
| 480 | + 'label_ajout_id_rapide' => 'Adição rápida', |
|
| 481 | + 'label_poids_fichier' => 'Dimensões', |
|
| 482 | + 'lien_afficher_icones_seuls' => 'Exibir apenas os ícones', |
|
| 483 | + 'lien_afficher_texte_icones' => 'Exibir ícones e o texto', |
|
| 484 | + 'lien_afficher_texte_seul' => 'Exibir apenas o texto', |
|
| 485 | + 'lien_liberer' => 'desbloquear', |
|
| 486 | + 'lien_liberer_tous' => 'desbloquear estes artigos', |
|
| 487 | + 'lien_nouvea_pense_bete' => 'NOVO MEMORANDO', |
|
| 488 | + 'lien_nouveau_message' => 'NOVA MENSAGEM', |
|
| 489 | + 'lien_nouvelle_annonce' => 'NOVO ANÚNCIO', |
|
| 490 | + 'lien_petitions' => 'PETIÇÃO', |
|
| 491 | + 'lien_popularite' => 'popularidade : @popularite@%', |
|
| 492 | + 'lien_racine_site' => 'RAIZ DO SÍTIO', |
|
| 493 | + 'lien_reessayer' => 'tentar de novo', |
|
| 494 | + 'lien_repondre_message' => 'Responder a esta mensagem', |
|
| 495 | + 'lien_supprimer' => 'eliminar', |
|
| 496 | + 'lien_tout_afficher' => 'Exibir tudo', |
|
| 497 | + 'lien_visite_site' => 'visitar este sítio', |
|
| 498 | + 'lien_visites' => '@visites@ visitas', |
|
| 499 | + 'lien_voir_auteur' => 'Ver este autor', |
|
| 500 | + 'ligne' => 'Linha', |
|
| 501 | + 'login' => 'Ligação', |
|
| 502 | + 'login_acces_prive' => 'acesso ao espaço privado', |
|
| 503 | + 'login_autre_identifiant' => 'ligar-se sob um outro identificador', |
|
| 504 | + 'login_cookie_accepte' => 'Por favor configure o seu navegador para que os aceite (pelo menos para este sítio).', |
|
| 505 | + 'login_cookie_oblige' => 'Para se identificar de maneira segura neste sítio, deve aceitar os cookies.', |
|
| 506 | + 'login_deconnexion_ok' => 'Ligação terminada.', |
|
| 507 | + 'login_erreur_pass' => 'Erro de palavra-passe', |
|
| 508 | + 'login_espace_prive' => 'área privada', |
|
| 509 | + 'login_identifiant_inconnu' => 'O identificador « @login@ » é desconhecido.', |
|
| 510 | + 'login_login' => 'Login :', |
|
| 511 | + 'login_login2' => 'Login ou endereço de e-mail :', |
|
| 512 | + 'login_login_pass_incorrect' => '(Login ou palavra-passe incorrecta.)', |
|
| 513 | + 'login_motpasseoublie' => 'palavra - passe esquecida ?', |
|
| 514 | + 'login_non_securise' => 'Atenção, este formulário não é seguro. |
|
| 515 | 515 | Se não quiser que a sua palavra-passe seja |
| 516 | 516 | interceptada na rede, por favor active Javascript |
| 517 | 517 | no seu navegador e', |
| 518 | - 'login_nouvelle_tentative' => 'Nova tentativa', |
|
| 519 | - 'login_par_ici' => 'Você está registado... por aqui....', |
|
| 520 | - 'login_pass2' => 'Palavra-passe :', |
|
| 521 | - 'login_preferez_refuser' => '<b>Se prefere recusar os cookies</b>, um outro método de ligação (menos seguro) está à sua disposição', |
|
| 522 | - 'login_recharger' => 'carregar de novo esta página ', |
|
| 523 | - 'login_rester_identifie' => 'Permanecer identificado durante alguns dias ', # MODIF |
|
| 524 | - 'login_retour_public' => 'Regresso ao sítio público', |
|
| 525 | - 'login_retour_site' => 'Regresso ao sítio público', |
|
| 526 | - 'login_retoursitepublic' => 'Regresso ao sítio público', |
|
| 527 | - 'login_securise' => 'Login seguro', |
|
| 528 | - 'login_sinscrire' => 'inscrever-se', # MODIF |
|
| 529 | - 'login_test_navigateur' => 'teste navegação/nova ligação', |
|
| 530 | - 'login_verifiez_navigateur' => '(Verifique, porém, que o seu navegador não memorizou a sua palavra-passe...)', |
|
| 518 | + 'login_nouvelle_tentative' => 'Nova tentativa', |
|
| 519 | + 'login_par_ici' => 'Você está registado... por aqui....', |
|
| 520 | + 'login_pass2' => 'Palavra-passe :', |
|
| 521 | + 'login_preferez_refuser' => '<b>Se prefere recusar os cookies</b>, um outro método de ligação (menos seguro) está à sua disposição', |
|
| 522 | + 'login_recharger' => 'carregar de novo esta página ', |
|
| 523 | + 'login_rester_identifie' => 'Permanecer identificado durante alguns dias ', # MODIF |
|
| 524 | + 'login_retour_public' => 'Regresso ao sítio público', |
|
| 525 | + 'login_retour_site' => 'Regresso ao sítio público', |
|
| 526 | + 'login_retoursitepublic' => 'Regresso ao sítio público', |
|
| 527 | + 'login_securise' => 'Login seguro', |
|
| 528 | + 'login_sinscrire' => 'inscrever-se', # MODIF |
|
| 529 | + 'login_test_navigateur' => 'teste navegação/nova ligação', |
|
| 530 | + 'login_verifiez_navigateur' => '(Verifique, porém, que o seu navegador não memorizou a sua palavra-passe...)', |
|
| 531 | 531 | |
| 532 | - // M |
|
| 533 | - 'masquer_colonne' => 'Ocultar esta coluna', |
|
| 534 | - 'masquer_trad' => 'ocultar as traduções', |
|
| 535 | - 'module_fichiers_langues' => 'Ficheiros de idioma', |
|
| 532 | + // M |
|
| 533 | + 'masquer_colonne' => 'Ocultar esta coluna', |
|
| 534 | + 'masquer_trad' => 'ocultar as traduções', |
|
| 535 | + 'module_fichiers_langues' => 'Ficheiros de idioma', |
|
| 536 | 536 | |
| 537 | - // N |
|
| 538 | - 'navigateur_pas_redirige' => 'Se o seu navegador não está redireccionado, clique aqui para continuar.', |
|
| 539 | - 'numero' => 'Número', |
|
| 537 | + // N |
|
| 538 | + 'navigateur_pas_redirige' => 'Se o seu navegador não está redireccionado, clique aqui para continuar.', |
|
| 539 | + 'numero' => 'Número', |
|
| 540 | 540 | |
| 541 | - // O |
|
| 542 | - 'occurence' => 'Ocorrência', |
|
| 543 | - 'onglet_affacer_base' => 'Apagar a base de dados', |
|
| 544 | - 'onglet_auteur' => 'O autor', |
|
| 545 | - 'onglet_contenu_site' => 'Conteúdo do sítio', |
|
| 546 | - 'onglet_evolution_visite_mod' => 'Evolução', |
|
| 547 | - 'onglet_fonctions_avances' => 'Funções avançadas', |
|
| 548 | - 'onglet_informations_personnelles' => 'Informações pessoais', |
|
| 549 | - 'onglet_interactivite' => 'Interactividade', |
|
| 550 | - 'onglet_messagerie' => 'Correio', |
|
| 551 | - 'onglet_repartition_rubrique' => 'Distribuição das rubricas', |
|
| 552 | - 'onglet_save_restaur_base' => 'Guardar uma cópia/restaurar a base', |
|
| 553 | - 'onglet_vider_cache' => 'Esvaziar a cache', |
|
| 541 | + // O |
|
| 542 | + 'occurence' => 'Ocorrência', |
|
| 543 | + 'onglet_affacer_base' => 'Apagar a base de dados', |
|
| 544 | + 'onglet_auteur' => 'O autor', |
|
| 545 | + 'onglet_contenu_site' => 'Conteúdo do sítio', |
|
| 546 | + 'onglet_evolution_visite_mod' => 'Evolução', |
|
| 547 | + 'onglet_fonctions_avances' => 'Funções avançadas', |
|
| 548 | + 'onglet_informations_personnelles' => 'Informações pessoais', |
|
| 549 | + 'onglet_interactivite' => 'Interactividade', |
|
| 550 | + 'onglet_messagerie' => 'Correio', |
|
| 551 | + 'onglet_repartition_rubrique' => 'Distribuição das rubricas', |
|
| 552 | + 'onglet_save_restaur_base' => 'Guardar uma cópia/restaurar a base', |
|
| 553 | + 'onglet_vider_cache' => 'Esvaziar a cache', |
|
| 554 | 554 | |
| 555 | - // P |
|
| 556 | - 'pass_choix_pass' => 'Por favor escolha a sua nova palavra-passe', |
|
| 557 | - 'pass_erreur' => 'Erro', |
|
| 558 | - 'pass_erreur_acces_refuse' => '<b>Erro :</b> já não tem acesso a este sítio.', |
|
| 559 | - 'pass_erreur_code_inconnu' => '<b>Erro :</b> este código não corresponde a nenhum dos visitantes com acesso a este sítio.', |
|
| 560 | - 'pass_erreur_non_enregistre' => '<b>Erro :</b> o endereço <tt>@email_oubli@</tt> não está registado neste sítio. ', |
|
| 561 | - 'pass_erreur_non_valide' => '<b>Erro :</b> este email <tt>@email_oubli@</tt> não é válido ! ', |
|
| 562 | - 'pass_erreur_probleme_technique' => '<b>Erro :</b> por causa de um problema técnico, o email não pôde ser enviado.', |
|
| 563 | - 'pass_espace_prive_bla' => 'O espaço privado deste sítio está aberto aos |
|
| 555 | + // P |
|
| 556 | + 'pass_choix_pass' => 'Por favor escolha a sua nova palavra-passe', |
|
| 557 | + 'pass_erreur' => 'Erro', |
|
| 558 | + 'pass_erreur_acces_refuse' => '<b>Erro :</b> já não tem acesso a este sítio.', |
|
| 559 | + 'pass_erreur_code_inconnu' => '<b>Erro :</b> este código não corresponde a nenhum dos visitantes com acesso a este sítio.', |
|
| 560 | + 'pass_erreur_non_enregistre' => '<b>Erro :</b> o endereço <tt>@email_oubli@</tt> não está registado neste sítio. ', |
|
| 561 | + 'pass_erreur_non_valide' => '<b>Erro :</b> este email <tt>@email_oubli@</tt> não é válido ! ', |
|
| 562 | + 'pass_erreur_probleme_technique' => '<b>Erro :</b> por causa de um problema técnico, o email não pôde ser enviado.', |
|
| 563 | + 'pass_espace_prive_bla' => 'O espaço privado deste sítio está aberto aos |
|
| 564 | 564 | visitantes, após inscrição. Uma vez registado poderá consultar os artigos em curso de redacção, |
| 565 | 565 | propor artigos e participar em todos os fóruns.', |
| 566 | - 'pass_forum_bla' => 'Pediu para intervir num fórum |
|
| 566 | + 'pass_forum_bla' => 'Pediu para intervir num fórum |
|
| 567 | 567 | reservado aos visitadores registados.', |
| 568 | - 'pass_indiquez_cidessous' => 'Indique abaixo o endereço email sob o qual se registou. Receberá |
|
| 568 | + 'pass_indiquez_cidessous' => 'Indique abaixo o endereço email sob o qual se registou. Receberá |
|
| 569 | 569 | um mail que indicará o procedimento a seguir para |
| 570 | 570 | recuperar o seu acesso.', |
| 571 | - 'pass_mail_passcookie' => '(esta é uma mensagem automática) |
|
| 571 | + 'pass_mail_passcookie' => '(esta é uma mensagem automática) |
|
| 572 | 572 | Para recuperar o seu acesso ao sítio |
| 573 | 573 | @nom_site_spip@ (@adresse_site@) |
| 574 | 574 | |
@@ -578,137 +578,137 @@ discard block |
||
| 578 | 578 | |
| 579 | 579 | Poderá então introduzir uma nova palavra-passe e reconectar-se ao sítio. |
| 580 | 580 | ', |
| 581 | - 'pass_mot_oublie' => 'Palavra-passe esquecida', |
|
| 582 | - 'pass_nouveau_enregistre' => 'A sua nova palavra-passe foi registada', |
|
| 583 | - 'pass_nouveau_pass' => 'Nova palavra-passe', |
|
| 584 | - 'pass_ok' => 'OK', |
|
| 585 | - 'pass_oubli_mot' => 'Palavra-passe esquecida', |
|
| 586 | - 'pass_procedure_changer' => 'Para alterar a sua palavra-passe, temos primeiro de verificar a sua identidade. Por favor escreva o endereço e-mail associado a esta conta.', # MODIF |
|
| 587 | - 'pass_quitter_fenetre' => 'Fechar esta janela', |
|
| 588 | - 'pass_rappel_login' => 'Recorde : o seu identificador (login) é « @login@ ».', |
|
| 589 | - 'pass_recevoir_mail' => 'Vai receber um email que indica como recuperar o seu acesso ao sítio.', # MODIF |
|
| 590 | - 'pass_retour_public' => 'Regresso ao sítio público', |
|
| 591 | - 'pass_rien_a_faire_ici' => 'Nada a fazer aqui.', |
|
| 592 | - 'pass_vousinscrire' => 'Inscrever-se neste sítio', |
|
| 593 | - 'precedent' => 'anterior', |
|
| 594 | - 'previsualisation' => 'Visualização', |
|
| 595 | - 'previsualiser' => 'Pré-visualizar', |
|
| 581 | + 'pass_mot_oublie' => 'Palavra-passe esquecida', |
|
| 582 | + 'pass_nouveau_enregistre' => 'A sua nova palavra-passe foi registada', |
|
| 583 | + 'pass_nouveau_pass' => 'Nova palavra-passe', |
|
| 584 | + 'pass_ok' => 'OK', |
|
| 585 | + 'pass_oubli_mot' => 'Palavra-passe esquecida', |
|
| 586 | + 'pass_procedure_changer' => 'Para alterar a sua palavra-passe, temos primeiro de verificar a sua identidade. Por favor escreva o endereço e-mail associado a esta conta.', # MODIF |
|
| 587 | + 'pass_quitter_fenetre' => 'Fechar esta janela', |
|
| 588 | + 'pass_rappel_login' => 'Recorde : o seu identificador (login) é « @login@ ».', |
|
| 589 | + 'pass_recevoir_mail' => 'Vai receber um email que indica como recuperar o seu acesso ao sítio.', # MODIF |
|
| 590 | + 'pass_retour_public' => 'Regresso ao sítio público', |
|
| 591 | + 'pass_rien_a_faire_ici' => 'Nada a fazer aqui.', |
|
| 592 | + 'pass_vousinscrire' => 'Inscrever-se neste sítio', |
|
| 593 | + 'precedent' => 'anterior', |
|
| 594 | + 'previsualisation' => 'Visualização', |
|
| 595 | + 'previsualiser' => 'Pré-visualizar', |
|
| 596 | 596 | |
| 597 | - // R |
|
| 598 | - 'retour' => 'Retroceder', |
|
| 597 | + // R |
|
| 598 | + 'retour' => 'Retroceder', |
|
| 599 | 599 | |
| 600 | - // S |
|
| 601 | - 'spip_conforme_dtd' => 'SPIP considera esta página em conforme com o seu DOCTYPE :', |
|
| 602 | - 'squelette' => 'modelo', |
|
| 603 | - 'squelette_inclus_ligne' => 'modelo incluído, linha', |
|
| 604 | - 'squelette_ligne' => 'modelo, linha', |
|
| 605 | - 'stats_visites_et_popularite' => '@visites@ visitas ; popularidade : @popularite@', |
|
| 606 | - 'suivant' => 'seguinte', |
|
| 600 | + // S |
|
| 601 | + 'spip_conforme_dtd' => 'SPIP considera esta página em conforme com o seu DOCTYPE :', |
|
| 602 | + 'squelette' => 'modelo', |
|
| 603 | + 'squelette_inclus_ligne' => 'modelo incluído, linha', |
|
| 604 | + 'squelette_ligne' => 'modelo, linha', |
|
| 605 | + 'stats_visites_et_popularite' => '@visites@ visitas ; popularidade : @popularite@', |
|
| 606 | + 'suivant' => 'seguinte', |
|
| 607 | 607 | |
| 608 | - // T |
|
| 609 | - 'taille_go' => '@taille@ Gb', |
|
| 610 | - 'taille_ko' => '@taille@ kb', |
|
| 611 | - 'taille_mo' => '@taille@ Mb', |
|
| 612 | - 'taille_octets' => ' @taille@ bytes', |
|
| 613 | - 'taille_octets_bi' => ' @taille@ bytes', |
|
| 614 | - 'texte_actualite_site_1' => 'Quando estiver familiarizado(a) com a interface, poderá clicar em «', |
|
| 615 | - 'texte_actualite_site_2' => 'interface completa', |
|
| 616 | - 'texte_actualite_site_3' => '» para abrir mais possibilidades.', |
|
| 617 | - 'texte_creation_automatique_vignette' => 'A criação automática de miniaturas de pré-visualização está activada neste sítio. Se instalar a partir deste formulário imagens de formato(s) @gd_formats@, serão acompanhadas de uma miniatura de um tamanho máximo de @taille_preview@ pixels.', |
|
| 618 | - 'texte_documents_associes' => 'Os documentos seguintes estão associados ao artigo, |
|
| 608 | + // T |
|
| 609 | + 'taille_go' => '@taille@ Gb', |
|
| 610 | + 'taille_ko' => '@taille@ kb', |
|
| 611 | + 'taille_mo' => '@taille@ Mb', |
|
| 612 | + 'taille_octets' => ' @taille@ bytes', |
|
| 613 | + 'taille_octets_bi' => ' @taille@ bytes', |
|
| 614 | + 'texte_actualite_site_1' => 'Quando estiver familiarizado(a) com a interface, poderá clicar em «', |
|
| 615 | + 'texte_actualite_site_2' => 'interface completa', |
|
| 616 | + 'texte_actualite_site_3' => '» para abrir mais possibilidades.', |
|
| 617 | + 'texte_creation_automatique_vignette' => 'A criação automática de miniaturas de pré-visualização está activada neste sítio. Se instalar a partir deste formulário imagens de formato(s) @gd_formats@, serão acompanhadas de uma miniatura de um tamanho máximo de @taille_preview@ pixels.', |
|
| 618 | + 'texte_documents_associes' => 'Os documentos seguintes estão associados ao artigo, |
|
| 619 | 619 | mas não foram directamente |
| 620 | 620 | inseridos nele. Conforme a paginação do sítio público, |
| 621 | 621 | poderão aparecer sob forma de documentos anexados.', |
| 622 | - 'texte_erreur_mise_niveau_base' => 'Erro de base de dados por ocasião do nivelamento. |
|
| 622 | + 'texte_erreur_mise_niveau_base' => 'Erro de base de dados por ocasião do nivelamento. |
|
| 623 | 623 | A imagem <b>@fichier@</b> não passou (artigo @id_article@). |
| 624 | 624 | Note bem esta referência, volte a tentar o nivelamento, e verifique se as imagens aparecem sempre nos artigos.', |
| 625 | - 'texte_erreur_visiteur' => 'Tentou aceder à área privada usando um login não autorizado.', |
|
| 626 | - 'texte_inc_auth_1' => 'Você está identificado sob o |
|
| 625 | + 'texte_erreur_visiteur' => 'Tentou aceder à área privada usando um login não autorizado.', |
|
| 626 | + 'texte_inc_auth_1' => 'Você está identificado sob o |
|
| 627 | 627 | login <b>@auth_login@</b>, mas este já/ não existe na base de dados. |
| 628 | 628 | Tente', |
| 629 | - 'texte_inc_auth_2' => 'refazer a ligação', |
|
| 630 | - 'texte_inc_auth_3' => ', depois de eventualmente ter fechado e |
|
| 629 | + 'texte_inc_auth_2' => 'refazer a ligação', |
|
| 630 | + 'texte_inc_auth_3' => ', depois de eventualmente ter fechado e |
|
| 631 | 631 | voltado a abrir o seu navegador.', |
| 632 | - 'texte_inc_config' => 'As modificações efectuadas nestas páginas influenciam muito o |
|
| 632 | + 'texte_inc_config' => 'As modificações efectuadas nestas páginas influenciam muito o |
|
| 633 | 633 | funcionamento do seu sítio. Recomendamos que não intervenha enquanto não estiver familiarizado com o funcionamento do sistema SPIP. <br /><br /><b> Em |
| 634 | 634 | geral, é fortemente recomendado |
| 635 | 635 | deixar a responsabilidade dessas páginas ao webmaster principal do seu sítio. <b>', |
| 636 | - 'texte_inc_meta_1' => 'O sistema encontrou um erro durante a escrita do arquivo <code>@fichier@</code>. Como administrador do sítio, por favor,', |
|
| 637 | - 'texte_inc_meta_2' => 'verificar as permissões de escrita', |
|
| 638 | - 'texte_inc_meta_3' => 'no directório <code>@repertoire@</code>.', |
|
| 639 | - 'texte_statut_en_cours_redaction' => 'em curso de redacção', |
|
| 640 | - 'texte_statut_poubelle' => 'para o caixote de lixo', |
|
| 641 | - 'texte_statut_propose_evaluation' => 'proposto para avaliação', |
|
| 642 | - 'texte_statut_publie' => 'publicado online', |
|
| 643 | - 'texte_statut_refuse' => 'recusado', |
|
| 644 | - 'titre_ajouter_mot_cle' => 'ACRESCENTAR UMA PALAVRA-CHAVE', |
|
| 645 | - 'titre_cadre_raccourcis' => 'ATALHOS :', |
|
| 646 | - 'titre_changer_couleur_interface' => 'Mudar a cor da interface', |
|
| 647 | - 'titre_image_admin_article' => 'Pode administrar este artigo', |
|
| 648 | - 'titre_image_administrateur' => 'Administrador', |
|
| 649 | - 'titre_image_aide' => 'Ajuda sobre este elemento', |
|
| 650 | - 'titre_image_auteur_supprime' => 'Autor eliminado', |
|
| 651 | - 'titre_image_redacteur' => 'Redactor sem acesso', |
|
| 652 | - 'titre_image_redacteur_02' => 'Redactor', |
|
| 653 | - 'titre_image_selecteur' => 'Exibir a lista', |
|
| 654 | - 'titre_image_visiteur' => 'Visitante', |
|
| 655 | - 'titre_joindre_document' => 'ANEXAR UM DOCUMENTO', |
|
| 656 | - 'titre_mots_cles' => 'PALAVRAS-CHAVE', |
|
| 657 | - 'titre_probleme_technique' => 'Atenção : um problema técnico (servidor SQL) impede o acesso a esta parte do sítio. Obrigado pela sua compreensão.', |
|
| 658 | - 'titre_publier_document' => 'PUBLICAR UM DOCUMENTO NESTA RUBRICA', |
|
| 659 | - 'titre_signatures_attente' => 'Assinaturas aguardando validação', |
|
| 660 | - 'titre_signatures_confirmees' => 'Assinaturas confirmadas', |
|
| 661 | - 'titre_statistiques' => 'Estatísticas do sítio', |
|
| 662 | - 'titre_titre_document' => 'Título do documento :', |
|
| 663 | - 'todo' => 'a caminho', |
|
| 664 | - 'trad_reference' => '(referência para as traduções)', |
|
| 636 | + 'texte_inc_meta_1' => 'O sistema encontrou um erro durante a escrita do arquivo <code>@fichier@</code>. Como administrador do sítio, por favor,', |
|
| 637 | + 'texte_inc_meta_2' => 'verificar as permissões de escrita', |
|
| 638 | + 'texte_inc_meta_3' => 'no directório <code>@repertoire@</code>.', |
|
| 639 | + 'texte_statut_en_cours_redaction' => 'em curso de redacção', |
|
| 640 | + 'texte_statut_poubelle' => 'para o caixote de lixo', |
|
| 641 | + 'texte_statut_propose_evaluation' => 'proposto para avaliação', |
|
| 642 | + 'texte_statut_publie' => 'publicado online', |
|
| 643 | + 'texte_statut_refuse' => 'recusado', |
|
| 644 | + 'titre_ajouter_mot_cle' => 'ACRESCENTAR UMA PALAVRA-CHAVE', |
|
| 645 | + 'titre_cadre_raccourcis' => 'ATALHOS :', |
|
| 646 | + 'titre_changer_couleur_interface' => 'Mudar a cor da interface', |
|
| 647 | + 'titre_image_admin_article' => 'Pode administrar este artigo', |
|
| 648 | + 'titre_image_administrateur' => 'Administrador', |
|
| 649 | + 'titre_image_aide' => 'Ajuda sobre este elemento', |
|
| 650 | + 'titre_image_auteur_supprime' => 'Autor eliminado', |
|
| 651 | + 'titre_image_redacteur' => 'Redactor sem acesso', |
|
| 652 | + 'titre_image_redacteur_02' => 'Redactor', |
|
| 653 | + 'titre_image_selecteur' => 'Exibir a lista', |
|
| 654 | + 'titre_image_visiteur' => 'Visitante', |
|
| 655 | + 'titre_joindre_document' => 'ANEXAR UM DOCUMENTO', |
|
| 656 | + 'titre_mots_cles' => 'PALAVRAS-CHAVE', |
|
| 657 | + 'titre_probleme_technique' => 'Atenção : um problema técnico (servidor SQL) impede o acesso a esta parte do sítio. Obrigado pela sua compreensão.', |
|
| 658 | + 'titre_publier_document' => 'PUBLICAR UM DOCUMENTO NESTA RUBRICA', |
|
| 659 | + 'titre_signatures_attente' => 'Assinaturas aguardando validação', |
|
| 660 | + 'titre_signatures_confirmees' => 'Assinaturas confirmadas', |
|
| 661 | + 'titre_statistiques' => 'Estatísticas do sítio', |
|
| 662 | + 'titre_titre_document' => 'Título do documento :', |
|
| 663 | + 'todo' => 'a caminho', |
|
| 664 | + 'trad_reference' => '(referência para as traduções)', |
|
| 665 | 665 | |
| 666 | - // Z |
|
| 667 | - 'zbug_balise_b_aval' => ': tag B colocada demasiado tarde no laço infinito', |
|
| 668 | - 'zbug_balise_inexistante' => 'Tag @balise@ mal declarada para @from@', |
|
| 669 | - 'zbug_balise_sans_argument' => 'Argumento em falta na tag @balise@', |
|
| 670 | - 'zbug_boucle' => 'laço infinito', |
|
| 671 | - 'zbug_boucle_recursive_undef' => 'laço recursivo não definido @nom@', |
|
| 672 | - 'zbug_calcul' => 'cálculo', |
|
| 673 | - 'zbug_champ_hors_boucle' => 'Campo @champ@ fora do laço infinito', |
|
| 674 | - 'zbug_champ_hors_motif' => 'Campo @champ@ fora de contexto @motif@', |
|
| 675 | - 'zbug_code' => 'código', |
|
| 676 | - 'zbug_critere_inconnu' => 'critério desconhecido @critere@ ', |
|
| 677 | - 'zbug_distant_interdit' => 'Dados externos interditos', |
|
| 678 | - 'zbug_doublon_table_sans_cle_primaire' => 'Entradas duplas numa tabela que não tem uma chave primária simples', |
|
| 679 | - 'zbug_doublon_table_sans_index' => 'Entradas duplas numa tabela sem índice', |
|
| 680 | - 'zbug_erreur_boucle_double' => 'laço @id@: Dupla definição ', |
|
| 681 | - 'zbug_erreur_boucle_fermant' => 'laço @id@: tag final em falta ', |
|
| 682 | - 'zbug_erreur_boucle_syntaxe' => 'Laço com sintaxe incorrecta @id@', |
|
| 683 | - 'zbug_erreur_compilation' => 'Erro de compilação', |
|
| 684 | - 'zbug_erreur_execution_page' => 'erro de execução da página', |
|
| 685 | - 'zbug_erreur_filtre' => 'Erro : filtro indefinido @filtre@ ', |
|
| 686 | - 'zbug_erreur_meme_parent' => '{meme_parent} aplica-se exclusivamente aos laços (FORUMS) ou (RUBRIQUES)', |
|
| 687 | - 'zbug_erreur_squelette' => 'Erro(s) no modelo', |
|
| 688 | - 'zbug_hors_compilation' => 'Não compilado', |
|
| 689 | - 'zbug_info_erreur_squelette' => 'Erro no sítio', |
|
| 690 | - 'zbug_inversion_ordre_inexistant' => 'inversão de uma ordem inexistente', |
|
| 691 | - 'zbug_pagination_sans_critere' => '#PAGINAÇÃO sem critério {paginação} ou usada num laço recursivo', |
|
| 692 | - 'zbug_parametres_inclus_incorrects' => 'Parâmetros de inclusão incorrectos: @param@', |
|
| 693 | - 'zbug_profile' => 'Cálculo de tempo : @time@', |
|
| 694 | - 'zbug_resultat' => 'resultado', |
|
| 695 | - 'zbug_serveur_indefini' => 'Sevidor SQL não definido', |
|
| 696 | - 'zbug_statistiques' => 'Estatísticas das consulta SQL classificadas por duração', |
|
| 697 | - 'zbug_table_inconnue' => 'Tabela SQL «@table@» desconhecida', |
|
| 698 | - 'zxml_connus_attributs' => 'attributos conhecidos', |
|
| 699 | - 'zxml_de' => 'de', |
|
| 700 | - 'zxml_inconnu_attribut' => 'atributo desconhecido', |
|
| 701 | - 'zxml_inconnu_balise' => 'tag desconhecida', |
|
| 702 | - 'zxml_inconnu_entite' => 'entidade desconhecida', |
|
| 703 | - 'zxml_inconnu_id' => 'ID desconhecido', |
|
| 704 | - 'zxml_mais_de' => 'mas de', |
|
| 705 | - 'zxml_non_conforme' => 'não está de acordo com o princípio', |
|
| 706 | - 'zxml_non_fils' => 'não é um filho de ', |
|
| 707 | - 'zxml_nonvide_balise' => 'a tag não está vazia', |
|
| 708 | - 'zxml_obligatoire_attribut' => 'atributo obrigatório está em falta', |
|
| 709 | - 'zxml_succession_fils_incorrecte' => 'sucessão de filhos incorrecta', |
|
| 710 | - 'zxml_survoler' => 'para visualizar os correctos, mover o rato por cima', |
|
| 711 | - 'zxml_valeur_attribut' => 'valor do atributo', |
|
| 712 | - 'zxml_vide_balise' => 'tag vazia', |
|
| 713 | - 'zxml_vu' => 'visualizado antes' |
|
| 666 | + // Z |
|
| 667 | + 'zbug_balise_b_aval' => ': tag B colocada demasiado tarde no laço infinito', |
|
| 668 | + 'zbug_balise_inexistante' => 'Tag @balise@ mal declarada para @from@', |
|
| 669 | + 'zbug_balise_sans_argument' => 'Argumento em falta na tag @balise@', |
|
| 670 | + 'zbug_boucle' => 'laço infinito', |
|
| 671 | + 'zbug_boucle_recursive_undef' => 'laço recursivo não definido @nom@', |
|
| 672 | + 'zbug_calcul' => 'cálculo', |
|
| 673 | + 'zbug_champ_hors_boucle' => 'Campo @champ@ fora do laço infinito', |
|
| 674 | + 'zbug_champ_hors_motif' => 'Campo @champ@ fora de contexto @motif@', |
|
| 675 | + 'zbug_code' => 'código', |
|
| 676 | + 'zbug_critere_inconnu' => 'critério desconhecido @critere@ ', |
|
| 677 | + 'zbug_distant_interdit' => 'Dados externos interditos', |
|
| 678 | + 'zbug_doublon_table_sans_cle_primaire' => 'Entradas duplas numa tabela que não tem uma chave primária simples', |
|
| 679 | + 'zbug_doublon_table_sans_index' => 'Entradas duplas numa tabela sem índice', |
|
| 680 | + 'zbug_erreur_boucle_double' => 'laço @id@: Dupla definição ', |
|
| 681 | + 'zbug_erreur_boucle_fermant' => 'laço @id@: tag final em falta ', |
|
| 682 | + 'zbug_erreur_boucle_syntaxe' => 'Laço com sintaxe incorrecta @id@', |
|
| 683 | + 'zbug_erreur_compilation' => 'Erro de compilação', |
|
| 684 | + 'zbug_erreur_execution_page' => 'erro de execução da página', |
|
| 685 | + 'zbug_erreur_filtre' => 'Erro : filtro indefinido @filtre@ ', |
|
| 686 | + 'zbug_erreur_meme_parent' => '{meme_parent} aplica-se exclusivamente aos laços (FORUMS) ou (RUBRIQUES)', |
|
| 687 | + 'zbug_erreur_squelette' => 'Erro(s) no modelo', |
|
| 688 | + 'zbug_hors_compilation' => 'Não compilado', |
|
| 689 | + 'zbug_info_erreur_squelette' => 'Erro no sítio', |
|
| 690 | + 'zbug_inversion_ordre_inexistant' => 'inversão de uma ordem inexistente', |
|
| 691 | + 'zbug_pagination_sans_critere' => '#PAGINAÇÃO sem critério {paginação} ou usada num laço recursivo', |
|
| 692 | + 'zbug_parametres_inclus_incorrects' => 'Parâmetros de inclusão incorrectos: @param@', |
|
| 693 | + 'zbug_profile' => 'Cálculo de tempo : @time@', |
|
| 694 | + 'zbug_resultat' => 'resultado', |
|
| 695 | + 'zbug_serveur_indefini' => 'Sevidor SQL não definido', |
|
| 696 | + 'zbug_statistiques' => 'Estatísticas das consulta SQL classificadas por duração', |
|
| 697 | + 'zbug_table_inconnue' => 'Tabela SQL «@table@» desconhecida', |
|
| 698 | + 'zxml_connus_attributs' => 'attributos conhecidos', |
|
| 699 | + 'zxml_de' => 'de', |
|
| 700 | + 'zxml_inconnu_attribut' => 'atributo desconhecido', |
|
| 701 | + 'zxml_inconnu_balise' => 'tag desconhecida', |
|
| 702 | + 'zxml_inconnu_entite' => 'entidade desconhecida', |
|
| 703 | + 'zxml_inconnu_id' => 'ID desconhecido', |
|
| 704 | + 'zxml_mais_de' => 'mas de', |
|
| 705 | + 'zxml_non_conforme' => 'não está de acordo com o princípio', |
|
| 706 | + 'zxml_non_fils' => 'não é um filho de ', |
|
| 707 | + 'zxml_nonvide_balise' => 'a tag não está vazia', |
|
| 708 | + 'zxml_obligatoire_attribut' => 'atributo obrigatório está em falta', |
|
| 709 | + 'zxml_succession_fils_incorrecte' => 'sucessão de filhos incorrecta', |
|
| 710 | + 'zxml_survoler' => 'para visualizar os correctos, mover o rato por cima', |
|
| 711 | + 'zxml_valeur_attribut' => 'valor do atributo', |
|
| 712 | + 'zxml_vide_balise' => 'tag vazia', |
|
| 713 | + 'zxml_vu' => 'visualizado antes' |
|
| 714 | 714 | ); |
@@ -117,7 +117,7 @@ discard block |
||
| 117 | 117 | // confirmation du deplacement |
| 118 | 118 | if ( |
| 119 | 119 | sql_table_exists('spip_breves') |
| 120 | - and ($contient_breves = sql_countsel('spip_breves', 'id_rubrique=' . intval($id_objet))) |
|
| 120 | + and ($contient_breves = sql_countsel('spip_breves', 'id_rubrique='.intval($id_objet))) |
|
| 121 | 121 | and ($contient_breves > 0) |
| 122 | 122 | ) { |
| 123 | 123 | // FIXME: utiliser singulier_ou_pluriel, migrer dans plugin Brèves |
@@ -131,7 +131,7 @@ discard block |
||
| 131 | 131 | ); |
| 132 | 132 | $confirm .= "\n<div class='confirmer_deplacement verdana2'>" |
| 133 | 133 | . "<div class='choix'><input type='checkbox' name='confirme_deplace' value='oui' id='confirme-deplace' /><label for='confirme-deplace'>" |
| 134 | - . $scb . |
|
| 134 | + . $scb. |
|
| 135 | 135 | "</label></div></div>\n"; |
| 136 | 136 | } else { |
| 137 | 137 | $confirm .= "<input type='hidden' name='confirme_deplace' value='oui' />\n"; |
@@ -140,11 +140,11 @@ discard block |
||
| 140 | 140 | $form .= $confirm; |
| 141 | 141 | if ($actionable) { |
| 142 | 142 | if (strpos($form, '<select') !== false) { |
| 143 | - $form .= "<div style='text-align: " . $GLOBALS['spip_lang_right'] . ";'>" |
|
| 144 | - . '<input class="fondo submit btn" type="submit" value="' . _T('bouton_choisir') . '"/>' |
|
| 143 | + $form .= "<div style='text-align: ".$GLOBALS['spip_lang_right'].";'>" |
|
| 144 | + . '<input class="fondo submit btn" type="submit" value="'._T('bouton_choisir').'"/>' |
|
| 145 | 145 | . '</div>'; |
| 146 | 146 | } |
| 147 | - $form = "<input type='hidden' name='editer_$objet' value='oui' />\n" . $form; |
|
| 147 | + $form = "<input type='hidden' name='editer_$objet' value='oui' />\n".$form; |
|
| 148 | 148 | if ($action = charger_fonction("editer_$objet", 'action', true)) { |
| 149 | 149 | $form = generer_action_auteur( |
| 150 | 150 | "editer_$objet", |
@@ -170,7 +170,7 @@ discard block |
||
| 170 | 170 | |
| 171 | 171 | include_spip('inc/presentation'); |
| 172 | 172 | |
| 173 | - return debut_cadre_couleur($logo, true, '', $titre) . $form . fin_cadre_couleur(); |
|
| 173 | + return debut_cadre_couleur($logo, true, '', $titre).$form.fin_cadre_couleur(); |
|
| 174 | 174 | } |
| 175 | 175 | |
| 176 | 176 | |
@@ -246,7 +246,7 @@ discard block |
||
| 246 | 246 | if ($statut == 'nouveau') { |
| 247 | 247 | if ($attente) { |
| 248 | 248 | $statut = $attente; |
| 249 | - $plus = ' (' . _T('info_statut_auteur_a_confirmer') . ')'; |
|
| 249 | + $plus = ' ('._T('info_statut_auteur_a_confirmer').')'; |
|
| 250 | 250 | } else { |
| 251 | 251 | return _T('info_statut_auteur_a_confirmer'); |
| 252 | 252 | } |
@@ -259,16 +259,16 @@ discard block |
||
| 259 | 259 | '5poubelle' => _T('texte_statut_poubelle'), // bouh |
| 260 | 260 | ]; |
| 261 | 261 | if (isset($recom[$statut])) { |
| 262 | - return $recom[$statut] . $plus; |
|
| 262 | + return $recom[$statut].$plus; |
|
| 263 | 263 | } |
| 264 | 264 | |
| 265 | 265 | // retrouver directement par le statut sinon |
| 266 | 266 | if ($t = array_search($statut, $GLOBALS['liste_des_statuts'])) { |
| 267 | 267 | if (isset($recom[$t])) { |
| 268 | - return $recom[$t] . $plus; |
|
| 268 | + return $recom[$t].$plus; |
|
| 269 | 269 | } |
| 270 | 270 | |
| 271 | - return _T($t) . $plus; |
|
| 271 | + return _T($t).$plus; |
|
| 272 | 272 | } |
| 273 | 273 | |
| 274 | 274 | // si on a pas reussi a le traduire, retournons la chaine telle quelle |
@@ -389,7 +389,7 @@ discard block |
||
| 389 | 389 | if (!$id_rubrique and defined('_CHOIX_RUBRIQUE_PAR_DEFAUT') and _CHOIX_RUBRIQUE_PAR_DEFAUT) { |
| 390 | 390 | $in = !(is_countable($GLOBALS['connect_id_rubrique']) ? count($GLOBALS['connect_id_rubrique']) : 0) |
| 391 | 391 | ? '' |
| 392 | - : (' AND ' . sql_in('id_rubrique', $GLOBALS['connect_id_rubrique'])); |
|
| 392 | + : (' AND '.sql_in('id_rubrique', $GLOBALS['connect_id_rubrique'])); |
|
| 393 | 393 | |
| 394 | 394 | // on tente d'abord l'ecriture a la racine dans le cas des rubriques uniquement |
| 395 | 395 | if ($objet == 'rubrique') { |
@@ -423,7 +423,7 @@ discard block |
||
| 423 | 423 | return ''; |
| 424 | 424 | } |
| 425 | 425 | |
| 426 | - return propre('[->' . $virtuel . ']'); |
|
| 426 | + return propre('[->'.$virtuel.']'); |
|
| 427 | 427 | } |
| 428 | 428 | |
| 429 | 429 | |
@@ -450,7 +450,7 @@ discard block |
||
| 450 | 450 | $clic = http_img_pack('rss-16.png', 'RSS', '', $title); |
| 451 | 451 | |
| 452 | 452 | $url = generer_url_api_low_sec('transmettre', 'rss', $op, '', http_build_query($args), false, true); |
| 453 | - return "<a style='float: " . $GLOBALS['spip_lang_right'] . ";' href='$url'>$clic</a>"; |
|
| 453 | + return "<a style='float: ".$GLOBALS['spip_lang_right'].";' href='$url'>$clic</a>"; |
|
| 454 | 454 | } |
| 455 | 455 | |
| 456 | 456 | |
@@ -526,7 +526,7 @@ discard block |
||
| 526 | 526 | ); |
| 527 | 527 | |
| 528 | 528 | if ($alertes = array_filter($alertes)) { |
| 529 | - return "<div class='wrap-messages-alertes'><div class='messages-alertes'>" . |
|
| 529 | + return "<div class='wrap-messages-alertes'><div class='messages-alertes'>". |
|
| 530 | 530 | join(' | ', $alertes) |
| 531 | 531 | . '</div></div>'; |
| 532 | 532 | } |
@@ -562,13 +562,13 @@ discard block |
||
| 562 | 562 | */ |
| 563 | 563 | function afficher_plus_info($lien, $titre = '+', $titre_lien = '') { |
| 564 | 564 | $titre = attribut_html($titre); |
| 565 | - $icone = "\n<a href='$lien' title='$titre' class='plus_info'>" . |
|
| 566 | - http_img_pack('information-16.png', $titre) . '</a>'; |
|
| 565 | + $icone = "\n<a href='$lien' title='$titre' class='plus_info'>". |
|
| 566 | + http_img_pack('information-16.png', $titre).'</a>'; |
|
| 567 | 567 | |
| 568 | 568 | if (!$titre_lien) { |
| 569 | 569 | return $icone; |
| 570 | 570 | } else { |
| 571 | - return $icone . "\n<a href='$lien'>$titre_lien</a>"; |
|
| 571 | + return $icone."\n<a href='$lien'>$titre_lien</a>"; |
|
| 572 | 572 | } |
| 573 | 573 | } |
| 574 | 574 | |
@@ -16,7 +16,7 @@ discard block |
||
| 16 | 16 | * @package SPIP\Core\Filtres |
| 17 | 17 | */ |
| 18 | 18 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 19 | - return; |
|
| 19 | + return; |
|
| 20 | 20 | } |
| 21 | 21 | |
| 22 | 22 | include_spip('inc/filtres_boites'); |
@@ -41,25 +41,25 @@ discard block |
||
| 41 | 41 | */ |
| 42 | 42 | function parametres_css_prive() { |
| 43 | 43 | |
| 44 | - $args = []; |
|
| 45 | - $args['v'] = $GLOBALS['spip_version_code']; |
|
| 46 | - $args['p'] = substr(md5($GLOBALS['meta']['plugin']), 0, 4); |
|
| 47 | - $args['themes'] = implode(',', lister_themes_prives()); |
|
| 48 | - $args['ltr'] = $GLOBALS['spip_lang_left']; |
|
| 49 | - // un md5 des menus : si un menu change il faut maj la css |
|
| 50 | - $args['md5b'] = (function_exists('md5_boutons_plugins') ? md5_boutons_plugins() : ''); |
|
| 44 | + $args = []; |
|
| 45 | + $args['v'] = $GLOBALS['spip_version_code']; |
|
| 46 | + $args['p'] = substr(md5($GLOBALS['meta']['plugin']), 0, 4); |
|
| 47 | + $args['themes'] = implode(',', lister_themes_prives()); |
|
| 48 | + $args['ltr'] = $GLOBALS['spip_lang_left']; |
|
| 49 | + // un md5 des menus : si un menu change il faut maj la css |
|
| 50 | + $args['md5b'] = (function_exists('md5_boutons_plugins') ? md5_boutons_plugins() : ''); |
|
| 51 | 51 | |
| 52 | - $c = $GLOBALS['visiteur_session']['prefs']['couleur'] ?? 2; |
|
| 52 | + $c = $GLOBALS['visiteur_session']['prefs']['couleur'] ?? 2; |
|
| 53 | 53 | |
| 54 | - $couleurs = charger_fonction('couleurs', 'inc'); |
|
| 55 | - parse_str($couleurs($c), $c); |
|
| 56 | - $args = array_merge($args, $c); |
|
| 54 | + $couleurs = charger_fonction('couleurs', 'inc'); |
|
| 55 | + parse_str($couleurs($c), $c); |
|
| 56 | + $args = array_merge($args, $c); |
|
| 57 | 57 | |
| 58 | - if (_request('var_mode') == 'recalcul' or (defined('_VAR_MODE') and _VAR_MODE == 'recalcul')) { |
|
| 59 | - $args['var_mode'] = 'recalcul'; |
|
| 60 | - } |
|
| 58 | + if (_request('var_mode') == 'recalcul' or (defined('_VAR_MODE') and _VAR_MODE == 'recalcul')) { |
|
| 59 | + $args['var_mode'] = 'recalcul'; |
|
| 60 | + } |
|
| 61 | 61 | |
| 62 | - return http_build_query($args); |
|
| 62 | + return http_build_query($args); |
|
| 63 | 63 | } |
| 64 | 64 | |
| 65 | 65 | |
@@ -82,95 +82,95 @@ discard block |
||
| 82 | 82 | * @return string |
| 83 | 83 | */ |
| 84 | 84 | function chercher_rubrique( |
| 85 | - $titre, |
|
| 86 | - $id_objet, |
|
| 87 | - $id_parent, |
|
| 88 | - $objet, |
|
| 89 | - $id_secteur, |
|
| 90 | - $restreint, |
|
| 91 | - $actionable = false, |
|
| 92 | - $retour_sans_cadre = false |
|
| 85 | + $titre, |
|
| 86 | + $id_objet, |
|
| 87 | + $id_parent, |
|
| 88 | + $objet, |
|
| 89 | + $id_secteur, |
|
| 90 | + $restreint, |
|
| 91 | + $actionable = false, |
|
| 92 | + $retour_sans_cadre = false |
|
| 93 | 93 | ) { |
| 94 | 94 | |
| 95 | - include_spip('inc/autoriser'); |
|
| 96 | - if (intval($id_objet) && !autoriser('modifier', $objet, $id_objet)) { |
|
| 97 | - return ''; |
|
| 98 | - } |
|
| 99 | - if (!sql_countsel('spip_rubriques')) { |
|
| 100 | - return ''; |
|
| 101 | - } |
|
| 102 | - $chercher_rubrique = charger_fonction('chercher_rubrique', 'inc'); |
|
| 103 | - $form = $chercher_rubrique($id_parent, $objet, $restreint, ($objet == 'rubrique') ? $id_objet : 0); |
|
| 104 | - |
|
| 105 | - if ($id_parent == 0) { |
|
| 106 | - $logo = 'racine-24.png'; |
|
| 107 | - } elseif ($id_secteur == $id_parent) { |
|
| 108 | - $logo = 'secteur-24.png'; |
|
| 109 | - } else { |
|
| 110 | - $logo = 'rubrique-24.png'; |
|
| 111 | - } |
|
| 112 | - |
|
| 113 | - $confirm = ''; |
|
| 114 | - if ($objet == 'rubrique') { |
|
| 115 | - // FIXME: Migration plus adapté vers le plugin Brèves ? |
|
| 116 | - // si c'est une rubrique-secteur contenant des breves, demander la |
|
| 117 | - // confirmation du deplacement |
|
| 118 | - if ( |
|
| 119 | - sql_table_exists('spip_breves') |
|
| 120 | - and ($contient_breves = sql_countsel('spip_breves', 'id_rubrique=' . intval($id_objet))) |
|
| 121 | - and ($contient_breves > 0) |
|
| 122 | - ) { |
|
| 123 | - // FIXME: utiliser singulier_ou_pluriel, migrer dans plugin Brèves |
|
| 124 | - $scb = ($contient_breves > 1 ? 's' : ''); |
|
| 125 | - $scb = _T( |
|
| 126 | - 'avis_deplacement_rubrique', |
|
| 127 | - [ |
|
| 128 | - 'contient_breves' => $contient_breves, |
|
| 129 | - 'scb' => $scb |
|
| 130 | - ] |
|
| 131 | - ); |
|
| 132 | - $confirm .= "\n<div class='confirmer_deplacement verdana2'>" |
|
| 133 | - . "<div class='choix'><input type='checkbox' name='confirme_deplace' value='oui' id='confirme-deplace' /><label for='confirme-deplace'>" |
|
| 134 | - . $scb . |
|
| 135 | - "</label></div></div>\n"; |
|
| 136 | - } else { |
|
| 137 | - $confirm .= "<input type='hidden' name='confirme_deplace' value='oui' />\n"; |
|
| 138 | - } |
|
| 139 | - } |
|
| 140 | - $form .= $confirm; |
|
| 141 | - if ($actionable) { |
|
| 142 | - if (strpos($form, '<select') !== false) { |
|
| 143 | - $form .= "<div style='text-align: " . $GLOBALS['spip_lang_right'] . ";'>" |
|
| 144 | - . '<input class="fondo submit btn" type="submit" value="' . _T('bouton_choisir') . '"/>' |
|
| 145 | - . '</div>'; |
|
| 146 | - } |
|
| 147 | - $form = "<input type='hidden' name='editer_$objet' value='oui' />\n" . $form; |
|
| 148 | - if ($action = charger_fonction("editer_$objet", 'action', true)) { |
|
| 149 | - $form = generer_action_auteur( |
|
| 150 | - "editer_$objet", |
|
| 151 | - $id_objet, |
|
| 152 | - self(), |
|
| 153 | - $form, |
|
| 154 | - " method='post' class='submit_plongeur'" |
|
| 155 | - ); |
|
| 156 | - } else { |
|
| 157 | - $form = generer_action_auteur( |
|
| 158 | - 'editer_objet', |
|
| 159 | - "$objet/$id_objet", |
|
| 160 | - self(), |
|
| 161 | - $form, |
|
| 162 | - " method='post' class='submit_plongeur'" |
|
| 163 | - ); |
|
| 164 | - } |
|
| 165 | - } |
|
| 166 | - |
|
| 167 | - if ($retour_sans_cadre) { |
|
| 168 | - return $form; |
|
| 169 | - } |
|
| 170 | - |
|
| 171 | - include_spip('inc/presentation'); |
|
| 172 | - |
|
| 173 | - return debut_cadre_couleur($logo, true, '', $titre) . $form . fin_cadre_couleur(); |
|
| 95 | + include_spip('inc/autoriser'); |
|
| 96 | + if (intval($id_objet) && !autoriser('modifier', $objet, $id_objet)) { |
|
| 97 | + return ''; |
|
| 98 | + } |
|
| 99 | + if (!sql_countsel('spip_rubriques')) { |
|
| 100 | + return ''; |
|
| 101 | + } |
|
| 102 | + $chercher_rubrique = charger_fonction('chercher_rubrique', 'inc'); |
|
| 103 | + $form = $chercher_rubrique($id_parent, $objet, $restreint, ($objet == 'rubrique') ? $id_objet : 0); |
|
| 104 | + |
|
| 105 | + if ($id_parent == 0) { |
|
| 106 | + $logo = 'racine-24.png'; |
|
| 107 | + } elseif ($id_secteur == $id_parent) { |
|
| 108 | + $logo = 'secteur-24.png'; |
|
| 109 | + } else { |
|
| 110 | + $logo = 'rubrique-24.png'; |
|
| 111 | + } |
|
| 112 | + |
|
| 113 | + $confirm = ''; |
|
| 114 | + if ($objet == 'rubrique') { |
|
| 115 | + // FIXME: Migration plus adapté vers le plugin Brèves ? |
|
| 116 | + // si c'est une rubrique-secteur contenant des breves, demander la |
|
| 117 | + // confirmation du deplacement |
|
| 118 | + if ( |
|
| 119 | + sql_table_exists('spip_breves') |
|
| 120 | + and ($contient_breves = sql_countsel('spip_breves', 'id_rubrique=' . intval($id_objet))) |
|
| 121 | + and ($contient_breves > 0) |
|
| 122 | + ) { |
|
| 123 | + // FIXME: utiliser singulier_ou_pluriel, migrer dans plugin Brèves |
|
| 124 | + $scb = ($contient_breves > 1 ? 's' : ''); |
|
| 125 | + $scb = _T( |
|
| 126 | + 'avis_deplacement_rubrique', |
|
| 127 | + [ |
|
| 128 | + 'contient_breves' => $contient_breves, |
|
| 129 | + 'scb' => $scb |
|
| 130 | + ] |
|
| 131 | + ); |
|
| 132 | + $confirm .= "\n<div class='confirmer_deplacement verdana2'>" |
|
| 133 | + . "<div class='choix'><input type='checkbox' name='confirme_deplace' value='oui' id='confirme-deplace' /><label for='confirme-deplace'>" |
|
| 134 | + . $scb . |
|
| 135 | + "</label></div></div>\n"; |
|
| 136 | + } else { |
|
| 137 | + $confirm .= "<input type='hidden' name='confirme_deplace' value='oui' />\n"; |
|
| 138 | + } |
|
| 139 | + } |
|
| 140 | + $form .= $confirm; |
|
| 141 | + if ($actionable) { |
|
| 142 | + if (strpos($form, '<select') !== false) { |
|
| 143 | + $form .= "<div style='text-align: " . $GLOBALS['spip_lang_right'] . ";'>" |
|
| 144 | + . '<input class="fondo submit btn" type="submit" value="' . _T('bouton_choisir') . '"/>' |
|
| 145 | + . '</div>'; |
|
| 146 | + } |
|
| 147 | + $form = "<input type='hidden' name='editer_$objet' value='oui' />\n" . $form; |
|
| 148 | + if ($action = charger_fonction("editer_$objet", 'action', true)) { |
|
| 149 | + $form = generer_action_auteur( |
|
| 150 | + "editer_$objet", |
|
| 151 | + $id_objet, |
|
| 152 | + self(), |
|
| 153 | + $form, |
|
| 154 | + " method='post' class='submit_plongeur'" |
|
| 155 | + ); |
|
| 156 | + } else { |
|
| 157 | + $form = generer_action_auteur( |
|
| 158 | + 'editer_objet', |
|
| 159 | + "$objet/$id_objet", |
|
| 160 | + self(), |
|
| 161 | + $form, |
|
| 162 | + " method='post' class='submit_plongeur'" |
|
| 163 | + ); |
|
| 164 | + } |
|
| 165 | + } |
|
| 166 | + |
|
| 167 | + if ($retour_sans_cadre) { |
|
| 168 | + return $form; |
|
| 169 | + } |
|
| 170 | + |
|
| 171 | + include_spip('inc/presentation'); |
|
| 172 | + |
|
| 173 | + return debut_cadre_couleur($logo, true, '', $titre) . $form . fin_cadre_couleur(); |
|
| 174 | 174 | } |
| 175 | 175 | |
| 176 | 176 | |
@@ -184,24 +184,24 @@ discard block |
||
| 184 | 184 | * @return bool |
| 185 | 185 | */ |
| 186 | 186 | function avoir_visiteurs($past = false, $accepter = true) { |
| 187 | - if ($GLOBALS['meta']['forums_publics'] == 'abo') { |
|
| 188 | - return true; |
|
| 189 | - } |
|
| 190 | - if ($accepter and $GLOBALS['meta']['accepter_visiteurs'] <> 'non') { |
|
| 191 | - return true; |
|
| 192 | - } |
|
| 193 | - if (sql_countsel('spip_articles', "accepter_forum='abo'")) { |
|
| 194 | - return true; |
|
| 195 | - } |
|
| 196 | - if (!$past) { |
|
| 197 | - return false; |
|
| 198 | - } |
|
| 199 | - |
|
| 200 | - return sql_countsel( |
|
| 201 | - 'spip_auteurs', |
|
| 202 | - "statut NOT IN ('0minirezo','1comite', '5poubelle') |
|
| 187 | + if ($GLOBALS['meta']['forums_publics'] == 'abo') { |
|
| 188 | + return true; |
|
| 189 | + } |
|
| 190 | + if ($accepter and $GLOBALS['meta']['accepter_visiteurs'] <> 'non') { |
|
| 191 | + return true; |
|
| 192 | + } |
|
| 193 | + if (sql_countsel('spip_articles', "accepter_forum='abo'")) { |
|
| 194 | + return true; |
|
| 195 | + } |
|
| 196 | + if (!$past) { |
|
| 197 | + return false; |
|
| 198 | + } |
|
| 199 | + |
|
| 200 | + return sql_countsel( |
|
| 201 | + 'spip_auteurs', |
|
| 202 | + "statut NOT IN ('0minirezo','1comite', '5poubelle') |
|
| 203 | 203 | AND (statut<>'nouveau' OR prefs NOT IN ('0minirezo','1comite', '5poubelle'))" |
| 204 | - ); |
|
| 204 | + ); |
|
| 205 | 205 | } |
| 206 | 206 | |
| 207 | 207 | /** |
@@ -217,18 +217,18 @@ discard block |
||
| 217 | 217 | * @return array |
| 218 | 218 | */ |
| 219 | 219 | function statuts_articles_visibles($statut_auteur) { |
| 220 | - static $auth = []; |
|
| 221 | - if (!isset($auth[$statut_auteur])) { |
|
| 222 | - $auth[$statut_auteur] = []; |
|
| 223 | - $statuts = array_column(sql_allfetsel('distinct statut', 'spip_articles'), 'statut'); |
|
| 224 | - foreach ($statuts as $s) { |
|
| 225 | - if (autoriser('voir', 'article', 0, ['statut' => $statut_auteur], ['statut' => $s])) { |
|
| 226 | - $auth[$statut_auteur][] = $s; |
|
| 227 | - } |
|
| 228 | - } |
|
| 229 | - } |
|
| 230 | - |
|
| 231 | - return $auth[$statut_auteur]; |
|
| 220 | + static $auth = []; |
|
| 221 | + if (!isset($auth[$statut_auteur])) { |
|
| 222 | + $auth[$statut_auteur] = []; |
|
| 223 | + $statuts = array_column(sql_allfetsel('distinct statut', 'spip_articles'), 'statut'); |
|
| 224 | + foreach ($statuts as $s) { |
|
| 225 | + if (autoriser('voir', 'article', 0, ['statut' => $statut_auteur], ['statut' => $s])) { |
|
| 226 | + $auth[$statut_auteur][] = $s; |
|
| 227 | + } |
|
| 228 | + } |
|
| 229 | + } |
|
| 230 | + |
|
| 231 | + return $auth[$statut_auteur]; |
|
| 232 | 232 | } |
| 233 | 233 | |
| 234 | 234 | /** |
@@ -242,38 +242,38 @@ discard block |
||
| 242 | 242 | * @return string |
| 243 | 243 | */ |
| 244 | 244 | function traduire_statut_auteur($statut, $attente = '') { |
| 245 | - $plus = ''; |
|
| 246 | - if ($statut == 'nouveau') { |
|
| 247 | - if ($attente) { |
|
| 248 | - $statut = $attente; |
|
| 249 | - $plus = ' (' . _T('info_statut_auteur_a_confirmer') . ')'; |
|
| 250 | - } else { |
|
| 251 | - return _T('info_statut_auteur_a_confirmer'); |
|
| 252 | - } |
|
| 253 | - } |
|
| 254 | - |
|
| 255 | - $recom = [ |
|
| 256 | - 'info_administrateurs' => _T('item_administrateur_2'), |
|
| 257 | - 'info_redacteurs' => _T('intem_redacteur'), |
|
| 258 | - 'info_visiteurs' => _T('item_visiteur'), |
|
| 259 | - '5poubelle' => _T('texte_statut_poubelle'), // bouh |
|
| 260 | - ]; |
|
| 261 | - if (isset($recom[$statut])) { |
|
| 262 | - return $recom[$statut] . $plus; |
|
| 263 | - } |
|
| 264 | - |
|
| 265 | - // retrouver directement par le statut sinon |
|
| 266 | - if ($t = array_search($statut, $GLOBALS['liste_des_statuts'])) { |
|
| 267 | - if (isset($recom[$t])) { |
|
| 268 | - return $recom[$t] . $plus; |
|
| 269 | - } |
|
| 270 | - |
|
| 271 | - return _T($t) . $plus; |
|
| 272 | - } |
|
| 273 | - |
|
| 274 | - // si on a pas reussi a le traduire, retournons la chaine telle quelle |
|
| 275 | - // c'est toujours plus informatif que rien du tout |
|
| 276 | - return $statut; |
|
| 245 | + $plus = ''; |
|
| 246 | + if ($statut == 'nouveau') { |
|
| 247 | + if ($attente) { |
|
| 248 | + $statut = $attente; |
|
| 249 | + $plus = ' (' . _T('info_statut_auteur_a_confirmer') . ')'; |
|
| 250 | + } else { |
|
| 251 | + return _T('info_statut_auteur_a_confirmer'); |
|
| 252 | + } |
|
| 253 | + } |
|
| 254 | + |
|
| 255 | + $recom = [ |
|
| 256 | + 'info_administrateurs' => _T('item_administrateur_2'), |
|
| 257 | + 'info_redacteurs' => _T('intem_redacteur'), |
|
| 258 | + 'info_visiteurs' => _T('item_visiteur'), |
|
| 259 | + '5poubelle' => _T('texte_statut_poubelle'), // bouh |
|
| 260 | + ]; |
|
| 261 | + if (isset($recom[$statut])) { |
|
| 262 | + return $recom[$statut] . $plus; |
|
| 263 | + } |
|
| 264 | + |
|
| 265 | + // retrouver directement par le statut sinon |
|
| 266 | + if ($t = array_search($statut, $GLOBALS['liste_des_statuts'])) { |
|
| 267 | + if (isset($recom[$t])) { |
|
| 268 | + return $recom[$t] . $plus; |
|
| 269 | + } |
|
| 270 | + |
|
| 271 | + return _T($t) . $plus; |
|
| 272 | + } |
|
| 273 | + |
|
| 274 | + // si on a pas reussi a le traduire, retournons la chaine telle quelle |
|
| 275 | + // c'est toujours plus informatif que rien du tout |
|
| 276 | + return $statut; |
|
| 277 | 277 | } |
| 278 | 278 | |
| 279 | 279 | /** |
@@ -284,29 +284,29 @@ discard block |
||
| 284 | 284 | * @return string |
| 285 | 285 | */ |
| 286 | 286 | function afficher_qui_edite($id_objet, $objet): string { |
| 287 | - static $qui = []; |
|
| 288 | - if (isset($qui[$objet][$id_objet])) { |
|
| 289 | - return $qui[$objet][$id_objet]; |
|
| 290 | - } |
|
| 291 | - |
|
| 292 | - include_spip('inc/config'); |
|
| 293 | - if (lire_config('articles_modif', 'non') === 'non') { |
|
| 294 | - return $qui[$objet][$id_objet] = ''; |
|
| 295 | - } |
|
| 296 | - |
|
| 297 | - include_spip('inc/drapeau_edition'); |
|
| 298 | - $modif = mention_qui_edite($id_objet, $objet); |
|
| 299 | - if (!$modif) { |
|
| 300 | - return $qui[$objet][$id_objet] = ''; |
|
| 301 | - } |
|
| 302 | - |
|
| 303 | - include_spip('base/objets'); |
|
| 304 | - $infos = lister_tables_objets_sql(table_objet_sql($objet)); |
|
| 305 | - if (isset($infos['texte_signale_edition'])) { |
|
| 306 | - return $qui[$objet][$id_objet] = _T($infos['texte_signale_edition'], $modif); |
|
| 307 | - } |
|
| 308 | - |
|
| 309 | - return $qui[$objet][$id_objet] = _T('info_qui_edite', $modif); |
|
| 287 | + static $qui = []; |
|
| 288 | + if (isset($qui[$objet][$id_objet])) { |
|
| 289 | + return $qui[$objet][$id_objet]; |
|
| 290 | + } |
|
| 291 | + |
|
| 292 | + include_spip('inc/config'); |
|
| 293 | + if (lire_config('articles_modif', 'non') === 'non') { |
|
| 294 | + return $qui[$objet][$id_objet] = ''; |
|
| 295 | + } |
|
| 296 | + |
|
| 297 | + include_spip('inc/drapeau_edition'); |
|
| 298 | + $modif = mention_qui_edite($id_objet, $objet); |
|
| 299 | + if (!$modif) { |
|
| 300 | + return $qui[$objet][$id_objet] = ''; |
|
| 301 | + } |
|
| 302 | + |
|
| 303 | + include_spip('base/objets'); |
|
| 304 | + $infos = lister_tables_objets_sql(table_objet_sql($objet)); |
|
| 305 | + if (isset($infos['texte_signale_edition'])) { |
|
| 306 | + return $qui[$objet][$id_objet] = _T($infos['texte_signale_edition'], $modif); |
|
| 307 | + } |
|
| 308 | + |
|
| 309 | + return $qui[$objet][$id_objet] = _T('info_qui_edite', $modif); |
|
| 310 | 310 | } |
| 311 | 311 | |
| 312 | 312 | /** |
@@ -324,53 +324,53 @@ discard block |
||
| 324 | 324 | * @return array |
| 325 | 325 | */ |
| 326 | 326 | function auteurs_lister_statuts($quoi = 'tous', $en_base = true): array { |
| 327 | - if (!defined('AUTEURS_MIN_REDAC')) { |
|
| 328 | - define('AUTEURS_MIN_REDAC', '0minirezo,1comite,5poubelle'); |
|
| 329 | - } |
|
| 330 | - |
|
| 331 | - switch ($quoi) { |
|
| 332 | - case 'redacteurs': |
|
| 333 | - $statut = AUTEURS_MIN_REDAC; |
|
| 334 | - $statut = explode(',', $statut); |
|
| 335 | - if ($en_base) { |
|
| 336 | - $check = array_column(sql_allfetsel('DISTINCT statut', 'spip_auteurs', sql_in('statut', $statut)), 'statut'); |
|
| 337 | - $retire = array_diff($statut, $check); |
|
| 338 | - $statut = array_diff($statut, $retire); |
|
| 339 | - } |
|
| 340 | - |
|
| 341 | - return array_unique($statut); |
|
| 342 | - |
|
| 343 | - case 'visiteurs': |
|
| 344 | - $statut = []; |
|
| 345 | - $exclus = AUTEURS_MIN_REDAC; |
|
| 346 | - $exclus = explode(',', $exclus); |
|
| 347 | - if (!$en_base) { |
|
| 348 | - // prendre aussi les statuts de la table des status qui ne sont pas dans le define |
|
| 349 | - $statut = array_diff(array_values($GLOBALS['liste_des_statuts']), $exclus); |
|
| 350 | - } |
|
| 351 | - $s_complement = array_column( |
|
| 352 | - sql_allfetsel('DISTINCT statut', 'spip_auteurs', sql_in('statut', $exclus, 'NOT')), |
|
| 353 | - 'statut' |
|
| 354 | - ); |
|
| 355 | - |
|
| 356 | - return array_unique(array_merge($statut, $s_complement)); |
|
| 357 | - |
|
| 358 | - default: |
|
| 359 | - case 'tous': |
|
| 360 | - $statut = array_values($GLOBALS['liste_des_statuts']); |
|
| 361 | - $s_complement = array_column( |
|
| 362 | - sql_allfetsel('DISTINCT statut', 'spip_auteurs', sql_in('statut', $statut, 'NOT')), |
|
| 363 | - 'statut' |
|
| 364 | - ); |
|
| 365 | - $statut = array_merge($statut, $s_complement); |
|
| 366 | - if ($en_base) { |
|
| 367 | - $check = array_column(sql_allfetsel('DISTINCT statut', 'spip_auteurs', sql_in('statut', $statut)), 'statut'); |
|
| 368 | - $retire = array_diff($statut, $check); |
|
| 369 | - $statut = array_diff($statut, $retire); |
|
| 370 | - } |
|
| 371 | - |
|
| 372 | - return array_unique($statut); |
|
| 373 | - } |
|
| 327 | + if (!defined('AUTEURS_MIN_REDAC')) { |
|
| 328 | + define('AUTEURS_MIN_REDAC', '0minirezo,1comite,5poubelle'); |
|
| 329 | + } |
|
| 330 | + |
|
| 331 | + switch ($quoi) { |
|
| 332 | + case 'redacteurs': |
|
| 333 | + $statut = AUTEURS_MIN_REDAC; |
|
| 334 | + $statut = explode(',', $statut); |
|
| 335 | + if ($en_base) { |
|
| 336 | + $check = array_column(sql_allfetsel('DISTINCT statut', 'spip_auteurs', sql_in('statut', $statut)), 'statut'); |
|
| 337 | + $retire = array_diff($statut, $check); |
|
| 338 | + $statut = array_diff($statut, $retire); |
|
| 339 | + } |
|
| 340 | + |
|
| 341 | + return array_unique($statut); |
|
| 342 | + |
|
| 343 | + case 'visiteurs': |
|
| 344 | + $statut = []; |
|
| 345 | + $exclus = AUTEURS_MIN_REDAC; |
|
| 346 | + $exclus = explode(',', $exclus); |
|
| 347 | + if (!$en_base) { |
|
| 348 | + // prendre aussi les statuts de la table des status qui ne sont pas dans le define |
|
| 349 | + $statut = array_diff(array_values($GLOBALS['liste_des_statuts']), $exclus); |
|
| 350 | + } |
|
| 351 | + $s_complement = array_column( |
|
| 352 | + sql_allfetsel('DISTINCT statut', 'spip_auteurs', sql_in('statut', $exclus, 'NOT')), |
|
| 353 | + 'statut' |
|
| 354 | + ); |
|
| 355 | + |
|
| 356 | + return array_unique(array_merge($statut, $s_complement)); |
|
| 357 | + |
|
| 358 | + default: |
|
| 359 | + case 'tous': |
|
| 360 | + $statut = array_values($GLOBALS['liste_des_statuts']); |
|
| 361 | + $s_complement = array_column( |
|
| 362 | + sql_allfetsel('DISTINCT statut', 'spip_auteurs', sql_in('statut', $statut, 'NOT')), |
|
| 363 | + 'statut' |
|
| 364 | + ); |
|
| 365 | + $statut = array_merge($statut, $s_complement); |
|
| 366 | + if ($en_base) { |
|
| 367 | + $check = array_column(sql_allfetsel('DISTINCT statut', 'spip_auteurs', sql_in('statut', $statut)), 'statut'); |
|
| 368 | + $retire = array_diff($statut, $check); |
|
| 369 | + $statut = array_diff($statut, $retire); |
|
| 370 | + } |
|
| 371 | + |
|
| 372 | + return array_unique($statut); |
|
| 373 | + } |
|
| 374 | 374 | } |
| 375 | 375 | |
| 376 | 376 | /** |
@@ -386,28 +386,28 @@ discard block |
||
| 386 | 386 | */ |
| 387 | 387 | function trouver_rubrique_creer_objet($id_rubrique, $objet) { |
| 388 | 388 | |
| 389 | - if (!$id_rubrique and defined('_CHOIX_RUBRIQUE_PAR_DEFAUT') and _CHOIX_RUBRIQUE_PAR_DEFAUT) { |
|
| 390 | - $in = !(is_countable($GLOBALS['connect_id_rubrique']) ? count($GLOBALS['connect_id_rubrique']) : 0) |
|
| 391 | - ? '' |
|
| 392 | - : (' AND ' . sql_in('id_rubrique', $GLOBALS['connect_id_rubrique'])); |
|
| 393 | - |
|
| 394 | - // on tente d'abord l'ecriture a la racine dans le cas des rubriques uniquement |
|
| 395 | - if ($objet == 'rubrique') { |
|
| 396 | - $id_rubrique = 0; |
|
| 397 | - } else { |
|
| 398 | - $id_rubrique = sql_getfetsel('id_rubrique', 'spip_rubriques', "id_parent=0$in", '', 'id_rubrique DESC', 1); |
|
| 399 | - } |
|
| 400 | - |
|
| 401 | - if (!autoriser("creer{$objet}dans", 'rubrique', $id_rubrique)) { |
|
| 402 | - // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises |
|
| 403 | - $res = sql_select('id_rubrique', 'spip_rubriques', 'id_parent=0'); |
|
| 404 | - while (!autoriser("creer{$objet}dans", 'rubrique', $id_rubrique) && $row_rub = sql_fetch($res)) { |
|
| 405 | - $id_rubrique = $row_rub['id_rubrique']; |
|
| 406 | - } |
|
| 407 | - } |
|
| 408 | - } |
|
| 409 | - |
|
| 410 | - return $id_rubrique; |
|
| 389 | + if (!$id_rubrique and defined('_CHOIX_RUBRIQUE_PAR_DEFAUT') and _CHOIX_RUBRIQUE_PAR_DEFAUT) { |
|
| 390 | + $in = !(is_countable($GLOBALS['connect_id_rubrique']) ? count($GLOBALS['connect_id_rubrique']) : 0) |
|
| 391 | + ? '' |
|
| 392 | + : (' AND ' . sql_in('id_rubrique', $GLOBALS['connect_id_rubrique'])); |
|
| 393 | + |
|
| 394 | + // on tente d'abord l'ecriture a la racine dans le cas des rubriques uniquement |
|
| 395 | + if ($objet == 'rubrique') { |
|
| 396 | + $id_rubrique = 0; |
|
| 397 | + } else { |
|
| 398 | + $id_rubrique = sql_getfetsel('id_rubrique', 'spip_rubriques', "id_parent=0$in", '', 'id_rubrique DESC', 1); |
|
| 399 | + } |
|
| 400 | + |
|
| 401 | + if (!autoriser("creer{$objet}dans", 'rubrique', $id_rubrique)) { |
|
| 402 | + // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises |
|
| 403 | + $res = sql_select('id_rubrique', 'spip_rubriques', 'id_parent=0'); |
|
| 404 | + while (!autoriser("creer{$objet}dans", 'rubrique', $id_rubrique) && $row_rub = sql_fetch($res)) { |
|
| 405 | + $id_rubrique = $row_rub['id_rubrique']; |
|
| 406 | + } |
|
| 407 | + } |
|
| 408 | + } |
|
| 409 | + |
|
| 410 | + return $id_rubrique; |
|
| 411 | 411 | } |
| 412 | 412 | |
| 413 | 413 | /** |
@@ -418,12 +418,12 @@ discard block |
||
| 418 | 418 | * @return string |
| 419 | 419 | */ |
| 420 | 420 | function lien_article_virtuel($virtuel) { |
| 421 | - include_spip('inc/lien'); |
|
| 422 | - if (!$virtuel = virtuel_redirige($virtuel)) { |
|
| 423 | - return ''; |
|
| 424 | - } |
|
| 421 | + include_spip('inc/lien'); |
|
| 422 | + if (!$virtuel = virtuel_redirige($virtuel)) { |
|
| 423 | + return ''; |
|
| 424 | + } |
|
| 425 | 425 | |
| 426 | - return propre('[->' . $virtuel . ']'); |
|
| 426 | + return propre('[->' . $virtuel . ']'); |
|
| 427 | 427 | } |
| 428 | 428 | |
| 429 | 429 | |
@@ -446,11 +446,11 @@ discard block |
||
| 446 | 446 | * @filtre |
| 447 | 447 | */ |
| 448 | 448 | function bouton_spip_rss($op, $args = [], $lang = '', $title = 'RSS') { |
| 449 | - include_spip('inc/acces'); |
|
| 450 | - $clic = http_img_pack('rss-16.png', 'RSS', '', $title); |
|
| 449 | + include_spip('inc/acces'); |
|
| 450 | + $clic = http_img_pack('rss-16.png', 'RSS', '', $title); |
|
| 451 | 451 | |
| 452 | - $url = generer_url_api_low_sec('transmettre', 'rss', $op, '', http_build_query($args), false, true); |
|
| 453 | - return "<a style='float: " . $GLOBALS['spip_lang_right'] . ";' href='$url'>$clic</a>"; |
|
| 452 | + $url = generer_url_api_low_sec('transmettre', 'rss', $op, '', http_build_query($args), false, true); |
|
| 453 | + return "<a style='float: " . $GLOBALS['spip_lang_right'] . ";' href='$url'>$clic</a>"; |
|
| 454 | 454 | } |
| 455 | 455 | |
| 456 | 456 | |
@@ -462,76 +462,76 @@ discard block |
||
| 462 | 462 | */ |
| 463 | 463 | function alertes_auteur($id_auteur): string { |
| 464 | 464 | |
| 465 | - $alertes = []; |
|
| 466 | - |
|
| 467 | - if ( |
|
| 468 | - isset($GLOBALS['meta']['message_crash_tables']) |
|
| 469 | - and autoriser('detruire', null, null, $id_auteur) |
|
| 470 | - ) { |
|
| 471 | - include_spip('genie/maintenance'); |
|
| 472 | - if ($msg = message_crash_tables()) { |
|
| 473 | - $alertes[] = $msg; |
|
| 474 | - } |
|
| 475 | - } |
|
| 476 | - |
|
| 477 | - if ( |
|
| 478 | - isset($GLOBALS['meta']['message_crash_plugins']) |
|
| 479 | - and $GLOBALS['meta']['message_crash_plugins'] |
|
| 480 | - and autoriser('configurer', '_plugins', null, $id_auteur) |
|
| 481 | - and is_array($msg = unserialize($GLOBALS['meta']['message_crash_plugins'])) |
|
| 482 | - ) { |
|
| 483 | - $msg = implode(', ', array_map('joli_repertoire', array_keys($msg))); |
|
| 484 | - $alertes[] = _T('plugins_erreur', ['plugins' => $msg]); |
|
| 485 | - } |
|
| 486 | - |
|
| 487 | - $a = $GLOBALS['meta']['message_alertes_auteurs'] ?? ''; |
|
| 488 | - if ( |
|
| 489 | - $a |
|
| 490 | - and is_array($a = unserialize($a)) |
|
| 491 | - and count($a) |
|
| 492 | - ) { |
|
| 493 | - $update = false; |
|
| 494 | - if (isset($a[$GLOBALS['visiteur_session']['statut']])) { |
|
| 495 | - $alertes = array_merge($alertes, $a[$GLOBALS['visiteur_session']['statut']]); |
|
| 496 | - unset($a[$GLOBALS['visiteur_session']['statut']]); |
|
| 497 | - $update = true; |
|
| 498 | - } |
|
| 499 | - if (isset($a[''])) { |
|
| 500 | - $alertes = array_merge($alertes, $a['']); |
|
| 501 | - unset($a['']); |
|
| 502 | - $update = true; |
|
| 503 | - } |
|
| 504 | - if ($update) { |
|
| 505 | - ecrire_meta('message_alertes_auteurs', serialize($a)); |
|
| 506 | - } |
|
| 507 | - } |
|
| 508 | - |
|
| 509 | - if ( |
|
| 510 | - isset($GLOBALS['meta']['plugin_erreur_activation']) |
|
| 511 | - and autoriser('configurer', '_plugins', null, $id_auteur) |
|
| 512 | - ) { |
|
| 513 | - include_spip('inc/plugin'); |
|
| 514 | - $alertes[] = plugin_donne_erreurs(); |
|
| 515 | - } |
|
| 516 | - |
|
| 517 | - $alertes = pipeline( |
|
| 518 | - 'alertes_auteur', |
|
| 519 | - [ |
|
| 520 | - 'args' => [ |
|
| 521 | - 'id_auteur' => $id_auteur, |
|
| 522 | - 'exec' => _request('exec'), |
|
| 523 | - ], |
|
| 524 | - 'data' => $alertes |
|
| 525 | - ] |
|
| 526 | - ); |
|
| 527 | - |
|
| 528 | - if ($alertes = array_filter($alertes)) { |
|
| 529 | - return "<div class='wrap-messages-alertes'><div class='messages-alertes'>" . |
|
| 530 | - join(' | ', $alertes) |
|
| 531 | - . '</div></div>'; |
|
| 532 | - } |
|
| 533 | - |
|
| 534 | - return ''; |
|
| 465 | + $alertes = []; |
|
| 466 | + |
|
| 467 | + if ( |
|
| 468 | + isset($GLOBALS['meta']['message_crash_tables']) |
|
| 469 | + and autoriser('detruire', null, null, $id_auteur) |
|
| 470 | + ) { |
|
| 471 | + include_spip('genie/maintenance'); |
|
| 472 | + if ($msg = message_crash_tables()) { |
|
| 473 | + $alertes[] = $msg; |
|
| 474 | + } |
|
| 475 | + } |
|
| 476 | + |
|
| 477 | + if ( |
|
| 478 | + isset($GLOBALS['meta']['message_crash_plugins']) |
|
| 479 | + and $GLOBALS['meta']['message_crash_plugins'] |
|
| 480 | + and autoriser('configurer', '_plugins', null, $id_auteur) |
|
| 481 | + and is_array($msg = unserialize($GLOBALS['meta']['message_crash_plugins'])) |
|
| 482 | + ) { |
|
| 483 | + $msg = implode(', ', array_map('joli_repertoire', array_keys($msg))); |
|
| 484 | + $alertes[] = _T('plugins_erreur', ['plugins' => $msg]); |
|
| 485 | + } |
|
| 486 | + |
|
| 487 | + $a = $GLOBALS['meta']['message_alertes_auteurs'] ?? ''; |
|
| 488 | + if ( |
|
| 489 | + $a |
|
| 490 | + and is_array($a = unserialize($a)) |
|
| 491 | + and count($a) |
|
| 492 | + ) { |
|
| 493 | + $update = false; |
|
| 494 | + if (isset($a[$GLOBALS['visiteur_session']['statut']])) { |
|
| 495 | + $alertes = array_merge($alertes, $a[$GLOBALS['visiteur_session']['statut']]); |
|
| 496 | + unset($a[$GLOBALS['visiteur_session']['statut']]); |
|
| 497 | + $update = true; |
|
| 498 | + } |
|
| 499 | + if (isset($a[''])) { |
|
| 500 | + $alertes = array_merge($alertes, $a['']); |
|
| 501 | + unset($a['']); |
|
| 502 | + $update = true; |
|
| 503 | + } |
|
| 504 | + if ($update) { |
|
| 505 | + ecrire_meta('message_alertes_auteurs', serialize($a)); |
|
| 506 | + } |
|
| 507 | + } |
|
| 508 | + |
|
| 509 | + if ( |
|
| 510 | + isset($GLOBALS['meta']['plugin_erreur_activation']) |
|
| 511 | + and autoriser('configurer', '_plugins', null, $id_auteur) |
|
| 512 | + ) { |
|
| 513 | + include_spip('inc/plugin'); |
|
| 514 | + $alertes[] = plugin_donne_erreurs(); |
|
| 515 | + } |
|
| 516 | + |
|
| 517 | + $alertes = pipeline( |
|
| 518 | + 'alertes_auteur', |
|
| 519 | + [ |
|
| 520 | + 'args' => [ |
|
| 521 | + 'id_auteur' => $id_auteur, |
|
| 522 | + 'exec' => _request('exec'), |
|
| 523 | + ], |
|
| 524 | + 'data' => $alertes |
|
| 525 | + ] |
|
| 526 | + ); |
|
| 527 | + |
|
| 528 | + if ($alertes = array_filter($alertes)) { |
|
| 529 | + return "<div class='wrap-messages-alertes'><div class='messages-alertes'>" . |
|
| 530 | + join(' | ', $alertes) |
|
| 531 | + . '</div></div>'; |
|
| 532 | + } |
|
| 533 | + |
|
| 534 | + return ''; |
|
| 535 | 535 | } |
| 536 | 536 | |
| 537 | 537 | /** |
@@ -541,9 +541,9 @@ discard block |
||
| 541 | 541 | * @return string |
| 542 | 542 | */ |
| 543 | 543 | function filtre_afficher_enfant_rub_dist($id_rubrique) { |
| 544 | - include_spip('inc/presenter_enfants'); |
|
| 544 | + include_spip('inc/presenter_enfants'); |
|
| 545 | 545 | |
| 546 | - return afficher_enfant_rub(intval($id_rubrique)); |
|
| 546 | + return afficher_enfant_rub(intval($id_rubrique)); |
|
| 547 | 547 | } |
| 548 | 548 | |
| 549 | 549 | /** |
@@ -561,15 +561,15 @@ discard block |
||
| 561 | 561 | * @return string |
| 562 | 562 | */ |
| 563 | 563 | function afficher_plus_info($lien, $titre = '+', $titre_lien = '') { |
| 564 | - $titre = attribut_html($titre); |
|
| 565 | - $icone = "\n<a href='$lien' title='$titre' class='plus_info'>" . |
|
| 566 | - http_img_pack('information-16.png', $titre) . '</a>'; |
|
| 567 | - |
|
| 568 | - if (!$titre_lien) { |
|
| 569 | - return $icone; |
|
| 570 | - } else { |
|
| 571 | - return $icone . "\n<a href='$lien'>$titre_lien</a>"; |
|
| 572 | - } |
|
| 564 | + $titre = attribut_html($titre); |
|
| 565 | + $icone = "\n<a href='$lien' title='$titre' class='plus_info'>" . |
|
| 566 | + http_img_pack('information-16.png', $titre) . '</a>'; |
|
| 567 | + |
|
| 568 | + if (!$titre_lien) { |
|
| 569 | + return $icone; |
|
| 570 | + } else { |
|
| 571 | + return $icone . "\n<a href='$lien'>$titre_lien</a>"; |
|
| 572 | + } |
|
| 573 | 573 | } |
| 574 | 574 | |
| 575 | 575 | |
@@ -588,20 +588,20 @@ discard block |
||
| 588 | 588 | * @return array |
| 589 | 589 | */ |
| 590 | 590 | function lister_objets_lies($objet_source, $objet, $id_objet, $objet_lien) { |
| 591 | - $res = lister_objets_liens($objet_source, $objet, $id_objet, $objet_lien); |
|
| 592 | - if (!(is_countable($res) ? count($res) : 0)) { |
|
| 593 | - return []; |
|
| 594 | - } |
|
| 595 | - $r = reset($res); |
|
| 596 | - $colonne_id = ($objet_source == $objet_lien ? id_table_objet($objet_source) : 'id_objet'); |
|
| 597 | - if (isset($r['rang_lien'])) { |
|
| 598 | - $l = array_column($res, 'rang_lien', $colonne_id); |
|
| 599 | - asort($l); |
|
| 600 | - $l = array_keys($l); |
|
| 601 | - } else { |
|
| 602 | - // Si les liens qu'on cherche sont ceux de la table de lien, l'info est dans la clé de l'objet |
|
| 603 | - // Sinon c'est dans "id_objet" |
|
| 604 | - $l = array_column($res, $colonne_id); |
|
| 605 | - } |
|
| 606 | - return $l; |
|
| 591 | + $res = lister_objets_liens($objet_source, $objet, $id_objet, $objet_lien); |
|
| 592 | + if (!(is_countable($res) ? count($res) : 0)) { |
|
| 593 | + return []; |
|
| 594 | + } |
|
| 595 | + $r = reset($res); |
|
| 596 | + $colonne_id = ($objet_source == $objet_lien ? id_table_objet($objet_source) : 'id_objet'); |
|
| 597 | + if (isset($r['rang_lien'])) { |
|
| 598 | + $l = array_column($res, 'rang_lien', $colonne_id); |
|
| 599 | + asort($l); |
|
| 600 | + $l = array_keys($l); |
|
| 601 | + } else { |
|
| 602 | + // Si les liens qu'on cherche sont ceux de la table de lien, l'info est dans la clé de l'objet |
|
| 603 | + // Sinon c'est dans "id_objet" |
|
| 604 | + $l = array_column($res, $colonne_id); |
|
| 605 | + } |
|
| 606 | + return $l; |
|
| 607 | 607 | } |
@@ -4,248 +4,248 @@ discard block |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'access_interface_graphique' => 'Retour à l’interface graphique complète', |
|
| 14 | - 'access_mode_texte' => 'Afficher l’interface textuelle simplifiée', |
|
| 15 | - 'admin_debug' => 'debug', |
|
| 16 | - 'admin_modifier_article' => 'Modifier cet article', |
|
| 17 | - 'admin_modifier_auteur' => 'Modifier cet auteur', |
|
| 18 | - 'admin_modifier_breve' => 'Modifier cette brève', |
|
| 19 | - 'admin_modifier_mot' => 'Modifier ce mot-clé', |
|
| 20 | - 'admin_modifier_rubrique' => 'Modifier cette rubrique', |
|
| 21 | - 'admin_recalculer' => 'Recalculer cette page', |
|
| 22 | - 'afficher_calendrier' => 'Afficher le calendrier', |
|
| 23 | - 'afficher_trad' => 'afficher les traductions', |
|
| 24 | - 'alerte_maj_impossible' => '<b>Alerte !</b> La mise à jour de la base SQL vers la version @version@ est impossible, peut-être à cause d’un problème de droit de modification sur la base de données. Contacte ton hébergeur.', |
|
| 25 | - 'alerte_modif_info_concourante' => 'ATTENTION : Cette information a été modifiée par ailleurs. La valeur actuelle est :', |
|
| 26 | - 'analyse_xml' => 'Analyse XML', |
|
| 27 | - 'annuler' => 'Annuler', |
|
| 28 | - 'antispam_champ_vide' => 'Laisse ce champ vide :', |
|
| 29 | - 'articles_recents' => 'Articles les plus récents', |
|
| 30 | - 'attention_champ_mini_nb_caractères' => 'Attention ! @nb@ caractères au minimum', |
|
| 31 | - 'avis_1_erreur_saisie' => 'Il y a 1 erreur dans dans ta saisie, vérifie les informations.', |
|
| 32 | - 'avis_archive_incorrect' => 'le fichier archive n’est pas un fichier SPIP', |
|
| 33 | - 'avis_archive_invalide' => 'le fichier archive n’est pas valide', |
|
| 34 | - 'avis_attention' => 'ATTENTION !', |
|
| 35 | - 'avis_champ_incorrect_type_objet' => 'Nom de champ incorrect @name@ pour objet de type @type@', |
|
| 36 | - 'avis_colonne_inexistante' => 'La colonne @col@ n’existe pas', |
|
| 37 | - 'avis_erreur' => 'Erreur : voir ci-dessous', |
|
| 38 | - 'avis_erreur_connexion' => 'Erreur de connexion', |
|
| 39 | - 'avis_erreur_cookie' => 'problème de cookie', |
|
| 40 | - 'avis_erreur_fonction_contexte' => 'Erreur de programmation. Cette fonction ne doit pas être appelée dans ce contexte.', |
|
| 41 | - 'avis_erreur_mysql' => 'Erreur SQL', |
|
| 42 | - 'avis_erreur_sauvegarde' => 'Erreur dans la sauvegarde (@type@ @id_objet@) !', |
|
| 43 | - 'avis_erreur_visiteur' => 'Problème d’accès à l’espace privé', |
|
| 44 | - 'avis_nb_erreurs_saisie' => 'Il y a @nb@ erreurs dans ta saisie, vérifie les informations.', |
|
| 12 | + // A |
|
| 13 | + 'access_interface_graphique' => 'Retour à l’interface graphique complète', |
|
| 14 | + 'access_mode_texte' => 'Afficher l’interface textuelle simplifiée', |
|
| 15 | + 'admin_debug' => 'debug', |
|
| 16 | + 'admin_modifier_article' => 'Modifier cet article', |
|
| 17 | + 'admin_modifier_auteur' => 'Modifier cet auteur', |
|
| 18 | + 'admin_modifier_breve' => 'Modifier cette brève', |
|
| 19 | + 'admin_modifier_mot' => 'Modifier ce mot-clé', |
|
| 20 | + 'admin_modifier_rubrique' => 'Modifier cette rubrique', |
|
| 21 | + 'admin_recalculer' => 'Recalculer cette page', |
|
| 22 | + 'afficher_calendrier' => 'Afficher le calendrier', |
|
| 23 | + 'afficher_trad' => 'afficher les traductions', |
|
| 24 | + 'alerte_maj_impossible' => '<b>Alerte !</b> La mise à jour de la base SQL vers la version @version@ est impossible, peut-être à cause d’un problème de droit de modification sur la base de données. Contacte ton hébergeur.', |
|
| 25 | + 'alerte_modif_info_concourante' => 'ATTENTION : Cette information a été modifiée par ailleurs. La valeur actuelle est :', |
|
| 26 | + 'analyse_xml' => 'Analyse XML', |
|
| 27 | + 'annuler' => 'Annuler', |
|
| 28 | + 'antispam_champ_vide' => 'Laisse ce champ vide :', |
|
| 29 | + 'articles_recents' => 'Articles les plus récents', |
|
| 30 | + 'attention_champ_mini_nb_caractères' => 'Attention ! @nb@ caractères au minimum', |
|
| 31 | + 'avis_1_erreur_saisie' => 'Il y a 1 erreur dans dans ta saisie, vérifie les informations.', |
|
| 32 | + 'avis_archive_incorrect' => 'le fichier archive n’est pas un fichier SPIP', |
|
| 33 | + 'avis_archive_invalide' => 'le fichier archive n’est pas valide', |
|
| 34 | + 'avis_attention' => 'ATTENTION !', |
|
| 35 | + 'avis_champ_incorrect_type_objet' => 'Nom de champ incorrect @name@ pour objet de type @type@', |
|
| 36 | + 'avis_colonne_inexistante' => 'La colonne @col@ n’existe pas', |
|
| 37 | + 'avis_erreur' => 'Erreur : voir ci-dessous', |
|
| 38 | + 'avis_erreur_connexion' => 'Erreur de connexion', |
|
| 39 | + 'avis_erreur_cookie' => 'problème de cookie', |
|
| 40 | + 'avis_erreur_fonction_contexte' => 'Erreur de programmation. Cette fonction ne doit pas être appelée dans ce contexte.', |
|
| 41 | + 'avis_erreur_mysql' => 'Erreur SQL', |
|
| 42 | + 'avis_erreur_sauvegarde' => 'Erreur dans la sauvegarde (@type@ @id_objet@) !', |
|
| 43 | + 'avis_erreur_visiteur' => 'Problème d’accès à l’espace privé', |
|
| 44 | + 'avis_nb_erreurs_saisie' => 'Il y a @nb@ erreurs dans ta saisie, vérifie les informations.', |
|
| 45 | 45 | |
| 46 | - // B |
|
| 47 | - 'barre_a_accent_grave' => 'Insérer un A accent grave majuscule', |
|
| 48 | - 'barre_aide' => 'Utilise les raccourcis typographiques pour enrichir ta mise en page', |
|
| 49 | - 'barre_e_accent_aigu' => 'Insérer un E accent aigu majuscule', |
|
| 50 | - 'barre_eo' => 'Insérer un E dans l’O', |
|
| 51 | - 'barre_eo_maj' => 'Insérer un E dans l’O majuscule', |
|
| 52 | - 'barre_euro' => 'Insérer le symbole ?', |
|
| 53 | - 'barre_gras' => 'Mettre en {{gras}}', |
|
| 54 | - 'barre_guillemets' => 'Entourer de « guillemets français »', |
|
| 55 | - 'barre_guillemets_simples' => 'Entourer de ?guillemets de second niveau ?', |
|
| 56 | - 'barre_intertitre' => 'Transformer en {{{intertitre}}}', |
|
| 57 | - 'barre_italic' => 'Mettre en {italique}', |
|
| 58 | - 'barre_lien' => 'Transformer en [lien hypertexte->http://...]', |
|
| 59 | - 'barre_lien_input' => 'Indiquer l’adresse de ton lien (tu peux indiquer une adresse Web sous la forme http://www.monsite/com ou simplement indiquer le numéro d’un article de ce site.', |
|
| 60 | - 'barre_note' => 'Transformer en [[Note de bas de page]]', |
|
| 61 | - 'barre_paragraphe' => 'Crée un paragraphe', |
|
| 62 | - 'barre_quote' => '<quote>Citer un message</quote>', |
|
| 63 | - 'bouton_changer' => 'Changer', |
|
| 64 | - 'bouton_chercher' => 'Chercher', |
|
| 65 | - 'bouton_choisir' => 'Choisir', |
|
| 66 | - 'bouton_deplacer' => 'Déplacer', |
|
| 67 | - 'bouton_download' => 'Télécharger', |
|
| 68 | - 'bouton_enregistrer' => 'Enregistrer', |
|
| 69 | - 'bouton_radio_desactiver_messagerie_interne' => 'Désactiver la messagerie interne', |
|
| 70 | - 'bouton_radio_envoi_annonces' => 'Envoyer les annonces éditoriales', |
|
| 71 | - 'bouton_radio_non_envoi_annonces' => 'Ne pas envoyer d’annonces', |
|
| 72 | - 'bouton_radio_non_envoi_liste_nouveautes' => 'Ne pas envoyer la liste des nouveautés', |
|
| 73 | - 'bouton_recharger_page' => 'recharger cette page', |
|
| 74 | - 'bouton_telecharger' => 'Télécharger', |
|
| 75 | - 'bouton_upload' => 'Téléverser', |
|
| 76 | - 'bouton_valider' => 'Valider', |
|
| 46 | + // B |
|
| 47 | + 'barre_a_accent_grave' => 'Insérer un A accent grave majuscule', |
|
| 48 | + 'barre_aide' => 'Utilise les raccourcis typographiques pour enrichir ta mise en page', |
|
| 49 | + 'barre_e_accent_aigu' => 'Insérer un E accent aigu majuscule', |
|
| 50 | + 'barre_eo' => 'Insérer un E dans l’O', |
|
| 51 | + 'barre_eo_maj' => 'Insérer un E dans l’O majuscule', |
|
| 52 | + 'barre_euro' => 'Insérer le symbole ?', |
|
| 53 | + 'barre_gras' => 'Mettre en {{gras}}', |
|
| 54 | + 'barre_guillemets' => 'Entourer de « guillemets français »', |
|
| 55 | + 'barre_guillemets_simples' => 'Entourer de ?guillemets de second niveau ?', |
|
| 56 | + 'barre_intertitre' => 'Transformer en {{{intertitre}}}', |
|
| 57 | + 'barre_italic' => 'Mettre en {italique}', |
|
| 58 | + 'barre_lien' => 'Transformer en [lien hypertexte->http://...]', |
|
| 59 | + 'barre_lien_input' => 'Indiquer l’adresse de ton lien (tu peux indiquer une adresse Web sous la forme http://www.monsite/com ou simplement indiquer le numéro d’un article de ce site.', |
|
| 60 | + 'barre_note' => 'Transformer en [[Note de bas de page]]', |
|
| 61 | + 'barre_paragraphe' => 'Crée un paragraphe', |
|
| 62 | + 'barre_quote' => '<quote>Citer un message</quote>', |
|
| 63 | + 'bouton_changer' => 'Changer', |
|
| 64 | + 'bouton_chercher' => 'Chercher', |
|
| 65 | + 'bouton_choisir' => 'Choisir', |
|
| 66 | + 'bouton_deplacer' => 'Déplacer', |
|
| 67 | + 'bouton_download' => 'Télécharger', |
|
| 68 | + 'bouton_enregistrer' => 'Enregistrer', |
|
| 69 | + 'bouton_radio_desactiver_messagerie_interne' => 'Désactiver la messagerie interne', |
|
| 70 | + 'bouton_radio_envoi_annonces' => 'Envoyer les annonces éditoriales', |
|
| 71 | + 'bouton_radio_non_envoi_annonces' => 'Ne pas envoyer d’annonces', |
|
| 72 | + 'bouton_radio_non_envoi_liste_nouveautes' => 'Ne pas envoyer la liste des nouveautés', |
|
| 73 | + 'bouton_recharger_page' => 'recharger cette page', |
|
| 74 | + 'bouton_telecharger' => 'Télécharger', |
|
| 75 | + 'bouton_upload' => 'Téléverser', |
|
| 76 | + 'bouton_valider' => 'Valider', |
|
| 77 | 77 | |
| 78 | - // C |
|
| 79 | - 'cal_apresmidi' => 'après-midi', |
|
| 80 | - 'cal_jour_entier' => 'jour entier', |
|
| 81 | - 'cal_matin' => 'matin', |
|
| 82 | - 'cal_par_jour' => 'calendrier par jour', |
|
| 83 | - 'cal_par_mois' => 'calendrier par mois', |
|
| 84 | - 'cal_par_semaine' => 'calendrier par semaine', |
|
| 85 | - 'choix_couleur_interface' => 'couleur ', |
|
| 86 | - 'choix_interface' => 'choix de l’interface', |
|
| 87 | - 'colonne' => 'Colonne', |
|
| 88 | - 'confirm_changer_statut' => 'Attention, tu as demandé à changer le statut de cet élément. Souhaites-tu continuer ?', |
|
| 89 | - 'correcte' => 'correcte', |
|
| 78 | + // C |
|
| 79 | + 'cal_apresmidi' => 'après-midi', |
|
| 80 | + 'cal_jour_entier' => 'jour entier', |
|
| 81 | + 'cal_matin' => 'matin', |
|
| 82 | + 'cal_par_jour' => 'calendrier par jour', |
|
| 83 | + 'cal_par_mois' => 'calendrier par mois', |
|
| 84 | + 'cal_par_semaine' => 'calendrier par semaine', |
|
| 85 | + 'choix_couleur_interface' => 'couleur ', |
|
| 86 | + 'choix_interface' => 'choix de l’interface', |
|
| 87 | + 'colonne' => 'Colonne', |
|
| 88 | + 'confirm_changer_statut' => 'Attention, tu as demandé à changer le statut de cet élément. Souhaites-tu continuer ?', |
|
| 89 | + 'correcte' => 'correcte', |
|
| 90 | 90 | |
| 91 | - // D |
|
| 92 | - 'date_aujourdhui' => 'aujourd’hui', |
|
| 93 | - 'date_avant_jc' => 'av. J.C.', |
|
| 94 | - 'date_dans' => 'dans @delai@', |
|
| 95 | - 'date_de_mois_1' => '@j@ @nommois@', |
|
| 96 | - 'date_de_mois_10' => '@j@ @nommois@', |
|
| 97 | - 'date_de_mois_11' => '@j@ @nommois@', |
|
| 98 | - 'date_de_mois_12' => '@j@ @nommois@', |
|
| 99 | - 'date_de_mois_2' => '@j@ @nommois@', |
|
| 100 | - 'date_de_mois_3' => '@j@ @nommois@', |
|
| 101 | - 'date_de_mois_4' => '@j@ @nommois@', |
|
| 102 | - 'date_de_mois_5' => '@j@ @nommois@', |
|
| 103 | - 'date_de_mois_6' => '@j@ @nommois@', |
|
| 104 | - 'date_de_mois_7' => '@j@ @nommois@', |
|
| 105 | - 'date_de_mois_8' => '@j@ @nommois@', |
|
| 106 | - 'date_de_mois_9' => '@j@ @nommois@', |
|
| 107 | - 'date_demain' => 'demain', |
|
| 108 | - 'date_fmt_heures_minutes' => '@h@h@m@min', |
|
| 109 | - 'date_fmt_heures_minutes_court' => '@h@h@m@', |
|
| 110 | - 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 111 | - 'date_fmt_jour_heure' => '@jour@ à @heure@', |
|
| 112 | - 'date_fmt_jour_heure_debut_fin' => 'le @jour@ de @heure_debut@ à @heure_fin@', |
|
| 113 | - 'date_fmt_jour_heure_debut_fin_abbr' => 'le @dtstart@@jour@ de @heure_debut@@dtabbr@ à @dtstart@@heure_fin@@dtend@', |
|
| 114 | - 'date_fmt_jour_mois' => '@jour@ @nommois@', |
|
| 115 | - 'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@', |
|
| 116 | - 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 117 | - 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 118 | - 'date_fmt_nomjour_date' => 'le @nomjour@ @date@', |
|
| 119 | - 'date_fmt_periode' => 'Du @date_debut@ au @date_fin@', |
|
| 120 | - 'date_fmt_periode_abbr' => 'Du @dtart@@date_debut@@dtabbr@ au @dtend@@date_fin@@dtabbr@', |
|
| 121 | - 'date_fmt_periode_from' => 'Du', |
|
| 122 | - 'date_fmt_periode_to' => 'au', |
|
| 123 | - 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 124 | - 'date_heures' => 'heures', |
|
| 125 | - 'date_hier' => 'hier', |
|
| 126 | - 'date_il_y_a' => 'il y a @delai@', |
|
| 127 | - 'date_jnum1' => '1er', |
|
| 128 | - 'date_jnum10' => '10', |
|
| 129 | - 'date_jnum11' => '11', |
|
| 130 | - 'date_jnum12' => '12', |
|
| 131 | - 'date_jnum13' => '13', |
|
| 132 | - 'date_jnum14' => '14', |
|
| 133 | - 'date_jnum15' => '15', |
|
| 134 | - 'date_jnum16' => '16', |
|
| 135 | - 'date_jnum17' => '17', |
|
| 136 | - 'date_jnum18' => '18', |
|
| 137 | - 'date_jnum19' => '19', |
|
| 138 | - 'date_jnum2' => '2', |
|
| 139 | - 'date_jnum20' => '20', |
|
| 140 | - 'date_jnum21' => '21', |
|
| 141 | - 'date_jnum22' => '22', |
|
| 142 | - 'date_jnum23' => '23', |
|
| 143 | - 'date_jnum24' => '24', |
|
| 144 | - 'date_jnum25' => '25', |
|
| 145 | - 'date_jnum26' => '26', |
|
| 146 | - 'date_jnum27' => '27', |
|
| 147 | - 'date_jnum28' => '28', |
|
| 148 | - 'date_jnum29' => '29', |
|
| 149 | - 'date_jnum3' => '3', |
|
| 150 | - 'date_jnum30' => '30', |
|
| 151 | - 'date_jnum31' => '31', |
|
| 152 | - 'date_jnum4' => '4', |
|
| 153 | - 'date_jnum5' => '5', |
|
| 154 | - 'date_jnum6' => '6', |
|
| 155 | - 'date_jnum7' => '7', |
|
| 156 | - 'date_jnum8' => '8', |
|
| 157 | - 'date_jnum9' => '9', |
|
| 158 | - 'date_jour_1' => 'dimanche', |
|
| 159 | - 'date_jour_1_abbr' => 'dim.', |
|
| 160 | - 'date_jour_1_initiale' => 'd.', |
|
| 161 | - 'date_jour_2' => 'lundi', |
|
| 162 | - 'date_jour_2_abbr' => 'lun.', |
|
| 163 | - 'date_jour_2_initiale' => 'l.', |
|
| 164 | - 'date_jour_3' => 'mardi', |
|
| 165 | - 'date_jour_3_abbr' => 'mar.', |
|
| 166 | - 'date_jour_3_initiale' => 'm.', |
|
| 167 | - 'date_jour_4' => 'mercredi', |
|
| 168 | - 'date_jour_4_abbr' => 'mer.', |
|
| 169 | - 'date_jour_4_initiale' => 'm.', |
|
| 170 | - 'date_jour_5' => 'jeudi', |
|
| 171 | - 'date_jour_5_abbr' => 'jeu.', |
|
| 172 | - 'date_jour_5_initiale' => 'j.', |
|
| 173 | - 'date_jour_6' => 'vendredi', |
|
| 174 | - 'date_jour_6_abbr' => 'ven.', |
|
| 175 | - 'date_jour_6_initiale' => 'v.', |
|
| 176 | - 'date_jour_7' => 'samedi', |
|
| 177 | - 'date_jour_7_abbr' => 'sam.', |
|
| 178 | - 'date_jour_7_initiale' => 's.', |
|
| 179 | - 'date_jours' => 'jours', |
|
| 180 | - 'date_minutes' => 'minutes', |
|
| 181 | - 'date_mois' => 'mois', |
|
| 182 | - 'date_mois_1' => 'janvier', |
|
| 183 | - 'date_mois_10' => 'octobre', |
|
| 184 | - 'date_mois_10_abbr' => 'oct.', |
|
| 185 | - 'date_mois_11' => 'novembre', |
|
| 186 | - 'date_mois_11_abbr' => 'nov.', |
|
| 187 | - 'date_mois_12' => 'décembre', |
|
| 188 | - 'date_mois_12_abbr' => 'déc.', |
|
| 189 | - 'date_mois_1_abbr' => 'janv.', |
|
| 190 | - 'date_mois_2' => 'février', |
|
| 191 | - 'date_mois_2_abbr' => 'févr.', |
|
| 192 | - 'date_mois_3' => 'mars', |
|
| 193 | - 'date_mois_3_abbr' => 'mars', |
|
| 194 | - 'date_mois_4' => 'avril', |
|
| 195 | - 'date_mois_4_abbr' => 'avr.', |
|
| 196 | - 'date_mois_5' => 'mai', |
|
| 197 | - 'date_mois_5_abbr' => 'mai', |
|
| 198 | - 'date_mois_6' => 'juin', |
|
| 199 | - 'date_mois_6_abbr' => 'juin', |
|
| 200 | - 'date_mois_7' => 'juillet', |
|
| 201 | - 'date_mois_7_abbr' => 'juil.', |
|
| 202 | - 'date_mois_8' => 'août', |
|
| 203 | - 'date_mois_8_abbr' => 'août', |
|
| 204 | - 'date_mois_9' => 'septembre', |
|
| 205 | - 'date_mois_9_abbr' => 'sept.', |
|
| 206 | - 'date_saison_1' => 'hiver', |
|
| 207 | - 'date_saison_2' => 'printemps', |
|
| 208 | - 'date_saison_3' => 'été', |
|
| 209 | - 'date_saison_4' => 'automne', |
|
| 210 | - 'date_secondes' => 'secondes', |
|
| 211 | - 'date_semaines' => 'semaines', |
|
| 212 | - 'date_un_mois' => 'mois', |
|
| 213 | - 'date_une_heure' => 'heure', |
|
| 214 | - 'date_une_minute' => 'minute', |
|
| 215 | - 'date_une_seconde' => 'seconde', |
|
| 216 | - 'date_une_semaine' => 'semaine', |
|
| 217 | - 'dirs_commencer' => ' afin de commencer réellement l’installation', |
|
| 218 | - 'dirs_preliminaire' => 'Préliminaire : <b>Régler les droits d’accès</b>', |
|
| 219 | - 'dirs_probleme_droits' => 'Problème de droits d’accès', |
|
| 220 | - 'dirs_repertoires_absents' => '<p><b>Les répertoires suivants n’ont pas été trouvés :</b></p><ul>@bad_dirs@.</ul> |
|
| 91 | + // D |
|
| 92 | + 'date_aujourdhui' => 'aujourd’hui', |
|
| 93 | + 'date_avant_jc' => 'av. J.C.', |
|
| 94 | + 'date_dans' => 'dans @delai@', |
|
| 95 | + 'date_de_mois_1' => '@j@ @nommois@', |
|
| 96 | + 'date_de_mois_10' => '@j@ @nommois@', |
|
| 97 | + 'date_de_mois_11' => '@j@ @nommois@', |
|
| 98 | + 'date_de_mois_12' => '@j@ @nommois@', |
|
| 99 | + 'date_de_mois_2' => '@j@ @nommois@', |
|
| 100 | + 'date_de_mois_3' => '@j@ @nommois@', |
|
| 101 | + 'date_de_mois_4' => '@j@ @nommois@', |
|
| 102 | + 'date_de_mois_5' => '@j@ @nommois@', |
|
| 103 | + 'date_de_mois_6' => '@j@ @nommois@', |
|
| 104 | + 'date_de_mois_7' => '@j@ @nommois@', |
|
| 105 | + 'date_de_mois_8' => '@j@ @nommois@', |
|
| 106 | + 'date_de_mois_9' => '@j@ @nommois@', |
|
| 107 | + 'date_demain' => 'demain', |
|
| 108 | + 'date_fmt_heures_minutes' => '@h@h@m@min', |
|
| 109 | + 'date_fmt_heures_minutes_court' => '@h@h@m@', |
|
| 110 | + 'date_fmt_jour' => '@nomjour@ @jour@', |
|
| 111 | + 'date_fmt_jour_heure' => '@jour@ à @heure@', |
|
| 112 | + 'date_fmt_jour_heure_debut_fin' => 'le @jour@ de @heure_debut@ à @heure_fin@', |
|
| 113 | + 'date_fmt_jour_heure_debut_fin_abbr' => 'le @dtstart@@jour@ de @heure_debut@@dtabbr@ à @dtstart@@heure_fin@@dtend@', |
|
| 114 | + 'date_fmt_jour_mois' => '@jour@ @nommois@', |
|
| 115 | + 'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@', |
|
| 116 | + 'date_fmt_mois_annee' => '@nommois@ @annee@', |
|
| 117 | + 'date_fmt_nomjour' => '@nomjour@ @date@', |
|
| 118 | + 'date_fmt_nomjour_date' => 'le @nomjour@ @date@', |
|
| 119 | + 'date_fmt_periode' => 'Du @date_debut@ au @date_fin@', |
|
| 120 | + 'date_fmt_periode_abbr' => 'Du @dtart@@date_debut@@dtabbr@ au @dtend@@date_fin@@dtabbr@', |
|
| 121 | + 'date_fmt_periode_from' => 'Du', |
|
| 122 | + 'date_fmt_periode_to' => 'au', |
|
| 123 | + 'date_fmt_saison_annee' => '@saison@ @annee@', |
|
| 124 | + 'date_heures' => 'heures', |
|
| 125 | + 'date_hier' => 'hier', |
|
| 126 | + 'date_il_y_a' => 'il y a @delai@', |
|
| 127 | + 'date_jnum1' => '1er', |
|
| 128 | + 'date_jnum10' => '10', |
|
| 129 | + 'date_jnum11' => '11', |
|
| 130 | + 'date_jnum12' => '12', |
|
| 131 | + 'date_jnum13' => '13', |
|
| 132 | + 'date_jnum14' => '14', |
|
| 133 | + 'date_jnum15' => '15', |
|
| 134 | + 'date_jnum16' => '16', |
|
| 135 | + 'date_jnum17' => '17', |
|
| 136 | + 'date_jnum18' => '18', |
|
| 137 | + 'date_jnum19' => '19', |
|
| 138 | + 'date_jnum2' => '2', |
|
| 139 | + 'date_jnum20' => '20', |
|
| 140 | + 'date_jnum21' => '21', |
|
| 141 | + 'date_jnum22' => '22', |
|
| 142 | + 'date_jnum23' => '23', |
|
| 143 | + 'date_jnum24' => '24', |
|
| 144 | + 'date_jnum25' => '25', |
|
| 145 | + 'date_jnum26' => '26', |
|
| 146 | + 'date_jnum27' => '27', |
|
| 147 | + 'date_jnum28' => '28', |
|
| 148 | + 'date_jnum29' => '29', |
|
| 149 | + 'date_jnum3' => '3', |
|
| 150 | + 'date_jnum30' => '30', |
|
| 151 | + 'date_jnum31' => '31', |
|
| 152 | + 'date_jnum4' => '4', |
|
| 153 | + 'date_jnum5' => '5', |
|
| 154 | + 'date_jnum6' => '6', |
|
| 155 | + 'date_jnum7' => '7', |
|
| 156 | + 'date_jnum8' => '8', |
|
| 157 | + 'date_jnum9' => '9', |
|
| 158 | + 'date_jour_1' => 'dimanche', |
|
| 159 | + 'date_jour_1_abbr' => 'dim.', |
|
| 160 | + 'date_jour_1_initiale' => 'd.', |
|
| 161 | + 'date_jour_2' => 'lundi', |
|
| 162 | + 'date_jour_2_abbr' => 'lun.', |
|
| 163 | + 'date_jour_2_initiale' => 'l.', |
|
| 164 | + 'date_jour_3' => 'mardi', |
|
| 165 | + 'date_jour_3_abbr' => 'mar.', |
|
| 166 | + 'date_jour_3_initiale' => 'm.', |
|
| 167 | + 'date_jour_4' => 'mercredi', |
|
| 168 | + 'date_jour_4_abbr' => 'mer.', |
|
| 169 | + 'date_jour_4_initiale' => 'm.', |
|
| 170 | + 'date_jour_5' => 'jeudi', |
|
| 171 | + 'date_jour_5_abbr' => 'jeu.', |
|
| 172 | + 'date_jour_5_initiale' => 'j.', |
|
| 173 | + 'date_jour_6' => 'vendredi', |
|
| 174 | + 'date_jour_6_abbr' => 'ven.', |
|
| 175 | + 'date_jour_6_initiale' => 'v.', |
|
| 176 | + 'date_jour_7' => 'samedi', |
|
| 177 | + 'date_jour_7_abbr' => 'sam.', |
|
| 178 | + 'date_jour_7_initiale' => 's.', |
|
| 179 | + 'date_jours' => 'jours', |
|
| 180 | + 'date_minutes' => 'minutes', |
|
| 181 | + 'date_mois' => 'mois', |
|
| 182 | + 'date_mois_1' => 'janvier', |
|
| 183 | + 'date_mois_10' => 'octobre', |
|
| 184 | + 'date_mois_10_abbr' => 'oct.', |
|
| 185 | + 'date_mois_11' => 'novembre', |
|
| 186 | + 'date_mois_11_abbr' => 'nov.', |
|
| 187 | + 'date_mois_12' => 'décembre', |
|
| 188 | + 'date_mois_12_abbr' => 'déc.', |
|
| 189 | + 'date_mois_1_abbr' => 'janv.', |
|
| 190 | + 'date_mois_2' => 'février', |
|
| 191 | + 'date_mois_2_abbr' => 'févr.', |
|
| 192 | + 'date_mois_3' => 'mars', |
|
| 193 | + 'date_mois_3_abbr' => 'mars', |
|
| 194 | + 'date_mois_4' => 'avril', |
|
| 195 | + 'date_mois_4_abbr' => 'avr.', |
|
| 196 | + 'date_mois_5' => 'mai', |
|
| 197 | + 'date_mois_5_abbr' => 'mai', |
|
| 198 | + 'date_mois_6' => 'juin', |
|
| 199 | + 'date_mois_6_abbr' => 'juin', |
|
| 200 | + 'date_mois_7' => 'juillet', |
|
| 201 | + 'date_mois_7_abbr' => 'juil.', |
|
| 202 | + 'date_mois_8' => 'août', |
|
| 203 | + 'date_mois_8_abbr' => 'août', |
|
| 204 | + 'date_mois_9' => 'septembre', |
|
| 205 | + 'date_mois_9_abbr' => 'sept.', |
|
| 206 | + 'date_saison_1' => 'hiver', |
|
| 207 | + 'date_saison_2' => 'printemps', |
|
| 208 | + 'date_saison_3' => 'été', |
|
| 209 | + 'date_saison_4' => 'automne', |
|
| 210 | + 'date_secondes' => 'secondes', |
|
| 211 | + 'date_semaines' => 'semaines', |
|
| 212 | + 'date_un_mois' => 'mois', |
|
| 213 | + 'date_une_heure' => 'heure', |
|
| 214 | + 'date_une_minute' => 'minute', |
|
| 215 | + 'date_une_seconde' => 'seconde', |
|
| 216 | + 'date_une_semaine' => 'semaine', |
|
| 217 | + 'dirs_commencer' => ' afin de commencer réellement l’installation', |
|
| 218 | + 'dirs_preliminaire' => 'Préliminaire : <b>Régler les droits d’accès</b>', |
|
| 219 | + 'dirs_probleme_droits' => 'Problème de droits d’accès', |
|
| 220 | + 'dirs_repertoires_absents' => '<p><b>Les répertoires suivants n’ont pas été trouvés :</b></p><ul>@bad_dirs@.</ul> |
|
| 221 | 221 | <p>Il est probable que cela soit dû à un problème de mauvaise mise en majuscules ou minuscules. |
| 222 | 222 | Vérifie que les minuscules et majuscules de ces répertoires concordent bien avec ce qui est affiché |
| 223 | 223 | ci-dessus ; si ce n’est pas le cas, renomme les répertoires avec ton logiciel FTP de façon à corriger l’erreur.</p> |
| 224 | 224 | <p>Une fois cette manipulation effectuée, tu pourras ', |
| 225 | - 'dirs_repertoires_suivants' => '<p><b>Les répertoires suivants ne sont pas accessibles en écriture :</b></p> <ul>@bad_dirs@</ul> |
|
| 225 | + 'dirs_repertoires_suivants' => '<p><b>Les répertoires suivants ne sont pas accessibles en écriture :</b></p> <ul>@bad_dirs@</ul> |
|
| 226 | 226 | <p>Pour y remédier, utilise ton client FTP afin de régler les droits d’accès de chacun |
| 227 | 227 | de ces répertoires. La procédure est expliquée en détail dans le guide d’installation.</p> |
| 228 | 228 | <p>Une fois cette manipulation effectuée, tu pourras ', |
| 229 | - 'double_occurrence' => 'Double occurrence de @balise@', |
|
| 229 | + 'double_occurrence' => 'Double occurrence de @balise@', |
|
| 230 | 230 | |
| 231 | - // E |
|
| 232 | - 'en_cours' => 'en cours', |
|
| 233 | - 'envoi_via_le_site' => 'Envoi via le site', |
|
| 234 | - 'erreur' => 'Erreur', |
|
| 235 | - 'erreur_balise_non_fermee' => 'dernière balise non refermée :', |
|
| 236 | - 'erreur_technique_ajaxform' => 'Ooops. Une erreur innatendue a empêché de soumettre le formulaire. Tu peux essayer à nouveau.', |
|
| 237 | - 'erreur_technique_enregistrement_champs' => 'Une erreur technique a empêché l’enregistrement correct du champ @champs@.', |
|
| 238 | - 'erreur_technique_enregistrement_impossible' => 'Une erreur technique a empêché l’enregistrement.', |
|
| 239 | - 'erreur_texte' => 'erreur(s)', |
|
| 240 | - 'etape' => 'Étape', |
|
| 231 | + // E |
|
| 232 | + 'en_cours' => 'en cours', |
|
| 233 | + 'envoi_via_le_site' => 'Envoi via le site', |
|
| 234 | + 'erreur' => 'Erreur', |
|
| 235 | + 'erreur_balise_non_fermee' => 'dernière balise non refermée :', |
|
| 236 | + 'erreur_technique_ajaxform' => 'Ooops. Une erreur innatendue a empêché de soumettre le formulaire. Tu peux essayer à nouveau.', |
|
| 237 | + 'erreur_technique_enregistrement_champs' => 'Une erreur technique a empêché l’enregistrement correct du champ @champs@.', |
|
| 238 | + 'erreur_technique_enregistrement_impossible' => 'Une erreur technique a empêché l’enregistrement.', |
|
| 239 | + 'erreur_texte' => 'erreur(s)', |
|
| 240 | + 'etape' => 'Étape', |
|
| 241 | 241 | |
| 242 | - // F |
|
| 243 | - 'fichier_introuvable' => 'Fichier @fichier@ introuvable.', |
|
| 244 | - 'fonction_introuvable' => 'Fonction @fonction@() introuvable.', |
|
| 245 | - 'form_auteur_confirmation' => 'Confirme ton adresse email', |
|
| 246 | - 'form_auteur_email_modifie' => 'Ton adresse email a été modifiée.', |
|
| 247 | - 'form_auteur_envoi_mail_confirmation' => 'Un courrier électronique de confirmation vient d’être envoyé à @email@. Visite l’adresse Web mentionnée dans ce courrier pour valider ton adresse mail.', |
|
| 248 | - 'form_auteur_mail_confirmation' => 'Salut, |
|
| 242 | + // F |
|
| 243 | + 'fichier_introuvable' => 'Fichier @fichier@ introuvable.', |
|
| 244 | + 'fonction_introuvable' => 'Fonction @fonction@() introuvable.', |
|
| 245 | + 'form_auteur_confirmation' => 'Confirme ton adresse email', |
|
| 246 | + 'form_auteur_email_modifie' => 'Ton adresse email a été modifiée.', |
|
| 247 | + 'form_auteur_envoi_mail_confirmation' => 'Un courrier électronique de confirmation vient d’être envoyé à @email@. Visite l’adresse Web mentionnée dans ce courrier pour valider ton adresse mail.', |
|
| 248 | + 'form_auteur_mail_confirmation' => 'Salut, |
|
| 249 | 249 | |
| 250 | 250 | Tu as demandé à changer ton adresse email. |
| 251 | 251 | Pour confirmer ta nouvelle adresse, il suffit de te connecter à |
@@ -254,346 +254,346 @@ discard block |
||
| 254 | 254 | |
| 255 | 255 | @url@ |
| 256 | 256 | ', |
| 257 | - 'form_deja_inscrit' => 'Tu es déjà inscrit.', |
|
| 258 | - 'form_email_non_valide' => 'Ton adresse email n’est pas valide.', |
|
| 259 | - 'form_forum_access_refuse' => 'Tu n’as plus accès à ce site.', |
|
| 260 | - 'form_forum_bonjour' => 'Salut @nom@,', |
|
| 261 | - 'form_forum_confirmer_email' => 'Pour confirmer ton adresse email, va à cette adresse : @url_confirm@', |
|
| 262 | - 'form_forum_email_deja_enregistre' => 'Cette adresse email est déjà enregistrée, tu peux donc utiliser ton mot de passe habituel.', |
|
| 263 | - 'form_forum_identifiant_mail' => 'Ton nouvel identifiant vient de t’être envoyé par email.', |
|
| 264 | - 'form_forum_identifiants' => 'Identifiants personnels', |
|
| 265 | - 'form_forum_indiquer_nom_email' => 'Indique ici ton nom et ton adresse email. Ton identifiant personnel te parviendra rapidement, par courrier électronique.', |
|
| 266 | - 'form_forum_login' => 'login :', |
|
| 267 | - 'form_forum_message_auto' => '(ceci est un message automatique)', |
|
| 268 | - 'form_forum_pass' => 'mot de passe :', |
|
| 269 | - 'form_forum_probleme_mail' => 'Problème de mail : l’identifiant ne peut pas être envoyé.', |
|
| 270 | - 'form_forum_voici1' => 'Voici tes identifiants pour pouvoir participer à la vie du site "@nom_site_spip@" (@adresse_site@) :', |
|
| 271 | - 'form_forum_voici2' => 'Voici tes identifiants pour proposer des articles sur |
|
| 257 | + 'form_deja_inscrit' => 'Tu es déjà inscrit.', |
|
| 258 | + 'form_email_non_valide' => 'Ton adresse email n’est pas valide.', |
|
| 259 | + 'form_forum_access_refuse' => 'Tu n’as plus accès à ce site.', |
|
| 260 | + 'form_forum_bonjour' => 'Salut @nom@,', |
|
| 261 | + 'form_forum_confirmer_email' => 'Pour confirmer ton adresse email, va à cette adresse : @url_confirm@', |
|
| 262 | + 'form_forum_email_deja_enregistre' => 'Cette adresse email est déjà enregistrée, tu peux donc utiliser ton mot de passe habituel.', |
|
| 263 | + 'form_forum_identifiant_mail' => 'Ton nouvel identifiant vient de t’être envoyé par email.', |
|
| 264 | + 'form_forum_identifiants' => 'Identifiants personnels', |
|
| 265 | + 'form_forum_indiquer_nom_email' => 'Indique ici ton nom et ton adresse email. Ton identifiant personnel te parviendra rapidement, par courrier électronique.', |
|
| 266 | + 'form_forum_login' => 'login :', |
|
| 267 | + 'form_forum_message_auto' => '(ceci est un message automatique)', |
|
| 268 | + 'form_forum_pass' => 'mot de passe :', |
|
| 269 | + 'form_forum_probleme_mail' => 'Problème de mail : l’identifiant ne peut pas être envoyé.', |
|
| 270 | + 'form_forum_voici1' => 'Voici tes identifiants pour pouvoir participer à la vie du site "@nom_site_spip@" (@adresse_site@) :', |
|
| 271 | + 'form_forum_voici2' => 'Voici tes identifiants pour proposer des articles sur |
|
| 272 | 272 | le site "@nom_site_spip@" (@adresse_login@) :', |
| 273 | - 'form_indiquer_email' => 'Indique ton adresse email.', |
|
| 274 | - 'form_indiquer_nom' => 'Indique ton nom.', |
|
| 275 | - 'form_indiquer_nom_site' => 'Indique le nom de ton site.', |
|
| 276 | - 'form_pet_deja_enregistre' => 'Ce site est déjà enregistré', |
|
| 277 | - 'form_pet_signature_pasprise' => 'Ta signature n’est pas prise en compte.', |
|
| 278 | - 'form_prop_confirmer_envoi' => 'Confirmer l’envoi', |
|
| 279 | - 'form_prop_description' => 'Description/commentaire', |
|
| 280 | - 'form_prop_enregistre' => 'Ta proposition est enregistrée, elle apparaîtra en ligne après validation par les responsables de ce site.', |
|
| 281 | - 'form_prop_envoyer' => 'Envoyer un message', |
|
| 282 | - 'form_prop_indiquer_email' => 'Indiquer une adresse email valide', |
|
| 283 | - 'form_prop_indiquer_nom_site' => 'Indiquer le nom du site.', |
|
| 284 | - 'form_prop_indiquer_sujet' => 'Indiquer un sujet', |
|
| 285 | - 'form_prop_message_envoye' => 'Message envoyé', |
|
| 286 | - 'form_prop_non_enregistre' => 'Ta proposition n’a pas été enregistrée.', |
|
| 287 | - 'form_prop_sujet' => 'Sujet', |
|
| 288 | - 'form_prop_url_site' => 'Adresse URL du site', |
|
| 289 | - 'format_date_attendu' => 'Saisir une date au format jj/mm/aaaa.', |
|
| 290 | - 'format_date_incorrecte' => 'La date ou son format est incorrect', |
|
| 291 | - 'format_heure_attendu' => 'Saisir une heure au format hh:mm.', |
|
| 292 | - 'format_heure_incorrecte' => 'L’heure ou son format est incorrect', |
|
| 293 | - 'forum_non_inscrit' => 'Tu n’es pas inscrit, ou l’adresse ou le mot de passe sont erronés.', |
|
| 294 | - 'forum_par_auteur' => 'par @auteur@', |
|
| 295 | - 'forum_titre_erreur' => 'Erreur...', |
|
| 273 | + 'form_indiquer_email' => 'Indique ton adresse email.', |
|
| 274 | + 'form_indiquer_nom' => 'Indique ton nom.', |
|
| 275 | + 'form_indiquer_nom_site' => 'Indique le nom de ton site.', |
|
| 276 | + 'form_pet_deja_enregistre' => 'Ce site est déjà enregistré', |
|
| 277 | + 'form_pet_signature_pasprise' => 'Ta signature n’est pas prise en compte.', |
|
| 278 | + 'form_prop_confirmer_envoi' => 'Confirmer l’envoi', |
|
| 279 | + 'form_prop_description' => 'Description/commentaire', |
|
| 280 | + 'form_prop_enregistre' => 'Ta proposition est enregistrée, elle apparaîtra en ligne après validation par les responsables de ce site.', |
|
| 281 | + 'form_prop_envoyer' => 'Envoyer un message', |
|
| 282 | + 'form_prop_indiquer_email' => 'Indiquer une adresse email valide', |
|
| 283 | + 'form_prop_indiquer_nom_site' => 'Indiquer le nom du site.', |
|
| 284 | + 'form_prop_indiquer_sujet' => 'Indiquer un sujet', |
|
| 285 | + 'form_prop_message_envoye' => 'Message envoyé', |
|
| 286 | + 'form_prop_non_enregistre' => 'Ta proposition n’a pas été enregistrée.', |
|
| 287 | + 'form_prop_sujet' => 'Sujet', |
|
| 288 | + 'form_prop_url_site' => 'Adresse URL du site', |
|
| 289 | + 'format_date_attendu' => 'Saisir une date au format jj/mm/aaaa.', |
|
| 290 | + 'format_date_incorrecte' => 'La date ou son format est incorrect', |
|
| 291 | + 'format_heure_attendu' => 'Saisir une heure au format hh:mm.', |
|
| 292 | + 'format_heure_incorrecte' => 'L’heure ou son format est incorrect', |
|
| 293 | + 'forum_non_inscrit' => 'Tu n’es pas inscrit, ou l’adresse ou le mot de passe sont erronés.', |
|
| 294 | + 'forum_par_auteur' => 'par @auteur@', |
|
| 295 | + 'forum_titre_erreur' => 'Erreur...', |
|
| 296 | 296 | |
| 297 | - // I |
|
| 298 | - 'ical_texte_rss_articles' => 'Le fichier « backend » des articles de ce site se trouve à l’adresse :', |
|
| 299 | - 'ical_texte_rss_articles2' => 'Tu peux également obtenir des fichiers « backend » pour les articles de chaque rubrique du site :', |
|
| 300 | - 'ical_texte_rss_breves' => 'Il existe de plus un fichier contenant les brèves du site. En précisant un numéro de rubrique, tu obtiendras uniquement les brèves de cette rubrique.', |
|
| 301 | - 'icone_a_suivre' => 'À suivre', |
|
| 302 | - 'icone_admin_site' => 'Administration du site', |
|
| 303 | - 'icone_agenda' => 'Agenda', |
|
| 304 | - 'icone_aide_ligne' => 'Aide', |
|
| 305 | - 'icone_articles' => 'Articles', |
|
| 306 | - 'icone_auteurs' => 'Auteurs', |
|
| 307 | - 'icone_brouteur' => 'Navigation rapide', |
|
| 308 | - 'icone_configuration_site' => 'Configuration', |
|
| 309 | - 'icone_configurer_site' => 'Configurer ton site', |
|
| 310 | - 'icone_creer_nouvel_auteur' => 'Créer un nouvel auteur', |
|
| 311 | - 'icone_creer_rubrique' => 'Créer une rubrique', |
|
| 312 | - 'icone_creer_sous_rubrique' => 'Créer une sous-rubrique', |
|
| 313 | - 'icone_deconnecter' => 'Se déconnecter', |
|
| 314 | - 'icone_discussions' => 'Discussions', |
|
| 315 | - 'icone_doc_rubrique' => 'Documents des rubriques', |
|
| 316 | - 'icone_ecrire_article' => 'Écrire un nouvel article', |
|
| 317 | - 'icone_edition_site' => 'Édition', |
|
| 318 | - 'icone_gestion_langues' => 'Gestion des langues', |
|
| 319 | - 'icone_informations_personnelles' => 'Informations personnelles', |
|
| 320 | - 'icone_interface_complet' => 'interface complète', |
|
| 321 | - 'icone_interface_simple' => 'Interface simplifiée', |
|
| 322 | - 'icone_maintenance_site' => 'Maintenance du site', |
|
| 323 | - 'icone_messagerie_personnelle' => 'Messagerie personnelle', |
|
| 324 | - 'icone_repartition_debut' => 'Afficher la répartition depuis le début', |
|
| 325 | - 'icone_rubriques' => 'Rubriques', |
|
| 326 | - 'icone_sauver_site' => 'Sauvegarde du site', |
|
| 327 | - 'icone_site_entier' => 'Tout le site', |
|
| 328 | - 'icone_sites_references' => 'Sites référencés', |
|
| 329 | - 'icone_statistiques' => 'Statistiques du site', |
|
| 330 | - 'icone_suivi_activite' => 'Suivre la vie du site', |
|
| 331 | - 'icone_suivi_actualite' => 'Évolution du site', |
|
| 332 | - 'icone_suivi_pettions' => 'Suivre/gérer les pétitions', |
|
| 333 | - 'icone_suivi_revisions' => 'Modifications des articles', |
|
| 334 | - 'icone_supprimer_document' => 'Supprimer ce document', |
|
| 335 | - 'icone_supprimer_image' => 'Supprimer cette image', |
|
| 336 | - 'icone_tous_articles' => 'Tous tes articles', |
|
| 337 | - 'icone_tous_auteur' => 'Tous les auteurs', |
|
| 338 | - 'icone_tous_visiteur' => 'Tous les visiteurs', |
|
| 339 | - 'icone_visiter_site' => 'Voir le site public', |
|
| 340 | - 'icone_voir_en_ligne' => 'Voir en ligne', |
|
| 341 | - 'img_indisponible' => 'image indisponible', |
|
| 342 | - 'impossible' => 'impossible', |
|
| 343 | - 'info_a_suivre' => 'À SUIVRE »', |
|
| 344 | - 'info_acces_interdit' => 'Accès interdit', |
|
| 345 | - 'info_acces_refuse' => 'Accès refusé', |
|
| 346 | - 'info_action' => 'Action : @action@', |
|
| 347 | - 'info_administrer_rubriques' => 'Tu peux administrer cette rubrique et ses sous-rubriques', |
|
| 348 | - 'info_adresse_non_indiquee' => 'Tu n’as pas indiqué d’adresse à tester !', |
|
| 349 | - 'info_aide' => 'AIDE :', |
|
| 350 | - 'info_ajouter_mot' => 'Ajouter ce mot', |
|
| 351 | - 'info_annonce' => 'ANNONCE', |
|
| 352 | - 'info_annonces_generales' => 'Annonces générales :', |
|
| 353 | - 'info_article_propose' => 'Article proposé', |
|
| 354 | - 'info_article_publie' => 'Article publié', |
|
| 355 | - 'info_article_redaction' => 'Article en cours de rédaction', |
|
| 356 | - 'info_article_refuse' => 'Article refusé', |
|
| 357 | - 'info_article_supprime' => 'Article supprimé', |
|
| 358 | - 'info_articles' => 'Articles', |
|
| 359 | - 'info_articles_a_valider' => 'Les articles à valider', |
|
| 360 | - 'info_articles_nb' => '@nb@ articles', |
|
| 361 | - 'info_articles_proposes' => 'Articles proposés', |
|
| 362 | - 'info_articles_un' => '1 article', |
|
| 363 | - 'info_auteurs_nombre' => 'auteur(s) :', |
|
| 364 | - 'info_authentification_ftp' => 'Authentification (par FTP).', |
|
| 365 | - 'info_breves_2' => 'brèves', |
|
| 366 | - 'info_breves_nb' => '@nb@ brèves', |
|
| 367 | - 'info_breves_un' => '1 brève', |
|
| 368 | - 'info_connexion_refusee' => 'Connexion refusée', |
|
| 369 | - 'info_contact_developpeur' => 'Contacte un développeur.', |
|
| 370 | - 'info_contenance' => 'Ce site contient :', |
|
| 371 | - 'info_contribution' => 'contributions', |
|
| 372 | - 'info_copyright' => '@spip@ est un logiciel libre distribué @lien_gpl@.', |
|
| 373 | - 'info_copyright_doc' => 'Pour plus d’informations, voir le site <a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 374 | - 'info_copyright_gpl' => 'sous licence GPL', |
|
| 375 | - 'info_cours_edition' => 'En cours de modification', |
|
| 376 | - 'info_creer_repertoire' => 'Crée un fichier ou un répertoire nommé :', |
|
| 377 | - 'info_creer_repertoire_2' => 'à l’intérieur du sous-répertoire <b>@repertoire@</b>, puis :', |
|
| 378 | - 'info_creer_vignette' => 'création automatique de la vignette', |
|
| 379 | - 'info_creerdansrubrique_non_autorise' => 'Tu n’as pas de droits suffisants pour créer un contenu dans cette rubrique', |
|
| 380 | - 'info_deplier' => 'Déplier', |
|
| 381 | - 'info_descriptif_nombre' => 'descriptif(s) :', |
|
| 382 | - 'info_description' => 'Description :', |
|
| 383 | - 'info_description_2' => 'Description :', |
|
| 384 | - 'info_dimension' => 'Dimensions :', |
|
| 385 | - 'info_documents_nb' => '@nb@ documents', |
|
| 386 | - 'info_documents_un' => '1 document', |
|
| 387 | - 'info_ecire_message_prive' => 'Écrire un message privé', |
|
| 388 | - 'info_email_invalide' => 'Adresse email invalide.', |
|
| 389 | - 'info_en_cours_validation' => 'Tes articles en cours de rédaction', |
|
| 390 | - 'info_en_ligne' => 'Actuellement en ligne :', |
|
| 391 | - 'info_envoyer_message_prive' => 'Envoyer un message privé à cet auteur', |
|
| 392 | - 'info_erreur_requete' => 'Erreur dans la requête :', |
|
| 393 | - 'info_erreur_squelette2' => 'Aucun squelette <b>@fichier@</b> n’est disponible...', |
|
| 394 | - 'info_erreur_systeme' => 'Erreur système (errno @errsys@)', |
|
| 395 | - 'info_erreur_systeme2' => 'Le disque dur est peut-être plein, ou la base de données endommagée.<br /> |
|
| 297 | + // I |
|
| 298 | + 'ical_texte_rss_articles' => 'Le fichier « backend » des articles de ce site se trouve à l’adresse :', |
|
| 299 | + 'ical_texte_rss_articles2' => 'Tu peux également obtenir des fichiers « backend » pour les articles de chaque rubrique du site :', |
|
| 300 | + 'ical_texte_rss_breves' => 'Il existe de plus un fichier contenant les brèves du site. En précisant un numéro de rubrique, tu obtiendras uniquement les brèves de cette rubrique.', |
|
| 301 | + 'icone_a_suivre' => 'À suivre', |
|
| 302 | + 'icone_admin_site' => 'Administration du site', |
|
| 303 | + 'icone_agenda' => 'Agenda', |
|
| 304 | + 'icone_aide_ligne' => 'Aide', |
|
| 305 | + 'icone_articles' => 'Articles', |
|
| 306 | + 'icone_auteurs' => 'Auteurs', |
|
| 307 | + 'icone_brouteur' => 'Navigation rapide', |
|
| 308 | + 'icone_configuration_site' => 'Configuration', |
|
| 309 | + 'icone_configurer_site' => 'Configurer ton site', |
|
| 310 | + 'icone_creer_nouvel_auteur' => 'Créer un nouvel auteur', |
|
| 311 | + 'icone_creer_rubrique' => 'Créer une rubrique', |
|
| 312 | + 'icone_creer_sous_rubrique' => 'Créer une sous-rubrique', |
|
| 313 | + 'icone_deconnecter' => 'Se déconnecter', |
|
| 314 | + 'icone_discussions' => 'Discussions', |
|
| 315 | + 'icone_doc_rubrique' => 'Documents des rubriques', |
|
| 316 | + 'icone_ecrire_article' => 'Écrire un nouvel article', |
|
| 317 | + 'icone_edition_site' => 'Édition', |
|
| 318 | + 'icone_gestion_langues' => 'Gestion des langues', |
|
| 319 | + 'icone_informations_personnelles' => 'Informations personnelles', |
|
| 320 | + 'icone_interface_complet' => 'interface complète', |
|
| 321 | + 'icone_interface_simple' => 'Interface simplifiée', |
|
| 322 | + 'icone_maintenance_site' => 'Maintenance du site', |
|
| 323 | + 'icone_messagerie_personnelle' => 'Messagerie personnelle', |
|
| 324 | + 'icone_repartition_debut' => 'Afficher la répartition depuis le début', |
|
| 325 | + 'icone_rubriques' => 'Rubriques', |
|
| 326 | + 'icone_sauver_site' => 'Sauvegarde du site', |
|
| 327 | + 'icone_site_entier' => 'Tout le site', |
|
| 328 | + 'icone_sites_references' => 'Sites référencés', |
|
| 329 | + 'icone_statistiques' => 'Statistiques du site', |
|
| 330 | + 'icone_suivi_activite' => 'Suivre la vie du site', |
|
| 331 | + 'icone_suivi_actualite' => 'Évolution du site', |
|
| 332 | + 'icone_suivi_pettions' => 'Suivre/gérer les pétitions', |
|
| 333 | + 'icone_suivi_revisions' => 'Modifications des articles', |
|
| 334 | + 'icone_supprimer_document' => 'Supprimer ce document', |
|
| 335 | + 'icone_supprimer_image' => 'Supprimer cette image', |
|
| 336 | + 'icone_tous_articles' => 'Tous tes articles', |
|
| 337 | + 'icone_tous_auteur' => 'Tous les auteurs', |
|
| 338 | + 'icone_tous_visiteur' => 'Tous les visiteurs', |
|
| 339 | + 'icone_visiter_site' => 'Voir le site public', |
|
| 340 | + 'icone_voir_en_ligne' => 'Voir en ligne', |
|
| 341 | + 'img_indisponible' => 'image indisponible', |
|
| 342 | + 'impossible' => 'impossible', |
|
| 343 | + 'info_a_suivre' => 'À SUIVRE »', |
|
| 344 | + 'info_acces_interdit' => 'Accès interdit', |
|
| 345 | + 'info_acces_refuse' => 'Accès refusé', |
|
| 346 | + 'info_action' => 'Action : @action@', |
|
| 347 | + 'info_administrer_rubriques' => 'Tu peux administrer cette rubrique et ses sous-rubriques', |
|
| 348 | + 'info_adresse_non_indiquee' => 'Tu n’as pas indiqué d’adresse à tester !', |
|
| 349 | + 'info_aide' => 'AIDE :', |
|
| 350 | + 'info_ajouter_mot' => 'Ajouter ce mot', |
|
| 351 | + 'info_annonce' => 'ANNONCE', |
|
| 352 | + 'info_annonces_generales' => 'Annonces générales :', |
|
| 353 | + 'info_article_propose' => 'Article proposé', |
|
| 354 | + 'info_article_publie' => 'Article publié', |
|
| 355 | + 'info_article_redaction' => 'Article en cours de rédaction', |
|
| 356 | + 'info_article_refuse' => 'Article refusé', |
|
| 357 | + 'info_article_supprime' => 'Article supprimé', |
|
| 358 | + 'info_articles' => 'Articles', |
|
| 359 | + 'info_articles_a_valider' => 'Les articles à valider', |
|
| 360 | + 'info_articles_nb' => '@nb@ articles', |
|
| 361 | + 'info_articles_proposes' => 'Articles proposés', |
|
| 362 | + 'info_articles_un' => '1 article', |
|
| 363 | + 'info_auteurs_nombre' => 'auteur(s) :', |
|
| 364 | + 'info_authentification_ftp' => 'Authentification (par FTP).', |
|
| 365 | + 'info_breves_2' => 'brèves', |
|
| 366 | + 'info_breves_nb' => '@nb@ brèves', |
|
| 367 | + 'info_breves_un' => '1 brève', |
|
| 368 | + 'info_connexion_refusee' => 'Connexion refusée', |
|
| 369 | + 'info_contact_developpeur' => 'Contacte un développeur.', |
|
| 370 | + 'info_contenance' => 'Ce site contient :', |
|
| 371 | + 'info_contribution' => 'contributions', |
|
| 372 | + 'info_copyright' => '@spip@ est un logiciel libre distribué @lien_gpl@.', |
|
| 373 | + 'info_copyright_doc' => 'Pour plus d’informations, voir le site <a href="@spipnet@">@spipnet_affiche@</a>.', |
|
| 374 | + 'info_copyright_gpl' => 'sous licence GPL', |
|
| 375 | + 'info_cours_edition' => 'En cours de modification', |
|
| 376 | + 'info_creer_repertoire' => 'Crée un fichier ou un répertoire nommé :', |
|
| 377 | + 'info_creer_repertoire_2' => 'à l’intérieur du sous-répertoire <b>@repertoire@</b>, puis :', |
|
| 378 | + 'info_creer_vignette' => 'création automatique de la vignette', |
|
| 379 | + 'info_creerdansrubrique_non_autorise' => 'Tu n’as pas de droits suffisants pour créer un contenu dans cette rubrique', |
|
| 380 | + 'info_deplier' => 'Déplier', |
|
| 381 | + 'info_descriptif_nombre' => 'descriptif(s) :', |
|
| 382 | + 'info_description' => 'Description :', |
|
| 383 | + 'info_description_2' => 'Description :', |
|
| 384 | + 'info_dimension' => 'Dimensions :', |
|
| 385 | + 'info_documents_nb' => '@nb@ documents', |
|
| 386 | + 'info_documents_un' => '1 document', |
|
| 387 | + 'info_ecire_message_prive' => 'Écrire un message privé', |
|
| 388 | + 'info_email_invalide' => 'Adresse email invalide.', |
|
| 389 | + 'info_en_cours_validation' => 'Tes articles en cours de rédaction', |
|
| 390 | + 'info_en_ligne' => 'Actuellement en ligne :', |
|
| 391 | + 'info_envoyer_message_prive' => 'Envoyer un message privé à cet auteur', |
|
| 392 | + 'info_erreur_requete' => 'Erreur dans la requête :', |
|
| 393 | + 'info_erreur_squelette2' => 'Aucun squelette <b>@fichier@</b> n’est disponible...', |
|
| 394 | + 'info_erreur_systeme' => 'Erreur système (errno @errsys@)', |
|
| 395 | + 'info_erreur_systeme2' => 'Le disque dur est peut-être plein, ou la base de données endommagée.<br /> |
|
| 396 | 396 | <span style="color:red;">Essaie de <a href=\'@script@\'>réparer la base</a>, ou contacte ton hébergeur.</span>', |
| 397 | - 'info_fini' => 'C’est fini !', |
|
| 398 | - 'info_format_image' => 'Formats d’images pouvant être utilisées pour créer des vignettes : @gd_formats@.', |
|
| 399 | - 'info_format_non_defini' => 'format non défini', |
|
| 400 | - 'info_grand_ecran' => 'Grand écran', |
|
| 401 | - 'info_image_aide' => 'AIDE', |
|
| 402 | - 'info_image_process_titre' => 'Comment faire de nouveaux signets', |
|
| 403 | - 'info_impossible_lire_page' => '<b>Erreur !</b> Impossible de lire la page <tt><html>@test_proxy@</html></tt> à travers le proxy ', |
|
| 404 | - 'info_installation_systeme_publication' => 'Installation du système de publication...', |
|
| 405 | - 'info_installer_documents' => 'Tu peux installer automatiquement tous les documents contenus dans le dossier @upload@.', |
|
| 406 | - 'info_installer_ftp' => 'En tant qu’administrateur, tu peux installer (par FTP) des fichiers dans le dossier @upload@ pour ensuite les sélectionner directement ici.', |
|
| 407 | - 'info_installer_images' => 'Tu peux installer des images aux formats JPEG, GIF et PNG.', |
|
| 408 | - 'info_installer_images_dossier' => 'Installer des images dans le dossier @upload@ pour pouvoir les sélectionner ici.', |
|
| 409 | - 'info_interface_complete' => 'interface complète', |
|
| 410 | - 'info_interface_simple' => 'Interface simplifiée', |
|
| 411 | - 'info_joindre_document_article' => 'Tu peux joindre à cet article des documents de type', |
|
| 412 | - 'info_joindre_document_rubrique' => 'Tu peux ajouter dans cette rubrique des documents de type', |
|
| 413 | - 'info_joindre_documents_article' => 'Tu peux joindre à ton article des documents de type :', |
|
| 414 | - 'info_l_article' => 'l’article', |
|
| 415 | - 'info_la_breve' => 'la brève', |
|
| 416 | - 'info_la_rubrique' => 'la rubrique', |
|
| 417 | - 'info_langue_principale' => 'Langue principale du site', |
|
| 418 | - 'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels', |
|
| 419 | - 'info_les_auteurs_1' => 'par @les_auteurs@', |
|
| 420 | - 'info_logo_format_interdit' => 'Seuls les logos aux formats @formats@ sont autorisés.', |
|
| 421 | - 'info_logo_max_poids' => 'Les logos doivent obligatoirement faire moins de @maxi@ (ce fichier fait @actuel@).', |
|
| 422 | - 'info_mail_fournisseur' => '[email protected]', |
|
| 423 | - 'info_message_2' => 'MESSAGE', |
|
| 424 | - 'info_message_supprime' => 'MESSAGE SUPPRIMÉ', |
|
| 425 | - 'info_messages_nb' => '@nb@ messages', |
|
| 426 | - 'info_messages_un' => '1 message', |
|
| 427 | - 'info_mise_en_ligne' => 'Date de mise en ligne :', |
|
| 428 | - 'info_modification_parametres_securite' => 'modifications des paramètres de sécurité', |
|
| 429 | - 'info_mois_courant' => 'Dans le courant du mois :', |
|
| 430 | - 'info_mot_cle_ajoute' => 'Le mot-clé suivant a été ajouté à', |
|
| 431 | - 'info_multi_herit' => 'Langue par défaut', |
|
| 432 | - 'info_multi_langues_soulignees' => 'Les <u>langues soulignées</u> bénéficient d’une traduction totale ou partielle des textes de l’interface. Si tu sélectionnes ces langues, de nombreux éléments du site public (dates, formulaires) seront automatiquement traduits. Pour les langues non soulignées, ces éléments apparaîtront dans la langue principale du site.', |
|
| 433 | - 'info_multilinguisme' => 'Multilinguisme', |
|
| 434 | - 'info_nom_non_utilisateurs_connectes' => 'Ton nom n’apparaît pas dans la liste des utilisateurs connectés.', |
|
| 435 | - 'info_nom_utilisateurs_connectes' => 'Ton nom apparaît dans la liste des utilisateurs connectés.', |
|
| 436 | - 'info_nombre_en_ligne' => 'Actuellement en ligne :', |
|
| 437 | - 'info_non_resultat' => 'Aucun résultat pour "@cherche_mot@"', |
|
| 438 | - 'info_non_utilisation_messagerie' => 'Tu n’utilise pas la messagerie interne de ce site.', |
|
| 439 | - 'info_nouveau_message' => 'TU AS UN NOUVEAU MESSAGE', |
|
| 440 | - 'info_nouveaux_messages' => 'TU AS @total_messages@ NOUVEAUX MESSAGES', |
|
| 441 | - 'info_numero_abbreviation' => 'N° ', |
|
| 442 | - 'info_obligatoire' => 'Cette information est obligatoire', |
|
| 443 | - 'info_page_actuelle' => 'Page actuelle', |
|
| 444 | - 'info_pense_bete' => 'PENSE-BÊTE', |
|
| 445 | - 'info_petit_ecran' => 'Petit écran', |
|
| 446 | - 'info_petition_close' => 'Pétition close', |
|
| 447 | - 'info_pixels' => 'pixels', |
|
| 448 | - 'info_plusieurs_mots_trouves' => 'Plusieurs mots-clés trouvés pour "@cherche_mot@" :', |
|
| 449 | - 'info_portfolio_automatique' => 'Portfolio automatique :', |
|
| 450 | - 'info_premier_resultat' => '[@debut_limit@ premiers résultats sur @total@]', |
|
| 451 | - 'info_premier_resultat_sur' => '[@debut_limit@ premiers résultats sur @total@]', |
|
| 452 | - 'info_propose_1' => '[@nom_site_spip@] Propose : @titre@', |
|
| 453 | - 'info_propose_2' => 'Article proposé |
|
| 397 | + 'info_fini' => 'C’est fini !', |
|
| 398 | + 'info_format_image' => 'Formats d’images pouvant être utilisées pour créer des vignettes : @gd_formats@.', |
|
| 399 | + 'info_format_non_defini' => 'format non défini', |
|
| 400 | + 'info_grand_ecran' => 'Grand écran', |
|
| 401 | + 'info_image_aide' => 'AIDE', |
|
| 402 | + 'info_image_process_titre' => 'Comment faire de nouveaux signets', |
|
| 403 | + 'info_impossible_lire_page' => '<b>Erreur !</b> Impossible de lire la page <tt><html>@test_proxy@</html></tt> à travers le proxy ', |
|
| 404 | + 'info_installation_systeme_publication' => 'Installation du système de publication...', |
|
| 405 | + 'info_installer_documents' => 'Tu peux installer automatiquement tous les documents contenus dans le dossier @upload@.', |
|
| 406 | + 'info_installer_ftp' => 'En tant qu’administrateur, tu peux installer (par FTP) des fichiers dans le dossier @upload@ pour ensuite les sélectionner directement ici.', |
|
| 407 | + 'info_installer_images' => 'Tu peux installer des images aux formats JPEG, GIF et PNG.', |
|
| 408 | + 'info_installer_images_dossier' => 'Installer des images dans le dossier @upload@ pour pouvoir les sélectionner ici.', |
|
| 409 | + 'info_interface_complete' => 'interface complète', |
|
| 410 | + 'info_interface_simple' => 'Interface simplifiée', |
|
| 411 | + 'info_joindre_document_article' => 'Tu peux joindre à cet article des documents de type', |
|
| 412 | + 'info_joindre_document_rubrique' => 'Tu peux ajouter dans cette rubrique des documents de type', |
|
| 413 | + 'info_joindre_documents_article' => 'Tu peux joindre à ton article des documents de type :', |
|
| 414 | + 'info_l_article' => 'l’article', |
|
| 415 | + 'info_la_breve' => 'la brève', |
|
| 416 | + 'info_la_rubrique' => 'la rubrique', |
|
| 417 | + 'info_langue_principale' => 'Langue principale du site', |
|
| 418 | + 'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels', |
|
| 419 | + 'info_les_auteurs_1' => 'par @les_auteurs@', |
|
| 420 | + 'info_logo_format_interdit' => 'Seuls les logos aux formats @formats@ sont autorisés.', |
|
| 421 | + 'info_logo_max_poids' => 'Les logos doivent obligatoirement faire moins de @maxi@ (ce fichier fait @actuel@).', |
|
| 422 | + 'info_mail_fournisseur' => '[email protected]', |
|
| 423 | + 'info_message_2' => 'MESSAGE', |
|
| 424 | + 'info_message_supprime' => 'MESSAGE SUPPRIMÉ', |
|
| 425 | + 'info_messages_nb' => '@nb@ messages', |
|
| 426 | + 'info_messages_un' => '1 message', |
|
| 427 | + 'info_mise_en_ligne' => 'Date de mise en ligne :', |
|
| 428 | + 'info_modification_parametres_securite' => 'modifications des paramètres de sécurité', |
|
| 429 | + 'info_mois_courant' => 'Dans le courant du mois :', |
|
| 430 | + 'info_mot_cle_ajoute' => 'Le mot-clé suivant a été ajouté à', |
|
| 431 | + 'info_multi_herit' => 'Langue par défaut', |
|
| 432 | + 'info_multi_langues_soulignees' => 'Les <u>langues soulignées</u> bénéficient d’une traduction totale ou partielle des textes de l’interface. Si tu sélectionnes ces langues, de nombreux éléments du site public (dates, formulaires) seront automatiquement traduits. Pour les langues non soulignées, ces éléments apparaîtront dans la langue principale du site.', |
|
| 433 | + 'info_multilinguisme' => 'Multilinguisme', |
|
| 434 | + 'info_nom_non_utilisateurs_connectes' => 'Ton nom n’apparaît pas dans la liste des utilisateurs connectés.', |
|
| 435 | + 'info_nom_utilisateurs_connectes' => 'Ton nom apparaît dans la liste des utilisateurs connectés.', |
|
| 436 | + 'info_nombre_en_ligne' => 'Actuellement en ligne :', |
|
| 437 | + 'info_non_resultat' => 'Aucun résultat pour "@cherche_mot@"', |
|
| 438 | + 'info_non_utilisation_messagerie' => 'Tu n’utilise pas la messagerie interne de ce site.', |
|
| 439 | + 'info_nouveau_message' => 'TU AS UN NOUVEAU MESSAGE', |
|
| 440 | + 'info_nouveaux_messages' => 'TU AS @total_messages@ NOUVEAUX MESSAGES', |
|
| 441 | + 'info_numero_abbreviation' => 'N° ', |
|
| 442 | + 'info_obligatoire' => 'Cette information est obligatoire', |
|
| 443 | + 'info_page_actuelle' => 'Page actuelle', |
|
| 444 | + 'info_pense_bete' => 'PENSE-BÊTE', |
|
| 445 | + 'info_petit_ecran' => 'Petit écran', |
|
| 446 | + 'info_petition_close' => 'Pétition close', |
|
| 447 | + 'info_pixels' => 'pixels', |
|
| 448 | + 'info_plusieurs_mots_trouves' => 'Plusieurs mots-clés trouvés pour "@cherche_mot@" :', |
|
| 449 | + 'info_portfolio_automatique' => 'Portfolio automatique :', |
|
| 450 | + 'info_premier_resultat' => '[@debut_limit@ premiers résultats sur @total@]', |
|
| 451 | + 'info_premier_resultat_sur' => '[@debut_limit@ premiers résultats sur @total@]', |
|
| 452 | + 'info_propose_1' => '[@nom_site_spip@] Propose : @titre@', |
|
| 453 | + 'info_propose_2' => 'Article proposé |
|
| 454 | 454 | ---------------', |
| 455 | - 'info_propose_3' => 'L’article "@titre@" est proposé à la publication.', |
|
| 456 | - 'info_propose_4' => 'Tu es invité à venir le consulter et à donner ton opinion', |
|
| 457 | - 'info_propose_5' => 'dans le forum qui lui est attaché. Il est disponible à l’adresse :', |
|
| 458 | - 'info_publie_01' => 'L’article "@titre@" a été validé par @connect_nom@.', |
|
| 459 | - 'info_publie_1' => '[@nom_site_spip@] PUBLIE : @titre@', |
|
| 460 | - 'info_publie_2' => 'Article publié |
|
| 455 | + 'info_propose_3' => 'L’article "@titre@" est proposé à la publication.', |
|
| 456 | + 'info_propose_4' => 'Tu es invité à venir le consulter et à donner ton opinion', |
|
| 457 | + 'info_propose_5' => 'dans le forum qui lui est attaché. Il est disponible à l’adresse :', |
|
| 458 | + 'info_publie_01' => 'L’article "@titre@" a été validé par @connect_nom@.', |
|
| 459 | + 'info_publie_1' => '[@nom_site_spip@] PUBLIE : @titre@', |
|
| 460 | + 'info_publie_2' => 'Article publié |
|
| 461 | 461 | --------------', |
| 462 | - 'info_rechercher' => 'Rechercher', |
|
| 463 | - 'info_rechercher_02' => 'Rechercher :', |
|
| 464 | - 'info_remplacer_vignette' => 'Remplacer la vignette par défaut par un logo personnalisé :', |
|
| 465 | - 'info_rubriques_nb' => '@nb@ rubriques', |
|
| 466 | - 'info_rubriques_un' => '1 rubrique', |
|
| 467 | - 'info_sans_titre_2' => 'sans titre', |
|
| 468 | - 'info_selectionner_fichier' => 'Tu peux sélectionner un fichier du dossier @upload@', |
|
| 469 | - 'info_selectionner_fichier_2' => 'Sélectionner un fichier :', |
|
| 470 | - 'info_sites_nb' => '@nb@ sites', |
|
| 471 | - 'info_sites_un' => '1 site', |
|
| 472 | - 'info_supprimer_vignette' => 'supprimer la vignette', |
|
| 473 | - 'info_symbole_bleu' => 'Le symbole <b>bleu</b> indique un <b>pense-bête</b> : c’est-à-dire un message à ton usage personnel.', |
|
| 474 | - 'info_symbole_jaune' => 'Le symbole <b>jaune</b> indique une <b>annonce à tous les rédacteurs</b> : modifiable par tous les administrateurs, et visible par tous les rédacteurs.', |
|
| 475 | - 'info_symbole_vert' => 'Le symbole <b>vert</b> indique les <b>messages échangés avec d’autres utilisateurs</b> du site.', |
|
| 476 | - 'info_telecharger_nouveau_logo' => 'Télécharger un nouveau logo :', |
|
| 477 | - 'info_telecharger_ordinateur' => 'Télécharger depuis ton ordinateur :', |
|
| 478 | - 'info_tous_resultats_enregistres' => '[tous les résultats sont enregistrés]', |
|
| 479 | - 'info_tout_afficher' => 'Tout afficher', |
|
| 480 | - 'info_travaux_texte' => 'Ce site n’est pas encore configuré. Reviens plus tard...', |
|
| 481 | - 'info_travaux_titre' => 'Site en travaux', |
|
| 482 | - 'info_trop_resultat' => 'Trop de résultats pour "@cherche_mot@" ; affine la recherche.', |
|
| 483 | - 'info_utilisation_messagerie_interne' => 'Tu utilises la messagerie interne de ce site.', |
|
| 484 | - 'info_valider_lien' => 'valider ce lien', |
|
| 485 | - 'info_verifier_image' => ', vérifie que tes images ont été transférées correctement.', |
|
| 486 | - 'info_vignette_defaut' => 'Vignette par défaut', |
|
| 487 | - 'info_vignette_personnalisee' => 'Vignette personnalisée', |
|
| 488 | - 'info_visite' => 'visite :', |
|
| 489 | - 'info_vos_rendez_vous' => 'Tes rendez-vous à venir', |
|
| 490 | - 'infos_vos_pense_bete' => 'Tes pense-bêtes', |
|
| 462 | + 'info_rechercher' => 'Rechercher', |
|
| 463 | + 'info_rechercher_02' => 'Rechercher :', |
|
| 464 | + 'info_remplacer_vignette' => 'Remplacer la vignette par défaut par un logo personnalisé :', |
|
| 465 | + 'info_rubriques_nb' => '@nb@ rubriques', |
|
| 466 | + 'info_rubriques_un' => '1 rubrique', |
|
| 467 | + 'info_sans_titre_2' => 'sans titre', |
|
| 468 | + 'info_selectionner_fichier' => 'Tu peux sélectionner un fichier du dossier @upload@', |
|
| 469 | + 'info_selectionner_fichier_2' => 'Sélectionner un fichier :', |
|
| 470 | + 'info_sites_nb' => '@nb@ sites', |
|
| 471 | + 'info_sites_un' => '1 site', |
|
| 472 | + 'info_supprimer_vignette' => 'supprimer la vignette', |
|
| 473 | + 'info_symbole_bleu' => 'Le symbole <b>bleu</b> indique un <b>pense-bête</b> : c’est-à-dire un message à ton usage personnel.', |
|
| 474 | + 'info_symbole_jaune' => 'Le symbole <b>jaune</b> indique une <b>annonce à tous les rédacteurs</b> : modifiable par tous les administrateurs, et visible par tous les rédacteurs.', |
|
| 475 | + 'info_symbole_vert' => 'Le symbole <b>vert</b> indique les <b>messages échangés avec d’autres utilisateurs</b> du site.', |
|
| 476 | + 'info_telecharger_nouveau_logo' => 'Télécharger un nouveau logo :', |
|
| 477 | + 'info_telecharger_ordinateur' => 'Télécharger depuis ton ordinateur :', |
|
| 478 | + 'info_tous_resultats_enregistres' => '[tous les résultats sont enregistrés]', |
|
| 479 | + 'info_tout_afficher' => 'Tout afficher', |
|
| 480 | + 'info_travaux_texte' => 'Ce site n’est pas encore configuré. Reviens plus tard...', |
|
| 481 | + 'info_travaux_titre' => 'Site en travaux', |
|
| 482 | + 'info_trop_resultat' => 'Trop de résultats pour "@cherche_mot@" ; affine la recherche.', |
|
| 483 | + 'info_utilisation_messagerie_interne' => 'Tu utilises la messagerie interne de ce site.', |
|
| 484 | + 'info_valider_lien' => 'valider ce lien', |
|
| 485 | + 'info_verifier_image' => ', vérifie que tes images ont été transférées correctement.', |
|
| 486 | + 'info_vignette_defaut' => 'Vignette par défaut', |
|
| 487 | + 'info_vignette_personnalisee' => 'Vignette personnalisée', |
|
| 488 | + 'info_visite' => 'visite :', |
|
| 489 | + 'info_vos_rendez_vous' => 'Tes rendez-vous à venir', |
|
| 490 | + 'infos_vos_pense_bete' => 'Tes pense-bêtes', |
|
| 491 | 491 | |
| 492 | - // L |
|
| 493 | - 'label_ajout_id_rapide' => 'Ajout rapide', |
|
| 494 | - 'label_poids_fichier' => 'Taille', |
|
| 495 | - 'label_ponctuer' => '@label@ :', |
|
| 496 | - 'lien_afficher_icones_seuls' => 'Afficher uniquement les icones', |
|
| 497 | - 'lien_afficher_texte_icones' => 'Afficher les icones et le texte', |
|
| 498 | - 'lien_afficher_texte_seul' => 'Afficher uniquement le texte', |
|
| 499 | - 'lien_aller_a_la_derniere_page' => 'Aller à la dernière page', |
|
| 500 | - 'lien_aller_a_la_page_nb' => 'Aller à la page @nb@', |
|
| 501 | - 'lien_aller_a_la_page_precedente' => 'Aller à la page précédente', |
|
| 502 | - 'lien_aller_a_la_page_suivante' => 'Aller à la page suivante', |
|
| 503 | - 'lien_aller_a_la_premiere_page' => 'Aller à la première page', |
|
| 504 | - 'lien_liberer' => 'libérer', |
|
| 505 | - 'lien_liberer_tous' => 'Tout libérer', |
|
| 506 | - 'lien_nouvea_pense_bete' => 'NOUVEAU PENSE-BÊTE', |
|
| 507 | - 'lien_nouveau_message' => 'NOUVEAU MESSAGE', |
|
| 508 | - 'lien_nouvelle_annonce' => 'NOUVELLE ANNONCE', |
|
| 509 | - 'lien_petitions' => 'PÉTITION', |
|
| 510 | - 'lien_popularite' => 'popularité : @popularite@%', |
|
| 511 | - 'lien_racine_site' => 'RACINE DU SITE', |
|
| 512 | - 'lien_reessayer' => 'réessayer', |
|
| 513 | - 'lien_repondre_message' => 'Répondre à ce message', |
|
| 514 | - 'lien_supprimer' => 'supprimer', |
|
| 515 | - 'lien_tout_afficher' => 'Tout afficher', |
|
| 516 | - 'lien_visite_site' => 'visiter ce site', |
|
| 517 | - 'lien_visites' => '@visites@ visites', |
|
| 518 | - 'lien_voir_auteur' => 'Voir cet auteur', |
|
| 519 | - 'ligne' => 'Ligne', |
|
| 520 | - 'login' => 'Connexion', |
|
| 521 | - 'login_acces_prive' => 'accès à l’espace privé', |
|
| 522 | - 'login_autre_identifiant' => 'se connecter sous un autre identifiant', |
|
| 523 | - 'login_cookie_accepte' => 'Régle ton navigateur pour qu’il les accepte (au moins pour ce site).', |
|
| 524 | - 'login_cookie_oblige' => 'Pour t’identifier de façon sûre sur ce site, tu dois accepter les cookies.', |
|
| 525 | - 'login_deconnexion_ok' => 'Déconnexion effectuée.', |
|
| 526 | - 'login_erreur_pass' => 'Erreur de mot de passe.', |
|
| 527 | - 'login_espace_prive' => 'espace privé', |
|
| 528 | - 'login_identifiant_inconnu' => 'L’identifiant « @login@ » est inconnu.', |
|
| 529 | - 'login_login' => 'Login :', |
|
| 530 | - 'login_login2' => 'Login ou adresse email@circ@ :', |
|
| 531 | - 'login_login_pass_incorrect' => '(Login ou mot de passe incorrect.)', |
|
| 532 | - 'login_motpasseoublie' => 'mot de passe oublié ?', |
|
| 533 | - 'login_non_securise' => 'Attention, ce formulaire n’est pas sécurisé. |
|
| 492 | + // L |
|
| 493 | + 'label_ajout_id_rapide' => 'Ajout rapide', |
|
| 494 | + 'label_poids_fichier' => 'Taille', |
|
| 495 | + 'label_ponctuer' => '@label@ :', |
|
| 496 | + 'lien_afficher_icones_seuls' => 'Afficher uniquement les icones', |
|
| 497 | + 'lien_afficher_texte_icones' => 'Afficher les icones et le texte', |
|
| 498 | + 'lien_afficher_texte_seul' => 'Afficher uniquement le texte', |
|
| 499 | + 'lien_aller_a_la_derniere_page' => 'Aller à la dernière page', |
|
| 500 | + 'lien_aller_a_la_page_nb' => 'Aller à la page @nb@', |
|
| 501 | + 'lien_aller_a_la_page_precedente' => 'Aller à la page précédente', |
|
| 502 | + 'lien_aller_a_la_page_suivante' => 'Aller à la page suivante', |
|
| 503 | + 'lien_aller_a_la_premiere_page' => 'Aller à la première page', |
|
| 504 | + 'lien_liberer' => 'libérer', |
|
| 505 | + 'lien_liberer_tous' => 'Tout libérer', |
|
| 506 | + 'lien_nouvea_pense_bete' => 'NOUVEAU PENSE-BÊTE', |
|
| 507 | + 'lien_nouveau_message' => 'NOUVEAU MESSAGE', |
|
| 508 | + 'lien_nouvelle_annonce' => 'NOUVELLE ANNONCE', |
|
| 509 | + 'lien_petitions' => 'PÉTITION', |
|
| 510 | + 'lien_popularite' => 'popularité : @popularite@%', |
|
| 511 | + 'lien_racine_site' => 'RACINE DU SITE', |
|
| 512 | + 'lien_reessayer' => 'réessayer', |
|
| 513 | + 'lien_repondre_message' => 'Répondre à ce message', |
|
| 514 | + 'lien_supprimer' => 'supprimer', |
|
| 515 | + 'lien_tout_afficher' => 'Tout afficher', |
|
| 516 | + 'lien_visite_site' => 'visiter ce site', |
|
| 517 | + 'lien_visites' => '@visites@ visites', |
|
| 518 | + 'lien_voir_auteur' => 'Voir cet auteur', |
|
| 519 | + 'ligne' => 'Ligne', |
|
| 520 | + 'login' => 'Connexion', |
|
| 521 | + 'login_acces_prive' => 'accès à l’espace privé', |
|
| 522 | + 'login_autre_identifiant' => 'se connecter sous un autre identifiant', |
|
| 523 | + 'login_cookie_accepte' => 'Régle ton navigateur pour qu’il les accepte (au moins pour ce site).', |
|
| 524 | + 'login_cookie_oblige' => 'Pour t’identifier de façon sûre sur ce site, tu dois accepter les cookies.', |
|
| 525 | + 'login_deconnexion_ok' => 'Déconnexion effectuée.', |
|
| 526 | + 'login_erreur_pass' => 'Erreur de mot de passe.', |
|
| 527 | + 'login_espace_prive' => 'espace privé', |
|
| 528 | + 'login_identifiant_inconnu' => 'L’identifiant « @login@ » est inconnu.', |
|
| 529 | + 'login_login' => 'Login :', |
|
| 530 | + 'login_login2' => 'Login ou adresse email@circ@ :', |
|
| 531 | + 'login_login_pass_incorrect' => '(Login ou mot de passe incorrect.)', |
|
| 532 | + 'login_motpasseoublie' => 'mot de passe oublié ?', |
|
| 533 | + 'login_non_securise' => 'Attention, ce formulaire n’est pas sécurisé. |
|
| 534 | 534 | Si tu ne veux pas que ton mot de passe puisse être |
| 535 | 535 | intercepté sur le réseau, active Javascript |
| 536 | 536 | dans ton navigateur et', |
| 537 | - 'login_nouvelle_tentative' => 'Nouvelle tentative', |
|
| 538 | - 'login_par_ici' => 'Tu es enregistré... par ici...', |
|
| 539 | - 'login_pass2' => 'Mot de passe :', |
|
| 540 | - 'login_preferez_refuser' => '<b>Si tu préfére refuser les cookies</b>, une autre méthode de connexion (moins sécurisée) est à ta disposition :', |
|
| 541 | - 'login_recharger' => 'recharger cette page', |
|
| 542 | - 'login_rester_identifie' => 'Se souvenir de moi', |
|
| 543 | - 'login_retour_public' => 'Retour au site public', |
|
| 544 | - 'login_retour_site' => 'Retour au site public', |
|
| 545 | - 'login_retoursitepublic' => 'retour au site public', |
|
| 546 | - 'login_sans_cookie' => 'Identification sans cookie', |
|
| 547 | - 'login_securise' => 'Login sécurisé', |
|
| 548 | - 'login_sinscrire' => 'S’inscrire', |
|
| 549 | - 'login_test_navigateur' => 'test navigateur/reconnexion', |
|
| 550 | - 'login_verifiez_navigateur' => '(Vérifie toutefois que ton navigateur n’a pas mémorisé ton mot de passe...)', |
|
| 537 | + 'login_nouvelle_tentative' => 'Nouvelle tentative', |
|
| 538 | + 'login_par_ici' => 'Tu es enregistré... par ici...', |
|
| 539 | + 'login_pass2' => 'Mot de passe :', |
|
| 540 | + 'login_preferez_refuser' => '<b>Si tu préfére refuser les cookies</b>, une autre méthode de connexion (moins sécurisée) est à ta disposition :', |
|
| 541 | + 'login_recharger' => 'recharger cette page', |
|
| 542 | + 'login_rester_identifie' => 'Se souvenir de moi', |
|
| 543 | + 'login_retour_public' => 'Retour au site public', |
|
| 544 | + 'login_retour_site' => 'Retour au site public', |
|
| 545 | + 'login_retoursitepublic' => 'retour au site public', |
|
| 546 | + 'login_sans_cookie' => 'Identification sans cookie', |
|
| 547 | + 'login_securise' => 'Login sécurisé', |
|
| 548 | + 'login_sinscrire' => 'S’inscrire', |
|
| 549 | + 'login_test_navigateur' => 'test navigateur/reconnexion', |
|
| 550 | + 'login_verifiez_navigateur' => '(Vérifie toutefois que ton navigateur n’a pas mémorisé ton mot de passe...)', |
|
| 551 | 551 | |
| 552 | - // M |
|
| 553 | - 'masquer_colonne' => 'Masquer cette colonne', |
|
| 554 | - 'masquer_trad' => 'masquer les traductions', |
|
| 555 | - 'message_nouveaux_identifiants_echec' => 'Impossible de générer de nouveaux identifiants.', |
|
| 556 | - 'message_nouveaux_identifiants_echec_envoi' => 'Les nouveaux identifiants de connexion n’ont pas pu être envoyés.', |
|
| 557 | - 'message_nouveaux_identifiants_ok' => 'Les nouveaux identifiants de connexion ont été envoyés à @email@.', |
|
| 558 | - 'module_fichiers_langues' => 'Fichiers de langue', |
|
| 552 | + // M |
|
| 553 | + 'masquer_colonne' => 'Masquer cette colonne', |
|
| 554 | + 'masquer_trad' => 'masquer les traductions', |
|
| 555 | + 'message_nouveaux_identifiants_echec' => 'Impossible de générer de nouveaux identifiants.', |
|
| 556 | + 'message_nouveaux_identifiants_echec_envoi' => 'Les nouveaux identifiants de connexion n’ont pas pu être envoyés.', |
|
| 557 | + 'message_nouveaux_identifiants_ok' => 'Les nouveaux identifiants de connexion ont été envoyés à @email@.', |
|
| 558 | + 'module_fichiers_langues' => 'Fichiers de langue', |
|
| 559 | 559 | |
| 560 | - // N |
|
| 561 | - 'navigateur_pas_redirige' => 'Si votre navigateur n’est pas redirigé, cliquez ici pour continuer.', |
|
| 562 | - 'numero' => 'Numéro', |
|
| 560 | + // N |
|
| 561 | + 'navigateur_pas_redirige' => 'Si votre navigateur n’est pas redirigé, cliquez ici pour continuer.', |
|
| 562 | + 'numero' => 'Numéro', |
|
| 563 | 563 | |
| 564 | - // O |
|
| 565 | - 'occurence' => 'Occurence', |
|
| 566 | - 'onglet_affacer_base' => 'Effacer la base', |
|
| 567 | - 'onglet_auteur' => 'L’auteur', |
|
| 568 | - 'onglet_contenu_site' => 'Contenu du site', |
|
| 569 | - 'onglet_evolution_visite_mod' => 'Évolution', |
|
| 570 | - 'onglet_fonctions_avances' => 'Fonctions avancées', |
|
| 571 | - 'onglet_informations_personnelles' => 'Informations personnelles', |
|
| 572 | - 'onglet_interactivite' => 'Interactivité', |
|
| 573 | - 'onglet_messagerie' => 'Messagerie', |
|
| 574 | - 'onglet_repartition_rubrique' => 'Répartition par rubriques', |
|
| 575 | - 'onglet_save_restaur_base' => 'Sauvegarder/restaurer la base', |
|
| 576 | - 'onglet_vider_cache' => 'Vider le cache', |
|
| 564 | + // O |
|
| 565 | + 'occurence' => 'Occurence', |
|
| 566 | + 'onglet_affacer_base' => 'Effacer la base', |
|
| 567 | + 'onglet_auteur' => 'L’auteur', |
|
| 568 | + 'onglet_contenu_site' => 'Contenu du site', |
|
| 569 | + 'onglet_evolution_visite_mod' => 'Évolution', |
|
| 570 | + 'onglet_fonctions_avances' => 'Fonctions avancées', |
|
| 571 | + 'onglet_informations_personnelles' => 'Informations personnelles', |
|
| 572 | + 'onglet_interactivite' => 'Interactivité', |
|
| 573 | + 'onglet_messagerie' => 'Messagerie', |
|
| 574 | + 'onglet_repartition_rubrique' => 'Répartition par rubriques', |
|
| 575 | + 'onglet_save_restaur_base' => 'Sauvegarder/restaurer la base', |
|
| 576 | + 'onglet_vider_cache' => 'Vider le cache', |
|
| 577 | 577 | |
| 578 | - // P |
|
| 579 | - 'pass_choix_pass' => 'Choisis ton nouveau mot de passe :', |
|
| 580 | - 'pass_erreur' => 'Erreur', |
|
| 581 | - 'pass_erreur_acces_refuse' => '<b>Erreur :</b> tu n’as plus accès à ce site.', |
|
| 582 | - 'pass_erreur_code_inconnu' => '<b>Erreur :</b> ce code ne correspond à aucun des visiteurs ayant accès à ce site.', |
|
| 583 | - 'pass_erreur_non_enregistre' => '<b>Erreur :</b> l’adresse <tt>@email_oubli@</tt> n’est pas enregistrée sur ce site.', |
|
| 584 | - 'pass_erreur_non_valide' => '<b>Erreur :</b> cet email <tt>@email_oubli@</tt> n’est pas valide !', |
|
| 585 | - 'pass_erreur_probleme_technique' => '<b>Erreur :</b> à cause d’un problème technique, l’email ne peut pas être envoyé.', |
|
| 586 | - 'pass_espace_prive_bla' => 'L’espace privé de ce site est ouvert aux |
|
| 578 | + // P |
|
| 579 | + 'pass_choix_pass' => 'Choisis ton nouveau mot de passe :', |
|
| 580 | + 'pass_erreur' => 'Erreur', |
|
| 581 | + 'pass_erreur_acces_refuse' => '<b>Erreur :</b> tu n’as plus accès à ce site.', |
|
| 582 | + 'pass_erreur_code_inconnu' => '<b>Erreur :</b> ce code ne correspond à aucun des visiteurs ayant accès à ce site.', |
|
| 583 | + 'pass_erreur_non_enregistre' => '<b>Erreur :</b> l’adresse <tt>@email_oubli@</tt> n’est pas enregistrée sur ce site.', |
|
| 584 | + 'pass_erreur_non_valide' => '<b>Erreur :</b> cet email <tt>@email_oubli@</tt> n’est pas valide !', |
|
| 585 | + 'pass_erreur_probleme_technique' => '<b>Erreur :</b> à cause d’un problème technique, l’email ne peut pas être envoyé.', |
|
| 586 | + 'pass_espace_prive_bla' => 'L’espace privé de ce site est ouvert aux |
|
| 587 | 587 | visiteurs, après inscription. Une fois enregistré, |
| 588 | 588 | tu pourras consulter les articles en cours de rédaction, |
| 589 | 589 | proposer des articles et participer à tous les forums.', |
| 590 | - 'pass_forum_bla' => 'Tu as demandé à intervenir sur un forum |
|
| 590 | + 'pass_forum_bla' => 'Tu as demandé à intervenir sur un forum |
|
| 591 | 591 | réservé aux visiteurs enregistrés.', |
| 592 | - 'pass_indiquez_cidessous' => 'Indique ci-dessous l’adresse email sous laquelle tu |
|
| 592 | + 'pass_indiquez_cidessous' => 'Indique ci-dessous l’adresse email sous laquelle tu |
|
| 593 | 593 | t’es précédemment enregistré. Tu |
| 594 | 594 | recevras un email t’indiquant la marche à suivre pour |
| 595 | 595 | récupérer ton accès.', |
| 596 | - 'pass_mail_passcookie' => '(ceci est un message automatique) |
|
| 596 | + 'pass_mail_passcookie' => '(ceci est un message automatique) |
|
| 597 | 597 | Pour retrouver ton accès au site |
| 598 | 598 | @nom_site_spip@ (@adresse_site@) |
| 599 | 599 | Rends toi à l’adresse suivante : |
@@ -604,150 +604,150 @@ discard block |
||
| 604 | 604 | et te reconnecter au site. |
| 605 | 605 | |
| 606 | 606 | ', |
| 607 | - 'pass_mot_oublie' => 'Mot de passe oublié', |
|
| 608 | - 'pass_nouveau_enregistre' => 'Ton nouveau mot de passe a été enregistré.', |
|
| 609 | - 'pass_nouveau_pass' => 'Nouveau mot de passe', |
|
| 610 | - 'pass_ok' => 'OK', |
|
| 611 | - 'pass_oubli_mot' => 'Oubli du mot de passe', |
|
| 612 | - 'pass_procedure_changer' => 'Pour changer ton mot de passe, merci d’indiquer l’adresse email associée à ton compte.', |
|
| 613 | - 'pass_quitter_fenetre' => 'Quitter cette fenêtre', |
|
| 614 | - 'pass_rappel_login' => 'Rappel : ton identifiant (login) est « @login@ ».', |
|
| 615 | - 'pass_recevoir_mail' => 'Un lien de réinitialisation de ton mot de passe t’a été envoyé sur ton adresse email (si celle-ci est valide).', |
|
| 616 | - 'pass_retour_public' => 'Retour sur le site public', |
|
| 617 | - 'pass_rien_a_faire_ici' => 'Rien à faire ici.', |
|
| 618 | - 'pass_vousinscrire' => 'T’inscrire sur ce site', |
|
| 619 | - 'precedent' => 'précédent', |
|
| 620 | - 'previsualisation' => 'Prévisualisation', |
|
| 621 | - 'previsualiser' => 'Prévisualiser', |
|
| 607 | + 'pass_mot_oublie' => 'Mot de passe oublié', |
|
| 608 | + 'pass_nouveau_enregistre' => 'Ton nouveau mot de passe a été enregistré.', |
|
| 609 | + 'pass_nouveau_pass' => 'Nouveau mot de passe', |
|
| 610 | + 'pass_ok' => 'OK', |
|
| 611 | + 'pass_oubli_mot' => 'Oubli du mot de passe', |
|
| 612 | + 'pass_procedure_changer' => 'Pour changer ton mot de passe, merci d’indiquer l’adresse email associée à ton compte.', |
|
| 613 | + 'pass_quitter_fenetre' => 'Quitter cette fenêtre', |
|
| 614 | + 'pass_rappel_login' => 'Rappel : ton identifiant (login) est « @login@ ».', |
|
| 615 | + 'pass_recevoir_mail' => 'Un lien de réinitialisation de ton mot de passe t’a été envoyé sur ton adresse email (si celle-ci est valide).', |
|
| 616 | + 'pass_retour_public' => 'Retour sur le site public', |
|
| 617 | + 'pass_rien_a_faire_ici' => 'Rien à faire ici.', |
|
| 618 | + 'pass_vousinscrire' => 'T’inscrire sur ce site', |
|
| 619 | + 'precedent' => 'précédent', |
|
| 620 | + 'previsualisation' => 'Prévisualisation', |
|
| 621 | + 'previsualiser' => 'Prévisualiser', |
|
| 622 | 622 | |
| 623 | - // R |
|
| 624 | - 'retour' => 'Retour', |
|
| 623 | + // R |
|
| 624 | + 'retour' => 'Retour', |
|
| 625 | 625 | |
| 626 | - // S |
|
| 627 | - 'spip_conforme_dtd' => 'SPIP considère ce document comme conforme à son DOCTYPE :', |
|
| 628 | - 'squelette' => 'squelette', |
|
| 629 | - 'squelette_inclus_ligne' => 'squelette inclus, ligne', |
|
| 630 | - 'squelette_ligne' => 'squelette, ligne', |
|
| 631 | - 'stats_visites_et_popularite' => '@visites@ visites ; popularité : @popularite@', |
|
| 632 | - 'suivant' => 'suivant', |
|
| 626 | + // S |
|
| 627 | + 'spip_conforme_dtd' => 'SPIP considère ce document comme conforme à son DOCTYPE :', |
|
| 628 | + 'squelette' => 'squelette', |
|
| 629 | + 'squelette_inclus_ligne' => 'squelette inclus, ligne', |
|
| 630 | + 'squelette_ligne' => 'squelette, ligne', |
|
| 631 | + 'stats_visites_et_popularite' => '@visites@ visites ; popularité : @popularite@', |
|
| 632 | + 'suivant' => 'suivant', |
|
| 633 | 633 | |
| 634 | - // T |
|
| 635 | - 'taille_go' => '@taille@ Go', |
|
| 636 | - 'taille_go_bi' => '@taille@ Gio', |
|
| 637 | - 'taille_ko' => '@taille@ ko', |
|
| 638 | - 'taille_ko_bi' => '@taille@ kio', |
|
| 639 | - 'taille_mo' => '@taille@ Mo', |
|
| 640 | - 'taille_mo_bi' => '@taille@ Mio', |
|
| 641 | - 'taille_octets' => '@taille@ octets', |
|
| 642 | - 'taille_octets_bi' => '@taille@ octets', |
|
| 643 | - 'texte_actualite_site_1' => 'Quand tu seras familiarisé(e) avec l’interface, tu pourras cliquer sur « ', |
|
| 644 | - 'texte_actualite_site_2' => 'interface complète', |
|
| 645 | - 'texte_actualite_site_3' => ' » pour ouvrir plus de possibilités.', |
|
| 646 | - 'texte_creation_automatique_vignette' => 'La création automatique de vignettes de prévisualisation est activée sur ce site. Si tu installe à partir de ce formulaire des images au(x) format(s) @gd_formats@, elles seront accompagnées d’une vignette d’une taille maximale de @taille_preview@ pixels.', |
|
| 647 | - 'texte_documents_associes' => 'Les documents suivants sont associés à l’article, |
|
| 634 | + // T |
|
| 635 | + 'taille_go' => '@taille@ Go', |
|
| 636 | + 'taille_go_bi' => '@taille@ Gio', |
|
| 637 | + 'taille_ko' => '@taille@ ko', |
|
| 638 | + 'taille_ko_bi' => '@taille@ kio', |
|
| 639 | + 'taille_mo' => '@taille@ Mo', |
|
| 640 | + 'taille_mo_bi' => '@taille@ Mio', |
|
| 641 | + 'taille_octets' => '@taille@ octets', |
|
| 642 | + 'taille_octets_bi' => '@taille@ octets', |
|
| 643 | + 'texte_actualite_site_1' => 'Quand tu seras familiarisé(e) avec l’interface, tu pourras cliquer sur « ', |
|
| 644 | + 'texte_actualite_site_2' => 'interface complète', |
|
| 645 | + 'texte_actualite_site_3' => ' » pour ouvrir plus de possibilités.', |
|
| 646 | + 'texte_creation_automatique_vignette' => 'La création automatique de vignettes de prévisualisation est activée sur ce site. Si tu installe à partir de ce formulaire des images au(x) format(s) @gd_formats@, elles seront accompagnées d’une vignette d’une taille maximale de @taille_preview@ pixels.', |
|
| 647 | + 'texte_documents_associes' => 'Les documents suivants sont associés à l’article, |
|
| 648 | 648 | mais ils n’y ont pas été directement |
| 649 | 649 | insérés. Selon la mise en page du site public, |
| 650 | 650 | ils pourront apparaître sous forme de documents joints.', |
| 651 | - 'texte_erreur_mise_niveau_base' => 'Erreur de base de données lors de la mise à niveau. |
|
| 651 | + 'texte_erreur_mise_niveau_base' => 'Erreur de base de données lors de la mise à niveau. |
|
| 652 | 652 | L’image <b>@fichier@</b> n’est pas passée (article @id_article@). |
| 653 | 653 | Note bien cette référence, réessaye la mise à |
| 654 | 654 | niveau, et enfin vérifie que les images apparaissent |
| 655 | 655 | toujours dans les articles.', |
| 656 | - 'texte_erreur_visiteur' => 'Tu as tenté d’accéder à l’espace privé avec un login qui ne le permet pas.', |
|
| 657 | - 'texte_inc_auth_1' => 'Tu es identifié sous le |
|
| 656 | + 'texte_erreur_visiteur' => 'Tu as tenté d’accéder à l’espace privé avec un login qui ne le permet pas.', |
|
| 657 | + 'texte_inc_auth_1' => 'Tu es identifié sous le |
|
| 658 | 658 | login <b>@auth_login@</b>, mais celui-ci n’existe pas/plus dans la base. |
| 659 | 659 | Essaye de te', |
| 660 | - 'texte_inc_auth_2' => 'reconnecter', |
|
| 661 | - 'texte_inc_auth_3' => ', après avoir éventuellement quitté puis |
|
| 660 | + 'texte_inc_auth_2' => 'reconnecter', |
|
| 661 | + 'texte_inc_auth_3' => ', après avoir éventuellement quitté puis |
|
| 662 | 662 | redémarré ton navigateur.', |
| 663 | - 'texte_inc_config' => 'Les modifications effectuées dans ces pages influent notablement sur le |
|
| 663 | + 'texte_inc_config' => 'Les modifications effectuées dans ces pages influent notablement sur le |
|
| 664 | 664 | fonctionnement de ton site. Nous te recommandons de ne pas y intervenir tant que tu n’es pas |
| 665 | 665 | familier du fonctionnement du système SPIP. <br /><br /><b>Plus |
| 666 | 666 | généralement, il est fortement conseillé |
| 667 | 667 | de laisser la charge de ces pages au webmestre principal de ton site.</b>', |
| 668 | - 'texte_inc_meta_1' => 'Le système a rencontré une erreur lors de l’écriture du fichier <code>@fichier@</code>. En tant qu’administrateur du site,', |
|
| 669 | - 'texte_inc_meta_2' => 'vérifie les droits d’ecriture', |
|
| 670 | - 'texte_inc_meta_3' => 'sur le répertoire <code>@repertoire@</code>.', |
|
| 671 | - 'texte_statut_en_cours_redaction' => 'en cours de rédaction', |
|
| 672 | - 'texte_statut_poubelle' => 'à la poubelle', |
|
| 673 | - 'texte_statut_propose_evaluation' => 'proposé à l’évaluation', |
|
| 674 | - 'texte_statut_publie' => 'publié en ligne', |
|
| 675 | - 'texte_statut_refuse' => 'refusé', |
|
| 676 | - 'titre_ajouter_mot_cle' => 'AJOUTER UN MOT-CLÉ :', |
|
| 677 | - 'titre_cadre_raccourcis' => 'RACCOURCIS :', |
|
| 678 | - 'titre_changer_couleur_interface' => 'Changer la couleur de l’interface', |
|
| 679 | - 'titre_image_admin_article' => 'Tu peux administrer cet article', |
|
| 680 | - 'titre_image_administrateur' => 'Administrateur', |
|
| 681 | - 'titre_image_aide' => 'De l’aide sur cet élément', |
|
| 682 | - 'titre_image_auteur_supprime' => 'Auteur supprimé', |
|
| 683 | - 'titre_image_redacteur' => 'Rédacteur sans accès', |
|
| 684 | - 'titre_image_redacteur_02' => 'Rédacteur', |
|
| 685 | - 'titre_image_selecteur' => 'Afficher la liste', |
|
| 686 | - 'titre_image_visiteur' => 'Visiteur', |
|
| 687 | - 'titre_joindre_document' => 'JOINDRE UN DOCUMENT', |
|
| 688 | - 'titre_mots_cles' => 'MOTS-CLÉS', |
|
| 689 | - 'titre_probleme_technique' => 'Attention : un problème technique (serveur SQL) empêche l’accès à cette partie du site. Merci de ta compréhension.', |
|
| 690 | - 'titre_publier_document' => 'PUBLIER UN DOCUMENT DANS CETTE RUBRIQUE', |
|
| 691 | - 'titre_signatures_attente' => 'Signatures en attente de validation', |
|
| 692 | - 'titre_signatures_confirmees' => 'Signatures confirmées', |
|
| 693 | - 'titre_statistiques' => 'Statistiques du site', |
|
| 694 | - 'titre_titre_document' => 'Titre du document :', |
|
| 695 | - 'todo' => 'à venir', |
|
| 696 | - 'trad_definir_reference' => 'Choisir "@titre@" comme référence des traductions', |
|
| 697 | - 'trad_reference' => '(référence des traductions)', |
|
| 668 | + 'texte_inc_meta_1' => 'Le système a rencontré une erreur lors de l’écriture du fichier <code>@fichier@</code>. En tant qu’administrateur du site,', |
|
| 669 | + 'texte_inc_meta_2' => 'vérifie les droits d’ecriture', |
|
| 670 | + 'texte_inc_meta_3' => 'sur le répertoire <code>@repertoire@</code>.', |
|
| 671 | + 'texte_statut_en_cours_redaction' => 'en cours de rédaction', |
|
| 672 | + 'texte_statut_poubelle' => 'à la poubelle', |
|
| 673 | + 'texte_statut_propose_evaluation' => 'proposé à l’évaluation', |
|
| 674 | + 'texte_statut_publie' => 'publié en ligne', |
|
| 675 | + 'texte_statut_refuse' => 'refusé', |
|
| 676 | + 'titre_ajouter_mot_cle' => 'AJOUTER UN MOT-CLÉ :', |
|
| 677 | + 'titre_cadre_raccourcis' => 'RACCOURCIS :', |
|
| 678 | + 'titre_changer_couleur_interface' => 'Changer la couleur de l’interface', |
|
| 679 | + 'titre_image_admin_article' => 'Tu peux administrer cet article', |
|
| 680 | + 'titre_image_administrateur' => 'Administrateur', |
|
| 681 | + 'titre_image_aide' => 'De l’aide sur cet élément', |
|
| 682 | + 'titre_image_auteur_supprime' => 'Auteur supprimé', |
|
| 683 | + 'titre_image_redacteur' => 'Rédacteur sans accès', |
|
| 684 | + 'titre_image_redacteur_02' => 'Rédacteur', |
|
| 685 | + 'titre_image_selecteur' => 'Afficher la liste', |
|
| 686 | + 'titre_image_visiteur' => 'Visiteur', |
|
| 687 | + 'titre_joindre_document' => 'JOINDRE UN DOCUMENT', |
|
| 688 | + 'titre_mots_cles' => 'MOTS-CLÉS', |
|
| 689 | + 'titre_probleme_technique' => 'Attention : un problème technique (serveur SQL) empêche l’accès à cette partie du site. Merci de ta compréhension.', |
|
| 690 | + 'titre_publier_document' => 'PUBLIER UN DOCUMENT DANS CETTE RUBRIQUE', |
|
| 691 | + 'titre_signatures_attente' => 'Signatures en attente de validation', |
|
| 692 | + 'titre_signatures_confirmees' => 'Signatures confirmées', |
|
| 693 | + 'titre_statistiques' => 'Statistiques du site', |
|
| 694 | + 'titre_titre_document' => 'Titre du document :', |
|
| 695 | + 'todo' => 'à venir', |
|
| 696 | + 'trad_definir_reference' => 'Choisir "@titre@" comme référence des traductions', |
|
| 697 | + 'trad_reference' => '(référence des traductions)', |
|
| 698 | 698 | |
| 699 | - // U |
|
| 700 | - 'upload_limit' => 'Ce fichier est trop gros pour le serveur ; la taille maximum autorisée en <i>upload</i> est de @max@.', |
|
| 699 | + // U |
|
| 700 | + 'upload_limit' => 'Ce fichier est trop gros pour le serveur ; la taille maximum autorisée en <i>upload</i> est de @max@.', |
|
| 701 | 701 | |
| 702 | - // Z |
|
| 703 | - 'zbug_balise_b_aval' => ' : balise B en aval', |
|
| 704 | - 'zbug_balise_inexistante' => 'Balise @balise@ mal déclarée pour @from@', |
|
| 705 | - 'zbug_balise_sans_argument' => 'Argument manquant dans la balise @balise@', |
|
| 706 | - 'zbug_boucle' => 'boucle', |
|
| 707 | - 'zbug_boucle_recursive_undef' => 'boucle récursive non définie', |
|
| 708 | - 'zbug_calcul' => 'calcul', |
|
| 709 | - 'zbug_champ_hors_boucle' => 'Champ @champ@ hors boucle', |
|
| 710 | - 'zbug_champ_hors_critere' => 'Champ @champ@ hors critère @critere@', |
|
| 711 | - 'zbug_champ_hors_motif' => 'Champ @champ@ hors d’un contexte @motif@', |
|
| 712 | - 'zbug_code' => 'code', |
|
| 713 | - 'zbug_critere_inconnu' => 'critère inconnu @critere@', |
|
| 714 | - 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} sur une table sans clef primaire atomique', |
|
| 715 | - 'zbug_distant_interdit' => 'externe interdit', |
|
| 716 | - 'zbug_doublon_table_sans_cle_primaire' => 'doublons sur une table sans clef primaire atomique', |
|
| 717 | - 'zbug_doublon_table_sans_index' => 'doublons sur une table sans index', |
|
| 718 | - 'zbug_erreur_boucle_double' => 'BOUCLE@id@ : double définition', |
|
| 719 | - 'zbug_erreur_boucle_fermant' => 'BOUCLE@id@ : tag fermant manquant', |
|
| 720 | - 'zbug_erreur_boucle_syntaxe' => 'Syntaxe boucle incorrecte', |
|
| 721 | - 'zbug_erreur_compilation' => 'Erreur de compilation', |
|
| 722 | - 'zbug_erreur_execution_page' => 'erreur d’exécution de la page', |
|
| 723 | - 'zbug_erreur_filtre' => 'Erreur : filtre <b>« @filtre@ »</b> non défini', |
|
| 724 | - 'zbug_erreur_filtre_nbarg_min' => 'Filtre @filtre@ : il manque @nb@ argument(s)', |
|
| 725 | - 'zbug_erreur_meme_parent' => '{meme_parent} ne s’applique qu’aux boucles (FORUMS) ou (RUBRIQUES)', |
|
| 726 | - 'zbug_erreur_squelette' => 'Erreur(s) dans le squelette', |
|
| 727 | - 'zbug_hors_compilation' => 'Hors Compilation', |
|
| 728 | - 'zbug_info_erreur_squelette' => 'Erreur sur le site', |
|
| 729 | - 'zbug_inversion_ordre_inexistant' => 'inversion d’un ordre inexistant', |
|
| 730 | - 'zbug_pagination_sans_critere' => '#PAGINATION sans critère {pagination} ou employé dans une boucle récursive', |
|
| 731 | - 'zbug_parametres_inclus_incorrects' => 'Paramètre d’inclusion incorrect : @param@', |
|
| 732 | - 'zbug_profile' => 'Temps de calcul : @time@', |
|
| 733 | - 'zbug_resultat' => 'résultat', |
|
| 734 | - 'zbug_serveur_indefini' => 'serveur SQL indéfini', |
|
| 735 | - 'zbug_statistiques' => 'Statistiques des requêtes SQL classées par durée', |
|
| 736 | - 'zbug_table_inconnue' => 'Table SQL « @table@ » inconnue', |
|
| 737 | - 'zxml_connus_attributs' => 'attributs connus', |
|
| 738 | - 'zxml_de' => 'de', |
|
| 739 | - 'zxml_inconnu_attribut' => 'attribut inconnu', |
|
| 740 | - 'zxml_inconnu_balise' => 'balise inconnue', |
|
| 741 | - 'zxml_inconnu_entite' => 'entité inconnue', |
|
| 742 | - 'zxml_inconnu_id' => 'ID inconnu', |
|
| 743 | - 'zxml_mais_de' => 'mais de', |
|
| 744 | - 'zxml_non_conforme' => 'n’est pas conforme au motif', |
|
| 745 | - 'zxml_non_fils' => 'n’est pas un fils de', |
|
| 746 | - 'zxml_nonvide_balise' => 'balise non vide', |
|
| 747 | - 'zxml_obligatoire_attribut' => 'attribut obligatoire mais absent dans', |
|
| 748 | - 'zxml_succession_fils_incorrecte' => 'succession des fils incorrecte', |
|
| 749 | - 'zxml_survoler' => 'survoler pour voir les corrects', |
|
| 750 | - 'zxml_valeur_attribut' => 'valeur de l’attribut', |
|
| 751 | - 'zxml_vide_balise' => 'balise vide', |
|
| 752 | - 'zxml_vu' => 'vu auparavant' |
|
| 702 | + // Z |
|
| 703 | + 'zbug_balise_b_aval' => ' : balise B en aval', |
|
| 704 | + 'zbug_balise_inexistante' => 'Balise @balise@ mal déclarée pour @from@', |
|
| 705 | + 'zbug_balise_sans_argument' => 'Argument manquant dans la balise @balise@', |
|
| 706 | + 'zbug_boucle' => 'boucle', |
|
| 707 | + 'zbug_boucle_recursive_undef' => 'boucle récursive non définie', |
|
| 708 | + 'zbug_calcul' => 'calcul', |
|
| 709 | + 'zbug_champ_hors_boucle' => 'Champ @champ@ hors boucle', |
|
| 710 | + 'zbug_champ_hors_critere' => 'Champ @champ@ hors critère @critere@', |
|
| 711 | + 'zbug_champ_hors_motif' => 'Champ @champ@ hors d’un contexte @motif@', |
|
| 712 | + 'zbug_code' => 'code', |
|
| 713 | + 'zbug_critere_inconnu' => 'critère inconnu @critere@', |
|
| 714 | + 'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} sur une table sans clef primaire atomique', |
|
| 715 | + 'zbug_distant_interdit' => 'externe interdit', |
|
| 716 | + 'zbug_doublon_table_sans_cle_primaire' => 'doublons sur une table sans clef primaire atomique', |
|
| 717 | + 'zbug_doublon_table_sans_index' => 'doublons sur une table sans index', |
|
| 718 | + 'zbug_erreur_boucle_double' => 'BOUCLE@id@ : double définition', |
|
| 719 | + 'zbug_erreur_boucle_fermant' => 'BOUCLE@id@ : tag fermant manquant', |
|
| 720 | + 'zbug_erreur_boucle_syntaxe' => 'Syntaxe boucle incorrecte', |
|
| 721 | + 'zbug_erreur_compilation' => 'Erreur de compilation', |
|
| 722 | + 'zbug_erreur_execution_page' => 'erreur d’exécution de la page', |
|
| 723 | + 'zbug_erreur_filtre' => 'Erreur : filtre <b>« @filtre@ »</b> non défini', |
|
| 724 | + 'zbug_erreur_filtre_nbarg_min' => 'Filtre @filtre@ : il manque @nb@ argument(s)', |
|
| 725 | + 'zbug_erreur_meme_parent' => '{meme_parent} ne s’applique qu’aux boucles (FORUMS) ou (RUBRIQUES)', |
|
| 726 | + 'zbug_erreur_squelette' => 'Erreur(s) dans le squelette', |
|
| 727 | + 'zbug_hors_compilation' => 'Hors Compilation', |
|
| 728 | + 'zbug_info_erreur_squelette' => 'Erreur sur le site', |
|
| 729 | + 'zbug_inversion_ordre_inexistant' => 'inversion d’un ordre inexistant', |
|
| 730 | + 'zbug_pagination_sans_critere' => '#PAGINATION sans critère {pagination} ou employé dans une boucle récursive', |
|
| 731 | + 'zbug_parametres_inclus_incorrects' => 'Paramètre d’inclusion incorrect : @param@', |
|
| 732 | + 'zbug_profile' => 'Temps de calcul : @time@', |
|
| 733 | + 'zbug_resultat' => 'résultat', |
|
| 734 | + 'zbug_serveur_indefini' => 'serveur SQL indéfini', |
|
| 735 | + 'zbug_statistiques' => 'Statistiques des requêtes SQL classées par durée', |
|
| 736 | + 'zbug_table_inconnue' => 'Table SQL « @table@ » inconnue', |
|
| 737 | + 'zxml_connus_attributs' => 'attributs connus', |
|
| 738 | + 'zxml_de' => 'de', |
|
| 739 | + 'zxml_inconnu_attribut' => 'attribut inconnu', |
|
| 740 | + 'zxml_inconnu_balise' => 'balise inconnue', |
|
| 741 | + 'zxml_inconnu_entite' => 'entité inconnue', |
|
| 742 | + 'zxml_inconnu_id' => 'ID inconnu', |
|
| 743 | + 'zxml_mais_de' => 'mais de', |
|
| 744 | + 'zxml_non_conforme' => 'n’est pas conforme au motif', |
|
| 745 | + 'zxml_non_fils' => 'n’est pas un fils de', |
|
| 746 | + 'zxml_nonvide_balise' => 'balise non vide', |
|
| 747 | + 'zxml_obligatoire_attribut' => 'attribut obligatoire mais absent dans', |
|
| 748 | + 'zxml_succession_fils_incorrecte' => 'succession des fils incorrecte', |
|
| 749 | + 'zxml_survoler' => 'survoler pour voir les corrects', |
|
| 750 | + 'zxml_valeur_attribut' => 'valeur de l’attribut', |
|
| 751 | + 'zxml_vide_balise' => 'balise vide', |
|
| 752 | + 'zxml_vu' => 'vu auparavant' |
|
| 753 | 753 | ); |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | **/ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | include_spip('base/abstract_sql'); |
@@ -35,26 +35,26 @@ discard block |
||
| 35 | 35 | **/ |
| 36 | 36 | function genie_optimiser_dist($t) { |
| 37 | 37 | |
| 38 | - optimiser_base_une_table(); |
|
| 39 | - optimiser_base(); |
|
| 40 | - optimiser_caches_contextes(); |
|
| 38 | + optimiser_base_une_table(); |
|
| 39 | + optimiser_base(); |
|
| 40 | + optimiser_caches_contextes(); |
|
| 41 | 41 | |
| 42 | - // la date souhaitee pour le tour suivant = apres-demain a 4h du mat ; |
|
| 43 | - // sachant qu'on a un delai de 48h, on renvoie aujourd'hui a 4h du mat |
|
| 44 | - // avec une periode de flou entre 2h et 6h pour ne pas saturer un hebergeur |
|
| 45 | - // qui aurait beaucoup de sites SPIP |
|
| 46 | - return -(mktime(2, 0, 0) + random_int(0, 3600 * 4)); |
|
| 42 | + // la date souhaitee pour le tour suivant = apres-demain a 4h du mat ; |
|
| 43 | + // sachant qu'on a un delai de 48h, on renvoie aujourd'hui a 4h du mat |
|
| 44 | + // avec une periode de flou entre 2h et 6h pour ne pas saturer un hebergeur |
|
| 45 | + // qui aurait beaucoup de sites SPIP |
|
| 46 | + return -(mktime(2, 0, 0) + random_int(0, 3600 * 4)); |
|
| 47 | 47 | } |
| 48 | 48 | |
| 49 | 49 | /** |
| 50 | 50 | * Vider les contextes ajax de plus de 48h |
| 51 | 51 | */ |
| 52 | 52 | function optimiser_caches_contextes() { |
| 53 | - sous_repertoire(_DIR_CACHE, 'contextes'); |
|
| 54 | - if (is_dir($d = _DIR_CACHE . 'contextes')) { |
|
| 55 | - include_spip('inc/invalideur'); |
|
| 56 | - purger_repertoire($d, ['mtime' => time() - 48 * 3600, 'limit' => 10000]); |
|
| 57 | - } |
|
| 53 | + sous_repertoire(_DIR_CACHE, 'contextes'); |
|
| 54 | + if (is_dir($d = _DIR_CACHE . 'contextes')) { |
|
| 55 | + include_spip('inc/invalideur'); |
|
| 56 | + purger_repertoire($d, ['mtime' => time() - 48 * 3600, 'limit' => 10000]); |
|
| 57 | + } |
|
| 58 | 58 | } |
| 59 | 59 | |
| 60 | 60 | /** |
@@ -69,7 +69,7 @@ discard block |
||
| 69 | 69 | * @return void |
| 70 | 70 | **/ |
| 71 | 71 | function optimiser_base($attente = 86400) { |
| 72 | - optimiser_base_disparus($attente); |
|
| 72 | + optimiser_base_disparus($attente); |
|
| 73 | 73 | } |
| 74 | 74 | |
| 75 | 75 | |
@@ -86,28 +86,28 @@ discard block |
||
| 86 | 86 | **/ |
| 87 | 87 | function optimiser_base_une_table() { |
| 88 | 88 | |
| 89 | - $tables = []; |
|
| 90 | - $result = sql_showbase(); |
|
| 91 | - |
|
| 92 | - // on n'optimise qu'une seule table a chaque fois, |
|
| 93 | - // pour ne pas vautrer le systeme |
|
| 94 | - // lire http://dev.mysql.com/doc/refman/5.0/fr/optimize-table.html |
|
| 95 | - while ($row = sql_fetch($result)) { |
|
| 96 | - $tables[] = array_shift($row); |
|
| 97 | - } |
|
| 98 | - |
|
| 99 | - spip_log('optimiser_base_une_table ' . json_encode($tables, JSON_THROW_ON_ERROR), 'genie' . _LOG_DEBUG); |
|
| 100 | - if ($tables) { |
|
| 101 | - $table_op = intval(lire_config('optimiser_table', 0) + 1) % sizeof($tables); |
|
| 102 | - ecrire_config('optimiser_table', $table_op); |
|
| 103 | - $q = $tables[$table_op]; |
|
| 104 | - spip_log("optimiser_base_une_table : debut d'optimisation de la table $q", 'genie' . _LOG_DEBUG); |
|
| 105 | - if (sql_optimize($q)) { |
|
| 106 | - spip_log("optimiser_base_une_table : fin d'optimisation de la table $q", 'genie' . _LOG_DEBUG); |
|
| 107 | - } else { |
|
| 108 | - spip_log("optimiser_base_une_table : Pas d'optimiseur necessaire", 'genie' . _LOG_DEBUG); |
|
| 109 | - } |
|
| 110 | - } |
|
| 89 | + $tables = []; |
|
| 90 | + $result = sql_showbase(); |
|
| 91 | + |
|
| 92 | + // on n'optimise qu'une seule table a chaque fois, |
|
| 93 | + // pour ne pas vautrer le systeme |
|
| 94 | + // lire http://dev.mysql.com/doc/refman/5.0/fr/optimize-table.html |
|
| 95 | + while ($row = sql_fetch($result)) { |
|
| 96 | + $tables[] = array_shift($row); |
|
| 97 | + } |
|
| 98 | + |
|
| 99 | + spip_log('optimiser_base_une_table ' . json_encode($tables, JSON_THROW_ON_ERROR), 'genie' . _LOG_DEBUG); |
|
| 100 | + if ($tables) { |
|
| 101 | + $table_op = intval(lire_config('optimiser_table', 0) + 1) % sizeof($tables); |
|
| 102 | + ecrire_config('optimiser_table', $table_op); |
|
| 103 | + $q = $tables[$table_op]; |
|
| 104 | + spip_log("optimiser_base_une_table : debut d'optimisation de la table $q", 'genie' . _LOG_DEBUG); |
|
| 105 | + if (sql_optimize($q)) { |
|
| 106 | + spip_log("optimiser_base_une_table : fin d'optimisation de la table $q", 'genie' . _LOG_DEBUG); |
|
| 107 | + } else { |
|
| 108 | + spip_log("optimiser_base_une_table : Pas d'optimiseur necessaire", 'genie' . _LOG_DEBUG); |
|
| 109 | + } |
|
| 110 | + } |
|
| 111 | 111 | } |
| 112 | 112 | |
| 113 | 113 | |
@@ -133,18 +133,18 @@ discard block |
||
| 133 | 133 | * Nombre de suppressions |
| 134 | 134 | **/ |
| 135 | 135 | function optimiser_sansref($table, $id, $sel, $and = '') { |
| 136 | - $in = []; |
|
| 137 | - while ($row = sql_fetch($sel)) { |
|
| 138 | - $in[$row['id']] = true; |
|
| 139 | - } |
|
| 140 | - sql_free($sel); |
|
| 141 | - |
|
| 142 | - if ($in) { |
|
| 143 | - sql_delete($table, sql_in($id, array_keys($in)) . ($and ? " AND $and" : '')); |
|
| 144 | - spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: " . implode(', ', array_keys($in)), 'genie' . _LOG_DEBUG); |
|
| 145 | - } |
|
| 146 | - |
|
| 147 | - return count($in); |
|
| 136 | + $in = []; |
|
| 137 | + while ($row = sql_fetch($sel)) { |
|
| 138 | + $in[$row['id']] = true; |
|
| 139 | + } |
|
| 140 | + sql_free($sel); |
|
| 141 | + |
|
| 142 | + if ($in) { |
|
| 143 | + sql_delete($table, sql_in($id, array_keys($in)) . ($and ? " AND $and" : '')); |
|
| 144 | + spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: " . implode(', ', array_keys($in)), 'genie' . _LOG_DEBUG); |
|
| 145 | + } |
|
| 146 | + |
|
| 147 | + return count($in); |
|
| 148 | 148 | } |
| 149 | 149 | |
| 150 | 150 | |
@@ -166,81 +166,81 @@ discard block |
||
| 166 | 166 | **/ |
| 167 | 167 | function optimiser_base_disparus($attente = 86400) { |
| 168 | 168 | |
| 169 | - # format = 20060610110141, si on veut forcer une optimisation tout de suite |
|
| 170 | - $mydate = date('Y-m-d H:i:s', time() - $attente); |
|
| 171 | - $mydate_quote = sql_quote($mydate); |
|
| 169 | + # format = 20060610110141, si on veut forcer une optimisation tout de suite |
|
| 170 | + $mydate = date('Y-m-d H:i:s', time() - $attente); |
|
| 171 | + $mydate_quote = sql_quote($mydate); |
|
| 172 | 172 | |
| 173 | - $n = 0; |
|
| 173 | + $n = 0; |
|
| 174 | 174 | |
| 175 | - // |
|
| 176 | - // Rubriques |
|
| 177 | - // |
|
| 175 | + // |
|
| 176 | + // Rubriques |
|
| 177 | + // |
|
| 178 | 178 | |
| 179 | - # les articles qui sont dans une id_rubrique inexistante |
|
| 180 | - # attention on controle id_rubrique>0 pour ne pas tuer les articles |
|
| 181 | - # specialement affectes a une rubrique non-existante (plugin, |
|
| 182 | - # cf. https://core.spip.net/issues/1549 ) |
|
| 183 | - $res = sql_select( |
|
| 184 | - 'A.id_article AS id', |
|
| 185 | - 'spip_articles AS A |
|
| 179 | + # les articles qui sont dans une id_rubrique inexistante |
|
| 180 | + # attention on controle id_rubrique>0 pour ne pas tuer les articles |
|
| 181 | + # specialement affectes a une rubrique non-existante (plugin, |
|
| 182 | + # cf. https://core.spip.net/issues/1549 ) |
|
| 183 | + $res = sql_select( |
|
| 184 | + 'A.id_article AS id', |
|
| 185 | + 'spip_articles AS A |
|
| 186 | 186 | LEFT JOIN spip_rubriques AS R |
| 187 | 187 | ON A.id_rubrique=R.id_rubrique', |
| 188 | - "A.id_rubrique > 0 |
|
| 188 | + "A.id_rubrique > 0 |
|
| 189 | 189 | AND R.id_rubrique IS NULL |
| 190 | 190 | AND A.maj < $mydate_quote" |
| 191 | - ); |
|
| 191 | + ); |
|
| 192 | 192 | |
| 193 | - $n += optimiser_sansref('spip_articles', 'id_article', $res); |
|
| 193 | + $n += optimiser_sansref('spip_articles', 'id_article', $res); |
|
| 194 | 194 | |
| 195 | - // les articles a la poubelle |
|
| 196 | - sql_delete('spip_articles', "statut='poubelle' AND maj < $mydate_quote"); |
|
| 195 | + // les articles a la poubelle |
|
| 196 | + sql_delete('spip_articles', "statut='poubelle' AND maj < $mydate_quote"); |
|
| 197 | 197 | |
| 198 | - // |
|
| 199 | - // Auteurs |
|
| 200 | - // |
|
| 198 | + // |
|
| 199 | + // Auteurs |
|
| 200 | + // |
|
| 201 | 201 | |
| 202 | - include_spip('action/editer_liens'); |
|
| 203 | - // optimiser les liens de tous les auteurs vers des objets effaces |
|
| 204 | - // et depuis des auteurs effaces |
|
| 205 | - $n += objet_optimiser_liens(['auteur' => '*'], '*'); |
|
| 202 | + include_spip('action/editer_liens'); |
|
| 203 | + // optimiser les liens de tous les auteurs vers des objets effaces |
|
| 204 | + // et depuis des auteurs effaces |
|
| 205 | + $n += objet_optimiser_liens(['auteur' => '*'], '*'); |
|
| 206 | 206 | |
| 207 | - # effacer les auteurs poubelle qui ne sont lies a rien |
|
| 208 | - $res = sql_select( |
|
| 209 | - 'A.id_auteur AS id', |
|
| 210 | - 'spip_auteurs AS A |
|
| 207 | + # effacer les auteurs poubelle qui ne sont lies a rien |
|
| 208 | + $res = sql_select( |
|
| 209 | + 'A.id_auteur AS id', |
|
| 210 | + 'spip_auteurs AS A |
|
| 211 | 211 | LEFT JOIN spip_auteurs_liens AS L |
| 212 | 212 | ON L.id_auteur=A.id_auteur', |
| 213 | - "L.id_auteur IS NULL |
|
| 213 | + "L.id_auteur IS NULL |
|
| 214 | 214 | AND A.statut='5poubelle' AND A.maj < $mydate_quote" |
| 215 | - ); |
|
| 216 | - |
|
| 217 | - $n += optimiser_sansref('spip_auteurs', 'id_auteur', $res); |
|
| 218 | - |
|
| 219 | - # supprimer les auteurs 'nouveau' qui n'ont jamais donne suite |
|
| 220 | - # au mail de confirmation (45 jours pour repondre, ca devrait suffire) |
|
| 221 | - if (!defined('_AUTEURS_DELAI_REJET_NOUVEAU')) { |
|
| 222 | - define('_AUTEURS_DELAI_REJET_NOUVEAU', 45 * 24 * 3600); |
|
| 223 | - } |
|
| 224 | - sql_delete('spip_auteurs', "statut='nouveau' AND maj < " . sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU)))); |
|
| 225 | - |
|
| 226 | - /** |
|
| 227 | - * Permet aux plugins de compléter l'optimisation suite aux éléments disparus |
|
| 228 | - * |
|
| 229 | - * L'index 'data' est un entier indiquant le nombre d'optimisations |
|
| 230 | - * qui ont été réalisées (par exemple le nombre de suppressions faites) |
|
| 231 | - * et qui doit être incrémenté par les fonctions |
|
| 232 | - * utilisant ce pipeline si elles suppriment des éléments. |
|
| 233 | - * |
|
| 234 | - * @pipeline_appel optimiser_base_disparus |
|
| 235 | - */ |
|
| 236 | - $n = pipeline('optimiser_base_disparus', [ |
|
| 237 | - 'args' => [ |
|
| 238 | - 'attente' => $attente, |
|
| 239 | - 'date' => $mydate |
|
| 240 | - ], |
|
| 241 | - 'data' => $n |
|
| 242 | - ]); |
|
| 243 | - |
|
| 244 | - |
|
| 245 | - spip_log("optimiser_base_disparus : {$n} lien(s) mort(s)", 'genie' . _LOG_DEBUG); |
|
| 215 | + ); |
|
| 216 | + |
|
| 217 | + $n += optimiser_sansref('spip_auteurs', 'id_auteur', $res); |
|
| 218 | + |
|
| 219 | + # supprimer les auteurs 'nouveau' qui n'ont jamais donne suite |
|
| 220 | + # au mail de confirmation (45 jours pour repondre, ca devrait suffire) |
|
| 221 | + if (!defined('_AUTEURS_DELAI_REJET_NOUVEAU')) { |
|
| 222 | + define('_AUTEURS_DELAI_REJET_NOUVEAU', 45 * 24 * 3600); |
|
| 223 | + } |
|
| 224 | + sql_delete('spip_auteurs', "statut='nouveau' AND maj < " . sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU)))); |
|
| 225 | + |
|
| 226 | + /** |
|
| 227 | + * Permet aux plugins de compléter l'optimisation suite aux éléments disparus |
|
| 228 | + * |
|
| 229 | + * L'index 'data' est un entier indiquant le nombre d'optimisations |
|
| 230 | + * qui ont été réalisées (par exemple le nombre de suppressions faites) |
|
| 231 | + * et qui doit être incrémenté par les fonctions |
|
| 232 | + * utilisant ce pipeline si elles suppriment des éléments. |
|
| 233 | + * |
|
| 234 | + * @pipeline_appel optimiser_base_disparus |
|
| 235 | + */ |
|
| 236 | + $n = pipeline('optimiser_base_disparus', [ |
|
| 237 | + 'args' => [ |
|
| 238 | + 'attente' => $attente, |
|
| 239 | + 'date' => $mydate |
|
| 240 | + ], |
|
| 241 | + 'data' => $n |
|
| 242 | + ]); |
|
| 243 | + |
|
| 244 | + |
|
| 245 | + spip_log("optimiser_base_disparus : {$n} lien(s) mort(s)", 'genie' . _LOG_DEBUG); |
|
| 246 | 246 | } |
@@ -51,7 +51,7 @@ discard block |
||
| 51 | 51 | */ |
| 52 | 52 | function optimiser_caches_contextes() { |
| 53 | 53 | sous_repertoire(_DIR_CACHE, 'contextes'); |
| 54 | - if (is_dir($d = _DIR_CACHE . 'contextes')) { |
|
| 54 | + if (is_dir($d = _DIR_CACHE.'contextes')) { |
|
| 55 | 55 | include_spip('inc/invalideur'); |
| 56 | 56 | purger_repertoire($d, ['mtime' => time() - 48 * 3600, 'limit' => 10000]); |
| 57 | 57 | } |
@@ -96,16 +96,16 @@ discard block |
||
| 96 | 96 | $tables[] = array_shift($row); |
| 97 | 97 | } |
| 98 | 98 | |
| 99 | - spip_log('optimiser_base_une_table ' . json_encode($tables, JSON_THROW_ON_ERROR), 'genie' . _LOG_DEBUG); |
|
| 99 | + spip_log('optimiser_base_une_table '.json_encode($tables, JSON_THROW_ON_ERROR), 'genie'._LOG_DEBUG); |
|
| 100 | 100 | if ($tables) { |
| 101 | 101 | $table_op = intval(lire_config('optimiser_table', 0) + 1) % sizeof($tables); |
| 102 | 102 | ecrire_config('optimiser_table', $table_op); |
| 103 | 103 | $q = $tables[$table_op]; |
| 104 | - spip_log("optimiser_base_une_table : debut d'optimisation de la table $q", 'genie' . _LOG_DEBUG); |
|
| 104 | + spip_log("optimiser_base_une_table : debut d'optimisation de la table $q", 'genie'._LOG_DEBUG); |
|
| 105 | 105 | if (sql_optimize($q)) { |
| 106 | - spip_log("optimiser_base_une_table : fin d'optimisation de la table $q", 'genie' . _LOG_DEBUG); |
|
| 106 | + spip_log("optimiser_base_une_table : fin d'optimisation de la table $q", 'genie'._LOG_DEBUG); |
|
| 107 | 107 | } else { |
| 108 | - spip_log("optimiser_base_une_table : Pas d'optimiseur necessaire", 'genie' . _LOG_DEBUG); |
|
| 108 | + spip_log("optimiser_base_une_table : Pas d'optimiseur necessaire", 'genie'._LOG_DEBUG); |
|
| 109 | 109 | } |
| 110 | 110 | } |
| 111 | 111 | } |
@@ -140,8 +140,8 @@ discard block |
||
| 140 | 140 | sql_free($sel); |
| 141 | 141 | |
| 142 | 142 | if ($in) { |
| 143 | - sql_delete($table, sql_in($id, array_keys($in)) . ($and ? " AND $and" : '')); |
|
| 144 | - spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: " . implode(', ', array_keys($in)), 'genie' . _LOG_DEBUG); |
|
| 143 | + sql_delete($table, sql_in($id, array_keys($in)).($and ? " AND $and" : '')); |
|
| 144 | + spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: ".implode(', ', array_keys($in)), 'genie'._LOG_DEBUG); |
|
| 145 | 145 | } |
| 146 | 146 | |
| 147 | 147 | return count($in); |
@@ -221,7 +221,7 @@ discard block |
||
| 221 | 221 | if (!defined('_AUTEURS_DELAI_REJET_NOUVEAU')) { |
| 222 | 222 | define('_AUTEURS_DELAI_REJET_NOUVEAU', 45 * 24 * 3600); |
| 223 | 223 | } |
| 224 | - sql_delete('spip_auteurs', "statut='nouveau' AND maj < " . sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU)))); |
|
| 224 | + sql_delete('spip_auteurs', "statut='nouveau' AND maj < ".sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU)))); |
|
| 225 | 225 | |
| 226 | 226 | /** |
| 227 | 227 | * Permet aux plugins de compléter l'optimisation suite aux éléments disparus |
@@ -242,5 +242,5 @@ discard block |
||
| 242 | 242 | ]); |
| 243 | 243 | |
| 244 | 244 | |
| 245 | - spip_log("optimiser_base_disparus : {$n} lien(s) mort(s)", 'genie' . _LOG_DEBUG); |
|
| 245 | + spip_log("optimiser_base_disparus : {$n} lien(s) mort(s)", 'genie'._LOG_DEBUG); |
|
| 246 | 246 | } |
@@ -30,7 +30,7 @@ discard block |
||
| 30 | 30 | **/ |
| 31 | 31 | |
| 32 | 32 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 33 | - return; |
|
| 33 | + return; |
|
| 34 | 34 | } |
| 35 | 35 | |
| 36 | 36 | // utilise pour le logo du site, donc doit rester ici |
@@ -48,92 +48,92 @@ discard block |
||
| 48 | 48 | * @return array|false Variables d'environnement pour le fond |
| 49 | 49 | */ |
| 50 | 50 | function formulaires_editer_logo_charger_dist($objet, $id_objet, $retour = '', $options = []) { |
| 51 | - // pas dans une boucle ? formulaire pour le logo du site |
|
| 52 | - // dans ce cas, il faut chercher un 'siteon0.ext' |
|
| 53 | - if (!$objet) { |
|
| 54 | - $objet = 'site'; |
|
| 55 | - } |
|
| 51 | + // pas dans une boucle ? formulaire pour le logo du site |
|
| 52 | + // dans ce cas, il faut chercher un 'siteon0.ext' |
|
| 53 | + if (!$objet) { |
|
| 54 | + $objet = 'site'; |
|
| 55 | + } |
|
| 56 | 56 | |
| 57 | - $objet = objet_type($objet); |
|
| 58 | - $_id_objet = id_table_objet($objet); |
|
| 57 | + $objet = objet_type($objet); |
|
| 58 | + $_id_objet = id_table_objet($objet); |
|
| 59 | 59 | |
| 60 | - if (!is_array($options)) { |
|
| 61 | - $options = unserialize($options); |
|
| 62 | - } |
|
| 63 | - $options = spip_sanitize_from_request($options, '*'); |
|
| 60 | + if (!is_array($options)) { |
|
| 61 | + $options = unserialize($options); |
|
| 62 | + } |
|
| 63 | + $options = spip_sanitize_from_request($options, '*'); |
|
| 64 | 64 | |
| 65 | - if (!isset($options['titre'])) { |
|
| 66 | - $balise_img = chercher_filtre('balise_img'); |
|
| 67 | - $img = $balise_img(chemin_image('image-24.png'), '', 'cadre-icone'); |
|
| 68 | - $libelles = pipeline('libeller_logo', $GLOBALS['logo_libelles']); |
|
| 69 | - $libelle = (($id_objet or $objet != 'rubrique') ? $objet : 'racine'); |
|
| 70 | - if (isset($libelles[$libelle])) { |
|
| 71 | - $libelle = $libelles[$libelle]; |
|
| 72 | - } elseif ($libelle = objet_info($objet, 'texte_logo_objet')) { |
|
| 73 | - $libelle = _T($libelle); |
|
| 74 | - } else { |
|
| 75 | - $libelle = _L('Logo'); |
|
| 76 | - } |
|
| 77 | - switch ($objet) { |
|
| 78 | - case 'article': |
|
| 79 | - $libelle .= ' ' . aider('logoart'); |
|
| 80 | - break; |
|
| 81 | - case 'breve': |
|
| 82 | - $libelle .= ' ' . aider('breveslogo'); |
|
| 83 | - break; |
|
| 84 | - case 'rubrique': |
|
| 85 | - $libelle .= ' ' . aider('rublogo'); |
|
| 86 | - break; |
|
| 87 | - default: |
|
| 88 | - break; |
|
| 89 | - } |
|
| 65 | + if (!isset($options['titre'])) { |
|
| 66 | + $balise_img = chercher_filtre('balise_img'); |
|
| 67 | + $img = $balise_img(chemin_image('image-24.png'), '', 'cadre-icone'); |
|
| 68 | + $libelles = pipeline('libeller_logo', $GLOBALS['logo_libelles']); |
|
| 69 | + $libelle = (($id_objet or $objet != 'rubrique') ? $objet : 'racine'); |
|
| 70 | + if (isset($libelles[$libelle])) { |
|
| 71 | + $libelle = $libelles[$libelle]; |
|
| 72 | + } elseif ($libelle = objet_info($objet, 'texte_logo_objet')) { |
|
| 73 | + $libelle = _T($libelle); |
|
| 74 | + } else { |
|
| 75 | + $libelle = _L('Logo'); |
|
| 76 | + } |
|
| 77 | + switch ($objet) { |
|
| 78 | + case 'article': |
|
| 79 | + $libelle .= ' ' . aider('logoart'); |
|
| 80 | + break; |
|
| 81 | + case 'breve': |
|
| 82 | + $libelle .= ' ' . aider('breveslogo'); |
|
| 83 | + break; |
|
| 84 | + case 'rubrique': |
|
| 85 | + $libelle .= ' ' . aider('rublogo'); |
|
| 86 | + break; |
|
| 87 | + default: |
|
| 88 | + break; |
|
| 89 | + } |
|
| 90 | 90 | |
| 91 | - $options['titre'] = $img . $libelle; |
|
| 92 | - } |
|
| 93 | - if (!isset($options['editable'])) { |
|
| 94 | - include_spip('inc/autoriser'); |
|
| 95 | - $options['editable'] = autoriser('iconifier', $objet, $id_objet); |
|
| 96 | - } |
|
| 91 | + $options['titre'] = $img . $libelle; |
|
| 92 | + } |
|
| 93 | + if (!isset($options['editable'])) { |
|
| 94 | + include_spip('inc/autoriser'); |
|
| 95 | + $options['editable'] = autoriser('iconifier', $objet, $id_objet); |
|
| 96 | + } |
|
| 97 | 97 | |
| 98 | - $res = [ |
|
| 99 | - 'editable' => ($GLOBALS['meta']['activer_logos'] == 'oui' ? ' ' : '') && (!isset($options['editable']) or $options['editable']), |
|
| 100 | - 'logo_survol' => ($GLOBALS['meta']['activer_logos_survol'] == 'oui' ? ' ' : ''), |
|
| 101 | - 'objet' => $objet, |
|
| 102 | - 'id_objet' => $id_objet, |
|
| 103 | - '_options' => $options, |
|
| 104 | - '_show_upload_off' => '', |
|
| 105 | - ]; |
|
| 98 | + $res = [ |
|
| 99 | + 'editable' => ($GLOBALS['meta']['activer_logos'] == 'oui' ? ' ' : '') && (!isset($options['editable']) or $options['editable']), |
|
| 100 | + 'logo_survol' => ($GLOBALS['meta']['activer_logos_survol'] == 'oui' ? ' ' : ''), |
|
| 101 | + 'objet' => $objet, |
|
| 102 | + 'id_objet' => $id_objet, |
|
| 103 | + '_options' => $options, |
|
| 104 | + '_show_upload_off' => '', |
|
| 105 | + ]; |
|
| 106 | 106 | |
| 107 | - // rechercher le logo de l'objet |
|
| 108 | - // la fonction prend un parametre '_id_objet' etrange : |
|
| 109 | - // le nom de la cle primaire (et non le nom de la table) |
|
| 110 | - // ou directement le nom du raccourcis a chercher |
|
| 111 | - $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 112 | - $etats = $res['logo_survol'] ? ['on', 'off'] : ['on']; |
|
| 113 | - foreach ($etats as $etat) { |
|
| 114 | - $logo = $chercher_logo($id_objet, $_id_objet, $etat); |
|
| 115 | - if ($logo) { |
|
| 116 | - $res['logo_' . $etat] = $logo[0]; |
|
| 117 | - $res['logo_id_' . $etat] = $logo[5]['id_document'] ?? ''; |
|
| 118 | - } |
|
| 119 | - } |
|
| 120 | - // pas de logo_on -> pas de formulaire pour le survol |
|
| 121 | - if (!isset($res['logo_on'])) { |
|
| 122 | - $res['logo_survol'] = ''; |
|
| 123 | - } elseif (!isset($res['logo_off']) and _request('logo_up')) { |
|
| 124 | - $res['_show_upload_off'] = ' '; |
|
| 125 | - } |
|
| 107 | + // rechercher le logo de l'objet |
|
| 108 | + // la fonction prend un parametre '_id_objet' etrange : |
|
| 109 | + // le nom de la cle primaire (et non le nom de la table) |
|
| 110 | + // ou directement le nom du raccourcis a chercher |
|
| 111 | + $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 112 | + $etats = $res['logo_survol'] ? ['on', 'off'] : ['on']; |
|
| 113 | + foreach ($etats as $etat) { |
|
| 114 | + $logo = $chercher_logo($id_objet, $_id_objet, $etat); |
|
| 115 | + if ($logo) { |
|
| 116 | + $res['logo_' . $etat] = $logo[0]; |
|
| 117 | + $res['logo_id_' . $etat] = $logo[5]['id_document'] ?? ''; |
|
| 118 | + } |
|
| 119 | + } |
|
| 120 | + // pas de logo_on -> pas de formulaire pour le survol |
|
| 121 | + if (!isset($res['logo_on'])) { |
|
| 122 | + $res['logo_survol'] = ''; |
|
| 123 | + } elseif (!isset($res['logo_off']) and _request('logo_up')) { |
|
| 124 | + $res['_show_upload_off'] = ' '; |
|
| 125 | + } |
|
| 126 | 126 | |
| 127 | - // si le logo n'est pas editable et qu'il n'y en a pas, on affiche pas du tout le formulaire |
|
| 128 | - if ( |
|
| 129 | - !$res['editable'] |
|
| 130 | - and !isset($res['logo_off']) |
|
| 131 | - and !isset($res['logo_on']) |
|
| 132 | - ) { |
|
| 133 | - return false; |
|
| 134 | - } |
|
| 127 | + // si le logo n'est pas editable et qu'il n'y en a pas, on affiche pas du tout le formulaire |
|
| 128 | + if ( |
|
| 129 | + !$res['editable'] |
|
| 130 | + and !isset($res['logo_off']) |
|
| 131 | + and !isset($res['logo_on']) |
|
| 132 | + ) { |
|
| 133 | + return false; |
|
| 134 | + } |
|
| 135 | 135 | |
| 136 | - return $res; |
|
| 136 | + return $res; |
|
| 137 | 137 | } |
| 138 | 138 | |
| 139 | 139 | /** |
@@ -147,7 +147,7 @@ discard block |
||
| 147 | 147 | * @return string Hash du formulaire |
| 148 | 148 | */ |
| 149 | 149 | function formulaires_editer_logo_identifier_dist($objet, $id_objet, $retour = '', $options = []) { |
| 150 | - return serialize([$objet, $id_objet]); |
|
| 150 | + return serialize([$objet, $id_objet]); |
|
| 151 | 151 | } |
| 152 | 152 | |
| 153 | 153 | /** |
@@ -163,31 +163,31 @@ discard block |
||
| 163 | 163 | * @return array Erreurs du formulaire |
| 164 | 164 | */ |
| 165 | 165 | function formulaires_editer_logo_verifier_dist($objet, $id_objet, $retour = '', $options = []) { |
| 166 | - $erreurs = []; |
|
| 167 | - // verifier les extensions |
|
| 168 | - $sources = formulaire_editer_logo_get_sources(); |
|
| 169 | - include_spip('action/editer_logo'); |
|
| 170 | - $extensions_possibles = $GLOBALS['formats_logos']; |
|
| 171 | - if (in_array('jpg', $extensions_possibles)) { |
|
| 172 | - $extensions_possibles[] = 'jpeg'; |
|
| 173 | - } |
|
| 174 | - foreach ($sources as $etat => $file) { |
|
| 175 | - // seulement si une reception correcte a eu lieu |
|
| 176 | - if ($file and $file['error'] == 0) { |
|
| 177 | - if ( |
|
| 178 | - !in_array( |
|
| 179 | - strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)), |
|
| 180 | - $extensions_possibles |
|
| 181 | - ) |
|
| 182 | - ) { |
|
| 183 | - $erreurs['logo_' . $etat] = _L('Extension non reconnue'); |
|
| 184 | - } |
|
| 185 | - } elseif ($file and $file['error'] != 0 and isset($file['msg'])) { |
|
| 186 | - $erreurs['message_erreur'] = $file['msg']; |
|
| 187 | - } |
|
| 188 | - } |
|
| 166 | + $erreurs = []; |
|
| 167 | + // verifier les extensions |
|
| 168 | + $sources = formulaire_editer_logo_get_sources(); |
|
| 169 | + include_spip('action/editer_logo'); |
|
| 170 | + $extensions_possibles = $GLOBALS['formats_logos']; |
|
| 171 | + if (in_array('jpg', $extensions_possibles)) { |
|
| 172 | + $extensions_possibles[] = 'jpeg'; |
|
| 173 | + } |
|
| 174 | + foreach ($sources as $etat => $file) { |
|
| 175 | + // seulement si une reception correcte a eu lieu |
|
| 176 | + if ($file and $file['error'] == 0) { |
|
| 177 | + if ( |
|
| 178 | + !in_array( |
|
| 179 | + strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)), |
|
| 180 | + $extensions_possibles |
|
| 181 | + ) |
|
| 182 | + ) { |
|
| 183 | + $erreurs['logo_' . $etat] = _L('Extension non reconnue'); |
|
| 184 | + } |
|
| 185 | + } elseif ($file and $file['error'] != 0 and isset($file['msg'])) { |
|
| 186 | + $erreurs['message_erreur'] = $file['msg']; |
|
| 187 | + } |
|
| 188 | + } |
|
| 189 | 189 | |
| 190 | - return $erreurs; |
|
| 190 | + return $erreurs; |
|
| 191 | 191 | } |
| 192 | 192 | |
| 193 | 193 | /** |
@@ -203,47 +203,47 @@ discard block |
||
| 203 | 203 | * @return array Retour des traitements |
| 204 | 204 | */ |
| 205 | 205 | function formulaires_editer_logo_traiter_dist($objet, $id_objet, $retour = '', $options = []) { |
| 206 | - $res = ['editable' => ' ']; |
|
| 206 | + $res = ['editable' => ' ']; |
|
| 207 | 207 | |
| 208 | - // pas dans une boucle ? formulaire pour le logo du site |
|
| 209 | - // dans ce cas, il faut chercher un 'siteon0.ext' |
|
| 210 | - if (!$objet) { |
|
| 211 | - $objet = 'site'; |
|
| 212 | - } |
|
| 208 | + // pas dans une boucle ? formulaire pour le logo du site |
|
| 209 | + // dans ce cas, il faut chercher un 'siteon0.ext' |
|
| 210 | + if (!$objet) { |
|
| 211 | + $objet = 'site'; |
|
| 212 | + } |
|
| 213 | 213 | |
| 214 | - include_spip('action/editer_logo'); |
|
| 214 | + include_spip('action/editer_logo'); |
|
| 215 | 215 | |
| 216 | - // effectuer la suppression si demandee d'un logo |
|
| 217 | - $on = _request('supprimer_logo_on'); |
|
| 218 | - if ($on or _request('supprimer_logo_off')) { |
|
| 219 | - logo_supprimer($objet, $id_objet, $on ? 'on' : 'off'); |
|
| 220 | - $res['message_ok'] = ''; // pas besoin de message : la validation est visuelle |
|
| 221 | - set_request('logo_up', ' '); |
|
| 222 | - } // sinon supprimer ancien logo puis copier le nouveau |
|
| 223 | - else { |
|
| 224 | - $sources = formulaire_editer_logo_get_sources(); |
|
| 225 | - foreach ($sources as $etat => $file) { |
|
| 226 | - if ($file and $file['error'] == 0) { |
|
| 227 | - if ($err = logo_modifier($objet, $id_objet, $etat, $file)) { |
|
| 228 | - $res['message_erreur'] = $err; |
|
| 229 | - } else { |
|
| 230 | - $res['message_ok'] = ''; |
|
| 231 | - } // pas besoin de message : la validation est visuelle |
|
| 232 | - set_request('logo_up', ' '); |
|
| 233 | - } |
|
| 234 | - } |
|
| 235 | - } |
|
| 216 | + // effectuer la suppression si demandee d'un logo |
|
| 217 | + $on = _request('supprimer_logo_on'); |
|
| 218 | + if ($on or _request('supprimer_logo_off')) { |
|
| 219 | + logo_supprimer($objet, $id_objet, $on ? 'on' : 'off'); |
|
| 220 | + $res['message_ok'] = ''; // pas besoin de message : la validation est visuelle |
|
| 221 | + set_request('logo_up', ' '); |
|
| 222 | + } // sinon supprimer ancien logo puis copier le nouveau |
|
| 223 | + else { |
|
| 224 | + $sources = formulaire_editer_logo_get_sources(); |
|
| 225 | + foreach ($sources as $etat => $file) { |
|
| 226 | + if ($file and $file['error'] == 0) { |
|
| 227 | + if ($err = logo_modifier($objet, $id_objet, $etat, $file)) { |
|
| 228 | + $res['message_erreur'] = $err; |
|
| 229 | + } else { |
|
| 230 | + $res['message_ok'] = ''; |
|
| 231 | + } // pas besoin de message : la validation est visuelle |
|
| 232 | + set_request('logo_up', ' '); |
|
| 233 | + } |
|
| 234 | + } |
|
| 235 | + } |
|
| 236 | 236 | |
| 237 | - // Invalider les caches de l'objet |
|
| 238 | - include_spip('inc/invalideur'); |
|
| 239 | - suivre_invalideur("id='$objet/$id_objet'"); |
|
| 237 | + // Invalider les caches de l'objet |
|
| 238 | + include_spip('inc/invalideur'); |
|
| 239 | + suivre_invalideur("id='$objet/$id_objet'"); |
|
| 240 | 240 | |
| 241 | 241 | |
| 242 | - if ($retour) { |
|
| 243 | - $res['redirect'] = $retour; |
|
| 244 | - } |
|
| 242 | + if ($retour) { |
|
| 243 | + $res['redirect'] = $retour; |
|
| 244 | + } |
|
| 245 | 245 | |
| 246 | - return $res; |
|
| 246 | + return $res; |
|
| 247 | 247 | } |
| 248 | 248 | |
| 249 | 249 | |
@@ -255,29 +255,29 @@ discard block |
||
| 255 | 255 | * Sources des fichiers dans les clés `on` ou `off` |
| 256 | 256 | */ |
| 257 | 257 | function formulaire_editer_logo_get_sources() { |
| 258 | - if (!$_FILES) { |
|
| 259 | - $_FILES = $GLOBALS['HTTP_POST_FILES'] ?? []; |
|
| 260 | - } |
|
| 261 | - if (!is_array($_FILES)) { |
|
| 262 | - return []; |
|
| 263 | - } |
|
| 258 | + if (!$_FILES) { |
|
| 259 | + $_FILES = $GLOBALS['HTTP_POST_FILES'] ?? []; |
|
| 260 | + } |
|
| 261 | + if (!is_array($_FILES)) { |
|
| 262 | + return []; |
|
| 263 | + } |
|
| 264 | 264 | |
| 265 | - include_spip('inc/documents'); |
|
| 266 | - $sources = []; |
|
| 267 | - foreach (['on', 'off'] as $etat) { |
|
| 268 | - $logo = 'logo_' . $etat; |
|
| 269 | - if (isset($_FILES[$logo])) { |
|
| 270 | - if ($_FILES[$logo]['error'] == 0) { |
|
| 271 | - $sources[$etat] = $_FILES[$logo]; |
|
| 272 | - } elseif ($_FILES[$logo]['error'] != 0) { |
|
| 273 | - $msg = check_upload_error($_FILES[$logo]['error'], false, true); |
|
| 274 | - if ($msg and is_string($msg)) { |
|
| 275 | - $sources[$etat] = $_FILES[$logo]; |
|
| 276 | - $sources[$etat]['msg'] = $msg; |
|
| 277 | - } |
|
| 278 | - } |
|
| 279 | - } |
|
| 280 | - } |
|
| 265 | + include_spip('inc/documents'); |
|
| 266 | + $sources = []; |
|
| 267 | + foreach (['on', 'off'] as $etat) { |
|
| 268 | + $logo = 'logo_' . $etat; |
|
| 269 | + if (isset($_FILES[$logo])) { |
|
| 270 | + if ($_FILES[$logo]['error'] == 0) { |
|
| 271 | + $sources[$etat] = $_FILES[$logo]; |
|
| 272 | + } elseif ($_FILES[$logo]['error'] != 0) { |
|
| 273 | + $msg = check_upload_error($_FILES[$logo]['error'], false, true); |
|
| 274 | + if ($msg and is_string($msg)) { |
|
| 275 | + $sources[$etat] = $_FILES[$logo]; |
|
| 276 | + $sources[$etat]['msg'] = $msg; |
|
| 277 | + } |
|
| 278 | + } |
|
| 279 | + } |
|
| 280 | + } |
|
| 281 | 281 | |
| 282 | - return $sources; |
|
| 282 | + return $sources; |
|
| 283 | 283 | } |
@@ -76,19 +76,19 @@ discard block |
||
| 76 | 76 | } |
| 77 | 77 | switch ($objet) { |
| 78 | 78 | case 'article': |
| 79 | - $libelle .= ' ' . aider('logoart'); |
|
| 79 | + $libelle .= ' '.aider('logoart'); |
|
| 80 | 80 | break; |
| 81 | 81 | case 'breve': |
| 82 | - $libelle .= ' ' . aider('breveslogo'); |
|
| 82 | + $libelle .= ' '.aider('breveslogo'); |
|
| 83 | 83 | break; |
| 84 | 84 | case 'rubrique': |
| 85 | - $libelle .= ' ' . aider('rublogo'); |
|
| 85 | + $libelle .= ' '.aider('rublogo'); |
|
| 86 | 86 | break; |
| 87 | 87 | default: |
| 88 | 88 | break; |
| 89 | 89 | } |
| 90 | 90 | |
| 91 | - $options['titre'] = $img . $libelle; |
|
| 91 | + $options['titre'] = $img.$libelle; |
|
| 92 | 92 | } |
| 93 | 93 | if (!isset($options['editable'])) { |
| 94 | 94 | include_spip('inc/autoriser'); |
@@ -113,8 +113,8 @@ discard block |
||
| 113 | 113 | foreach ($etats as $etat) { |
| 114 | 114 | $logo = $chercher_logo($id_objet, $_id_objet, $etat); |
| 115 | 115 | if ($logo) { |
| 116 | - $res['logo_' . $etat] = $logo[0]; |
|
| 117 | - $res['logo_id_' . $etat] = $logo[5]['id_document'] ?? ''; |
|
| 116 | + $res['logo_'.$etat] = $logo[0]; |
|
| 117 | + $res['logo_id_'.$etat] = $logo[5]['id_document'] ?? ''; |
|
| 118 | 118 | } |
| 119 | 119 | } |
| 120 | 120 | // pas de logo_on -> pas de formulaire pour le survol |
@@ -180,7 +180,7 @@ discard block |
||
| 180 | 180 | $extensions_possibles |
| 181 | 181 | ) |
| 182 | 182 | ) { |
| 183 | - $erreurs['logo_' . $etat] = _L('Extension non reconnue'); |
|
| 183 | + $erreurs['logo_'.$etat] = _L('Extension non reconnue'); |
|
| 184 | 184 | } |
| 185 | 185 | } elseif ($file and $file['error'] != 0 and isset($file['msg'])) { |
| 186 | 186 | $erreurs['message_erreur'] = $file['msg']; |
@@ -265,7 +265,7 @@ discard block |
||
| 265 | 265 | include_spip('inc/documents'); |
| 266 | 266 | $sources = []; |
| 267 | 267 | foreach (['on', 'off'] as $etat) { |
| 268 | - $logo = 'logo_' . $etat; |
|
| 268 | + $logo = 'logo_'.$etat; |
|
| 269 | 269 | if (isset($_FILES[$logo])) { |
| 270 | 270 | if ($_FILES[$logo]['error'] == 0) { |
| 271 | 271 | $sources[$etat] = $_FILES[$logo]; |
@@ -36,7 +36,7 @@ discard block |
||
| 36 | 36 | return sql_getfetsel( |
| 37 | 37 | 'virtuel', |
| 38 | 38 | 'spip_articles', |
| 39 | - ['id_article=' . intval($id_article), "statut='publie'"], |
|
| 39 | + ['id_article='.intval($id_article), "statut='publie'"], |
|
| 40 | 40 | '', |
| 41 | 41 | '', |
| 42 | 42 | '', |
@@ -81,7 +81,7 @@ discard block |
||
| 81 | 81 | $cache_quete[$connect][$table][$id] = sql_fetsel( |
| 82 | 82 | $cache_quete[$connect][$table]['_select'], |
| 83 | 83 | $table, |
| 84 | - $cache_quete[$connect][$table]['_id'] . '=' . intval($id), |
|
| 84 | + $cache_quete[$connect][$table]['_id'].'='.intval($id), |
|
| 85 | 85 | '', |
| 86 | 86 | '', |
| 87 | 87 | '', |
@@ -173,7 +173,7 @@ discard block |
||
| 173 | 173 | return |
| 174 | 174 | (isset($GLOBALS['meta']['date_prochain_postdate']) |
| 175 | 175 | and $GLOBALS['meta']['date_prochain_postdate'] > time()) |
| 176 | - ? "$champ_date<" . sql_quote(date('Y-m-d H:i:s', $GLOBALS['meta']['date_prochain_postdate']), $serveur) |
|
| 176 | + ? "$champ_date<".sql_quote(date('Y-m-d H:i:s', $GLOBALS['meta']['date_prochain_postdate']), $serveur) |
|
| 177 | 177 | : '1=1'; |
| 178 | 178 | } |
| 179 | 179 | |
@@ -232,7 +232,7 @@ discard block |
||
| 232 | 232 | and $id_table = reset($objet) |
| 233 | 233 | and $objet = objet_type($id_table) |
| 234 | 234 | ) { |
| 235 | - $w = "$mstatut<>" . sql_quote($v); |
|
| 235 | + $w = "$mstatut<>".sql_quote($v); |
|
| 236 | 236 | |
| 237 | 237 | // retrouver l’id_auteur qui a filé un lien de prévisu éventuellement, |
| 238 | 238 | // sinon l’auteur en session |
@@ -246,22 +246,22 @@ discard block |
||
| 246 | 246 | } |
| 247 | 247 | |
| 248 | 248 | // dans ce cas (admin en general), pas de filtrage sur ce statut |
| 249 | - if (!autoriser('previsualiser' . $v, $objet, '', $id_auteur)) { |
|
| 249 | + if (!autoriser('previsualiser'.$v, $objet, '', $id_auteur)) { |
|
| 250 | 250 | // si pas d'auteur identifie pas de sous-requete car pas d'article qui matche |
| 251 | 251 | if (!$id_auteur) { |
| 252 | 252 | $where[] = $w; |
| 253 | 253 | } else { |
| 254 | 254 | $primary = id_table_objet($objet); |
| 255 | - $where[] = "($w OR $id_table.$primary IN (" . sql_get_select( |
|
| 255 | + $where[] = "($w OR $id_table.$primary IN (".sql_get_select( |
|
| 256 | 256 | 'ssss.id_objet', |
| 257 | 257 | 'spip_auteurs_liens AS ssss', |
| 258 | - 'ssss.objet=' . sql_quote($objet) . ' AND ssss.id_auteur=' . intval($id_auteur), |
|
| 258 | + 'ssss.objet='.sql_quote($objet).' AND ssss.id_auteur='.intval($id_auteur), |
|
| 259 | 259 | '', |
| 260 | 260 | '', |
| 261 | 261 | '', |
| 262 | 262 | '', |
| 263 | 263 | $serveur |
| 264 | - ) . '))'; |
|
| 264 | + ).'))'; |
|
| 265 | 265 | } |
| 266 | 266 | } |
| 267 | 267 | } // ignorer ce statut si on ne sait pas comment le filtrer |
@@ -299,7 +299,7 @@ discard block |
||
| 299 | 299 | * @return array|bool|null |
| 300 | 300 | */ |
| 301 | 301 | function quete_fichier($id_document, $serveur = '') { |
| 302 | - return sql_getfetsel('fichier', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur); |
|
| 302 | + return sql_getfetsel('fichier', 'spip_documents', ('id_document='.intval($id_document)), '', [], '', '', $serveur); |
|
| 303 | 303 | } |
| 304 | 304 | |
| 305 | 305 | /** |
@@ -310,7 +310,7 @@ discard block |
||
| 310 | 310 | * @return array|bool |
| 311 | 311 | */ |
| 312 | 312 | function quete_document($id_document, $serveur = '') { |
| 313 | - return sql_fetsel('*', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur); |
|
| 313 | + return sql_fetsel('*', 'spip_documents', ('id_document='.intval($id_document)), '', [], '', '', $serveur); |
|
| 314 | 314 | } |
| 315 | 315 | |
| 316 | 316 | /** |
@@ -321,7 +321,7 @@ discard block |
||
| 321 | 321 | * @return array|bool|null |
| 322 | 322 | */ |
| 323 | 323 | function quete_meta($nom, $serveur) { |
| 324 | - return sql_getfetsel('valeur', 'spip_meta', 'nom=' . sql_quote($nom), '', '', '', '', $serveur); |
|
| 324 | + return sql_getfetsel('valeur', 'spip_meta', 'nom='.sql_quote($nom), '', '', '', '', $serveur); |
|
| 325 | 325 | } |
| 326 | 326 | |
| 327 | 327 | /** |
@@ -377,9 +377,9 @@ discard block |
||
| 377 | 377 | // qui permet de distinguer le changement de logo |
| 378 | 378 | // et placer un expire sur le dossier IMG/ |
| 379 | 379 | $res = [ |
| 380 | - $on['chemin'] . ($on['timestamp'] ? "?{$on['timestamp']}" : ''), |
|
| 381 | - ($off ? $off['chemin'] . ($off['timestamp'] ? "?{$off['timestamp']}" : '') : ''), |
|
| 382 | - (!$taille ? '' : (' ' . $taille[3])) |
|
| 380 | + $on['chemin'].($on['timestamp'] ? "?{$on['timestamp']}" : ''), |
|
| 381 | + ($off ? $off['chemin'].($off['timestamp'] ? "?{$off['timestamp']}" : '') : ''), |
|
| 382 | + (!$taille ? '' : (' '.$taille[3])) |
|
| 383 | 383 | ]; |
| 384 | 384 | $res['src'] = $res[0]; |
| 385 | 385 | $res['logo_on'] = $res[0]; |
@@ -489,7 +489,7 @@ discard block |
||
| 489 | 489 | if ( |
| 490 | 490 | strcmp($logo, _DIR_PLUGINS) == 0 |
| 491 | 491 | or strcmp($logo, _DIR_PLUGINS_DIST) == 0 |
| 492 | - or strcmp($logo, _DIR_RACINE . 'prive/') == 0 |
|
| 492 | + or strcmp($logo, _DIR_RACINE.'prive/') == 0 |
|
| 493 | 493 | ) { |
| 494 | 494 | return $logo; |
| 495 | 495 | } |
@@ -560,7 +560,7 @@ discard block |
||
| 560 | 560 | |
| 561 | 561 | foreach (['titre', 'descriptif', 'credits', 'alt'] as $champ) { |
| 562 | 562 | if (!empty($contexte[$champ])) { |
| 563 | - $contexte[$champ] = appliquer_traitement_champ($contexte[$champ] , $champ, 'document'); |
|
| 563 | + $contexte[$champ] = appliquer_traitement_champ($contexte[$champ], $champ, 'document'); |
|
| 564 | 564 | } |
| 565 | 565 | } |
| 566 | 566 | |
@@ -667,7 +667,7 @@ discard block |
||
| 667 | 667 | $exposer[$m][$type][$principal] = true; |
| 668 | 668 | if ($type == 'id_mot') { |
| 669 | 669 | if (!$parent) { |
| 670 | - $parent = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot=' . intval($principal), '', '', '', '', $connect); |
|
| 670 | + $parent = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot='.intval($principal), '', '', '', '', $connect); |
|
| 671 | 671 | } |
| 672 | 672 | if ($parent) { |
| 673 | 673 | $exposer[$m]['id_groupe'][$parent] = true; |
@@ -18,7 +18,7 @@ discard block |
||
| 18 | 18 | **/ |
| 19 | 19 | |
| 20 | 20 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 21 | - return; |
|
| 21 | + return; |
|
| 22 | 22 | } |
| 23 | 23 | |
| 24 | 24 | |
@@ -32,16 +32,16 @@ discard block |
||
| 32 | 32 | * @return array|bool|null |
| 33 | 33 | */ |
| 34 | 34 | function quete_virtuel($id_article, $connect) { |
| 35 | - return sql_getfetsel( |
|
| 36 | - 'virtuel', |
|
| 37 | - 'spip_articles', |
|
| 38 | - ['id_article=' . intval($id_article), "statut='publie'"], |
|
| 39 | - '', |
|
| 40 | - '', |
|
| 41 | - '', |
|
| 42 | - '', |
|
| 43 | - $connect |
|
| 44 | - ); |
|
| 35 | + return sql_getfetsel( |
|
| 36 | + 'virtuel', |
|
| 37 | + 'spip_articles', |
|
| 38 | + ['id_article=' . intval($id_article), "statut='publie'"], |
|
| 39 | + '', |
|
| 40 | + '', |
|
| 41 | + '', |
|
| 42 | + '', |
|
| 43 | + $connect |
|
| 44 | + ); |
|
| 45 | 45 | } |
| 46 | 46 | |
| 47 | 47 | /** |
@@ -56,41 +56,41 @@ discard block |
||
| 56 | 56 | * @return array |
| 57 | 57 | */ |
| 58 | 58 | function quete_parent_lang($table, $id, string $connect = '') { |
| 59 | - static $cache_quete = []; |
|
| 60 | - |
|
| 61 | - if (!isset($cache_quete[$connect][$table][$id])) { |
|
| 62 | - if (!isset($cache_quete[$connect][$table]['_select'])) { |
|
| 63 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 64 | - if ( |
|
| 65 | - !$desc = $trouver_table( |
|
| 66 | - $table, |
|
| 67 | - $connect |
|
| 68 | - ) or !isset($desc['field']['id_rubrique']) |
|
| 69 | - ) { |
|
| 70 | - // pas de parent rubrique, on passe |
|
| 71 | - $cache_quete[$connect][$table]['_select'] = false; |
|
| 72 | - } else { |
|
| 73 | - $select = ($table == 'spip_rubriques' ? 'id_parent' : 'id_rubrique'); |
|
| 74 | - $select .= isset($desc['field']['lang']) ? ', lang' : ''; |
|
| 75 | - $cache_quete[$connect][$table]['_select'] = $select; |
|
| 76 | - $cache_quete[$connect][$table]['_id'] = id_table_objet(objet_type($table)); |
|
| 77 | - } |
|
| 78 | - } |
|
| 79 | - if ($cache_quete[$connect][$table]['_select']) { |
|
| 80 | - $cache_quete[$connect][$table][$id] = sql_fetsel( |
|
| 81 | - $cache_quete[$connect][$table]['_select'], |
|
| 82 | - $table, |
|
| 83 | - $cache_quete[$connect][$table]['_id'] . '=' . intval($id), |
|
| 84 | - '', |
|
| 85 | - '', |
|
| 86 | - '', |
|
| 87 | - '', |
|
| 88 | - $connect |
|
| 89 | - ); |
|
| 90 | - } |
|
| 91 | - } |
|
| 92 | - |
|
| 93 | - return $cache_quete[$connect][$table][$id] ?? null; |
|
| 59 | + static $cache_quete = []; |
|
| 60 | + |
|
| 61 | + if (!isset($cache_quete[$connect][$table][$id])) { |
|
| 62 | + if (!isset($cache_quete[$connect][$table]['_select'])) { |
|
| 63 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 64 | + if ( |
|
| 65 | + !$desc = $trouver_table( |
|
| 66 | + $table, |
|
| 67 | + $connect |
|
| 68 | + ) or !isset($desc['field']['id_rubrique']) |
|
| 69 | + ) { |
|
| 70 | + // pas de parent rubrique, on passe |
|
| 71 | + $cache_quete[$connect][$table]['_select'] = false; |
|
| 72 | + } else { |
|
| 73 | + $select = ($table == 'spip_rubriques' ? 'id_parent' : 'id_rubrique'); |
|
| 74 | + $select .= isset($desc['field']['lang']) ? ', lang' : ''; |
|
| 75 | + $cache_quete[$connect][$table]['_select'] = $select; |
|
| 76 | + $cache_quete[$connect][$table]['_id'] = id_table_objet(objet_type($table)); |
|
| 77 | + } |
|
| 78 | + } |
|
| 79 | + if ($cache_quete[$connect][$table]['_select']) { |
|
| 80 | + $cache_quete[$connect][$table][$id] = sql_fetsel( |
|
| 81 | + $cache_quete[$connect][$table]['_select'], |
|
| 82 | + $table, |
|
| 83 | + $cache_quete[$connect][$table]['_id'] . '=' . intval($id), |
|
| 84 | + '', |
|
| 85 | + '', |
|
| 86 | + '', |
|
| 87 | + '', |
|
| 88 | + $connect |
|
| 89 | + ); |
|
| 90 | + } |
|
| 91 | + } |
|
| 92 | + |
|
| 93 | + return $cache_quete[$connect][$table][$id] ?? null; |
|
| 94 | 94 | } |
| 95 | 95 | |
| 96 | 96 | |
@@ -107,11 +107,11 @@ discard block |
||
| 107 | 107 | * @return int |
| 108 | 108 | */ |
| 109 | 109 | function quete_parent($id_rubrique, string $connect = '') { |
| 110 | - if (!$id_rubrique = intval($id_rubrique)) { |
|
| 111 | - return 0; |
|
| 112 | - } |
|
| 113 | - $id_parent = quete_parent_lang('spip_rubriques', $id_rubrique, $connect); |
|
| 114 | - return $id_parent ? $id_parent['id_parent'] : 0; |
|
| 110 | + if (!$id_rubrique = intval($id_rubrique)) { |
|
| 111 | + return 0; |
|
| 112 | + } |
|
| 113 | + $id_parent = quete_parent_lang('spip_rubriques', $id_rubrique, $connect); |
|
| 114 | + return $id_parent ? $id_parent['id_parent'] : 0; |
|
| 115 | 115 | } |
| 116 | 116 | |
| 117 | 117 | /** |
@@ -127,9 +127,9 @@ discard block |
||
| 127 | 127 | * @return int |
| 128 | 128 | */ |
| 129 | 129 | function quete_rubrique($id_article, $serveur) { |
| 130 | - $id_parent = quete_parent_lang('spip_articles', $id_article, $serveur); |
|
| 130 | + $id_parent = quete_parent_lang('spip_articles', $id_article, $serveur); |
|
| 131 | 131 | |
| 132 | - return $id_parent['id_rubrique'] ?? 0; |
|
| 132 | + return $id_parent['id_rubrique'] ?? 0; |
|
| 133 | 133 | } |
| 134 | 134 | |
| 135 | 135 | |
@@ -143,13 +143,13 @@ discard block |
||
| 143 | 143 | * @return int |
| 144 | 144 | */ |
| 145 | 145 | function quete_profondeur($id, string $connect = '') { |
| 146 | - $n = 0; |
|
| 147 | - while ($id) { |
|
| 148 | - $n++; |
|
| 149 | - $id = quete_parent($id, $connect); |
|
| 150 | - } |
|
| 146 | + $n = 0; |
|
| 147 | + while ($id) { |
|
| 148 | + $n++; |
|
| 149 | + $id = quete_parent($id, $connect); |
|
| 150 | + } |
|
| 151 | 151 | |
| 152 | - return $n; |
|
| 152 | + return $n; |
|
| 153 | 153 | } |
| 154 | 154 | |
| 155 | 155 | |
@@ -165,15 +165,15 @@ discard block |
||
| 165 | 165 | * Morceau de la requête SQL testant la date |
| 166 | 166 | */ |
| 167 | 167 | function quete_condition_postdates($champ_date, $serveur = '', $ignore_previsu = false) { |
| 168 | - if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) { |
|
| 169 | - return '1=1'; |
|
| 170 | - } |
|
| 171 | - |
|
| 172 | - return |
|
| 173 | - (isset($GLOBALS['meta']['date_prochain_postdate']) |
|
| 174 | - and $GLOBALS['meta']['date_prochain_postdate'] > time()) |
|
| 175 | - ? "$champ_date<" . sql_quote(date('Y-m-d H:i:s', $GLOBALS['meta']['date_prochain_postdate']), $serveur) |
|
| 176 | - : '1=1'; |
|
| 168 | + if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) { |
|
| 169 | + return '1=1'; |
|
| 170 | + } |
|
| 171 | + |
|
| 172 | + return |
|
| 173 | + (isset($GLOBALS['meta']['date_prochain_postdate']) |
|
| 174 | + and $GLOBALS['meta']['date_prochain_postdate'] > time()) |
|
| 175 | + ? "$champ_date<" . sql_quote(date('Y-m-d H:i:s', $GLOBALS['meta']['date_prochain_postdate']), $serveur) |
|
| 176 | + : '1=1'; |
|
| 177 | 177 | } |
| 178 | 178 | |
| 179 | 179 | |
@@ -193,101 +193,101 @@ discard block |
||
| 193 | 193 | * @return array|string |
| 194 | 194 | */ |
| 195 | 195 | function quete_condition_statut($mstatut, $previsu, $publie, $serveur = '', $ignore_previsu = false) { |
| 196 | - static $cond = []; |
|
| 197 | - $key = func_get_args(); |
|
| 198 | - $key = implode('-', $key); |
|
| 199 | - if (isset($cond[$key])) { |
|
| 200 | - return $cond[$key]; |
|
| 201 | - } |
|
| 202 | - |
|
| 203 | - $liste_statuts = $publie; |
|
| 204 | - if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) { |
|
| 205 | - $liste_statuts = $previsu; |
|
| 206 | - } |
|
| 207 | - $not = false; |
|
| 208 | - if (strncmp($liste_statuts, '!', 1) == 0) { |
|
| 209 | - $not = true; |
|
| 210 | - $liste_statuts = substr($liste_statuts, 1); |
|
| 211 | - } |
|
| 212 | - // '' => ne rien afficher, '!'=> ne rien filtrer |
|
| 213 | - if (!strlen($liste_statuts)) { |
|
| 214 | - return $cond[$key] = ($not ? '1=1' : '0=1'); |
|
| 215 | - } |
|
| 216 | - |
|
| 217 | - $liste_statuts = explode(',', $liste_statuts); |
|
| 218 | - $where = []; |
|
| 219 | - foreach ($liste_statuts as $k => $v) { |
|
| 220 | - // filtrage /auteur pour limiter les objets d'un statut (prepa en general) |
|
| 221 | - // a ceux de l'auteur identifie |
|
| 222 | - if (strpos($v, '/') !== false) { |
|
| 223 | - $v = explode('/', $v); |
|
| 224 | - $filtre = end($v); |
|
| 225 | - $v = reset($v); |
|
| 226 | - $v = preg_replace(',\W,', '', $v); |
|
| 227 | - if ( |
|
| 228 | - $filtre == 'auteur' |
|
| 229 | - and (strpos($mstatut, '.') !== false) |
|
| 230 | - and $objet = explode('.', $mstatut) |
|
| 231 | - and $id_table = reset($objet) |
|
| 232 | - and $objet = objet_type($id_table) |
|
| 233 | - ) { |
|
| 234 | - $w = "$mstatut<>" . sql_quote($v); |
|
| 235 | - |
|
| 236 | - // retrouver l’id_auteur qui a filé un lien de prévisu éventuellement, |
|
| 237 | - // sinon l’auteur en session |
|
| 238 | - include_spip('inc/securiser_action'); |
|
| 239 | - if ($desc = decrire_token_previsu()) { |
|
| 240 | - $id_auteur = $desc['id_auteur']; |
|
| 241 | - } elseif (isset($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 242 | - $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur']); |
|
| 243 | - } else { |
|
| 244 | - $id_auteur = null; |
|
| 245 | - } |
|
| 246 | - |
|
| 247 | - // dans ce cas (admin en general), pas de filtrage sur ce statut |
|
| 248 | - if (!autoriser('previsualiser' . $v, $objet, '', $id_auteur)) { |
|
| 249 | - // si pas d'auteur identifie pas de sous-requete car pas d'article qui matche |
|
| 250 | - if (!$id_auteur) { |
|
| 251 | - $where[] = $w; |
|
| 252 | - } else { |
|
| 253 | - $primary = id_table_objet($objet); |
|
| 254 | - $where[] = "($w OR $id_table.$primary IN (" . sql_get_select( |
|
| 255 | - 'ssss.id_objet', |
|
| 256 | - 'spip_auteurs_liens AS ssss', |
|
| 257 | - 'ssss.objet=' . sql_quote($objet) . ' AND ssss.id_auteur=' . intval($id_auteur), |
|
| 258 | - '', |
|
| 259 | - '', |
|
| 260 | - '', |
|
| 261 | - '', |
|
| 262 | - $serveur |
|
| 263 | - ) . '))'; |
|
| 264 | - } |
|
| 265 | - } |
|
| 266 | - } // ignorer ce statut si on ne sait pas comment le filtrer |
|
| 267 | - else { |
|
| 268 | - $v = ''; |
|
| 269 | - } |
|
| 270 | - } |
|
| 271 | - // securite |
|
| 272 | - $liste_statuts[$k] = preg_replace(',\W,', '', $v); |
|
| 273 | - } |
|
| 274 | - $liste_statuts = array_filter($liste_statuts); |
|
| 275 | - if (count($liste_statuts) == 1) { |
|
| 276 | - $where[] = ['=', $mstatut, sql_quote(reset($liste_statuts), $serveur)]; |
|
| 277 | - } else { |
|
| 278 | - $where[] = sql_in($mstatut, $liste_statuts, $not, $serveur); |
|
| 279 | - } |
|
| 280 | - |
|
| 281 | - while (count($where) > 1) { |
|
| 282 | - $and = ['AND', array_pop($where), array_pop($where)]; |
|
| 283 | - $where[] = $and; |
|
| 284 | - } |
|
| 285 | - $cond[$key] = reset($where); |
|
| 286 | - if ($not) { |
|
| 287 | - $cond[$key] = ['NOT', $cond[$key]]; |
|
| 288 | - } |
|
| 289 | - |
|
| 290 | - return $cond[$key]; |
|
| 196 | + static $cond = []; |
|
| 197 | + $key = func_get_args(); |
|
| 198 | + $key = implode('-', $key); |
|
| 199 | + if (isset($cond[$key])) { |
|
| 200 | + return $cond[$key]; |
|
| 201 | + } |
|
| 202 | + |
|
| 203 | + $liste_statuts = $publie; |
|
| 204 | + if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) { |
|
| 205 | + $liste_statuts = $previsu; |
|
| 206 | + } |
|
| 207 | + $not = false; |
|
| 208 | + if (strncmp($liste_statuts, '!', 1) == 0) { |
|
| 209 | + $not = true; |
|
| 210 | + $liste_statuts = substr($liste_statuts, 1); |
|
| 211 | + } |
|
| 212 | + // '' => ne rien afficher, '!'=> ne rien filtrer |
|
| 213 | + if (!strlen($liste_statuts)) { |
|
| 214 | + return $cond[$key] = ($not ? '1=1' : '0=1'); |
|
| 215 | + } |
|
| 216 | + |
|
| 217 | + $liste_statuts = explode(',', $liste_statuts); |
|
| 218 | + $where = []; |
|
| 219 | + foreach ($liste_statuts as $k => $v) { |
|
| 220 | + // filtrage /auteur pour limiter les objets d'un statut (prepa en general) |
|
| 221 | + // a ceux de l'auteur identifie |
|
| 222 | + if (strpos($v, '/') !== false) { |
|
| 223 | + $v = explode('/', $v); |
|
| 224 | + $filtre = end($v); |
|
| 225 | + $v = reset($v); |
|
| 226 | + $v = preg_replace(',\W,', '', $v); |
|
| 227 | + if ( |
|
| 228 | + $filtre == 'auteur' |
|
| 229 | + and (strpos($mstatut, '.') !== false) |
|
| 230 | + and $objet = explode('.', $mstatut) |
|
| 231 | + and $id_table = reset($objet) |
|
| 232 | + and $objet = objet_type($id_table) |
|
| 233 | + ) { |
|
| 234 | + $w = "$mstatut<>" . sql_quote($v); |
|
| 235 | + |
|
| 236 | + // retrouver l’id_auteur qui a filé un lien de prévisu éventuellement, |
|
| 237 | + // sinon l’auteur en session |
|
| 238 | + include_spip('inc/securiser_action'); |
|
| 239 | + if ($desc = decrire_token_previsu()) { |
|
| 240 | + $id_auteur = $desc['id_auteur']; |
|
| 241 | + } elseif (isset($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 242 | + $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur']); |
|
| 243 | + } else { |
|
| 244 | + $id_auteur = null; |
|
| 245 | + } |
|
| 246 | + |
|
| 247 | + // dans ce cas (admin en general), pas de filtrage sur ce statut |
|
| 248 | + if (!autoriser('previsualiser' . $v, $objet, '', $id_auteur)) { |
|
| 249 | + // si pas d'auteur identifie pas de sous-requete car pas d'article qui matche |
|
| 250 | + if (!$id_auteur) { |
|
| 251 | + $where[] = $w; |
|
| 252 | + } else { |
|
| 253 | + $primary = id_table_objet($objet); |
|
| 254 | + $where[] = "($w OR $id_table.$primary IN (" . sql_get_select( |
|
| 255 | + 'ssss.id_objet', |
|
| 256 | + 'spip_auteurs_liens AS ssss', |
|
| 257 | + 'ssss.objet=' . sql_quote($objet) . ' AND ssss.id_auteur=' . intval($id_auteur), |
|
| 258 | + '', |
|
| 259 | + '', |
|
| 260 | + '', |
|
| 261 | + '', |
|
| 262 | + $serveur |
|
| 263 | + ) . '))'; |
|
| 264 | + } |
|
| 265 | + } |
|
| 266 | + } // ignorer ce statut si on ne sait pas comment le filtrer |
|
| 267 | + else { |
|
| 268 | + $v = ''; |
|
| 269 | + } |
|
| 270 | + } |
|
| 271 | + // securite |
|
| 272 | + $liste_statuts[$k] = preg_replace(',\W,', '', $v); |
|
| 273 | + } |
|
| 274 | + $liste_statuts = array_filter($liste_statuts); |
|
| 275 | + if (count($liste_statuts) == 1) { |
|
| 276 | + $where[] = ['=', $mstatut, sql_quote(reset($liste_statuts), $serveur)]; |
|
| 277 | + } else { |
|
| 278 | + $where[] = sql_in($mstatut, $liste_statuts, $not, $serveur); |
|
| 279 | + } |
|
| 280 | + |
|
| 281 | + while (count($where) > 1) { |
|
| 282 | + $and = ['AND', array_pop($where), array_pop($where)]; |
|
| 283 | + $where[] = $and; |
|
| 284 | + } |
|
| 285 | + $cond[$key] = reset($where); |
|
| 286 | + if ($not) { |
|
| 287 | + $cond[$key] = ['NOT', $cond[$key]]; |
|
| 288 | + } |
|
| 289 | + |
|
| 290 | + return $cond[$key]; |
|
| 291 | 291 | } |
| 292 | 292 | |
| 293 | 293 | /** |
@@ -298,7 +298,7 @@ discard block |
||
| 298 | 298 | * @return array|bool|null |
| 299 | 299 | */ |
| 300 | 300 | function quete_fichier($id_document, $serveur = '') { |
| 301 | - return sql_getfetsel('fichier', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur); |
|
| 301 | + return sql_getfetsel('fichier', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur); |
|
| 302 | 302 | } |
| 303 | 303 | |
| 304 | 304 | /** |
@@ -309,7 +309,7 @@ discard block |
||
| 309 | 309 | * @return array|bool |
| 310 | 310 | */ |
| 311 | 311 | function quete_document($id_document, $serveur = '') { |
| 312 | - return sql_fetsel('*', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur); |
|
| 312 | + return sql_fetsel('*', 'spip_documents', ('id_document=' . intval($id_document)), '', [], '', '', $serveur); |
|
| 313 | 313 | } |
| 314 | 314 | |
| 315 | 315 | /** |
@@ -320,7 +320,7 @@ discard block |
||
| 320 | 320 | * @return array|bool|null |
| 321 | 321 | */ |
| 322 | 322 | function quete_meta($nom, $serveur) { |
| 323 | - return sql_getfetsel('valeur', 'spip_meta', 'nom=' . sql_quote($nom), '', '', '', '', $serveur); |
|
| 323 | + return sql_getfetsel('valeur', 'spip_meta', 'nom=' . sql_quote($nom), '', '', '', '', $serveur); |
|
| 324 | 324 | } |
| 325 | 325 | |
| 326 | 326 | /** |
@@ -346,72 +346,72 @@ discard block |
||
| 346 | 346 | * Retourne soit un tableau, soit le chemin du fichier. |
| 347 | 347 | */ |
| 348 | 348 | function quete_logo($cle_objet, $onoff, $id, $id_rubrique, $flag = false) { |
| 349 | - include_spip('base/objets'); |
|
| 350 | - $nom = strtolower($onoff); |
|
| 351 | - |
|
| 352 | - $cle_objet = id_table_objet($cle_objet); |
|
| 353 | - |
|
| 354 | - while (1) { |
|
| 355 | - $objet = objet_type($cle_objet); |
|
| 356 | - |
|
| 357 | - $on = quete_logo_objet($id, $objet, $nom); |
|
| 358 | - |
|
| 359 | - if ($on) { |
|
| 360 | - if ($flag) { |
|
| 361 | - return $on['fichier']; |
|
| 362 | - } else { |
|
| 363 | - $taille = @spip_getimagesize($on['chemin']); |
|
| 364 | - |
|
| 365 | - // Si on a déjà demandé un survol directement ($onoff = off) |
|
| 366 | - // ou qu'on a demandé uniquement le normal ($onoff = on) |
|
| 367 | - // alors on ne cherche pas du tout le survol ici |
|
| 368 | - if ($onoff != 'ON') { |
|
| 369 | - $off = ''; |
|
| 370 | - } else { |
|
| 371 | - // Sinon, c'est qu'on demande normal ET survol à la fois, donc on cherche maintenant le survol |
|
| 372 | - $off = quete_logo_objet($id, $objet, 'off'); |
|
| 373 | - } |
|
| 374 | - |
|
| 375 | - // on retourne une url du type IMG/artonXX?timestamp |
|
| 376 | - // qui permet de distinguer le changement de logo |
|
| 377 | - // et placer un expire sur le dossier IMG/ |
|
| 378 | - $res = [ |
|
| 379 | - $on['chemin'] . ($on['timestamp'] ? "?{$on['timestamp']}" : ''), |
|
| 380 | - ($off ? $off['chemin'] . ($off['timestamp'] ? "?{$off['timestamp']}" : '') : ''), |
|
| 381 | - (!$taille ? '' : (' ' . $taille[3])) |
|
| 382 | - ]; |
|
| 383 | - $res['src'] = $res[0]; |
|
| 384 | - $res['logo_on'] = $res[0]; |
|
| 385 | - $res['logo_off'] = $res[1]; |
|
| 386 | - $res['width'] = ($taille ? $taille[0] : ''); |
|
| 387 | - $res['height'] = ($taille ? $taille[1] : ''); |
|
| 388 | - $res['fichier'] = $on['fichier']; |
|
| 389 | - $res['titre'] = ($on['titre'] ?? ''); |
|
| 390 | - $res['descriptif'] = ($on['descriptif'] ?? ''); |
|
| 391 | - $res['credits'] = ($on['credits'] ?? ''); |
|
| 392 | - $res['alt'] = ($on['alt'] ?? ''); |
|
| 393 | - $res['id'] = ($on['id_document'] ?? 0); |
|
| 394 | - |
|
| 395 | - return $res; |
|
| 396 | - } |
|
| 397 | - } else { |
|
| 398 | - if (defined('_LOGO_RUBRIQUE_DESACTIVER_HERITAGE')) { |
|
| 399 | - return ''; |
|
| 400 | - } else { |
|
| 401 | - if ($id_rubrique) { |
|
| 402 | - $cle_objet = 'id_rubrique'; |
|
| 403 | - $id = $id_rubrique; |
|
| 404 | - $id_rubrique = 0; |
|
| 405 | - } else { |
|
| 406 | - if ($id and $cle_objet == 'id_rubrique') { |
|
| 407 | - $id = quete_parent($id); |
|
| 408 | - } else { |
|
| 409 | - return ''; |
|
| 410 | - } |
|
| 411 | - } |
|
| 412 | - } |
|
| 413 | - } |
|
| 414 | - } |
|
| 349 | + include_spip('base/objets'); |
|
| 350 | + $nom = strtolower($onoff); |
|
| 351 | + |
|
| 352 | + $cle_objet = id_table_objet($cle_objet); |
|
| 353 | + |
|
| 354 | + while (1) { |
|
| 355 | + $objet = objet_type($cle_objet); |
|
| 356 | + |
|
| 357 | + $on = quete_logo_objet($id, $objet, $nom); |
|
| 358 | + |
|
| 359 | + if ($on) { |
|
| 360 | + if ($flag) { |
|
| 361 | + return $on['fichier']; |
|
| 362 | + } else { |
|
| 363 | + $taille = @spip_getimagesize($on['chemin']); |
|
| 364 | + |
|
| 365 | + // Si on a déjà demandé un survol directement ($onoff = off) |
|
| 366 | + // ou qu'on a demandé uniquement le normal ($onoff = on) |
|
| 367 | + // alors on ne cherche pas du tout le survol ici |
|
| 368 | + if ($onoff != 'ON') { |
|
| 369 | + $off = ''; |
|
| 370 | + } else { |
|
| 371 | + // Sinon, c'est qu'on demande normal ET survol à la fois, donc on cherche maintenant le survol |
|
| 372 | + $off = quete_logo_objet($id, $objet, 'off'); |
|
| 373 | + } |
|
| 374 | + |
|
| 375 | + // on retourne une url du type IMG/artonXX?timestamp |
|
| 376 | + // qui permet de distinguer le changement de logo |
|
| 377 | + // et placer un expire sur le dossier IMG/ |
|
| 378 | + $res = [ |
|
| 379 | + $on['chemin'] . ($on['timestamp'] ? "?{$on['timestamp']}" : ''), |
|
| 380 | + ($off ? $off['chemin'] . ($off['timestamp'] ? "?{$off['timestamp']}" : '') : ''), |
|
| 381 | + (!$taille ? '' : (' ' . $taille[3])) |
|
| 382 | + ]; |
|
| 383 | + $res['src'] = $res[0]; |
|
| 384 | + $res['logo_on'] = $res[0]; |
|
| 385 | + $res['logo_off'] = $res[1]; |
|
| 386 | + $res['width'] = ($taille ? $taille[0] : ''); |
|
| 387 | + $res['height'] = ($taille ? $taille[1] : ''); |
|
| 388 | + $res['fichier'] = $on['fichier']; |
|
| 389 | + $res['titre'] = ($on['titre'] ?? ''); |
|
| 390 | + $res['descriptif'] = ($on['descriptif'] ?? ''); |
|
| 391 | + $res['credits'] = ($on['credits'] ?? ''); |
|
| 392 | + $res['alt'] = ($on['alt'] ?? ''); |
|
| 393 | + $res['id'] = ($on['id_document'] ?? 0); |
|
| 394 | + |
|
| 395 | + return $res; |
|
| 396 | + } |
|
| 397 | + } else { |
|
| 398 | + if (defined('_LOGO_RUBRIQUE_DESACTIVER_HERITAGE')) { |
|
| 399 | + return ''; |
|
| 400 | + } else { |
|
| 401 | + if ($id_rubrique) { |
|
| 402 | + $cle_objet = 'id_rubrique'; |
|
| 403 | + $id = $id_rubrique; |
|
| 404 | + $id_rubrique = 0; |
|
| 405 | + } else { |
|
| 406 | + if ($id and $cle_objet == 'id_rubrique') { |
|
| 407 | + $id = quete_parent($id); |
|
| 408 | + } else { |
|
| 409 | + return ''; |
|
| 410 | + } |
|
| 411 | + } |
|
| 412 | + } |
|
| 413 | + } |
|
| 414 | + } |
|
| 415 | 415 | } |
| 416 | 416 | |
| 417 | 417 | /** |
@@ -426,43 +426,43 @@ discard block |
||
| 426 | 426 | * @return bool|array |
| 427 | 427 | **/ |
| 428 | 428 | function quete_logo_objet($id_objet, $objet, $mode) { |
| 429 | - static $chercher_logo; |
|
| 430 | - if (is_null($chercher_logo)) { |
|
| 431 | - $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 432 | - } |
|
| 433 | - $cle_objet = id_table_objet($objet); |
|
| 434 | - |
|
| 435 | - // On cherche pas la méthode classique |
|
| 436 | - $infos_logo = $chercher_logo($id_objet, $cle_objet, $mode); |
|
| 437 | - |
|
| 438 | - // Si la méthode classique a trouvé quelque chose, on utilise le nouveau format |
|
| 439 | - if (!empty($infos_logo)) { |
|
| 440 | - $infos = [ |
|
| 441 | - 'chemin' => $infos_logo[0], |
|
| 442 | - 'timestamp' => $infos_logo[4], |
|
| 443 | - 'id_document' => ($infos_logo[5]['id_document'] ?? ''), |
|
| 444 | - ]; |
|
| 445 | - foreach (['fichier', 'titre', 'descriptif', 'credits', 'alt'] as $champ) { |
|
| 446 | - $infos[$champ] = ($infos_logo[5][$champ] ?? ''); |
|
| 447 | - } |
|
| 448 | - $infos_logo = $infos; |
|
| 449 | - } |
|
| 450 | - |
|
| 451 | - // On passe cette recherche de logo dans un pipeline |
|
| 452 | - $infos_logo = pipeline( |
|
| 453 | - 'quete_logo_objet', |
|
| 454 | - [ |
|
| 455 | - 'args' => [ |
|
| 456 | - 'id_objet' => $id_objet, |
|
| 457 | - 'objet' => $objet, |
|
| 458 | - 'cle_objet' => $cle_objet, |
|
| 459 | - 'mode' => $mode, |
|
| 460 | - ], |
|
| 461 | - 'data' => $infos_logo, |
|
| 462 | - ] |
|
| 463 | - ); |
|
| 464 | - |
|
| 465 | - return $infos_logo; |
|
| 429 | + static $chercher_logo; |
|
| 430 | + if (is_null($chercher_logo)) { |
|
| 431 | + $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 432 | + } |
|
| 433 | + $cle_objet = id_table_objet($objet); |
|
| 434 | + |
|
| 435 | + // On cherche pas la méthode classique |
|
| 436 | + $infos_logo = $chercher_logo($id_objet, $cle_objet, $mode); |
|
| 437 | + |
|
| 438 | + // Si la méthode classique a trouvé quelque chose, on utilise le nouveau format |
|
| 439 | + if (!empty($infos_logo)) { |
|
| 440 | + $infos = [ |
|
| 441 | + 'chemin' => $infos_logo[0], |
|
| 442 | + 'timestamp' => $infos_logo[4], |
|
| 443 | + 'id_document' => ($infos_logo[5]['id_document'] ?? ''), |
|
| 444 | + ]; |
|
| 445 | + foreach (['fichier', 'titre', 'descriptif', 'credits', 'alt'] as $champ) { |
|
| 446 | + $infos[$champ] = ($infos_logo[5][$champ] ?? ''); |
|
| 447 | + } |
|
| 448 | + $infos_logo = $infos; |
|
| 449 | + } |
|
| 450 | + |
|
| 451 | + // On passe cette recherche de logo dans un pipeline |
|
| 452 | + $infos_logo = pipeline( |
|
| 453 | + 'quete_logo_objet', |
|
| 454 | + [ |
|
| 455 | + 'args' => [ |
|
| 456 | + 'id_objet' => $id_objet, |
|
| 457 | + 'objet' => $objet, |
|
| 458 | + 'cle_objet' => $cle_objet, |
|
| 459 | + 'mode' => $mode, |
|
| 460 | + ], |
|
| 461 | + 'data' => $infos_logo, |
|
| 462 | + ] |
|
| 463 | + ); |
|
| 464 | + |
|
| 465 | + return $infos_logo; |
|
| 466 | 466 | } |
| 467 | 467 | |
| 468 | 468 | /** |
@@ -475,25 +475,25 @@ discard block |
||
| 475 | 475 | * @return bool|string |
| 476 | 476 | */ |
| 477 | 477 | function quete_logo_file($row, $connect = null) { |
| 478 | - include_spip('inc/documents'); |
|
| 479 | - $logo = vignette_logo_document($row, $connect); |
|
| 480 | - if (!$logo) { |
|
| 481 | - $logo = image_du_document($row, $connect); |
|
| 482 | - } |
|
| 483 | - if (!$logo) { |
|
| 484 | - $f = charger_fonction('vignette', 'inc'); |
|
| 485 | - $logo = $f($row['extension'], false); |
|
| 486 | - } |
|
| 487 | - // si c'est une vignette type doc, la renvoyer direct |
|
| 488 | - if ( |
|
| 489 | - strcmp($logo, _DIR_PLUGINS) == 0 |
|
| 490 | - or strcmp($logo, _DIR_PLUGINS_DIST) == 0 |
|
| 491 | - or strcmp($logo, _DIR_RACINE . 'prive/') == 0 |
|
| 492 | - ) { |
|
| 493 | - return $logo; |
|
| 494 | - } |
|
| 495 | - |
|
| 496 | - return get_spip_doc($logo); |
|
| 478 | + include_spip('inc/documents'); |
|
| 479 | + $logo = vignette_logo_document($row, $connect); |
|
| 480 | + if (!$logo) { |
|
| 481 | + $logo = image_du_document($row, $connect); |
|
| 482 | + } |
|
| 483 | + if (!$logo) { |
|
| 484 | + $f = charger_fonction('vignette', 'inc'); |
|
| 485 | + $logo = $f($row['extension'], false); |
|
| 486 | + } |
|
| 487 | + // si c'est une vignette type doc, la renvoyer direct |
|
| 488 | + if ( |
|
| 489 | + strcmp($logo, _DIR_PLUGINS) == 0 |
|
| 490 | + or strcmp($logo, _DIR_PLUGINS_DIST) == 0 |
|
| 491 | + or strcmp($logo, _DIR_RACINE . 'prive/') == 0 |
|
| 492 | + ) { |
|
| 493 | + return $logo; |
|
| 494 | + } |
|
| 495 | + |
|
| 496 | + return get_spip_doc($logo); |
|
| 497 | 497 | } |
| 498 | 498 | |
| 499 | 499 | /** |
@@ -521,20 +521,20 @@ discard block |
||
| 521 | 521 | */ |
| 522 | 522 | function quete_logo_document($row, $lien, $align, $mode_logo, $x, $y, string $connect = '') { |
| 523 | 523 | |
| 524 | - include_spip('inc/documents'); |
|
| 525 | - $logo = ''; |
|
| 526 | - if (!in_array($mode_logo, ['icone', 'apercu'])) { |
|
| 527 | - $logo = vignette_logo_document($row, $connect); |
|
| 528 | - } |
|
| 529 | - // si on veut explicitement la vignette, ne rien renvoyer si il n'y en a pas |
|
| 530 | - if ($mode_logo == 'vignette' and !$logo) { |
|
| 531 | - return ''; |
|
| 532 | - } |
|
| 533 | - if ($mode_logo == 'icone') { |
|
| 534 | - $row['fichier'] = ''; |
|
| 535 | - } |
|
| 536 | - |
|
| 537 | - return vignette_automatique($logo, $row, $lien, $x, $y, $align, null, $connect); |
|
| 524 | + include_spip('inc/documents'); |
|
| 525 | + $logo = ''; |
|
| 526 | + if (!in_array($mode_logo, ['icone', 'apercu'])) { |
|
| 527 | + $logo = vignette_logo_document($row, $connect); |
|
| 528 | + } |
|
| 529 | + // si on veut explicitement la vignette, ne rien renvoyer si il n'y en a pas |
|
| 530 | + if ($mode_logo == 'vignette' and !$logo) { |
|
| 531 | + return ''; |
|
| 532 | + } |
|
| 533 | + if ($mode_logo == 'icone') { |
|
| 534 | + $row['fichier'] = ''; |
|
| 535 | + } |
|
| 536 | + |
|
| 537 | + return vignette_automatique($logo, $row, $lien, $x, $y, $align, null, $connect); |
|
| 538 | 538 | } |
| 539 | 539 | |
| 540 | 540 | /** |
@@ -546,26 +546,26 @@ discard block |
||
| 546 | 546 | */ |
| 547 | 547 | function quete_html_logo($logo, $align, $lien) { |
| 548 | 548 | |
| 549 | - if (!is_array($logo)) { |
|
| 550 | - return ''; |
|
| 551 | - } |
|
| 552 | - |
|
| 553 | - $contexte = []; |
|
| 554 | - foreach ($logo as $k => $v) { |
|
| 555 | - if (!is_numeric($k)) { |
|
| 556 | - $contexte[$k] = $v; |
|
| 557 | - } |
|
| 558 | - } |
|
| 559 | - |
|
| 560 | - foreach (['titre', 'descriptif', 'credits', 'alt'] as $champ) { |
|
| 561 | - if (!empty($contexte[$champ])) { |
|
| 562 | - $contexte[$champ] = appliquer_traitement_champ($contexte[$champ] , $champ, 'document'); |
|
| 563 | - } |
|
| 564 | - } |
|
| 565 | - |
|
| 566 | - $contexte['align'] = $align; |
|
| 567 | - $contexte['lien'] = $lien; |
|
| 568 | - return recuperer_fond('modeles/logo', $contexte); |
|
| 549 | + if (!is_array($logo)) { |
|
| 550 | + return ''; |
|
| 551 | + } |
|
| 552 | + |
|
| 553 | + $contexte = []; |
|
| 554 | + foreach ($logo as $k => $v) { |
|
| 555 | + if (!is_numeric($k)) { |
|
| 556 | + $contexte[$k] = $v; |
|
| 557 | + } |
|
| 558 | + } |
|
| 559 | + |
|
| 560 | + foreach (['titre', 'descriptif', 'credits', 'alt'] as $champ) { |
|
| 561 | + if (!empty($contexte[$champ])) { |
|
| 562 | + $contexte[$champ] = appliquer_traitement_champ($contexte[$champ] , $champ, 'document'); |
|
| 563 | + } |
|
| 564 | + } |
|
| 565 | + |
|
| 566 | + $contexte['align'] = $align; |
|
| 567 | + $contexte['lien'] = $lien; |
|
| 568 | + return recuperer_fond('modeles/logo', $contexte); |
|
| 569 | 569 | } |
| 570 | 570 | |
| 571 | 571 | /** |
@@ -579,14 +579,14 @@ discard block |
||
| 579 | 579 | * @return string|false |
| 580 | 580 | */ |
| 581 | 581 | function document_spip_externe($fichier, $connect) { |
| 582 | - if ($connect) { |
|
| 583 | - $site = quete_meta('adresse_site', $connect); |
|
| 584 | - if ($site) { |
|
| 585 | - $dir = quete_meta('dir_img', $connect); |
|
| 586 | - return "$site/$dir$fichier"; |
|
| 587 | - } |
|
| 588 | - } |
|
| 589 | - return false; |
|
| 582 | + if ($connect) { |
|
| 583 | + $site = quete_meta('adresse_site', $connect); |
|
| 584 | + if ($site) { |
|
| 585 | + $dir = quete_meta('dir_img', $connect); |
|
| 586 | + return "$site/$dir$fichier"; |
|
| 587 | + } |
|
| 588 | + } |
|
| 589 | + return false; |
|
| 590 | 590 | } |
| 591 | 591 | |
| 592 | 592 | /** |
@@ -600,23 +600,23 @@ discard block |
||
| 600 | 600 | */ |
| 601 | 601 | function vignette_logo_document($row, string $connect = '') { |
| 602 | 602 | |
| 603 | - if (!$row or empty($row['id_vignette'])) { |
|
| 604 | - return ''; |
|
| 605 | - } |
|
| 606 | - $fichier = quete_fichier($row['id_vignette'], $connect); |
|
| 607 | - if ($url = document_spip_externe($fichier, $connect)) { |
|
| 608 | - return $url; |
|
| 609 | - } |
|
| 610 | - |
|
| 611 | - $f = get_spip_doc($fichier); |
|
| 612 | - if ($f and @file_exists($f)) { |
|
| 613 | - return $f; |
|
| 614 | - } |
|
| 615 | - if ($row['mode'] !== 'vignette') { |
|
| 616 | - return ''; |
|
| 617 | - } |
|
| 618 | - |
|
| 619 | - return generer_objet_url($row['id_document'], 'document', '', '', null, '', $connect); |
|
| 603 | + if (!$row or empty($row['id_vignette'])) { |
|
| 604 | + return ''; |
|
| 605 | + } |
|
| 606 | + $fichier = quete_fichier($row['id_vignette'], $connect); |
|
| 607 | + if ($url = document_spip_externe($fichier, $connect)) { |
|
| 608 | + return $url; |
|
| 609 | + } |
|
| 610 | + |
|
| 611 | + $f = get_spip_doc($fichier); |
|
| 612 | + if ($f and @file_exists($f)) { |
|
| 613 | + return $f; |
|
| 614 | + } |
|
| 615 | + if ($row['mode'] !== 'vignette') { |
|
| 616 | + return ''; |
|
| 617 | + } |
|
| 618 | + |
|
| 619 | + return generer_objet_url($row['id_document'], 'document', '', '', null, '', $connect); |
|
| 620 | 620 | } |
| 621 | 621 | |
| 622 | 622 | /** |
@@ -632,66 +632,66 @@ discard block |
||
| 632 | 632 | * @return bool|string |
| 633 | 633 | */ |
| 634 | 634 | function calcul_exposer($id, $prim, $reference, $parent, $type, string $connect = '') { |
| 635 | - static $exposer = []; |
|
| 636 | - |
|
| 637 | - // Que faut-il exposer ? Tous les elements de $reference |
|
| 638 | - // ainsi que leur hierarchie ; on ne fait donc ce calcul |
|
| 639 | - // qu'une fois (par squelette) et on conserve le resultat |
|
| 640 | - // en static. |
|
| 641 | - if (!isset($exposer[$m = md5(serialize($reference))][$prim])) { |
|
| 642 | - $principal = $reference[$type] ?? $reference["@$type"] ?? ''; |
|
| 643 | - // le parent fournit en argument est le parent de $id, pas celui de $principal |
|
| 644 | - // il n'est donc pas utile |
|
| 645 | - $parent = 0; |
|
| 646 | - if (!$principal) { // regarder si un enfant est dans le contexte, auquel cas il expose peut etre le parent courant |
|
| 647 | - $enfants = ['id_rubrique' => ['id_article'], 'id_groupe' => ['id_mot']]; |
|
| 648 | - if (isset($enfants[$type])) { |
|
| 649 | - foreach ($enfants[$type] as $t) { |
|
| 650 | - if ( |
|
| 651 | - isset($reference[$t]) |
|
| 652 | - // cas de la reference donnee dynamiquement par la pagination |
|
| 653 | - or isset($reference["@$t"]) |
|
| 654 | - ) { |
|
| 655 | - $type = $t; |
|
| 656 | - $principal = $reference[$type] ?? $reference["@$type"]; |
|
| 657 | - continue; |
|
| 658 | - } |
|
| 659 | - } |
|
| 660 | - } |
|
| 661 | - } |
|
| 662 | - $exposer[$m][$type] = []; |
|
| 663 | - if ($principal) { |
|
| 664 | - $principaux = is_array($principal) ? $principal : [$principal]; |
|
| 665 | - foreach ($principaux as $principal) { |
|
| 666 | - $exposer[$m][$type][$principal] = true; |
|
| 667 | - if ($type == 'id_mot') { |
|
| 668 | - if (!$parent) { |
|
| 669 | - $parent = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot=' . intval($principal), '', '', '', '', $connect); |
|
| 670 | - } |
|
| 671 | - if ($parent) { |
|
| 672 | - $exposer[$m]['id_groupe'][$parent] = true; |
|
| 673 | - } |
|
| 674 | - } else { |
|
| 675 | - if ($type != 'id_groupe') { |
|
| 676 | - if (!$parent) { |
|
| 677 | - if ($type == 'id_rubrique') { |
|
| 678 | - $parent = $principal; |
|
| 679 | - } |
|
| 680 | - if ($type == 'id_article') { |
|
| 681 | - $parent = quete_rubrique($principal, $connect); |
|
| 682 | - } |
|
| 683 | - } |
|
| 684 | - do { |
|
| 685 | - $exposer[$m]['id_rubrique'][$parent] = true; |
|
| 686 | - } while ($parent = quete_parent($parent, $connect)); |
|
| 687 | - } |
|
| 688 | - } |
|
| 689 | - } |
|
| 690 | - } |
|
| 691 | - } |
|
| 692 | - |
|
| 693 | - // And the winner is... |
|
| 694 | - return isset($exposer[$m][$prim]) ? isset($exposer[$m][$prim][$id]) : ''; |
|
| 635 | + static $exposer = []; |
|
| 636 | + |
|
| 637 | + // Que faut-il exposer ? Tous les elements de $reference |
|
| 638 | + // ainsi que leur hierarchie ; on ne fait donc ce calcul |
|
| 639 | + // qu'une fois (par squelette) et on conserve le resultat |
|
| 640 | + // en static. |
|
| 641 | + if (!isset($exposer[$m = md5(serialize($reference))][$prim])) { |
|
| 642 | + $principal = $reference[$type] ?? $reference["@$type"] ?? ''; |
|
| 643 | + // le parent fournit en argument est le parent de $id, pas celui de $principal |
|
| 644 | + // il n'est donc pas utile |
|
| 645 | + $parent = 0; |
|
| 646 | + if (!$principal) { // regarder si un enfant est dans le contexte, auquel cas il expose peut etre le parent courant |
|
| 647 | + $enfants = ['id_rubrique' => ['id_article'], 'id_groupe' => ['id_mot']]; |
|
| 648 | + if (isset($enfants[$type])) { |
|
| 649 | + foreach ($enfants[$type] as $t) { |
|
| 650 | + if ( |
|
| 651 | + isset($reference[$t]) |
|
| 652 | + // cas de la reference donnee dynamiquement par la pagination |
|
| 653 | + or isset($reference["@$t"]) |
|
| 654 | + ) { |
|
| 655 | + $type = $t; |
|
| 656 | + $principal = $reference[$type] ?? $reference["@$type"]; |
|
| 657 | + continue; |
|
| 658 | + } |
|
| 659 | + } |
|
| 660 | + } |
|
| 661 | + } |
|
| 662 | + $exposer[$m][$type] = []; |
|
| 663 | + if ($principal) { |
|
| 664 | + $principaux = is_array($principal) ? $principal : [$principal]; |
|
| 665 | + foreach ($principaux as $principal) { |
|
| 666 | + $exposer[$m][$type][$principal] = true; |
|
| 667 | + if ($type == 'id_mot') { |
|
| 668 | + if (!$parent) { |
|
| 669 | + $parent = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot=' . intval($principal), '', '', '', '', $connect); |
|
| 670 | + } |
|
| 671 | + if ($parent) { |
|
| 672 | + $exposer[$m]['id_groupe'][$parent] = true; |
|
| 673 | + } |
|
| 674 | + } else { |
|
| 675 | + if ($type != 'id_groupe') { |
|
| 676 | + if (!$parent) { |
|
| 677 | + if ($type == 'id_rubrique') { |
|
| 678 | + $parent = $principal; |
|
| 679 | + } |
|
| 680 | + if ($type == 'id_article') { |
|
| 681 | + $parent = quete_rubrique($principal, $connect); |
|
| 682 | + } |
|
| 683 | + } |
|
| 684 | + do { |
|
| 685 | + $exposer[$m]['id_rubrique'][$parent] = true; |
|
| 686 | + } while ($parent = quete_parent($parent, $connect)); |
|
| 687 | + } |
|
| 688 | + } |
|
| 689 | + } |
|
| 690 | + } |
|
| 691 | + } |
|
| 692 | + |
|
| 693 | + // And the winner is... |
|
| 694 | + return isset($exposer[$m][$prim]) ? isset($exposer[$m][$prim][$id]) : ''; |
|
| 695 | 695 | } |
| 696 | 696 | |
| 697 | 697 | /** |
@@ -706,23 +706,23 @@ discard block |
||
| 706 | 706 | * @return int |
| 707 | 707 | */ |
| 708 | 708 | function quete_debut_pagination($primary, $valeur, $pas, $iter) { |
| 709 | - // on ne devrait pas arriver ici si la cle primaire est inexistante |
|
| 710 | - // ou composee, mais verifions |
|
| 711 | - if (!$primary or preg_match('/[,\s]/', $primary)) { |
|
| 712 | - return 0; |
|
| 713 | - } |
|
| 714 | - |
|
| 715 | - $pos = 0; |
|
| 716 | - while ($row = $iter->fetch() and $row[$primary] != $valeur) { |
|
| 717 | - $pos++; |
|
| 718 | - } |
|
| 719 | - // si on a pas trouve |
|
| 720 | - if (!$row or $row[$primary] != $valeur) { |
|
| 721 | - return 0; |
|
| 722 | - } |
|
| 723 | - |
|
| 724 | - // sinon, calculer le bon numero de page |
|
| 725 | - return floor($pos / $pas) * $pas; |
|
| 709 | + // on ne devrait pas arriver ici si la cle primaire est inexistante |
|
| 710 | + // ou composee, mais verifions |
|
| 711 | + if (!$primary or preg_match('/[,\s]/', $primary)) { |
|
| 712 | + return 0; |
|
| 713 | + } |
|
| 714 | + |
|
| 715 | + $pos = 0; |
|
| 716 | + while ($row = $iter->fetch() and $row[$primary] != $valeur) { |
|
| 717 | + $pos++; |
|
| 718 | + } |
|
| 719 | + // si on a pas trouve |
|
| 720 | + if (!$row or $row[$primary] != $valeur) { |
|
| 721 | + return 0; |
|
| 722 | + } |
|
| 723 | + |
|
| 724 | + // sinon, calculer le bon numero de page |
|
| 725 | + return floor($pos / $pas) * $pas; |
|
| 726 | 726 | } |
| 727 | 727 | |
| 728 | 728 | /** |
@@ -733,11 +733,11 @@ discard block |
||
| 733 | 733 | * @return boolean |
| 734 | 734 | */ |
| 735 | 735 | function is_whereable($value): bool { |
| 736 | - if (is_array($value) && count($value)) { |
|
| 737 | - return true; |
|
| 738 | - } |
|
| 739 | - if (is_scalar($value) && strlen($value)) { |
|
| 740 | - return true; |
|
| 741 | - } |
|
| 742 | - return false; |
|
| 736 | + if (is_array($value) && count($value)) { |
|
| 737 | + return true; |
|
| 738 | + } |
|
| 739 | + if (is_scalar($value) && strlen($value)) { |
|
| 740 | + return true; |
|
| 741 | + } |
|
| 742 | + return false; |
|
| 743 | 743 | } |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | **/ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | |
@@ -49,38 +49,38 @@ discard block |
||
| 49 | 49 | */ |
| 50 | 50 | function balise_ID_LOGO__dist($p) { |
| 51 | 51 | |
| 52 | - preg_match(',^ID_LOGO_([A-Z_]+?)(|_NORMAL|_SURVOL|_RUBRIQUE)$,i', $p->nom_champ, $regs); |
|
| 53 | - $type = strtolower($regs[1]); |
|
| 54 | - $suite_logo = $regs[2]; |
|
| 55 | - |
|
| 56 | - // cas de #ID_LOGO_SITE_SPIP |
|
| 57 | - if ($type == 'site_spip') { |
|
| 58 | - $type = 'site'; |
|
| 59 | - $_id_objet = "\"'0'\""; |
|
| 60 | - } |
|
| 61 | - |
|
| 62 | - $id_objet = id_table_objet($type); |
|
| 63 | - if (!isset($_id_objet)) { |
|
| 64 | - $_id_objet = champ_sql($id_objet, $p); |
|
| 65 | - } |
|
| 66 | - |
|
| 67 | - $connect = $p->id_boucle ? $p->boucles[$p->id_boucle]->sql_serveur : ''; |
|
| 68 | - if ($type == 'document') { |
|
| 69 | - $qconnect = _q($connect); |
|
| 70 | - $doc = "quete_document($_id_objet, $qconnect)"; |
|
| 71 | - $code = "table_valeur($doc, 'id_vignette')"; |
|
| 72 | - } elseif ($connect) { |
|
| 73 | - $code = "''"; |
|
| 74 | - spip_log('Les logos distants ne sont pas prevus'); |
|
| 75 | - } else { |
|
| 76 | - $champ_logo = 'id'; |
|
| 77 | - $code = generer_code_logo($id_objet, $_id_objet, $type, '', "''", $p, $suite_logo, $champ_logo); |
|
| 78 | - } |
|
| 79 | - |
|
| 80 | - $p->code = $code; |
|
| 81 | - $p->interdire_scripts = false; |
|
| 82 | - |
|
| 83 | - return $p; |
|
| 52 | + preg_match(',^ID_LOGO_([A-Z_]+?)(|_NORMAL|_SURVOL|_RUBRIQUE)$,i', $p->nom_champ, $regs); |
|
| 53 | + $type = strtolower($regs[1]); |
|
| 54 | + $suite_logo = $regs[2]; |
|
| 55 | + |
|
| 56 | + // cas de #ID_LOGO_SITE_SPIP |
|
| 57 | + if ($type == 'site_spip') { |
|
| 58 | + $type = 'site'; |
|
| 59 | + $_id_objet = "\"'0'\""; |
|
| 60 | + } |
|
| 61 | + |
|
| 62 | + $id_objet = id_table_objet($type); |
|
| 63 | + if (!isset($_id_objet)) { |
|
| 64 | + $_id_objet = champ_sql($id_objet, $p); |
|
| 65 | + } |
|
| 66 | + |
|
| 67 | + $connect = $p->id_boucle ? $p->boucles[$p->id_boucle]->sql_serveur : ''; |
|
| 68 | + if ($type == 'document') { |
|
| 69 | + $qconnect = _q($connect); |
|
| 70 | + $doc = "quete_document($_id_objet, $qconnect)"; |
|
| 71 | + $code = "table_valeur($doc, 'id_vignette')"; |
|
| 72 | + } elseif ($connect) { |
|
| 73 | + $code = "''"; |
|
| 74 | + spip_log('Les logos distants ne sont pas prevus'); |
|
| 75 | + } else { |
|
| 76 | + $champ_logo = 'id'; |
|
| 77 | + $code = generer_code_logo($id_objet, $_id_objet, $type, '', "''", $p, $suite_logo, $champ_logo); |
|
| 78 | + } |
|
| 79 | + |
|
| 80 | + $p->code = $code; |
|
| 81 | + $p->interdire_scripts = false; |
|
| 82 | + |
|
| 83 | + return $p; |
|
| 84 | 84 | } |
| 85 | 85 | |
| 86 | 86 | /** |
@@ -109,28 +109,28 @@ discard block |
||
| 109 | 109 | * Code compilé retournant le chemin du logo ou le code HTML du logo. |
| 110 | 110 | **/ |
| 111 | 111 | function generer_code_logo($id_objet, $_id_objet, $type, $align, $_lien, $p, $suite, string $champ = ''): string { |
| 112 | - $onoff = 'ON'; |
|
| 113 | - $_id_rubrique = "''"; |
|
| 112 | + $onoff = 'ON'; |
|
| 113 | + $_id_rubrique = "''"; |
|
| 114 | 114 | |
| 115 | - if ($type === 'rubrique') { |
|
| 116 | - $_id_rubrique = "quete_parent($_id_objet)"; |
|
| 117 | - } |
|
| 115 | + if ($type === 'rubrique') { |
|
| 116 | + $_id_rubrique = "quete_parent($_id_objet)"; |
|
| 117 | + } |
|
| 118 | 118 | |
| 119 | - if ($suite === '_SURVOL') { |
|
| 120 | - $onoff = 'off'; |
|
| 121 | - } elseif ($suite === '_NORMAL') { |
|
| 122 | - $onoff = 'on'; |
|
| 123 | - } elseif ($suite === '_RUBRIQUE') { |
|
| 124 | - $_id_rubrique = champ_sql('id_rubrique', $p); |
|
| 125 | - } |
|
| 119 | + if ($suite === '_SURVOL') { |
|
| 120 | + $onoff = 'off'; |
|
| 121 | + } elseif ($suite === '_NORMAL') { |
|
| 122 | + $onoff = 'on'; |
|
| 123 | + } elseif ($suite === '_RUBRIQUE') { |
|
| 124 | + $_id_rubrique = champ_sql('id_rubrique', $p); |
|
| 125 | + } |
|
| 126 | 126 | |
| 127 | - $code = "quete_logo('$id_objet', '$onoff', $_id_objet, $_id_rubrique)"; |
|
| 127 | + $code = "quete_logo('$id_objet', '$onoff', $_id_objet, $_id_rubrique)"; |
|
| 128 | 128 | |
| 129 | - if ($champ) { |
|
| 130 | - return "table_valeur($code, '".addslashes($champ)."')"; |
|
| 131 | - } |
|
| 129 | + if ($champ) { |
|
| 130 | + return "table_valeur($code, '".addslashes($champ)."')"; |
|
| 131 | + } |
|
| 132 | 132 | |
| 133 | - $align = preg_replace(',\W,', '', $align); |
|
| 133 | + $align = preg_replace(',\W,', '', $align); |
|
| 134 | 134 | |
| 135 | - return "quete_html_logo($code, '$align', " . ($_lien ?: "''") . ')'; |
|
| 135 | + return "quete_html_logo($code, '$align', " . ($_lien ?: "''") . ')'; |
|
| 136 | 136 | } |
@@ -132,5 +132,5 @@ |
||
| 132 | 132 | |
| 133 | 133 | $align = preg_replace(',\W,', '', $align); |
| 134 | 134 | |
| 135 | - return "quete_html_logo($code, '$align', " . ($_lien ?: "''") . ')'; |
|
| 135 | + return "quete_html_logo($code, '$align', ".($_lien ?: "''").')'; |
|
| 136 | 136 | } |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | **/ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | |
@@ -56,88 +56,88 @@ discard block |
||
| 56 | 56 | */ |
| 57 | 57 | function balise_LOGO__dist($p) { |
| 58 | 58 | |
| 59 | - preg_match(',^LOGO_([A-Z_]+?)(|_NORMAL|_SURVOL|_RUBRIQUE)$,i', $p->nom_champ, $regs); |
|
| 60 | - $type = strtolower($regs[1]); |
|
| 61 | - $suite_logo = $regs[2]; |
|
| 62 | - |
|
| 63 | - // cas de #LOGO_SITE_SPIP |
|
| 64 | - if ($type == 'site_spip') { |
|
| 65 | - $type = 'site'; |
|
| 66 | - $_id_objet = "\"'0'\""; |
|
| 67 | - } |
|
| 68 | - |
|
| 69 | - $id_objet = id_table_objet($type); |
|
| 70 | - if (!isset($_id_objet)) { |
|
| 71 | - $_id_objet = champ_sql($id_objet, $p); |
|
| 72 | - } |
|
| 73 | - |
|
| 74 | - $fichier = ($p->etoile === '**') ? -1 : 0; |
|
| 75 | - $coord = []; |
|
| 76 | - $align = $lien = ''; |
|
| 77 | - $mode_logo = ''; |
|
| 78 | - |
|
| 79 | - if ($p->param and !$p->param[0][0]) { |
|
| 80 | - $params = $p->param[0]; |
|
| 81 | - array_shift($params); |
|
| 82 | - foreach ($params as $a) { |
|
| 83 | - if ($a[0]->type === 'texte') { |
|
| 84 | - $n = $a[0]->texte; |
|
| 85 | - if (is_numeric($n)) { |
|
| 86 | - $coord[] = $n; |
|
| 87 | - } elseif (in_array($n, ['top', 'left', 'right', 'center', 'bottom'])) { |
|
| 88 | - $align = $n; |
|
| 89 | - } elseif (in_array($n, ['auto', 'icone', 'apercu', 'vignette'])) { |
|
| 90 | - $mode_logo = $n; |
|
| 91 | - } |
|
| 92 | - } else { |
|
| 93 | - $lien = calculer_liste($a, $p->descr, $p->boucles, $p->id_boucle); |
|
| 94 | - } |
|
| 95 | - } |
|
| 96 | - } |
|
| 97 | - |
|
| 98 | - $coord_x = !$coord ? 0 : intval(array_shift($coord)); |
|
| 99 | - $coord_y = !$coord ? 0 : intval(array_shift($coord)); |
|
| 100 | - |
|
| 101 | - if ($p->etoile === '*') { |
|
| 102 | - include_spip('balise/url_'); |
|
| 103 | - $lien = generer_generer_url_arg($type, $p, $_id_objet); |
|
| 104 | - } |
|
| 105 | - |
|
| 106 | - $connect = $p->id_boucle ? $p->boucles[$p->id_boucle]->sql_serveur : ''; |
|
| 107 | - if ($type == 'document') { |
|
| 108 | - $qconnect = _q($connect); |
|
| 109 | - $doc = "quete_document($_id_objet, $qconnect)"; |
|
| 110 | - if ($fichier) { |
|
| 111 | - $code = "quete_logo_file($doc, $qconnect)"; |
|
| 112 | - } else { |
|
| 113 | - $code = "quete_logo_document($doc, " . ($lien ?: "''") . ", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)"; |
|
| 114 | - } |
|
| 115 | - // (x=non-faux ? y : '') pour affecter x en retournant y |
|
| 116 | - if ($p->descr['documents']) { |
|
| 117 | - $code = '(($doublons["documents"] .= ",". ' |
|
| 118 | - . $_id_objet |
|
| 119 | - . ") ? $code : '')"; |
|
| 120 | - } |
|
| 121 | - } elseif ($connect) { |
|
| 122 | - $code = "''"; |
|
| 123 | - spip_log('Les logos distants ne sont pas prevus'); |
|
| 124 | - } else { |
|
| 125 | - // pour generer_code_logo |
|
| 126 | - include_spip('balise/id_logo_'); |
|
| 127 | - $champ_logo = ''; |
|
| 128 | - if ($fichier) { |
|
| 129 | - $champ_logo = 'fichier'; |
|
| 130 | - } |
|
| 131 | - $code = generer_code_logo($id_objet, $_id_objet, $type, $align, $lien, $p, $suite_logo, $champ_logo); |
|
| 132 | - } |
|
| 133 | - |
|
| 134 | - // demande de reduction sur logo avec ecriture spip 2.1 : #LOGO_xxx{200, 0} |
|
| 135 | - if ($coord_x or $coord_y) { |
|
| 136 | - $code = "filtrer('image_graver',filtrer('image_reduire'," . $code . ", '$coord_x', '$coord_y'))"; |
|
| 137 | - } |
|
| 138 | - |
|
| 139 | - $p->code = $code; |
|
| 140 | - $p->interdire_scripts = false; |
|
| 141 | - |
|
| 142 | - return $p; |
|
| 59 | + preg_match(',^LOGO_([A-Z_]+?)(|_NORMAL|_SURVOL|_RUBRIQUE)$,i', $p->nom_champ, $regs); |
|
| 60 | + $type = strtolower($regs[1]); |
|
| 61 | + $suite_logo = $regs[2]; |
|
| 62 | + |
|
| 63 | + // cas de #LOGO_SITE_SPIP |
|
| 64 | + if ($type == 'site_spip') { |
|
| 65 | + $type = 'site'; |
|
| 66 | + $_id_objet = "\"'0'\""; |
|
| 67 | + } |
|
| 68 | + |
|
| 69 | + $id_objet = id_table_objet($type); |
|
| 70 | + if (!isset($_id_objet)) { |
|
| 71 | + $_id_objet = champ_sql($id_objet, $p); |
|
| 72 | + } |
|
| 73 | + |
|
| 74 | + $fichier = ($p->etoile === '**') ? -1 : 0; |
|
| 75 | + $coord = []; |
|
| 76 | + $align = $lien = ''; |
|
| 77 | + $mode_logo = ''; |
|
| 78 | + |
|
| 79 | + if ($p->param and !$p->param[0][0]) { |
|
| 80 | + $params = $p->param[0]; |
|
| 81 | + array_shift($params); |
|
| 82 | + foreach ($params as $a) { |
|
| 83 | + if ($a[0]->type === 'texte') { |
|
| 84 | + $n = $a[0]->texte; |
|
| 85 | + if (is_numeric($n)) { |
|
| 86 | + $coord[] = $n; |
|
| 87 | + } elseif (in_array($n, ['top', 'left', 'right', 'center', 'bottom'])) { |
|
| 88 | + $align = $n; |
|
| 89 | + } elseif (in_array($n, ['auto', 'icone', 'apercu', 'vignette'])) { |
|
| 90 | + $mode_logo = $n; |
|
| 91 | + } |
|
| 92 | + } else { |
|
| 93 | + $lien = calculer_liste($a, $p->descr, $p->boucles, $p->id_boucle); |
|
| 94 | + } |
|
| 95 | + } |
|
| 96 | + } |
|
| 97 | + |
|
| 98 | + $coord_x = !$coord ? 0 : intval(array_shift($coord)); |
|
| 99 | + $coord_y = !$coord ? 0 : intval(array_shift($coord)); |
|
| 100 | + |
|
| 101 | + if ($p->etoile === '*') { |
|
| 102 | + include_spip('balise/url_'); |
|
| 103 | + $lien = generer_generer_url_arg($type, $p, $_id_objet); |
|
| 104 | + } |
|
| 105 | + |
|
| 106 | + $connect = $p->id_boucle ? $p->boucles[$p->id_boucle]->sql_serveur : ''; |
|
| 107 | + if ($type == 'document') { |
|
| 108 | + $qconnect = _q($connect); |
|
| 109 | + $doc = "quete_document($_id_objet, $qconnect)"; |
|
| 110 | + if ($fichier) { |
|
| 111 | + $code = "quete_logo_file($doc, $qconnect)"; |
|
| 112 | + } else { |
|
| 113 | + $code = "quete_logo_document($doc, " . ($lien ?: "''") . ", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)"; |
|
| 114 | + } |
|
| 115 | + // (x=non-faux ? y : '') pour affecter x en retournant y |
|
| 116 | + if ($p->descr['documents']) { |
|
| 117 | + $code = '(($doublons["documents"] .= ",". ' |
|
| 118 | + . $_id_objet |
|
| 119 | + . ") ? $code : '')"; |
|
| 120 | + } |
|
| 121 | + } elseif ($connect) { |
|
| 122 | + $code = "''"; |
|
| 123 | + spip_log('Les logos distants ne sont pas prevus'); |
|
| 124 | + } else { |
|
| 125 | + // pour generer_code_logo |
|
| 126 | + include_spip('balise/id_logo_'); |
|
| 127 | + $champ_logo = ''; |
|
| 128 | + if ($fichier) { |
|
| 129 | + $champ_logo = 'fichier'; |
|
| 130 | + } |
|
| 131 | + $code = generer_code_logo($id_objet, $_id_objet, $type, $align, $lien, $p, $suite_logo, $champ_logo); |
|
| 132 | + } |
|
| 133 | + |
|
| 134 | + // demande de reduction sur logo avec ecriture spip 2.1 : #LOGO_xxx{200, 0} |
|
| 135 | + if ($coord_x or $coord_y) { |
|
| 136 | + $code = "filtrer('image_graver',filtrer('image_reduire'," . $code . ", '$coord_x', '$coord_y'))"; |
|
| 137 | + } |
|
| 138 | + |
|
| 139 | + $p->code = $code; |
|
| 140 | + $p->interdire_scripts = false; |
|
| 141 | + |
|
| 142 | + return $p; |
|
| 143 | 143 | } |
@@ -110,7 +110,7 @@ discard block |
||
| 110 | 110 | if ($fichier) { |
| 111 | 111 | $code = "quete_logo_file($doc, $qconnect)"; |
| 112 | 112 | } else { |
| 113 | - $code = "quete_logo_document($doc, " . ($lien ?: "''") . ", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)"; |
|
| 113 | + $code = "quete_logo_document($doc, ".($lien ?: "''").", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)"; |
|
| 114 | 114 | } |
| 115 | 115 | // (x=non-faux ? y : '') pour affecter x en retournant y |
| 116 | 116 | if ($p->descr['documents']) { |
@@ -133,7 +133,7 @@ discard block |
||
| 133 | 133 | |
| 134 | 134 | // demande de reduction sur logo avec ecriture spip 2.1 : #LOGO_xxx{200, 0} |
| 135 | 135 | if ($coord_x or $coord_y) { |
| 136 | - $code = "filtrer('image_graver',filtrer('image_reduire'," . $code . ", '$coord_x', '$coord_y'))"; |
|
| 136 | + $code = "filtrer('image_graver',filtrer('image_reduire',".$code.", '$coord_x', '$coord_y'))"; |
|
| 137 | 137 | } |
| 138 | 138 | |
| 139 | 139 | $p->code = $code; |
@@ -542,8 +542,7 @@ discard block |
||
| 542 | 542 | process_image_svg_identite($ret); |
| 543 | 543 | $ret['creer'] = false; |
| 544 | 544 | } |
| 545 | - } |
|
| 546 | - else { |
|
| 545 | + } else { |
|
| 547 | 546 | if (!function_exists($ret['fonction_imagecreatefrom'])) { |
| 548 | 547 | return false; |
| 549 | 548 | } |
@@ -647,8 +646,7 @@ discard block |
||
| 647 | 646 | |
| 648 | 647 | if (isset($info['mime'])) { |
| 649 | 648 | $mime = $info['mime']; |
| 650 | - } |
|
| 651 | - else { |
|
| 649 | + } else { |
|
| 652 | 650 | $mime = image_type_to_mime_type($info[2]); |
| 653 | 651 | } |
| 654 | 652 | |
@@ -1392,9 +1390,7 @@ discard block |
||
| 1392 | 1390 | if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) { |
| 1393 | 1391 | $vignette = $destination . '.' . $format; |
| 1394 | 1392 | @copy($image, $vignette); |
| 1395 | - } |
|
| 1396 | - |
|
| 1397 | - elseif ($valeurs['format_source'] === 'svg') { |
|
| 1393 | + } elseif ($valeurs['format_source'] === 'svg') { |
|
| 1398 | 1394 | include_spip('inc/svg'); |
| 1399 | 1395 | if ($svg = svg_redimensionner($valeurs['fichier'], $destWidth, $destHeight)) { |
| 1400 | 1396 | $format_sortie = 'svg'; |
@@ -1837,8 +1833,7 @@ discard block |
||
| 1837 | 1833 | $date = test_espace_prive() ? ('?' . $date) : ''; |
| 1838 | 1834 | |
| 1839 | 1835 | return _image_ecrire_tag($image, ['src' => "$logo$date", 'width' => $destWidth, 'height' => $destHeight]); |
| 1840 | - } |
|
| 1841 | - else { |
|
| 1836 | + } else { |
|
| 1842 | 1837 | # BMP, tiff ... les redacteurs osent tout! |
| 1843 | 1838 | return $img; |
| 1844 | 1839 | } |
@@ -42,13 +42,13 @@ discard block |
||
| 42 | 42 | $blue = dechex($blue); |
| 43 | 43 | |
| 44 | 44 | if (strlen($red) == 1) { |
| 45 | - $red = '0' . $red; |
|
| 45 | + $red = '0'.$red; |
|
| 46 | 46 | } |
| 47 | 47 | if (strlen($green) == 1) { |
| 48 | - $green = '0' . $green; |
|
| 48 | + $green = '0'.$green; |
|
| 49 | 49 | } |
| 50 | 50 | if (strlen($blue) == 1) { |
| 51 | - $blue = '0' . $blue; |
|
| 51 | + $blue = '0'.$blue; |
|
| 52 | 52 | } |
| 53 | 53 | |
| 54 | 54 | return "$red$green$blue"; |
@@ -67,7 +67,7 @@ discard block |
||
| 67 | 67 | $couleur = couleur_html_to_hex($couleur); |
| 68 | 68 | $couleur = ltrim($couleur, '#'); |
| 69 | 69 | if (strlen($couleur) === 3) { |
| 70 | - $couleur = $couleur[0] . $couleur[0] . $couleur[1] . $couleur[1] . $couleur[2] . $couleur[2]; |
|
| 70 | + $couleur = $couleur[0].$couleur[0].$couleur[1].$couleur[1].$couleur[2].$couleur[2]; |
|
| 71 | 71 | } |
| 72 | 72 | $retour = []; |
| 73 | 73 | $retour['red'] = hexdec(substr($couleur, 0, 2)); |
@@ -125,9 +125,9 @@ discard block |
||
| 125 | 125 | $var_G = ($G / 255); |
| 126 | 126 | $var_B = ($B / 255); |
| 127 | 127 | |
| 128 | - $var_Min = min($var_R, $var_G, $var_B); //Min. value of RGB |
|
| 129 | - $var_Max = max($var_R, $var_G, $var_B); //Max. value of RGB |
|
| 130 | - $del_Max = $var_Max - $var_Min; //Delta RGB value |
|
| 128 | + $var_Min = min($var_R, $var_G, $var_B); //Min. value of RGB |
|
| 129 | + $var_Max = max($var_R, $var_G, $var_B); //Max. value of RGB |
|
| 130 | + $del_Max = $var_Max - $var_Min; //Delta RGB value |
|
| 131 | 131 | |
| 132 | 132 | $L = ($var_Max + $var_Min) / 2; |
| 133 | 133 | |
@@ -189,7 +189,7 @@ discard block |
||
| 189 | 189 | */ |
| 190 | 190 | function _couleur_hsl_to_rgb($H, $S, $L) { |
| 191 | 191 | // helper |
| 192 | - $hue_2_rgb = function ($v1, $v2, $vH) { |
|
| 192 | + $hue_2_rgb = function($v1, $v2, $vH) { |
|
| 193 | 193 | if ($vH < 0) { |
| 194 | 194 | $vH += 1; |
| 195 | 195 | } |
@@ -321,11 +321,11 @@ discard block |
||
| 321 | 321 | $img = "<img src='$source' />"; |
| 322 | 322 | } elseif ( |
| 323 | 323 | preg_match('@^data:image/([^;]*);base64,(.*)$@isS', $source, $regs) |
| 324 | - and $extension = _image_trouver_extension_depuis_mime('image/' . $regs[1]) |
|
| 324 | + and $extension = _image_trouver_extension_depuis_mime('image/'.$regs[1]) |
|
| 325 | 325 | and in_array($extension, _image_extensions_acceptees_en_entree()) |
| 326 | 326 | ) { |
| 327 | 327 | # gerer img src="data:....base64" |
| 328 | - $local = sous_repertoire(_DIR_VAR, 'image-data') . md5($regs[2]) . '.' . _image_extension_normalisee($extension); |
|
| 328 | + $local = sous_repertoire(_DIR_VAR, 'image-data').md5($regs[2]).'.'._image_extension_normalisee($extension); |
|
| 329 | 329 | if (!file_exists($local)) { |
| 330 | 330 | ecrire_fichier($local, base64_decode($regs[2])); |
| 331 | 331 | } |
@@ -342,7 +342,7 @@ discard block |
||
| 342 | 342 | // les protocoles web prennent au moins 3 lettres |
| 343 | 343 | if (tester_url_absolue($source)) { |
| 344 | 344 | include_spip('inc/distant'); |
| 345 | - $fichier = _DIR_RACINE . copie_locale($source); |
|
| 345 | + $fichier = _DIR_RACINE.copie_locale($source); |
|
| 346 | 346 | if (!$fichier) { |
| 347 | 347 | return ''; |
| 348 | 348 | } |
@@ -444,9 +444,9 @@ discard block |
||
| 444 | 444 | // on garde la terminaison initiale car image simplement copiee |
| 445 | 445 | // et on postfixe son nom avec un md5 du path |
| 446 | 446 | $terminaison_dest = $terminaison; |
| 447 | - $fichier_dest .= '-' . substr(md5("$identifiant"), 0, 5); |
|
| 447 | + $fichier_dest .= '-'.substr(md5("$identifiant"), 0, 5); |
|
| 448 | 448 | } else { |
| 449 | - $fichier_dest .= '-' . substr(md5("$identifiant-$effet"), 0, 5); |
|
| 449 | + $fichier_dest .= '-'.substr(md5("$identifiant-$effet"), 0, 5); |
|
| 450 | 450 | } |
| 451 | 451 | $cache = sous_repertoire(_DIR_VAR, $cache); |
| 452 | 452 | $cache = sous_repertoire($cache, $effet); |
@@ -457,7 +457,7 @@ discard block |
||
| 457 | 457 | $fichier_dest = substr($fichier_dest, 2); |
| 458 | 458 | } |
| 459 | 459 | |
| 460 | - $fichier_dest = $cache . $fichier_dest . '.' . $terminaison_dest; |
|
| 460 | + $fichier_dest = $cache.$fichier_dest.'.'.$terminaison_dest; |
|
| 461 | 461 | |
| 462 | 462 | $GLOBALS['images_calculees'][] = $fichier_dest; |
| 463 | 463 | |
@@ -495,15 +495,15 @@ discard block |
||
| 495 | 495 | |
| 496 | 496 | if ($creer) { |
| 497 | 497 | spip_log( |
| 498 | - 'filtre image ' . ($fonction_creation ? reset($fonction_creation) : '') . "[$effet] sur $fichier", |
|
| 499 | - 'images' . _LOG_DEBUG |
|
| 498 | + 'filtre image '.($fonction_creation ? reset($fonction_creation) : '')."[$effet] sur $fichier", |
|
| 499 | + 'images'._LOG_DEBUG |
|
| 500 | 500 | ); |
| 501 | 501 | } |
| 502 | 502 | |
| 503 | 503 | $term_fonction = _image_trouver_extension_pertinente($fichier); |
| 504 | - $ret['fonction_imagecreatefrom'] = '_imagecreatefrom' . $term_fonction; |
|
| 504 | + $ret['fonction_imagecreatefrom'] = '_imagecreatefrom'.$term_fonction; |
|
| 505 | 505 | $ret['fichier'] = $fichier; |
| 506 | - $ret['fonction_image'] = '_image_image' . $terminaison_dest; |
|
| 506 | + $ret['fonction_image'] = '_image_image'.$terminaison_dest; |
|
| 507 | 507 | $ret['fichier_dest'] = $fichier_dest; |
| 508 | 508 | $ret['format_source'] = _image_extension_normalisee($terminaison); |
| 509 | 509 | $ret['format_dest'] = $terminaison_dest; |
@@ -653,7 +653,7 @@ discard block |
||
| 653 | 653 | |
| 654 | 654 | $_terminaison = _image_trouver_extension_depuis_mime($mime); |
| 655 | 655 | if ($_terminaison and $_terminaison !== $terminaison) { |
| 656 | - spip_log("Mauvaise extension du fichier : $path . Son type mime est : $mime", 'images.' . _LOG_INFO_IMPORTANTE); |
|
| 656 | + spip_log("Mauvaise extension du fichier : $path . Son type mime est : $mime", 'images.'._LOG_INFO_IMPORTANTE); |
|
| 657 | 657 | $terminaison = $_terminaison; |
| 658 | 658 | } |
| 659 | 659 | return $terminaison; |
@@ -810,7 +810,7 @@ discard block |
||
| 810 | 810 | if (!function_exists('imagepng')) { |
| 811 | 811 | return false; |
| 812 | 812 | } |
| 813 | - $tmp = $fichier . '.tmp'; |
|
| 813 | + $tmp = $fichier.'.tmp'; |
|
| 814 | 814 | $ret = imagepng($img, $tmp); |
| 815 | 815 | if (file_exists($tmp)) { |
| 816 | 816 | $taille_test = @getimagesize($tmp); |
@@ -845,7 +845,7 @@ discard block |
||
| 845 | 845 | if (!function_exists('imagegif')) { |
| 846 | 846 | return false; |
| 847 | 847 | } |
| 848 | - $tmp = $fichier . '.tmp'; |
|
| 848 | + $tmp = $fichier.'.tmp'; |
|
| 849 | 849 | $ret = imagegif($img, $tmp); |
| 850 | 850 | if (file_exists($tmp)) { |
| 851 | 851 | $taille_test = @getimagesize($tmp); |
@@ -885,7 +885,7 @@ discard block |
||
| 885 | 885 | if (!function_exists('imagejpeg')) { |
| 886 | 886 | return false; |
| 887 | 887 | } |
| 888 | - $tmp = $fichier . '.tmp'; |
|
| 888 | + $tmp = $fichier.'.tmp'; |
|
| 889 | 889 | |
| 890 | 890 | // Enable interlancing |
| 891 | 891 | imageinterlace($img, true); |
@@ -946,7 +946,7 @@ discard block |
||
| 946 | 946 | if (!function_exists('imagewebp')) { |
| 947 | 947 | return false; |
| 948 | 948 | } |
| 949 | - $tmp = $fichier . '.tmp'; |
|
| 949 | + $tmp = $fichier.'.tmp'; |
|
| 950 | 950 | $ret = imagewebp($img, $tmp, $qualite); |
| 951 | 951 | if (file_exists($tmp)) { |
| 952 | 952 | $taille_test = @getimagesize($tmp); |
@@ -980,7 +980,7 @@ discard block |
||
| 980 | 980 | */ |
| 981 | 981 | function _image_imagesvg($img, $fichier) { |
| 982 | 982 | |
| 983 | - $tmp = $fichier . '.tmp'; |
|
| 983 | + $tmp = $fichier.'.tmp'; |
|
| 984 | 984 | if (strpos($img, '<') === false) { |
| 985 | 985 | $img = supprimer_timestamp($img); |
| 986 | 986 | if (!file_exists($img)) { |
@@ -1037,13 +1037,13 @@ discard block |
||
| 1037 | 1037 | */ |
| 1038 | 1038 | function _image_gd_output($img, $valeurs, $qualite = _IMG_GD_QUALITE, $fonction = null) { |
| 1039 | 1039 | if (is_null($fonction)) { |
| 1040 | - $fonction = '_image_image' . $valeurs['format_dest']; |
|
| 1040 | + $fonction = '_image_image'.$valeurs['format_dest']; |
|
| 1041 | 1041 | } |
| 1042 | 1042 | $ret = false; |
| 1043 | 1043 | #un flag pour reperer les images gravees |
| 1044 | 1044 | $lock = ( |
| 1045 | 1045 | !statut_effacer_images_temporaires('get') // si la fonction n'a pas ete activee, on grave tout |
| 1046 | - or (@file_exists($valeurs['fichier_dest']) and !@file_exists($valeurs['fichier_dest'] . '.src')) |
|
| 1046 | + or (@file_exists($valeurs['fichier_dest']) and !@file_exists($valeurs['fichier_dest'].'.src')) |
|
| 1047 | 1047 | ); |
| 1048 | 1048 | if ( |
| 1049 | 1049 | function_exists($fonction) |
@@ -1055,7 +1055,7 @@ discard block |
||
| 1055 | 1055 | // dans tous les cas mettre a jour la taille de l'image finale |
| 1056 | 1056 | [$valeurs['hauteur_dest'], $valeurs['largeur_dest']] = taille_image($valeurs['fichier_dest']); |
| 1057 | 1057 | $valeurs['date'] = @filemtime($valeurs['fichier_dest']); // pour la retrouver apres disparition |
| 1058 | - ecrire_fichier($valeurs['fichier_dest'] . '.src', serialize($valeurs), true); |
|
| 1058 | + ecrire_fichier($valeurs['fichier_dest'].'.src', serialize($valeurs), true); |
|
| 1059 | 1059 | } |
| 1060 | 1060 | } |
| 1061 | 1061 | |
@@ -1230,7 +1230,7 @@ discard block |
||
| 1230 | 1230 | |
| 1231 | 1231 | // attributs deprecies. Transformer en CSS |
| 1232 | 1232 | if ($espace = extraire_attribut($tag, 'hspace')) { |
| 1233 | - $style = "margin:{$espace}px;" . $style; |
|
| 1233 | + $style = "margin:{$espace}px;".$style; |
|
| 1234 | 1234 | $tag = inserer_attribut($tag, 'hspace', ''); |
| 1235 | 1235 | } |
| 1236 | 1236 | |
@@ -1357,7 +1357,7 @@ discard block |
||
| 1357 | 1357 | $image = $valeurs['fichier']; |
| 1358 | 1358 | $format = $valeurs['format_source']; |
| 1359 | 1359 | $destdir = dirname($valeurs['fichier_dest']); |
| 1360 | - $destfile = basename($valeurs['fichier_dest'], '.' . $valeurs['format_dest']); |
|
| 1360 | + $destfile = basename($valeurs['fichier_dest'], '.'.$valeurs['format_dest']); |
|
| 1361 | 1361 | |
| 1362 | 1362 | $format_sortie = $valeurs['format_dest']; |
| 1363 | 1363 | |
@@ -1389,7 +1389,7 @@ discard block |
||
| 1389 | 1389 | |
| 1390 | 1390 | // Si l'image est de la taille demandee (ou plus petite), simplement la retourner |
| 1391 | 1391 | if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) { |
| 1392 | - $vignette = $destination . '.' . $format; |
|
| 1392 | + $vignette = $destination.'.'.$format; |
|
| 1393 | 1393 | @copy($image, $vignette); |
| 1394 | 1394 | } |
| 1395 | 1395 | |
@@ -1397,7 +1397,7 @@ discard block |
||
| 1397 | 1397 | include_spip('inc/svg'); |
| 1398 | 1398 | if ($svg = svg_redimensionner($valeurs['fichier'], $destWidth, $destHeight)) { |
| 1399 | 1399 | $format_sortie = 'svg'; |
| 1400 | - $vignette = $destination . '.' . $format_sortie; |
|
| 1400 | + $vignette = $destination.'.'.$format_sortie; |
|
| 1401 | 1401 | $valeurs['fichier_dest'] = $vignette; |
| 1402 | 1402 | _image_gd_output($svg, $valeurs); |
| 1403 | 1403 | } |
@@ -1409,9 +1409,9 @@ discard block |
||
| 1409 | 1409 | define('_CONVERT_COMMAND', 'convert'); |
| 1410 | 1410 | } // Securite : mes_options.php peut preciser le chemin absolu |
| 1411 | 1411 | if (!defined('_RESIZE_COMMAND')) { |
| 1412 | - define('_RESIZE_COMMAND', _CONVERT_COMMAND . ' -quality ' . _IMG_CONVERT_QUALITE . ' -orient Undefined -resize %xx%y! %src %dest'); |
|
| 1412 | + define('_RESIZE_COMMAND', _CONVERT_COMMAND.' -quality '._IMG_CONVERT_QUALITE.' -orient Undefined -resize %xx%y! %src %dest'); |
|
| 1413 | 1413 | } |
| 1414 | - $vignette = $destination . '.' . $format_sortie; |
|
| 1414 | + $vignette = $destination.'.'.$format_sortie; |
|
| 1415 | 1415 | $commande = str_replace( |
| 1416 | 1416 | ['%x', '%y', '%src', '%dest'], |
| 1417 | 1417 | [ |
@@ -1427,7 +1427,7 @@ discard block |
||
| 1427 | 1427 | if (!@file_exists($vignette)) { |
| 1428 | 1428 | spip_log("echec convert sur $vignette"); |
| 1429 | 1429 | |
| 1430 | - return; // echec commande |
|
| 1430 | + return; // echec commande |
|
| 1431 | 1431 | } |
| 1432 | 1432 | } |
| 1433 | 1433 | |
@@ -1444,7 +1444,7 @@ discard block |
||
| 1444 | 1444 | if (!$output) { |
| 1445 | 1445 | return; |
| 1446 | 1446 | } |
| 1447 | - $vignette = $output . DIRECTORY_SEPARATOR . basename($destination) . '.' . $format_sortie; |
|
| 1447 | + $vignette = $output.DIRECTORY_SEPARATOR.basename($destination).'.'.$format_sortie; |
|
| 1448 | 1448 | |
| 1449 | 1449 | $imagick = new Imagick(); |
| 1450 | 1450 | $imagick->readImage(realpath($image)); |
@@ -1453,7 +1453,7 @@ discard block |
||
| 1453 | 1453 | $destHeight, |
| 1454 | 1454 | Imagick::FILTER_LANCZOS, |
| 1455 | 1455 | 1 |
| 1456 | - );//, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100); |
|
| 1456 | + ); //, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100); |
|
| 1457 | 1457 | $imagick->writeImage($vignette); |
| 1458 | 1458 | |
| 1459 | 1459 | if (!@file_exists($vignette)) { |
@@ -1462,7 +1462,7 @@ discard block |
||
| 1462 | 1462 | return; |
| 1463 | 1463 | } |
| 1464 | 1464 | // remettre le chemin relatif car c'est ce qu'attend SPIP pour la suite (en particlier action/tester) |
| 1465 | - $vignette = $destination . '.' . $format_sortie; |
|
| 1465 | + $vignette = $destination.'.'.$format_sortie; |
|
| 1466 | 1466 | } |
| 1467 | 1467 | |
| 1468 | 1468 | // netpbm |
@@ -1473,11 +1473,11 @@ discard block |
||
| 1473 | 1473 | if (_PNMSCALE_COMMAND == '') { |
| 1474 | 1474 | return; |
| 1475 | 1475 | } |
| 1476 | - $vignette = $destination . '.' . $format_sortie; |
|
| 1476 | + $vignette = $destination.'.'.$format_sortie; |
|
| 1477 | 1477 | $pnmtojpeg_command = str_replace('pnmscale', 'pnmtojpeg', _PNMSCALE_COMMAND); |
| 1478 | 1478 | if ($format == 'jpg') { |
| 1479 | 1479 | $jpegtopnm_command = str_replace('pnmscale', 'jpegtopnm', _PNMSCALE_COMMAND); |
| 1480 | - exec("$jpegtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette"); |
|
| 1480 | + exec("$jpegtopnm_command $image | "._PNMSCALE_COMMAND." -width $destWidth | $pnmtojpeg_command > $vignette"); |
|
| 1481 | 1481 | if (!($s = @filesize($vignette))) { |
| 1482 | 1482 | spip_unlink($vignette); |
| 1483 | 1483 | } |
@@ -1489,7 +1489,7 @@ discard block |
||
| 1489 | 1489 | } else { |
| 1490 | 1490 | if ($format == 'gif') { |
| 1491 | 1491 | $giftopnm_command = str_replace('pnmscale', 'giftopnm', _PNMSCALE_COMMAND); |
| 1492 | - exec("$giftopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette"); |
|
| 1492 | + exec("$giftopnm_command $image | "._PNMSCALE_COMMAND." -width $destWidth | $pnmtojpeg_command > $vignette"); |
|
| 1493 | 1493 | if (!($s = @filesize($vignette))) { |
| 1494 | 1494 | spip_unlink($vignette); |
| 1495 | 1495 | } |
@@ -1501,7 +1501,7 @@ discard block |
||
| 1501 | 1501 | } else { |
| 1502 | 1502 | if ($format == 'png') { |
| 1503 | 1503 | $pngtopnm_command = str_replace('pnmscale', 'pngtopnm', _PNMSCALE_COMMAND); |
| 1504 | - exec("$pngtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette"); |
|
| 1504 | + exec("$pngtopnm_command $image | "._PNMSCALE_COMMAND." -width $destWidth | $pnmtojpeg_command > $vignette"); |
|
| 1505 | 1505 | if (!($s = @filesize($vignette))) { |
| 1506 | 1506 | spip_unlink($vignette); |
| 1507 | 1507 | } |
@@ -1523,7 +1523,7 @@ discard block |
||
| 1523 | 1523 | return; |
| 1524 | 1524 | } |
| 1525 | 1525 | if (_IMG_GD_MAX_PIXELS && $srcWidth * $srcHeight > _IMG_GD_MAX_PIXELS) { |
| 1526 | - spip_log('vignette gd1/gd2 impossible : ' . $srcWidth * $srcHeight . 'pixels'); |
|
| 1526 | + spip_log('vignette gd1/gd2 impossible : '.$srcWidth * $srcHeight.'pixels'); |
|
| 1527 | 1527 | |
| 1528 | 1528 | return; |
| 1529 | 1529 | } |
@@ -1833,7 +1833,7 @@ discard block |
||
| 1833 | 1833 | // de l'image, de facon a tromper le cache du navigateur |
| 1834 | 1834 | // quand on fait supprimer/reuploader un logo |
| 1835 | 1835 | // (pas de filemtime si SAFE MODE) |
| 1836 | - $date = test_espace_prive() ? ('?' . $date) : ''; |
|
| 1836 | + $date = test_espace_prive() ? ('?'.$date) : ''; |
|
| 1837 | 1837 | |
| 1838 | 1838 | return _image_ecrire_tag($image, ['src' => "$logo$date", 'width' => $destWidth, 'height' => $destHeight]); |
| 1839 | 1839 | } |
@@ -1879,7 +1879,7 @@ discard block |
||
| 1879 | 1879 | public static function LittleEndian2String($number, $minbytes = 1) { |
| 1880 | 1880 | $intstring = ''; |
| 1881 | 1881 | while ($number > 0) { |
| 1882 | - $intstring = $intstring . chr($number & 255); |
|
| 1882 | + $intstring = $intstring.chr($number & 255); |
|
| 1883 | 1883 | $number >>= 8; |
| 1884 | 1884 | } |
| 1885 | 1885 | |
@@ -1911,9 +1911,9 @@ discard block |
||
| 1911 | 1911 | $b = $argb['blue']; |
| 1912 | 1912 | |
| 1913 | 1913 | if ($bpp[$key] == 32) { |
| 1914 | - $icXOR[$key] .= chr($b) . chr($g) . chr($r) . chr($a); |
|
| 1914 | + $icXOR[$key] .= chr($b).chr($g).chr($r).chr($a); |
|
| 1915 | 1915 | } elseif ($bpp[$key] == 24) { |
| 1916 | - $icXOR[$key] .= chr($b) . chr($g) . chr($r); |
|
| 1916 | + $icXOR[$key] .= chr($b).chr($g).chr($r); |
|
| 1917 | 1917 | } |
| 1918 | 1918 | |
| 1919 | 1919 | if ($a < 128) { |
@@ -1940,48 +1940,48 @@ discard block |
||
| 1940 | 1940 | |
| 1941 | 1941 | // BITMAPINFOHEADER - 40 bytes |
| 1942 | 1942 | $BitmapInfoHeader[$key] = ''; |
| 1943 | - $BitmapInfoHeader[$key] .= "\x28\x00\x00\x00"; // DWORD biSize; |
|
| 1944 | - $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4); // LONG biWidth; |
|
| 1943 | + $BitmapInfoHeader[$key] .= "\x28\x00\x00\x00"; // DWORD biSize; |
|
| 1944 | + $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4); // LONG biWidth; |
|
| 1945 | 1945 | // The biHeight member specifies the combined |
| 1946 | 1946 | // height of the XOR and AND masks. |
| 1947 | 1947 | $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG biHeight; |
| 1948 | - $BitmapInfoHeader[$key] .= "\x01\x00"; // WORD biPlanes; |
|
| 1949 | - $BitmapInfoHeader[$key] .= chr($bpp[$key]) . "\x00"; // wBitCount; |
|
| 1950 | - $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD biCompression; |
|
| 1951 | - $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4); // DWORD biSizeImage; |
|
| 1952 | - $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // LONG biXPelsPerMeter; |
|
| 1953 | - $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // LONG biYPelsPerMeter; |
|
| 1954 | - $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD biClrUsed; |
|
| 1955 | - $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD biClrImportant; |
|
| 1948 | + $BitmapInfoHeader[$key] .= "\x01\x00"; // WORD biPlanes; |
|
| 1949 | + $BitmapInfoHeader[$key] .= chr($bpp[$key])."\x00"; // wBitCount; |
|
| 1950 | + $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD biCompression; |
|
| 1951 | + $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4); // DWORD biSizeImage; |
|
| 1952 | + $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // LONG biXPelsPerMeter; |
|
| 1953 | + $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // LONG biYPelsPerMeter; |
|
| 1954 | + $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD biClrUsed; |
|
| 1955 | + $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD biClrImportant; |
|
| 1956 | 1956 | } |
| 1957 | 1957 | |
| 1958 | 1958 | |
| 1959 | - $icondata = "\x00\x00"; // idReserved; // Reserved (must be 0) |
|
| 1960 | - $icondata .= "\x01\x00"; // idType; // Resource Type (1 for icons) |
|
| 1961 | - $icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2); // idCount; // How many images? |
|
| 1959 | + $icondata = "\x00\x00"; // idReserved; // Reserved (must be 0) |
|
| 1960 | + $icondata .= "\x01\x00"; // idType; // Resource Type (1 for icons) |
|
| 1961 | + $icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2); // idCount; // How many images? |
|
| 1962 | 1962 | |
| 1963 | 1963 | $dwImageOffset = 6 + (count($gd_image_array) * 16); |
| 1964 | 1964 | foreach ($gd_image_array as $key => $gd_image) { |
| 1965 | 1965 | // ICONDIRENTRY idEntries[1]; // An entry for each image (idCount of 'em) |
| 1966 | 1966 | |
| 1967 | - $icondata .= chr($ImageWidths[$key]); // bWidth; // Width, in pixels, of the image |
|
| 1968 | - $icondata .= chr($ImageHeights[$key]); // bHeight; // Height, in pixels, of the image |
|
| 1969 | - $icondata .= chr($totalcolors[$key]); // bColorCount; // Number of colors in image (0 if >=8bpp) |
|
| 1970 | - $icondata .= "\x00"; // bReserved; // Reserved ( must be 0) |
|
| 1967 | + $icondata .= chr($ImageWidths[$key]); // bWidth; // Width, in pixels, of the image |
|
| 1968 | + $icondata .= chr($ImageHeights[$key]); // bHeight; // Height, in pixels, of the image |
|
| 1969 | + $icondata .= chr($totalcolors[$key]); // bColorCount; // Number of colors in image (0 if >=8bpp) |
|
| 1970 | + $icondata .= "\x00"; // bReserved; // Reserved ( must be 0) |
|
| 1971 | 1971 | |
| 1972 | - $icondata .= "\x01\x00"; // wPlanes; // Color Planes |
|
| 1973 | - $icondata .= chr($bpp[$key]) . "\x00"; // wBitCount; // Bits per pixel |
|
| 1972 | + $icondata .= "\x01\x00"; // wPlanes; // Color Planes |
|
| 1973 | + $icondata .= chr($bpp[$key])."\x00"; // wBitCount; // Bits per pixel |
|
| 1974 | 1974 | |
| 1975 | 1975 | $dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]); |
| 1976 | 1976 | $icondata .= phpthumb_functions::LittleEndian2String( |
| 1977 | 1977 | $dwBytesInRes, |
| 1978 | 1978 | 4 |
| 1979 | - ); // dwBytesInRes; // How many bytes in this resource? |
|
| 1979 | + ); // dwBytesInRes; // How many bytes in this resource? |
|
| 1980 | 1980 | |
| 1981 | 1981 | $icondata .= phpthumb_functions::LittleEndian2String( |
| 1982 | 1982 | $dwImageOffset, |
| 1983 | 1983 | 4 |
| 1984 | - ); // dwImageOffset; // Where in the file is this image? |
|
| 1984 | + ); // dwImageOffset; // Where in the file is this image? |
|
| 1985 | 1985 | $dwImageOffset += strlen($BitmapInfoHeader[$key]); |
| 1986 | 1986 | $dwImageOffset += strlen($icXOR[$key]); |
| 1987 | 1987 | $dwImageOffset += strlen($icAND[$key]); |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | */ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | include_spip('inc/filtres'); // par precaution |
| 23 | 23 | include_spip('inc/filtres_images_mini'); // par precaution |
@@ -37,21 +37,21 @@ discard block |
||
| 37 | 37 | * Le code de la couleur en hexadécimal. |
| 38 | 38 | */ |
| 39 | 39 | function _couleur_dec_to_hex($red, $green, $blue) { |
| 40 | - $red = dechex($red); |
|
| 41 | - $green = dechex($green); |
|
| 42 | - $blue = dechex($blue); |
|
| 43 | - |
|
| 44 | - if (strlen($red) == 1) { |
|
| 45 | - $red = '0' . $red; |
|
| 46 | - } |
|
| 47 | - if (strlen($green) == 1) { |
|
| 48 | - $green = '0' . $green; |
|
| 49 | - } |
|
| 50 | - if (strlen($blue) == 1) { |
|
| 51 | - $blue = '0' . $blue; |
|
| 52 | - } |
|
| 53 | - |
|
| 54 | - return "$red$green$blue"; |
|
| 40 | + $red = dechex($red); |
|
| 41 | + $green = dechex($green); |
|
| 42 | + $blue = dechex($blue); |
|
| 43 | + |
|
| 44 | + if (strlen($red) == 1) { |
|
| 45 | + $red = '0' . $red; |
|
| 46 | + } |
|
| 47 | + if (strlen($green) == 1) { |
|
| 48 | + $green = '0' . $green; |
|
| 49 | + } |
|
| 50 | + if (strlen($blue) == 1) { |
|
| 51 | + $blue = '0' . $blue; |
|
| 52 | + } |
|
| 53 | + |
|
| 54 | + return "$red$green$blue"; |
|
| 55 | 55 | } |
| 56 | 56 | |
| 57 | 57 | /** |
@@ -63,18 +63,18 @@ discard block |
||
| 63 | 63 | * Un tableau des 3 éléments : rouge, vert, bleu. |
| 64 | 64 | */ |
| 65 | 65 | function _couleur_hex_to_dec($couleur) { |
| 66 | - $couleur ??= ''; |
|
| 67 | - $couleur = couleur_html_to_hex($couleur); |
|
| 68 | - $couleur = ltrim($couleur, '#'); |
|
| 69 | - if (strlen($couleur) === 3) { |
|
| 70 | - $couleur = $couleur[0] . $couleur[0] . $couleur[1] . $couleur[1] . $couleur[2] . $couleur[2]; |
|
| 71 | - } |
|
| 72 | - $retour = []; |
|
| 73 | - $retour['red'] = hexdec(substr($couleur, 0, 2)); |
|
| 74 | - $retour['green'] = hexdec(substr($couleur, 2, 2)); |
|
| 75 | - $retour['blue'] = hexdec(substr($couleur, 4, 2)); |
|
| 76 | - |
|
| 77 | - return $retour; |
|
| 66 | + $couleur ??= ''; |
|
| 67 | + $couleur = couleur_html_to_hex($couleur); |
|
| 68 | + $couleur = ltrim($couleur, '#'); |
|
| 69 | + if (strlen($couleur) === 3) { |
|
| 70 | + $couleur = $couleur[0] . $couleur[0] . $couleur[1] . $couleur[1] . $couleur[2] . $couleur[2]; |
|
| 71 | + } |
|
| 72 | + $retour = []; |
|
| 73 | + $retour['red'] = hexdec(substr($couleur, 0, 2)); |
|
| 74 | + $retour['green'] = hexdec(substr($couleur, 2, 2)); |
|
| 75 | + $retour['blue'] = hexdec(substr($couleur, 4, 2)); |
|
| 76 | + |
|
| 77 | + return $retour; |
|
| 78 | 78 | } |
| 79 | 79 | |
| 80 | 80 | |
@@ -91,8 +91,8 @@ discard block |
||
| 91 | 91 | * Le code de la couleur en hexadécimal. |
| 92 | 92 | */ |
| 93 | 93 | function _couleur_hsl_to_hex($hue, $saturation, $lightness) { |
| 94 | - $rgb = _couleur_hsl_to_rgb($hue, $saturation, $lightness); |
|
| 95 | - return _couleur_dec_to_hex($rgb['r'], $rgb['g'], $rgb['b']); |
|
| 94 | + $rgb = _couleur_hsl_to_rgb($hue, $saturation, $lightness); |
|
| 95 | + return _couleur_dec_to_hex($rgb['r'], $rgb['g'], $rgb['b']); |
|
| 96 | 96 | } |
| 97 | 97 | |
| 98 | 98 | /** |
@@ -104,8 +104,8 @@ discard block |
||
| 104 | 104 | * Un tableau des 3 éléments : teinte, saturation, luminosité. |
| 105 | 105 | */ |
| 106 | 106 | function _couleur_hex_to_hsl($couleur) { |
| 107 | - $rgb = _couleur_hex_to_dec($couleur); |
|
| 108 | - return _couleur_rgb_to_hsl($rgb['red'], $rgb['green'], $rgb['blue']); |
|
| 107 | + $rgb = _couleur_hex_to_dec($couleur); |
|
| 108 | + return _couleur_rgb_to_hsl($rgb['red'], $rgb['green'], $rgb['blue']); |
|
| 109 | 109 | } |
| 110 | 110 | |
| 111 | 111 | /** |
@@ -120,59 +120,59 @@ discard block |
||
| 120 | 120 | * @return array |
| 121 | 121 | */ |
| 122 | 122 | function _couleur_rgb_to_hsl($R, $G, $B) { |
| 123 | - $H = null; |
|
| 124 | - $var_R = ($R / 255); // Where RGB values = 0 ÷ 255 |
|
| 125 | - $var_G = ($G / 255); |
|
| 126 | - $var_B = ($B / 255); |
|
| 127 | - |
|
| 128 | - $var_Min = min($var_R, $var_G, $var_B); //Min. value of RGB |
|
| 129 | - $var_Max = max($var_R, $var_G, $var_B); //Max. value of RGB |
|
| 130 | - $del_Max = $var_Max - $var_Min; //Delta RGB value |
|
| 131 | - |
|
| 132 | - $L = ($var_Max + $var_Min) / 2; |
|
| 133 | - |
|
| 134 | - if ($del_Max == 0) { |
|
| 135 | - //This is a gray, no chroma... |
|
| 136 | - $H = 0; //HSL results = 0 ÷ 1 |
|
| 137 | - $S = 0; |
|
| 138 | - } else { |
|
| 139 | - // Chromatic data... |
|
| 140 | - if ($L < 0.5) { |
|
| 141 | - $S = $del_Max / ($var_Max + $var_Min); |
|
| 142 | - } else { |
|
| 143 | - $S = $del_Max / (2 - $var_Max - $var_Min); |
|
| 144 | - } |
|
| 145 | - |
|
| 146 | - $del_R = ((($var_Max - $var_R) / 6) + ($del_Max / 2)) / $del_Max; |
|
| 147 | - $del_G = ((($var_Max - $var_G) / 6) + ($del_Max / 2)) / $del_Max; |
|
| 148 | - $del_B = ((($var_Max - $var_B) / 6) + ($del_Max / 2)) / $del_Max; |
|
| 149 | - |
|
| 150 | - if ($var_R == $var_Max) { |
|
| 151 | - $H = $del_B - $del_G; |
|
| 152 | - } else { |
|
| 153 | - if ($var_G == $var_Max) { |
|
| 154 | - $H = (1 / 3) + $del_R - $del_B; |
|
| 155 | - } else { |
|
| 156 | - if ($var_B == $var_Max) { |
|
| 157 | - $H = (2 / 3) + $del_G - $del_R; |
|
| 158 | - } |
|
| 159 | - } |
|
| 160 | - } |
|
| 161 | - |
|
| 162 | - if ($H < 0) { |
|
| 163 | - $H += 1; |
|
| 164 | - } |
|
| 165 | - if ($H > 1) { |
|
| 166 | - $H -= 1; |
|
| 167 | - } |
|
| 168 | - } |
|
| 169 | - |
|
| 170 | - $ret = []; |
|
| 171 | - $ret['h'] = $H; |
|
| 172 | - $ret['s'] = $S; |
|
| 173 | - $ret['l'] = $L; |
|
| 174 | - |
|
| 175 | - return $ret; |
|
| 123 | + $H = null; |
|
| 124 | + $var_R = ($R / 255); // Where RGB values = 0 ÷ 255 |
|
| 125 | + $var_G = ($G / 255); |
|
| 126 | + $var_B = ($B / 255); |
|
| 127 | + |
|
| 128 | + $var_Min = min($var_R, $var_G, $var_B); //Min. value of RGB |
|
| 129 | + $var_Max = max($var_R, $var_G, $var_B); //Max. value of RGB |
|
| 130 | + $del_Max = $var_Max - $var_Min; //Delta RGB value |
|
| 131 | + |
|
| 132 | + $L = ($var_Max + $var_Min) / 2; |
|
| 133 | + |
|
| 134 | + if ($del_Max == 0) { |
|
| 135 | + //This is a gray, no chroma... |
|
| 136 | + $H = 0; //HSL results = 0 ÷ 1 |
|
| 137 | + $S = 0; |
|
| 138 | + } else { |
|
| 139 | + // Chromatic data... |
|
| 140 | + if ($L < 0.5) { |
|
| 141 | + $S = $del_Max / ($var_Max + $var_Min); |
|
| 142 | + } else { |
|
| 143 | + $S = $del_Max / (2 - $var_Max - $var_Min); |
|
| 144 | + } |
|
| 145 | + |
|
| 146 | + $del_R = ((($var_Max - $var_R) / 6) + ($del_Max / 2)) / $del_Max; |
|
| 147 | + $del_G = ((($var_Max - $var_G) / 6) + ($del_Max / 2)) / $del_Max; |
|
| 148 | + $del_B = ((($var_Max - $var_B) / 6) + ($del_Max / 2)) / $del_Max; |
|
| 149 | + |
|
| 150 | + if ($var_R == $var_Max) { |
|
| 151 | + $H = $del_B - $del_G; |
|
| 152 | + } else { |
|
| 153 | + if ($var_G == $var_Max) { |
|
| 154 | + $H = (1 / 3) + $del_R - $del_B; |
|
| 155 | + } else { |
|
| 156 | + if ($var_B == $var_Max) { |
|
| 157 | + $H = (2 / 3) + $del_G - $del_R; |
|
| 158 | + } |
|
| 159 | + } |
|
| 160 | + } |
|
| 161 | + |
|
| 162 | + if ($H < 0) { |
|
| 163 | + $H += 1; |
|
| 164 | + } |
|
| 165 | + if ($H > 1) { |
|
| 166 | + $H -= 1; |
|
| 167 | + } |
|
| 168 | + } |
|
| 169 | + |
|
| 170 | + $ret = []; |
|
| 171 | + $ret['h'] = $H; |
|
| 172 | + $ret['s'] = $S; |
|
| 173 | + $ret['l'] = $L; |
|
| 174 | + |
|
| 175 | + return $ret; |
|
| 176 | 176 | } |
| 177 | 177 | |
| 178 | 178 | |
@@ -188,52 +188,52 @@ discard block |
||
| 188 | 188 | * @return array |
| 189 | 189 | */ |
| 190 | 190 | function _couleur_hsl_to_rgb($H, $S, $L) { |
| 191 | - // helper |
|
| 192 | - $hue_2_rgb = function ($v1, $v2, $vH) { |
|
| 193 | - if ($vH < 0) { |
|
| 194 | - $vH += 1; |
|
| 195 | - } |
|
| 196 | - if ($vH > 1) { |
|
| 197 | - $vH -= 1; |
|
| 198 | - } |
|
| 199 | - if ((6 * $vH) < 1) { |
|
| 200 | - return ($v1 + ($v2 - $v1) * 6 * $vH); |
|
| 201 | - } |
|
| 202 | - if ((2 * $vH) < 1) { |
|
| 203 | - return ($v2); |
|
| 204 | - } |
|
| 205 | - if ((3 * $vH) < 2) { |
|
| 206 | - return ($v1 + ($v2 - $v1) * ((2 / 3) - $vH) * 6); |
|
| 207 | - } |
|
| 208 | - |
|
| 209 | - return ($v1); |
|
| 210 | - }; |
|
| 211 | - |
|
| 212 | - if ($S == 0) { |
|
| 213 | - // HSV values = 0 -> 1 |
|
| 214 | - $R = $L * 255; |
|
| 215 | - $G = $L * 255; |
|
| 216 | - $B = $L * 255; |
|
| 217 | - } else { |
|
| 218 | - if ($L < 0.5) { |
|
| 219 | - $var_2 = $L * (1 + $S); |
|
| 220 | - } else { |
|
| 221 | - $var_2 = ($L + $S) - ($S * $L); |
|
| 222 | - } |
|
| 223 | - |
|
| 224 | - $var_1 = 2 * $L - $var_2; |
|
| 225 | - |
|
| 226 | - $R = 255 * $hue_2_rgb($var_1, $var_2, $H + (1 / 3)); |
|
| 227 | - $G = 255 * $hue_2_rgb($var_1, $var_2, $H); |
|
| 228 | - $B = 255 * $hue_2_rgb($var_1, $var_2, $H - (1 / 3)); |
|
| 229 | - } |
|
| 230 | - |
|
| 231 | - $ret = []; |
|
| 232 | - $ret['r'] = floor($R); |
|
| 233 | - $ret['g'] = floor($G); |
|
| 234 | - $ret['b'] = floor($B); |
|
| 235 | - |
|
| 236 | - return $ret; |
|
| 191 | + // helper |
|
| 192 | + $hue_2_rgb = function ($v1, $v2, $vH) { |
|
| 193 | + if ($vH < 0) { |
|
| 194 | + $vH += 1; |
|
| 195 | + } |
|
| 196 | + if ($vH > 1) { |
|
| 197 | + $vH -= 1; |
|
| 198 | + } |
|
| 199 | + if ((6 * $vH) < 1) { |
|
| 200 | + return ($v1 + ($v2 - $v1) * 6 * $vH); |
|
| 201 | + } |
|
| 202 | + if ((2 * $vH) < 1) { |
|
| 203 | + return ($v2); |
|
| 204 | + } |
|
| 205 | + if ((3 * $vH) < 2) { |
|
| 206 | + return ($v1 + ($v2 - $v1) * ((2 / 3) - $vH) * 6); |
|
| 207 | + } |
|
| 208 | + |
|
| 209 | + return ($v1); |
|
| 210 | + }; |
|
| 211 | + |
|
| 212 | + if ($S == 0) { |
|
| 213 | + // HSV values = 0 -> 1 |
|
| 214 | + $R = $L * 255; |
|
| 215 | + $G = $L * 255; |
|
| 216 | + $B = $L * 255; |
|
| 217 | + } else { |
|
| 218 | + if ($L < 0.5) { |
|
| 219 | + $var_2 = $L * (1 + $S); |
|
| 220 | + } else { |
|
| 221 | + $var_2 = ($L + $S) - ($S * $L); |
|
| 222 | + } |
|
| 223 | + |
|
| 224 | + $var_1 = 2 * $L - $var_2; |
|
| 225 | + |
|
| 226 | + $R = 255 * $hue_2_rgb($var_1, $var_2, $H + (1 / 3)); |
|
| 227 | + $G = 255 * $hue_2_rgb($var_1, $var_2, $H); |
|
| 228 | + $B = 255 * $hue_2_rgb($var_1, $var_2, $H - (1 / 3)); |
|
| 229 | + } |
|
| 230 | + |
|
| 231 | + $ret = []; |
|
| 232 | + $ret['r'] = floor($R); |
|
| 233 | + $ret['g'] = floor($G); |
|
| 234 | + $ret['b'] = floor($B); |
|
| 235 | + |
|
| 236 | + return $ret; |
|
| 237 | 237 | } |
| 238 | 238 | |
| 239 | 239 | /** |
@@ -251,11 +251,11 @@ discard block |
||
| 251 | 251 | * true si il faut supprimer le fichier temporaire ; false sinon. |
| 252 | 252 | */ |
| 253 | 253 | function statut_effacer_images_temporaires($stat) { |
| 254 | - static $statut = false; // par defaut on grave toute les images |
|
| 255 | - if ($stat === 'get') { |
|
| 256 | - return $statut; |
|
| 257 | - } |
|
| 258 | - $statut = $stat ? true : false; |
|
| 254 | + static $statut = false; // par defaut on grave toute les images |
|
| 255 | + if ($stat === 'get') { |
|
| 256 | + return $statut; |
|
| 257 | + } |
|
| 258 | + $statut = $stat ? true : false; |
|
| 259 | 259 | } |
| 260 | 260 | |
| 261 | 261 | |
@@ -308,247 +308,247 @@ discard block |
||
| 308 | 308 | * - array : tableau décrivant de l'image |
| 309 | 309 | */ |
| 310 | 310 | function _image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_creation = null, $find_in_path = false, $support_svg = false) { |
| 311 | - $ret = []; |
|
| 312 | - $f = null; |
|
| 313 | - static $images_recalcul = []; |
|
| 314 | - if (strlen($img) == 0) { |
|
| 315 | - return false; |
|
| 316 | - } |
|
| 317 | - |
|
| 318 | - $source = trim(extraire_attribut($img, 'src') ?? ''); |
|
| 319 | - if (strlen($source) < 1) { |
|
| 320 | - $source = $img; |
|
| 321 | - $img = "<img src='$source' />"; |
|
| 322 | - } elseif ( |
|
| 323 | - preg_match('@^data:image/([^;]*);base64,(.*)$@isS', $source, $regs) |
|
| 324 | - and $extension = _image_trouver_extension_depuis_mime('image/' . $regs[1]) |
|
| 325 | - and in_array($extension, _image_extensions_acceptees_en_entree()) |
|
| 326 | - ) { |
|
| 327 | - # gerer img src="data:....base64" |
|
| 328 | - $local = sous_repertoire(_DIR_VAR, 'image-data') . md5($regs[2]) . '.' . _image_extension_normalisee($extension); |
|
| 329 | - if (!file_exists($local)) { |
|
| 330 | - ecrire_fichier($local, base64_decode($regs[2])); |
|
| 331 | - } |
|
| 332 | - if ($sanitizer = charger_fonction($extension, 'sanitizer', true)) { |
|
| 333 | - $sanitizer($local); |
|
| 334 | - } |
|
| 335 | - $source = $local; |
|
| 336 | - $img = inserer_attribut($img, 'src', $source); |
|
| 337 | - # eviter les mauvaises surprises lors de conversions de format |
|
| 338 | - $img = inserer_attribut($img, 'width', ''); |
|
| 339 | - $img = inserer_attribut($img, 'height', ''); |
|
| 340 | - } |
|
| 341 | - |
|
| 342 | - // les protocoles web prennent au moins 3 lettres |
|
| 343 | - if (tester_url_absolue($source)) { |
|
| 344 | - include_spip('inc/distant'); |
|
| 345 | - $fichier = _DIR_RACINE . copie_locale($source); |
|
| 346 | - if (!$fichier) { |
|
| 347 | - return ''; |
|
| 348 | - } |
|
| 349 | - if ( |
|
| 350 | - $extension = _image_trouver_extension($fichier) |
|
| 351 | - and $sanitizer = charger_fonction($extension, 'sanitizer', true) |
|
| 352 | - ) { |
|
| 353 | - $sanitizer($fichier); |
|
| 354 | - } |
|
| 355 | - } else { |
|
| 356 | - // enlever le timestamp eventuel |
|
| 357 | - if (strpos($source, '?') !== false) { |
|
| 358 | - $source = preg_replace(',[?][0-9]+$,', '', $source); |
|
| 359 | - } |
|
| 360 | - if ( |
|
| 361 | - strpos($source, '?') !== false |
|
| 362 | - and strncmp($source, _DIR_IMG, strlen(_DIR_IMG)) == 0 |
|
| 363 | - and file_exists($f = preg_replace(',[?].*$,', '', $source)) |
|
| 364 | - ) { |
|
| 365 | - $source = $f; |
|
| 366 | - } |
|
| 367 | - $fichier = $source; |
|
| 368 | - } |
|
| 369 | - |
|
| 370 | - $terminaison_dest = ''; |
|
| 371 | - if ($terminaison = _image_trouver_extension($fichier)) { |
|
| 372 | - $terminaison_dest = ($terminaison == 'gif') ? 'png' : $terminaison; |
|
| 373 | - } |
|
| 374 | - |
|
| 375 | - if ( |
|
| 376 | - $forcer_format !== false |
|
| 377 | - // ignorer forcer_format si on a une image svg, que le filtre appelant ne supporte pas SVG, et que le forcage est un autre format image |
|
| 378 | - and ($terminaison_dest !== 'svg' or $support_svg or !in_array($forcer_format, _image_extensions_acceptees_en_sortie())) |
|
| 379 | - ) { |
|
| 380 | - $terminaison_dest = $forcer_format; |
|
| 381 | - } |
|
| 382 | - |
|
| 383 | - if (!$terminaison_dest) { |
|
| 384 | - return false; |
|
| 385 | - } |
|
| 386 | - |
|
| 387 | - $nom_fichier = substr($fichier, 0, strlen($fichier) - (strlen($terminaison) + 1)); |
|
| 388 | - $fichier_dest = $nom_fichier; |
|
| 389 | - if ( |
|
| 390 | - ($find_in_path and $f = find_in_path($fichier) and $fichier = $f) |
|
| 391 | - or @file_exists($f = $fichier) |
|
| 392 | - ) { |
|
| 393 | - // on ne passe jamais la balise img qui est peut-être en x2 et à laquelle on ne peut pas faire confiance |
|
| 394 | - // on lit directement les infos du fichier |
|
| 395 | - [$ret['hauteur'], $ret['largeur']] = taille_image($f); |
|
| 396 | - $date_src = @filemtime($f); |
|
| 397 | - } elseif ( |
|
| 398 | - @file_exists($f = "$fichier.src") |
|
| 399 | - and lire_fichier($f, $valeurs) |
|
| 400 | - and $valeurs = unserialize($valeurs) |
|
| 401 | - and isset($valeurs['hauteur_dest']) |
|
| 402 | - and isset($valeurs['largeur_dest']) |
|
| 403 | - ) { |
|
| 404 | - $ret['hauteur'] = $valeurs['hauteur_dest']; |
|
| 405 | - $ret['largeur'] = $valeurs['largeur_dest']; |
|
| 406 | - $date_src = $valeurs['date']; |
|
| 407 | - } // pas de fichier source par la |
|
| 408 | - else { |
|
| 409 | - return false; |
|
| 410 | - } |
|
| 411 | - |
|
| 412 | - // pas de taille mesurable ? |
|
| 413 | - if (!$ret['hauteur'] |
|
| 414 | - or !($ret['hauteur'] = intval(round($ret['hauteur']))) |
|
| 415 | - or !$ret['largeur'] |
|
| 416 | - or !($ret['largeur'] = intval(round($ret['largeur']))) |
|
| 417 | - ) { |
|
| 418 | - return false; |
|
| 419 | - } |
|
| 420 | - |
|
| 421 | - // les images calculees dependent du chemin du fichier source |
|
| 422 | - // pour une meme image source et un meme filtre on aboutira a 2 fichiers selon si l'appel est dans le public ou dans le prive |
|
| 423 | - // ce n'est pas totalement optimal en terme de stockage, mais chaque image est associee a un fichier .src |
|
| 424 | - // qui contient la methode de reconstrucion (le filtre + les arguments d'appel) et les arguments different entre prive et public |
|
| 425 | - // la mise en commun du fichier image cree donc un bug et des problemes qui necessiteraient beaucoup de complexite de code |
|
| 426 | - // alors que ca concerne peu de site au final |
|
| 427 | - // la release de r23632+r23633+r23634 a provoque peu de remontee de bug attestant du peu de sites impactes |
|
| 428 | - $identifiant = $fichier; |
|
| 429 | - |
|
| 430 | - // cas general : |
|
| 431 | - // on a un dossier cache commun et un nom de fichier qui varie avec l'effet |
|
| 432 | - // cas particulier de reduire : |
|
| 433 | - // un cache par dimension, et le nom de fichier est conserve, suffixe par la dimension aussi |
|
| 434 | - $cache = 'cache-gd2'; |
|
| 435 | - if (substr($effet, 0, 7) == 'reduire') { |
|
| 436 | - [, $maxWidth, $maxHeight] = explode('-', $effet); |
|
| 437 | - [$destWidth, $destHeight] = _image_ratio($ret['largeur'], $ret['hauteur'], $maxWidth, $maxHeight); |
|
| 438 | - $ret['largeur_dest'] = $destWidth; |
|
| 439 | - $ret['hauteur_dest'] = $destHeight; |
|
| 440 | - $effet = "L{$destWidth}xH$destHeight"; |
|
| 441 | - $cache = 'cache-vignettes'; |
|
| 442 | - $fichier_dest = basename($fichier_dest); |
|
| 443 | - if (($ret['largeur'] <= $maxWidth) && ($ret['hauteur'] <= $maxHeight)) { |
|
| 444 | - // on garde la terminaison initiale car image simplement copiee |
|
| 445 | - // et on postfixe son nom avec un md5 du path |
|
| 446 | - $terminaison_dest = $terminaison; |
|
| 447 | - $fichier_dest .= '-' . substr(md5("$identifiant"), 0, 5); |
|
| 448 | - } else { |
|
| 449 | - $fichier_dest .= '-' . substr(md5("$identifiant-$effet"), 0, 5); |
|
| 450 | - } |
|
| 451 | - $cache = sous_repertoire(_DIR_VAR, $cache); |
|
| 452 | - $cache = sous_repertoire($cache, $effet); |
|
| 453 | - } else { |
|
| 454 | - $fichier_dest = md5("$identifiant-$effet"); |
|
| 455 | - $cache = sous_repertoire(_DIR_VAR, $cache); |
|
| 456 | - $cache = sous_repertoire($cache, substr($fichier_dest, 0, 2)); |
|
| 457 | - $fichier_dest = substr($fichier_dest, 2); |
|
| 458 | - } |
|
| 459 | - |
|
| 460 | - $fichier_dest = $cache . $fichier_dest . '.' . $terminaison_dest; |
|
| 461 | - |
|
| 462 | - $GLOBALS['images_calculees'][] = $fichier_dest; |
|
| 463 | - |
|
| 464 | - $creer = true; |
|
| 465 | - // si recalcul des images demande, recalculer chaque image une fois |
|
| 466 | - if (defined('_VAR_IMAGES') and _VAR_IMAGES and !isset($images_recalcul[$fichier_dest])) { |
|
| 467 | - $images_recalcul[$fichier_dest] = true; |
|
| 468 | - } else { |
|
| 469 | - if (@file_exists($f = $fichier_dest)) { |
|
| 470 | - if (filemtime($f) >= $date_src) { |
|
| 471 | - $creer = false; |
|
| 472 | - } |
|
| 473 | - } else { |
|
| 474 | - if ( |
|
| 475 | - @file_exists($f = "$fichier_dest.src") |
|
| 476 | - and lire_fichier($f, $valeurs) |
|
| 477 | - and $valeurs = unserialize($valeurs) |
|
| 478 | - and $valeurs['date'] >= $date_src |
|
| 479 | - ) { |
|
| 480 | - $creer = false; |
|
| 481 | - } |
|
| 482 | - } |
|
| 483 | - } |
|
| 484 | - if ($creer) { |
|
| 485 | - if (!@file_exists($fichier)) { |
|
| 486 | - if (!@file_exists("$fichier.src")) { |
|
| 487 | - spip_log("Image absente : $fichier"); |
|
| 488 | - |
|
| 489 | - return false; |
|
| 490 | - } |
|
| 491 | - # on reconstruit l'image source absente a partir de la chaine des .src |
|
| 492 | - reconstruire_image_intermediaire($fichier); |
|
| 493 | - } |
|
| 494 | - } |
|
| 495 | - |
|
| 496 | - if ($creer) { |
|
| 497 | - spip_log( |
|
| 498 | - 'filtre image ' . ($fonction_creation ? reset($fonction_creation) : '') . "[$effet] sur $fichier", |
|
| 499 | - 'images' . _LOG_DEBUG |
|
| 500 | - ); |
|
| 501 | - } |
|
| 502 | - |
|
| 503 | - $term_fonction = _image_trouver_extension_pertinente($fichier); |
|
| 504 | - $ret['fonction_imagecreatefrom'] = '_imagecreatefrom' . $term_fonction; |
|
| 505 | - $ret['fichier'] = $fichier; |
|
| 506 | - $ret['fonction_image'] = '_image_image' . $terminaison_dest; |
|
| 507 | - $ret['fichier_dest'] = $fichier_dest; |
|
| 508 | - $ret['format_source'] = _image_extension_normalisee($terminaison); |
|
| 509 | - $ret['format_dest'] = $terminaison_dest; |
|
| 510 | - $ret['date_src'] = $date_src; |
|
| 511 | - $ret['creer'] = $creer; |
|
| 512 | - $ret['class'] = extraire_attribut($img, 'class'); |
|
| 513 | - $ret['alt'] = extraire_attribut($img, 'alt'); |
|
| 514 | - $ret['style'] = extraire_attribut($img, 'style'); |
|
| 515 | - $ret['tag'] = $img; |
|
| 516 | - if ($fonction_creation) { |
|
| 517 | - $ret['reconstruction'] = $fonction_creation; |
|
| 518 | - # ecrire ici comment creer le fichier, car il est pas sur qu'on l'ecrira reelement |
|
| 519 | - # cas de image_reduire qui finalement ne reduit pas l'image source |
|
| 520 | - # ca evite d'essayer de le creer au prochain hit si il n'est pas la |
|
| 521 | - #ecrire_fichier($ret['fichier_dest'].'.src',serialize($ret),true); |
|
| 522 | - } |
|
| 523 | - |
|
| 524 | - $ret = pipeline('image_preparer_filtre', [ |
|
| 525 | - 'args' => [ |
|
| 526 | - 'img' => $img, |
|
| 527 | - 'effet' => $effet, |
|
| 528 | - 'forcer_format' => $forcer_format, |
|
| 529 | - 'fonction_creation' => $fonction_creation, |
|
| 530 | - 'find_in_path' => $find_in_path, |
|
| 531 | - ], |
|
| 532 | - 'data' => $ret |
|
| 533 | - ]); |
|
| 534 | - |
|
| 535 | - // une globale pour le debug en cas de crash memoire |
|
| 536 | - $GLOBALS['derniere_image_calculee'] = $ret; |
|
| 537 | - |
|
| 538 | - // traiter le cas particulier des SVG : si le filtre n'a pas annonce explicitement qu'il savait faire, on delegue |
|
| 539 | - if ($term_fonction === 'svg') { |
|
| 540 | - if ($creer and !$support_svg) { |
|
| 541 | - process_image_svg_identite($ret); |
|
| 542 | - $ret['creer'] = false; |
|
| 543 | - } |
|
| 544 | - } |
|
| 545 | - else { |
|
| 546 | - if (!function_exists($ret['fonction_imagecreatefrom'])) { |
|
| 547 | - return false; |
|
| 548 | - } |
|
| 549 | - } |
|
| 550 | - |
|
| 551 | - return $ret; |
|
| 311 | + $ret = []; |
|
| 312 | + $f = null; |
|
| 313 | + static $images_recalcul = []; |
|
| 314 | + if (strlen($img) == 0) { |
|
| 315 | + return false; |
|
| 316 | + } |
|
| 317 | + |
|
| 318 | + $source = trim(extraire_attribut($img, 'src') ?? ''); |
|
| 319 | + if (strlen($source) < 1) { |
|
| 320 | + $source = $img; |
|
| 321 | + $img = "<img src='$source' />"; |
|
| 322 | + } elseif ( |
|
| 323 | + preg_match('@^data:image/([^;]*);base64,(.*)$@isS', $source, $regs) |
|
| 324 | + and $extension = _image_trouver_extension_depuis_mime('image/' . $regs[1]) |
|
| 325 | + and in_array($extension, _image_extensions_acceptees_en_entree()) |
|
| 326 | + ) { |
|
| 327 | + # gerer img src="data:....base64" |
|
| 328 | + $local = sous_repertoire(_DIR_VAR, 'image-data') . md5($regs[2]) . '.' . _image_extension_normalisee($extension); |
|
| 329 | + if (!file_exists($local)) { |
|
| 330 | + ecrire_fichier($local, base64_decode($regs[2])); |
|
| 331 | + } |
|
| 332 | + if ($sanitizer = charger_fonction($extension, 'sanitizer', true)) { |
|
| 333 | + $sanitizer($local); |
|
| 334 | + } |
|
| 335 | + $source = $local; |
|
| 336 | + $img = inserer_attribut($img, 'src', $source); |
|
| 337 | + # eviter les mauvaises surprises lors de conversions de format |
|
| 338 | + $img = inserer_attribut($img, 'width', ''); |
|
| 339 | + $img = inserer_attribut($img, 'height', ''); |
|
| 340 | + } |
|
| 341 | + |
|
| 342 | + // les protocoles web prennent au moins 3 lettres |
|
| 343 | + if (tester_url_absolue($source)) { |
|
| 344 | + include_spip('inc/distant'); |
|
| 345 | + $fichier = _DIR_RACINE . copie_locale($source); |
|
| 346 | + if (!$fichier) { |
|
| 347 | + return ''; |
|
| 348 | + } |
|
| 349 | + if ( |
|
| 350 | + $extension = _image_trouver_extension($fichier) |
|
| 351 | + and $sanitizer = charger_fonction($extension, 'sanitizer', true) |
|
| 352 | + ) { |
|
| 353 | + $sanitizer($fichier); |
|
| 354 | + } |
|
| 355 | + } else { |
|
| 356 | + // enlever le timestamp eventuel |
|
| 357 | + if (strpos($source, '?') !== false) { |
|
| 358 | + $source = preg_replace(',[?][0-9]+$,', '', $source); |
|
| 359 | + } |
|
| 360 | + if ( |
|
| 361 | + strpos($source, '?') !== false |
|
| 362 | + and strncmp($source, _DIR_IMG, strlen(_DIR_IMG)) == 0 |
|
| 363 | + and file_exists($f = preg_replace(',[?].*$,', '', $source)) |
|
| 364 | + ) { |
|
| 365 | + $source = $f; |
|
| 366 | + } |
|
| 367 | + $fichier = $source; |
|
| 368 | + } |
|
| 369 | + |
|
| 370 | + $terminaison_dest = ''; |
|
| 371 | + if ($terminaison = _image_trouver_extension($fichier)) { |
|
| 372 | + $terminaison_dest = ($terminaison == 'gif') ? 'png' : $terminaison; |
|
| 373 | + } |
|
| 374 | + |
|
| 375 | + if ( |
|
| 376 | + $forcer_format !== false |
|
| 377 | + // ignorer forcer_format si on a une image svg, que le filtre appelant ne supporte pas SVG, et que le forcage est un autre format image |
|
| 378 | + and ($terminaison_dest !== 'svg' or $support_svg or !in_array($forcer_format, _image_extensions_acceptees_en_sortie())) |
|
| 379 | + ) { |
|
| 380 | + $terminaison_dest = $forcer_format; |
|
| 381 | + } |
|
| 382 | + |
|
| 383 | + if (!$terminaison_dest) { |
|
| 384 | + return false; |
|
| 385 | + } |
|
| 386 | + |
|
| 387 | + $nom_fichier = substr($fichier, 0, strlen($fichier) - (strlen($terminaison) + 1)); |
|
| 388 | + $fichier_dest = $nom_fichier; |
|
| 389 | + if ( |
|
| 390 | + ($find_in_path and $f = find_in_path($fichier) and $fichier = $f) |
|
| 391 | + or @file_exists($f = $fichier) |
|
| 392 | + ) { |
|
| 393 | + // on ne passe jamais la balise img qui est peut-être en x2 et à laquelle on ne peut pas faire confiance |
|
| 394 | + // on lit directement les infos du fichier |
|
| 395 | + [$ret['hauteur'], $ret['largeur']] = taille_image($f); |
|
| 396 | + $date_src = @filemtime($f); |
|
| 397 | + } elseif ( |
|
| 398 | + @file_exists($f = "$fichier.src") |
|
| 399 | + and lire_fichier($f, $valeurs) |
|
| 400 | + and $valeurs = unserialize($valeurs) |
|
| 401 | + and isset($valeurs['hauteur_dest']) |
|
| 402 | + and isset($valeurs['largeur_dest']) |
|
| 403 | + ) { |
|
| 404 | + $ret['hauteur'] = $valeurs['hauteur_dest']; |
|
| 405 | + $ret['largeur'] = $valeurs['largeur_dest']; |
|
| 406 | + $date_src = $valeurs['date']; |
|
| 407 | + } // pas de fichier source par la |
|
| 408 | + else { |
|
| 409 | + return false; |
|
| 410 | + } |
|
| 411 | + |
|
| 412 | + // pas de taille mesurable ? |
|
| 413 | + if (!$ret['hauteur'] |
|
| 414 | + or !($ret['hauteur'] = intval(round($ret['hauteur']))) |
|
| 415 | + or !$ret['largeur'] |
|
| 416 | + or !($ret['largeur'] = intval(round($ret['largeur']))) |
|
| 417 | + ) { |
|
| 418 | + return false; |
|
| 419 | + } |
|
| 420 | + |
|
| 421 | + // les images calculees dependent du chemin du fichier source |
|
| 422 | + // pour une meme image source et un meme filtre on aboutira a 2 fichiers selon si l'appel est dans le public ou dans le prive |
|
| 423 | + // ce n'est pas totalement optimal en terme de stockage, mais chaque image est associee a un fichier .src |
|
| 424 | + // qui contient la methode de reconstrucion (le filtre + les arguments d'appel) et les arguments different entre prive et public |
|
| 425 | + // la mise en commun du fichier image cree donc un bug et des problemes qui necessiteraient beaucoup de complexite de code |
|
| 426 | + // alors que ca concerne peu de site au final |
|
| 427 | + // la release de r23632+r23633+r23634 a provoque peu de remontee de bug attestant du peu de sites impactes |
|
| 428 | + $identifiant = $fichier; |
|
| 429 | + |
|
| 430 | + // cas general : |
|
| 431 | + // on a un dossier cache commun et un nom de fichier qui varie avec l'effet |
|
| 432 | + // cas particulier de reduire : |
|
| 433 | + // un cache par dimension, et le nom de fichier est conserve, suffixe par la dimension aussi |
|
| 434 | + $cache = 'cache-gd2'; |
|
| 435 | + if (substr($effet, 0, 7) == 'reduire') { |
|
| 436 | + [, $maxWidth, $maxHeight] = explode('-', $effet); |
|
| 437 | + [$destWidth, $destHeight] = _image_ratio($ret['largeur'], $ret['hauteur'], $maxWidth, $maxHeight); |
|
| 438 | + $ret['largeur_dest'] = $destWidth; |
|
| 439 | + $ret['hauteur_dest'] = $destHeight; |
|
| 440 | + $effet = "L{$destWidth}xH$destHeight"; |
|
| 441 | + $cache = 'cache-vignettes'; |
|
| 442 | + $fichier_dest = basename($fichier_dest); |
|
| 443 | + if (($ret['largeur'] <= $maxWidth) && ($ret['hauteur'] <= $maxHeight)) { |
|
| 444 | + // on garde la terminaison initiale car image simplement copiee |
|
| 445 | + // et on postfixe son nom avec un md5 du path |
|
| 446 | + $terminaison_dest = $terminaison; |
|
| 447 | + $fichier_dest .= '-' . substr(md5("$identifiant"), 0, 5); |
|
| 448 | + } else { |
|
| 449 | + $fichier_dest .= '-' . substr(md5("$identifiant-$effet"), 0, 5); |
|
| 450 | + } |
|
| 451 | + $cache = sous_repertoire(_DIR_VAR, $cache); |
|
| 452 | + $cache = sous_repertoire($cache, $effet); |
|
| 453 | + } else { |
|
| 454 | + $fichier_dest = md5("$identifiant-$effet"); |
|
| 455 | + $cache = sous_repertoire(_DIR_VAR, $cache); |
|
| 456 | + $cache = sous_repertoire($cache, substr($fichier_dest, 0, 2)); |
|
| 457 | + $fichier_dest = substr($fichier_dest, 2); |
|
| 458 | + } |
|
| 459 | + |
|
| 460 | + $fichier_dest = $cache . $fichier_dest . '.' . $terminaison_dest; |
|
| 461 | + |
|
| 462 | + $GLOBALS['images_calculees'][] = $fichier_dest; |
|
| 463 | + |
|
| 464 | + $creer = true; |
|
| 465 | + // si recalcul des images demande, recalculer chaque image une fois |
|
| 466 | + if (defined('_VAR_IMAGES') and _VAR_IMAGES and !isset($images_recalcul[$fichier_dest])) { |
|
| 467 | + $images_recalcul[$fichier_dest] = true; |
|
| 468 | + } else { |
|
| 469 | + if (@file_exists($f = $fichier_dest)) { |
|
| 470 | + if (filemtime($f) >= $date_src) { |
|
| 471 | + $creer = false; |
|
| 472 | + } |
|
| 473 | + } else { |
|
| 474 | + if ( |
|
| 475 | + @file_exists($f = "$fichier_dest.src") |
|
| 476 | + and lire_fichier($f, $valeurs) |
|
| 477 | + and $valeurs = unserialize($valeurs) |
|
| 478 | + and $valeurs['date'] >= $date_src |
|
| 479 | + ) { |
|
| 480 | + $creer = false; |
|
| 481 | + } |
|
| 482 | + } |
|
| 483 | + } |
|
| 484 | + if ($creer) { |
|
| 485 | + if (!@file_exists($fichier)) { |
|
| 486 | + if (!@file_exists("$fichier.src")) { |
|
| 487 | + spip_log("Image absente : $fichier"); |
|
| 488 | + |
|
| 489 | + return false; |
|
| 490 | + } |
|
| 491 | + # on reconstruit l'image source absente a partir de la chaine des .src |
|
| 492 | + reconstruire_image_intermediaire($fichier); |
|
| 493 | + } |
|
| 494 | + } |
|
| 495 | + |
|
| 496 | + if ($creer) { |
|
| 497 | + spip_log( |
|
| 498 | + 'filtre image ' . ($fonction_creation ? reset($fonction_creation) : '') . "[$effet] sur $fichier", |
|
| 499 | + 'images' . _LOG_DEBUG |
|
| 500 | + ); |
|
| 501 | + } |
|
| 502 | + |
|
| 503 | + $term_fonction = _image_trouver_extension_pertinente($fichier); |
|
| 504 | + $ret['fonction_imagecreatefrom'] = '_imagecreatefrom' . $term_fonction; |
|
| 505 | + $ret['fichier'] = $fichier; |
|
| 506 | + $ret['fonction_image'] = '_image_image' . $terminaison_dest; |
|
| 507 | + $ret['fichier_dest'] = $fichier_dest; |
|
| 508 | + $ret['format_source'] = _image_extension_normalisee($terminaison); |
|
| 509 | + $ret['format_dest'] = $terminaison_dest; |
|
| 510 | + $ret['date_src'] = $date_src; |
|
| 511 | + $ret['creer'] = $creer; |
|
| 512 | + $ret['class'] = extraire_attribut($img, 'class'); |
|
| 513 | + $ret['alt'] = extraire_attribut($img, 'alt'); |
|
| 514 | + $ret['style'] = extraire_attribut($img, 'style'); |
|
| 515 | + $ret['tag'] = $img; |
|
| 516 | + if ($fonction_creation) { |
|
| 517 | + $ret['reconstruction'] = $fonction_creation; |
|
| 518 | + # ecrire ici comment creer le fichier, car il est pas sur qu'on l'ecrira reelement |
|
| 519 | + # cas de image_reduire qui finalement ne reduit pas l'image source |
|
| 520 | + # ca evite d'essayer de le creer au prochain hit si il n'est pas la |
|
| 521 | + #ecrire_fichier($ret['fichier_dest'].'.src',serialize($ret),true); |
|
| 522 | + } |
|
| 523 | + |
|
| 524 | + $ret = pipeline('image_preparer_filtre', [ |
|
| 525 | + 'args' => [ |
|
| 526 | + 'img' => $img, |
|
| 527 | + 'effet' => $effet, |
|
| 528 | + 'forcer_format' => $forcer_format, |
|
| 529 | + 'fonction_creation' => $fonction_creation, |
|
| 530 | + 'find_in_path' => $find_in_path, |
|
| 531 | + ], |
|
| 532 | + 'data' => $ret |
|
| 533 | + ]); |
|
| 534 | + |
|
| 535 | + // une globale pour le debug en cas de crash memoire |
|
| 536 | + $GLOBALS['derniere_image_calculee'] = $ret; |
|
| 537 | + |
|
| 538 | + // traiter le cas particulier des SVG : si le filtre n'a pas annonce explicitement qu'il savait faire, on delegue |
|
| 539 | + if ($term_fonction === 'svg') { |
|
| 540 | + if ($creer and !$support_svg) { |
|
| 541 | + process_image_svg_identite($ret); |
|
| 542 | + $ret['creer'] = false; |
|
| 543 | + } |
|
| 544 | + } |
|
| 545 | + else { |
|
| 546 | + if (!function_exists($ret['fonction_imagecreatefrom'])) { |
|
| 547 | + return false; |
|
| 548 | + } |
|
| 549 | + } |
|
| 550 | + |
|
| 551 | + return $ret; |
|
| 552 | 552 | } |
| 553 | 553 | |
| 554 | 554 | |
@@ -557,54 +557,54 @@ discard block |
||
| 557 | 557 | * @return array |
| 558 | 558 | */ |
| 559 | 559 | function _image_extensions_acceptees_en_entree() { |
| 560 | - static $extensions = null; |
|
| 561 | - if (empty($extensions)) { |
|
| 562 | - $extensions = ['png', 'gif', 'jpg', 'jpeg']; |
|
| 563 | - if (!empty($GLOBALS['meta']['gd_formats'])) { |
|
| 564 | - // action=tester renseigne gd_formats et detecte le support de webp |
|
| 565 | - $extensions = array_merge(explode(',', $GLOBALS['meta']['gd_formats'])); |
|
| 566 | - $extensions = array_map('trim', $extensions); |
|
| 567 | - $extensions = array_filter($extensions); |
|
| 568 | - if (in_array('jpg', $extensions)) { |
|
| 569 | - $extensions[] = 'jpeg'; |
|
| 570 | - } |
|
| 571 | - $extensions = array_unique($extensions); |
|
| 572 | - } |
|
| 573 | - $extensions[] = 'svg'; // on le supporte toujours avec des fonctions specifiques |
|
| 574 | - } |
|
| 575 | - |
|
| 576 | - return $extensions; |
|
| 560 | + static $extensions = null; |
|
| 561 | + if (empty($extensions)) { |
|
| 562 | + $extensions = ['png', 'gif', 'jpg', 'jpeg']; |
|
| 563 | + if (!empty($GLOBALS['meta']['gd_formats'])) { |
|
| 564 | + // action=tester renseigne gd_formats et detecte le support de webp |
|
| 565 | + $extensions = array_merge(explode(',', $GLOBALS['meta']['gd_formats'])); |
|
| 566 | + $extensions = array_map('trim', $extensions); |
|
| 567 | + $extensions = array_filter($extensions); |
|
| 568 | + if (in_array('jpg', $extensions)) { |
|
| 569 | + $extensions[] = 'jpeg'; |
|
| 570 | + } |
|
| 571 | + $extensions = array_unique($extensions); |
|
| 572 | + } |
|
| 573 | + $extensions[] = 'svg'; // on le supporte toujours avec des fonctions specifiques |
|
| 574 | + } |
|
| 575 | + |
|
| 576 | + return $extensions; |
|
| 577 | 577 | } |
| 578 | 578 | |
| 579 | 579 | /** |
| 580 | 580 | * @return array|string[]|null |
| 581 | 581 | */ |
| 582 | 582 | function _image_extensions_acceptees_en_sortie() { |
| 583 | - static $extensions = null; |
|
| 584 | - if (empty($extensions)) { |
|
| 585 | - $extensions = _image_extensions_acceptees_en_entree(); |
|
| 586 | - $extensions = array_diff($extensions, ['jpeg']); |
|
| 587 | - if (in_array('gif', $extensions) and !function_exists('imagegif')) { |
|
| 588 | - $extensions = array_diff($extensions, ['gif']); |
|
| 589 | - } |
|
| 590 | - if (in_array('webp', $extensions) and !function_exists('imagewebp')) { |
|
| 591 | - $extensions = array_diff($extensions, ['webp']); |
|
| 592 | - } |
|
| 593 | - } |
|
| 594 | - |
|
| 595 | - return $extensions; |
|
| 583 | + static $extensions = null; |
|
| 584 | + if (empty($extensions)) { |
|
| 585 | + $extensions = _image_extensions_acceptees_en_entree(); |
|
| 586 | + $extensions = array_diff($extensions, ['jpeg']); |
|
| 587 | + if (in_array('gif', $extensions) and !function_exists('imagegif')) { |
|
| 588 | + $extensions = array_diff($extensions, ['gif']); |
|
| 589 | + } |
|
| 590 | + if (in_array('webp', $extensions) and !function_exists('imagewebp')) { |
|
| 591 | + $extensions = array_diff($extensions, ['webp']); |
|
| 592 | + } |
|
| 593 | + } |
|
| 594 | + |
|
| 595 | + return $extensions; |
|
| 596 | 596 | } |
| 597 | 597 | |
| 598 | 598 | function _image_extension_normalisee($extension) { |
| 599 | - $extension = strtolower($extension); |
|
| 600 | - if ($extension === 'jpeg') { |
|
| 601 | - $extension = 'jpg'; |
|
| 602 | - } |
|
| 603 | - return $extension; |
|
| 599 | + $extension = strtolower($extension); |
|
| 600 | + if ($extension === 'jpeg') { |
|
| 601 | + $extension = 'jpg'; |
|
| 602 | + } |
|
| 603 | + return $extension; |
|
| 604 | 604 | } |
| 605 | 605 | |
| 606 | 606 | function _image_extensions_conservent_transparence() { |
| 607 | - return ['png', 'webp']; |
|
| 607 | + return ['png', 'webp']; |
|
| 608 | 608 | } |
| 609 | 609 | |
| 610 | 610 | |
@@ -614,12 +614,12 @@ discard block |
||
| 614 | 614 | * @return string |
| 615 | 615 | */ |
| 616 | 616 | function _image_trouver_extension($path) { |
| 617 | - $preg_extensions = implode('|', _image_extensions_acceptees_en_entree()); |
|
| 618 | - if (preg_match(",\.($preg_extensions)($|[?]),i", $path, $regs)) { |
|
| 619 | - $terminaison = strtolower($regs[1]); |
|
| 620 | - return $terminaison; |
|
| 621 | - } |
|
| 622 | - return ''; |
|
| 617 | + $preg_extensions = implode('|', _image_extensions_acceptees_en_entree()); |
|
| 618 | + if (preg_match(",\.($preg_extensions)($|[?]),i", $path, $regs)) { |
|
| 619 | + $terminaison = strtolower($regs[1]); |
|
| 620 | + return $terminaison; |
|
| 621 | + } |
|
| 622 | + return ''; |
|
| 623 | 623 | } |
| 624 | 624 | |
| 625 | 625 | /** |
@@ -630,33 +630,33 @@ discard block |
||
| 630 | 630 | * @return string Extension, dans le format attendu par les fonctions 'gd' ('jpeg' pour les .jpg par exemple) |
| 631 | 631 | */ |
| 632 | 632 | function _image_trouver_extension_pertinente($path) { |
| 633 | - $path = supprimer_timestamp($path); |
|
| 634 | - $terminaison = _image_trouver_extension($path); |
|
| 635 | - if ($terminaison == 'jpg') { |
|
| 636 | - $terminaison = 'jpeg'; |
|
| 637 | - } |
|
| 638 | - |
|
| 639 | - if (!file_exists($path)) { |
|
| 640 | - return $terminaison; |
|
| 641 | - } |
|
| 642 | - |
|
| 643 | - if (!$info = @spip_getimagesize($path)) { |
|
| 644 | - return $terminaison; |
|
| 645 | - } |
|
| 646 | - |
|
| 647 | - if (isset($info['mime'])) { |
|
| 648 | - $mime = $info['mime']; |
|
| 649 | - } |
|
| 650 | - else { |
|
| 651 | - $mime = image_type_to_mime_type($info[2]); |
|
| 652 | - } |
|
| 653 | - |
|
| 654 | - $_terminaison = _image_trouver_extension_depuis_mime($mime); |
|
| 655 | - if ($_terminaison and $_terminaison !== $terminaison) { |
|
| 656 | - spip_log("Mauvaise extension du fichier : $path . Son type mime est : $mime", 'images.' . _LOG_INFO_IMPORTANTE); |
|
| 657 | - $terminaison = $_terminaison; |
|
| 658 | - } |
|
| 659 | - return $terminaison; |
|
| 633 | + $path = supprimer_timestamp($path); |
|
| 634 | + $terminaison = _image_trouver_extension($path); |
|
| 635 | + if ($terminaison == 'jpg') { |
|
| 636 | + $terminaison = 'jpeg'; |
|
| 637 | + } |
|
| 638 | + |
|
| 639 | + if (!file_exists($path)) { |
|
| 640 | + return $terminaison; |
|
| 641 | + } |
|
| 642 | + |
|
| 643 | + if (!$info = @spip_getimagesize($path)) { |
|
| 644 | + return $terminaison; |
|
| 645 | + } |
|
| 646 | + |
|
| 647 | + if (isset($info['mime'])) { |
|
| 648 | + $mime = $info['mime']; |
|
| 649 | + } |
|
| 650 | + else { |
|
| 651 | + $mime = image_type_to_mime_type($info[2]); |
|
| 652 | + } |
|
| 653 | + |
|
| 654 | + $_terminaison = _image_trouver_extension_depuis_mime($mime); |
|
| 655 | + if ($_terminaison and $_terminaison !== $terminaison) { |
|
| 656 | + spip_log("Mauvaise extension du fichier : $path . Son type mime est : $mime", 'images.' . _LOG_INFO_IMPORTANTE); |
|
| 657 | + $terminaison = $_terminaison; |
|
| 658 | + } |
|
| 659 | + return $terminaison; |
|
| 660 | 660 | } |
| 661 | 661 | |
| 662 | 662 | /** |
@@ -664,36 +664,36 @@ discard block |
||
| 664 | 664 | * @return string |
| 665 | 665 | */ |
| 666 | 666 | function _image_trouver_extension_depuis_mime($mime) { |
| 667 | - switch (strtolower($mime)) { |
|
| 668 | - case 'image/png': |
|
| 669 | - case 'image/x-png': |
|
| 670 | - $terminaison = 'png'; |
|
| 671 | - break; |
|
| 672 | - |
|
| 673 | - case 'image/jpg': |
|
| 674 | - case 'image/jpeg': |
|
| 675 | - case 'image/pjpeg': |
|
| 676 | - $terminaison = 'jpeg'; |
|
| 677 | - break; |
|
| 678 | - |
|
| 679 | - case 'image/gif': |
|
| 680 | - $terminaison = 'gif'; |
|
| 681 | - break; |
|
| 682 | - |
|
| 683 | - case 'image/webp': |
|
| 684 | - case 'image/x-webp': |
|
| 685 | - $terminaison = 'webp'; |
|
| 686 | - break; |
|
| 687 | - |
|
| 688 | - case 'image/svg+xml': |
|
| 689 | - $terminaison = 'svg'; |
|
| 690 | - break; |
|
| 691 | - |
|
| 692 | - default: |
|
| 693 | - $terminaison = ''; |
|
| 694 | - } |
|
| 695 | - |
|
| 696 | - return $terminaison; |
|
| 667 | + switch (strtolower($mime)) { |
|
| 668 | + case 'image/png': |
|
| 669 | + case 'image/x-png': |
|
| 670 | + $terminaison = 'png'; |
|
| 671 | + break; |
|
| 672 | + |
|
| 673 | + case 'image/jpg': |
|
| 674 | + case 'image/jpeg': |
|
| 675 | + case 'image/pjpeg': |
|
| 676 | + $terminaison = 'jpeg'; |
|
| 677 | + break; |
|
| 678 | + |
|
| 679 | + case 'image/gif': |
|
| 680 | + $terminaison = 'gif'; |
|
| 681 | + break; |
|
| 682 | + |
|
| 683 | + case 'image/webp': |
|
| 684 | + case 'image/x-webp': |
|
| 685 | + $terminaison = 'webp'; |
|
| 686 | + break; |
|
| 687 | + |
|
| 688 | + case 'image/svg+xml': |
|
| 689 | + $terminaison = 'svg'; |
|
| 690 | + break; |
|
| 691 | + |
|
| 692 | + default: |
|
| 693 | + $terminaison = ''; |
|
| 694 | + } |
|
| 695 | + |
|
| 696 | + return $terminaison; |
|
| 697 | 697 | } |
| 698 | 698 | |
| 699 | 699 | |
@@ -713,18 +713,18 @@ discard block |
||
| 713 | 713 | * Une ressource de type Image GD. |
| 714 | 714 | */ |
| 715 | 715 | function _imagecreatefrom_func(string $func, string $filename) { |
| 716 | - if (!function_exists($func)) { |
|
| 717 | - spip_log("GD indisponible : $func inexistante. Traitement $filename impossible.", _LOG_CRITIQUE); |
|
| 718 | - erreur_squelette("GD indisponible : $func inexistante. Traitement $filename impossible."); |
|
| 719 | - return null; |
|
| 720 | - } |
|
| 721 | - $img = @$func($filename); |
|
| 722 | - if (!$img) { |
|
| 723 | - spip_log("Erreur lecture imagecreatefromjpeg $filename", _LOG_CRITIQUE); |
|
| 724 | - erreur_squelette("Erreur lecture imagecreatefromjpeg $filename"); |
|
| 725 | - $img = imagecreate(10, 10); |
|
| 726 | - } |
|
| 727 | - return $img; |
|
| 716 | + if (!function_exists($func)) { |
|
| 717 | + spip_log("GD indisponible : $func inexistante. Traitement $filename impossible.", _LOG_CRITIQUE); |
|
| 718 | + erreur_squelette("GD indisponible : $func inexistante. Traitement $filename impossible."); |
|
| 719 | + return null; |
|
| 720 | + } |
|
| 721 | + $img = @$func($filename); |
|
| 722 | + if (!$img) { |
|
| 723 | + spip_log("Erreur lecture imagecreatefromjpeg $filename", _LOG_CRITIQUE); |
|
| 724 | + erreur_squelette("Erreur lecture imagecreatefromjpeg $filename"); |
|
| 725 | + $img = imagecreate(10, 10); |
|
| 726 | + } |
|
| 727 | + return $img; |
|
| 728 | 728 | } |
| 729 | 729 | |
| 730 | 730 | /** |
@@ -740,7 +740,7 @@ discard block |
||
| 740 | 740 | * Une ressource de type Image GD. |
| 741 | 741 | */ |
| 742 | 742 | function _imagecreatefromjpeg($filename) { |
| 743 | - return _imagecreatefrom_func('imagecreatefromjpeg', $filename); |
|
| 743 | + return _imagecreatefrom_func('imagecreatefromjpeg', $filename); |
|
| 744 | 744 | } |
| 745 | 745 | |
| 746 | 746 | /** |
@@ -756,7 +756,7 @@ discard block |
||
| 756 | 756 | * Une ressource de type Image GD. |
| 757 | 757 | */ |
| 758 | 758 | function _imagecreatefrompng($filename) { |
| 759 | - return _imagecreatefrom_func('imagecreatefrompng', $filename); |
|
| 759 | + return _imagecreatefrom_func('imagecreatefrompng', $filename); |
|
| 760 | 760 | } |
| 761 | 761 | |
| 762 | 762 | /** |
@@ -772,7 +772,7 @@ discard block |
||
| 772 | 772 | * Une ressource de type Image GD. |
| 773 | 773 | */ |
| 774 | 774 | function _imagecreatefromgif($filename) { |
| 775 | - return _imagecreatefrom_func('imagecreatefromgif', $filename); |
|
| 775 | + return _imagecreatefrom_func('imagecreatefromgif', $filename); |
|
| 776 | 776 | } |
| 777 | 777 | |
| 778 | 778 | |
@@ -789,7 +789,7 @@ discard block |
||
| 789 | 789 | * Une ressource de type Image GD. |
| 790 | 790 | */ |
| 791 | 791 | function _imagecreatefromwebp($filename) { |
| 792 | - return _imagecreatefrom_func('imagecreatefromwebp', $filename); |
|
| 792 | + return _imagecreatefrom_func('imagecreatefromwebp', $filename); |
|
| 793 | 793 | } |
| 794 | 794 | |
| 795 | 795 | /** |
@@ -807,24 +807,24 @@ discard block |
||
| 807 | 807 | * - true si une image est bien retournée. |
| 808 | 808 | */ |
| 809 | 809 | function _image_imagepng($img, $fichier) { |
| 810 | - if (!function_exists('imagepng')) { |
|
| 811 | - return false; |
|
| 812 | - } |
|
| 813 | - $tmp = $fichier . '.tmp'; |
|
| 814 | - $ret = imagepng($img, $tmp); |
|
| 815 | - if (file_exists($tmp)) { |
|
| 816 | - $taille_test = @getimagesize($tmp); |
|
| 817 | - if (empty($taille_test[0])) { |
|
| 818 | - return false; |
|
| 819 | - } |
|
| 820 | - |
|
| 821 | - spip_unlink($fichier); // le fichier peut deja exister |
|
| 822 | - @rename($tmp, $fichier); |
|
| 823 | - |
|
| 824 | - return $ret; |
|
| 825 | - } |
|
| 826 | - |
|
| 827 | - return false; |
|
| 810 | + if (!function_exists('imagepng')) { |
|
| 811 | + return false; |
|
| 812 | + } |
|
| 813 | + $tmp = $fichier . '.tmp'; |
|
| 814 | + $ret = imagepng($img, $tmp); |
|
| 815 | + if (file_exists($tmp)) { |
|
| 816 | + $taille_test = @getimagesize($tmp); |
|
| 817 | + if (empty($taille_test[0])) { |
|
| 818 | + return false; |
|
| 819 | + } |
|
| 820 | + |
|
| 821 | + spip_unlink($fichier); // le fichier peut deja exister |
|
| 822 | + @rename($tmp, $fichier); |
|
| 823 | + |
|
| 824 | + return $ret; |
|
| 825 | + } |
|
| 826 | + |
|
| 827 | + return false; |
|
| 828 | 828 | } |
| 829 | 829 | |
| 830 | 830 | /** |
@@ -842,24 +842,24 @@ discard block |
||
| 842 | 842 | * - true si une image est bien retournée. |
| 843 | 843 | */ |
| 844 | 844 | function _image_imagegif($img, $fichier) { |
| 845 | - if (!function_exists('imagegif')) { |
|
| 846 | - return false; |
|
| 847 | - } |
|
| 848 | - $tmp = $fichier . '.tmp'; |
|
| 849 | - $ret = imagegif($img, $tmp); |
|
| 850 | - if (file_exists($tmp)) { |
|
| 851 | - $taille_test = @getimagesize($tmp); |
|
| 852 | - if (empty($taille_test[0])) { |
|
| 853 | - return false; |
|
| 854 | - } |
|
| 855 | - |
|
| 856 | - spip_unlink($fichier); // le fichier peut deja exister |
|
| 857 | - @rename($tmp, $fichier); |
|
| 858 | - |
|
| 859 | - return $ret; |
|
| 860 | - } |
|
| 861 | - |
|
| 862 | - return false; |
|
| 845 | + if (!function_exists('imagegif')) { |
|
| 846 | + return false; |
|
| 847 | + } |
|
| 848 | + $tmp = $fichier . '.tmp'; |
|
| 849 | + $ret = imagegif($img, $tmp); |
|
| 850 | + if (file_exists($tmp)) { |
|
| 851 | + $taille_test = @getimagesize($tmp); |
|
| 852 | + if (empty($taille_test[0])) { |
|
| 853 | + return false; |
|
| 854 | + } |
|
| 855 | + |
|
| 856 | + spip_unlink($fichier); // le fichier peut deja exister |
|
| 857 | + @rename($tmp, $fichier); |
|
| 858 | + |
|
| 859 | + return $ret; |
|
| 860 | + } |
|
| 861 | + |
|
| 862 | + return false; |
|
| 863 | 863 | } |
| 864 | 864 | |
| 865 | 865 | /** |
@@ -882,29 +882,29 @@ discard block |
||
| 882 | 882 | * - true si une image est bien retournée. |
| 883 | 883 | */ |
| 884 | 884 | function _image_imagejpg($img, $fichier, $qualite = _IMG_GD_QUALITE) { |
| 885 | - if (!function_exists('imagejpeg')) { |
|
| 886 | - return false; |
|
| 887 | - } |
|
| 888 | - $tmp = $fichier . '.tmp'; |
|
| 885 | + if (!function_exists('imagejpeg')) { |
|
| 886 | + return false; |
|
| 887 | + } |
|
| 888 | + $tmp = $fichier . '.tmp'; |
|
| 889 | 889 | |
| 890 | - // Enable interlancing |
|
| 891 | - imageinterlace($img, true); |
|
| 890 | + // Enable interlancing |
|
| 891 | + imageinterlace($img, true); |
|
| 892 | 892 | |
| 893 | - $ret = imagejpeg($img, $tmp, $qualite); |
|
| 893 | + $ret = imagejpeg($img, $tmp, $qualite); |
|
| 894 | 894 | |
| 895 | - if (file_exists($tmp)) { |
|
| 896 | - $taille_test = @getimagesize($tmp); |
|
| 897 | - if (empty($taille_test[0])) { |
|
| 898 | - return false; |
|
| 899 | - } |
|
| 895 | + if (file_exists($tmp)) { |
|
| 896 | + $taille_test = @getimagesize($tmp); |
|
| 897 | + if (empty($taille_test[0])) { |
|
| 898 | + return false; |
|
| 899 | + } |
|
| 900 | 900 | |
| 901 | - spip_unlink($fichier); // le fichier peut deja exister |
|
| 902 | - @rename($tmp, $fichier); |
|
| 901 | + spip_unlink($fichier); // le fichier peut deja exister |
|
| 902 | + @rename($tmp, $fichier); |
|
| 903 | 903 | |
| 904 | - return $ret; |
|
| 905 | - } |
|
| 904 | + return $ret; |
|
| 905 | + } |
|
| 906 | 906 | |
| 907 | - return false; |
|
| 907 | + return false; |
|
| 908 | 908 | } |
| 909 | 909 | |
| 910 | 910 | /** |
@@ -922,9 +922,9 @@ discard block |
||
| 922 | 922 | * true si le fichier a bien été créé ; false sinon. |
| 923 | 923 | */ |
| 924 | 924 | function _image_imageico($img, $fichier) { |
| 925 | - $gd_image_array = [$img]; |
|
| 925 | + $gd_image_array = [$img]; |
|
| 926 | 926 | |
| 927 | - return ecrire_fichier($fichier, phpthumb_functions::GD2ICOstring($gd_image_array)); |
|
| 927 | + return ecrire_fichier($fichier, phpthumb_functions::GD2ICOstring($gd_image_array)); |
|
| 928 | 928 | } |
| 929 | 929 | |
| 930 | 930 | |
@@ -943,24 +943,24 @@ discard block |
||
| 943 | 943 | * - true si une image est bien retournée. |
| 944 | 944 | */ |
| 945 | 945 | function _image_imagewebp($img, $fichier, $qualite = _IMG_GD_QUALITE) { |
| 946 | - if (!function_exists('imagewebp')) { |
|
| 947 | - return false; |
|
| 948 | - } |
|
| 949 | - $tmp = $fichier . '.tmp'; |
|
| 950 | - $ret = imagewebp($img, $tmp, $qualite); |
|
| 951 | - if (file_exists($tmp)) { |
|
| 952 | - $taille_test = @getimagesize($tmp); |
|
| 953 | - if (empty($taille_test[0])) { |
|
| 954 | - return false; |
|
| 955 | - } |
|
| 956 | - |
|
| 957 | - spip_unlink($fichier); // le fichier peut deja exister |
|
| 958 | - @rename($tmp, $fichier); |
|
| 959 | - |
|
| 960 | - return $ret; |
|
| 961 | - } |
|
| 962 | - |
|
| 963 | - return false; |
|
| 946 | + if (!function_exists('imagewebp')) { |
|
| 947 | + return false; |
|
| 948 | + } |
|
| 949 | + $tmp = $fichier . '.tmp'; |
|
| 950 | + $ret = imagewebp($img, $tmp, $qualite); |
|
| 951 | + if (file_exists($tmp)) { |
|
| 952 | + $taille_test = @getimagesize($tmp); |
|
| 953 | + if (empty($taille_test[0])) { |
|
| 954 | + return false; |
|
| 955 | + } |
|
| 956 | + |
|
| 957 | + spip_unlink($fichier); // le fichier peut deja exister |
|
| 958 | + @rename($tmp, $fichier); |
|
| 959 | + |
|
| 960 | + return $ret; |
|
| 961 | + } |
|
| 962 | + |
|
| 963 | + return false; |
|
| 964 | 964 | } |
| 965 | 965 | |
| 966 | 966 | /** |
@@ -980,35 +980,35 @@ discard block |
||
| 980 | 980 | */ |
| 981 | 981 | function _image_imagesvg($img, $fichier) { |
| 982 | 982 | |
| 983 | - $tmp = $fichier . '.tmp'; |
|
| 984 | - if (strpos($img, '<') === false) { |
|
| 985 | - $img = supprimer_timestamp($img); |
|
| 986 | - if (!file_exists($img)) { |
|
| 987 | - return false; |
|
| 988 | - } |
|
| 989 | - @copy($img, $tmp); |
|
| 990 | - if (filesize($tmp) == filesize($img)) { |
|
| 991 | - spip_unlink($fichier); // le fichier peut deja exister |
|
| 992 | - @rename($tmp, $fichier); |
|
| 993 | - return true; |
|
| 994 | - } |
|
| 995 | - return false; |
|
| 996 | - } |
|
| 997 | - |
|
| 998 | - file_put_contents($tmp, $img); |
|
| 999 | - if (file_exists($tmp)) { |
|
| 1000 | - $taille_test = spip_getimagesize($tmp); |
|
| 1001 | - if (empty($taille_test[0])) { |
|
| 1002 | - return false; |
|
| 1003 | - } |
|
| 1004 | - |
|
| 1005 | - spip_unlink($fichier); // le fichier peut deja exister |
|
| 1006 | - @rename($tmp, $fichier); |
|
| 1007 | - |
|
| 1008 | - return true; |
|
| 1009 | - } |
|
| 1010 | - |
|
| 1011 | - return false; |
|
| 983 | + $tmp = $fichier . '.tmp'; |
|
| 984 | + if (strpos($img, '<') === false) { |
|
| 985 | + $img = supprimer_timestamp($img); |
|
| 986 | + if (!file_exists($img)) { |
|
| 987 | + return false; |
|
| 988 | + } |
|
| 989 | + @copy($img, $tmp); |
|
| 990 | + if (filesize($tmp) == filesize($img)) { |
|
| 991 | + spip_unlink($fichier); // le fichier peut deja exister |
|
| 992 | + @rename($tmp, $fichier); |
|
| 993 | + return true; |
|
| 994 | + } |
|
| 995 | + return false; |
|
| 996 | + } |
|
| 997 | + |
|
| 998 | + file_put_contents($tmp, $img); |
|
| 999 | + if (file_exists($tmp)) { |
|
| 1000 | + $taille_test = spip_getimagesize($tmp); |
|
| 1001 | + if (empty($taille_test[0])) { |
|
| 1002 | + return false; |
|
| 1003 | + } |
|
| 1004 | + |
|
| 1005 | + spip_unlink($fichier); // le fichier peut deja exister |
|
| 1006 | + @rename($tmp, $fichier); |
|
| 1007 | + |
|
| 1008 | + return true; |
|
| 1009 | + } |
|
| 1010 | + |
|
| 1011 | + return false; |
|
| 1012 | 1012 | } |
| 1013 | 1013 | |
| 1014 | 1014 | |
@@ -1036,30 +1036,30 @@ discard block |
||
| 1036 | 1036 | * - false sinon. |
| 1037 | 1037 | */ |
| 1038 | 1038 | function _image_gd_output($img, $valeurs, $qualite = _IMG_GD_QUALITE, $fonction = null) { |
| 1039 | - if (is_null($fonction)) { |
|
| 1040 | - $fonction = '_image_image' . $valeurs['format_dest']; |
|
| 1041 | - } |
|
| 1042 | - $ret = false; |
|
| 1043 | - #un flag pour reperer les images gravees |
|
| 1044 | - $lock = ( |
|
| 1045 | - !statut_effacer_images_temporaires('get') // si la fonction n'a pas ete activee, on grave tout |
|
| 1046 | - or (@file_exists($valeurs['fichier_dest']) and !@file_exists($valeurs['fichier_dest'] . '.src')) |
|
| 1047 | - ); |
|
| 1048 | - if ( |
|
| 1049 | - function_exists($fonction) |
|
| 1050 | - && ($ret = $fonction($img, $valeurs['fichier_dest'], $qualite)) # on a reussi a creer l'image |
|
| 1051 | - && isset($valeurs['reconstruction']) # et on sait comment la resonctruire le cas echeant |
|
| 1052 | - && !$lock |
|
| 1053 | - ) { |
|
| 1054 | - if (@file_exists($valeurs['fichier_dest'])) { |
|
| 1055 | - // dans tous les cas mettre a jour la taille de l'image finale |
|
| 1056 | - [$valeurs['hauteur_dest'], $valeurs['largeur_dest']] = taille_image($valeurs['fichier_dest']); |
|
| 1057 | - $valeurs['date'] = @filemtime($valeurs['fichier_dest']); // pour la retrouver apres disparition |
|
| 1058 | - ecrire_fichier($valeurs['fichier_dest'] . '.src', serialize($valeurs), true); |
|
| 1059 | - } |
|
| 1060 | - } |
|
| 1061 | - |
|
| 1062 | - return $ret; |
|
| 1039 | + if (is_null($fonction)) { |
|
| 1040 | + $fonction = '_image_image' . $valeurs['format_dest']; |
|
| 1041 | + } |
|
| 1042 | + $ret = false; |
|
| 1043 | + #un flag pour reperer les images gravees |
|
| 1044 | + $lock = ( |
|
| 1045 | + !statut_effacer_images_temporaires('get') // si la fonction n'a pas ete activee, on grave tout |
|
| 1046 | + or (@file_exists($valeurs['fichier_dest']) and !@file_exists($valeurs['fichier_dest'] . '.src')) |
|
| 1047 | + ); |
|
| 1048 | + if ( |
|
| 1049 | + function_exists($fonction) |
|
| 1050 | + && ($ret = $fonction($img, $valeurs['fichier_dest'], $qualite)) # on a reussi a creer l'image |
|
| 1051 | + && isset($valeurs['reconstruction']) # et on sait comment la resonctruire le cas echeant |
|
| 1052 | + && !$lock |
|
| 1053 | + ) { |
|
| 1054 | + if (@file_exists($valeurs['fichier_dest'])) { |
|
| 1055 | + // dans tous les cas mettre a jour la taille de l'image finale |
|
| 1056 | + [$valeurs['hauteur_dest'], $valeurs['largeur_dest']] = taille_image($valeurs['fichier_dest']); |
|
| 1057 | + $valeurs['date'] = @filemtime($valeurs['fichier_dest']); // pour la retrouver apres disparition |
|
| 1058 | + ecrire_fichier($valeurs['fichier_dest'] . '.src', serialize($valeurs), true); |
|
| 1059 | + } |
|
| 1060 | + } |
|
| 1061 | + |
|
| 1062 | + return $ret; |
|
| 1063 | 1063 | } |
| 1064 | 1064 | |
| 1065 | 1065 | /** |
@@ -1072,27 +1072,27 @@ discard block |
||
| 1072 | 1072 | * Chemin vers le fichier manquant |
| 1073 | 1073 | **/ |
| 1074 | 1074 | function reconstruire_image_intermediaire($fichier_manquant) { |
| 1075 | - $reconstruire = []; |
|
| 1076 | - $fichier = $fichier_manquant; |
|
| 1077 | - while ( |
|
| 1078 | - strpos($fichier, '://') === false |
|
| 1079 | - and !@file_exists($fichier) |
|
| 1080 | - and lire_fichier($src = "$fichier.src", $source) |
|
| 1081 | - and $valeurs = unserialize($source) |
|
| 1082 | - and ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...) |
|
| 1083 | - ) { |
|
| 1084 | - spip_unlink($src); // si jamais on a un timeout pendant la reconstruction, elle se fera naturellement au hit suivant |
|
| 1085 | - $reconstruire[] = $valeurs['reconstruction']; |
|
| 1086 | - } |
|
| 1087 | - while (count($reconstruire)) { |
|
| 1088 | - $r = array_pop($reconstruire); |
|
| 1089 | - $fonction = $r[0]; |
|
| 1090 | - $args = $r[1]; |
|
| 1091 | - $fonction(...$args); |
|
| 1092 | - } |
|
| 1093 | - // cette image intermediaire est commune a plusieurs series de filtre, il faut la conserver |
|
| 1094 | - // mais l'on peut nettoyer les miettes de sa creation |
|
| 1095 | - ramasse_miettes($fichier_manquant); |
|
| 1075 | + $reconstruire = []; |
|
| 1076 | + $fichier = $fichier_manquant; |
|
| 1077 | + while ( |
|
| 1078 | + strpos($fichier, '://') === false |
|
| 1079 | + and !@file_exists($fichier) |
|
| 1080 | + and lire_fichier($src = "$fichier.src", $source) |
|
| 1081 | + and $valeurs = unserialize($source) |
|
| 1082 | + and ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...) |
|
| 1083 | + ) { |
|
| 1084 | + spip_unlink($src); // si jamais on a un timeout pendant la reconstruction, elle se fera naturellement au hit suivant |
|
| 1085 | + $reconstruire[] = $valeurs['reconstruction']; |
|
| 1086 | + } |
|
| 1087 | + while (count($reconstruire)) { |
|
| 1088 | + $r = array_pop($reconstruire); |
|
| 1089 | + $fonction = $r[0]; |
|
| 1090 | + $args = $r[1]; |
|
| 1091 | + $fonction(...$args); |
|
| 1092 | + } |
|
| 1093 | + // cette image intermediaire est commune a plusieurs series de filtre, il faut la conserver |
|
| 1094 | + // mais l'on peut nettoyer les miettes de sa creation |
|
| 1095 | + ramasse_miettes($fichier_manquant); |
|
| 1096 | 1096 | } |
| 1097 | 1097 | |
| 1098 | 1098 | /** |
@@ -1112,28 +1112,28 @@ discard block |
||
| 1112 | 1112 | * Chemin du fichier d'image calculé |
| 1113 | 1113 | **/ |
| 1114 | 1114 | function ramasse_miettes($fichier) { |
| 1115 | - if ( |
|
| 1116 | - strpos($fichier, '://') !== false |
|
| 1117 | - or !lire_fichier($src = "$fichier.src", $source) |
|
| 1118 | - or !$valeurs = unserialize($source) |
|
| 1119 | - ) { |
|
| 1120 | - return; |
|
| 1121 | - } |
|
| 1122 | - spip_unlink($src); # on supprime la reference a sa source pour marquer cette image comme non intermediaire |
|
| 1123 | - while ( |
|
| 1124 | - ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...) |
|
| 1125 | - and (substr($fichier, 0, strlen(_DIR_VAR)) == _DIR_VAR) # et est dans local |
|
| 1126 | - and (lire_fichier( |
|
| 1127 | - $src = "$fichier.src", |
|
| 1128 | - $source |
|
| 1129 | - )) # le fichier a une source connue (c'est donc une image calculee intermediaire) |
|
| 1130 | - and ($valeurs = unserialize($source)) # et valide |
|
| 1131 | - ) { |
|
| 1132 | - # on efface le fichier |
|
| 1133 | - spip_unlink($fichier); |
|
| 1134 | - # mais laisse le .src qui permet de savoir comment reconstruire l'image si besoin |
|
| 1135 | - #spip_unlink($src); |
|
| 1136 | - } |
|
| 1115 | + if ( |
|
| 1116 | + strpos($fichier, '://') !== false |
|
| 1117 | + or !lire_fichier($src = "$fichier.src", $source) |
|
| 1118 | + or !$valeurs = unserialize($source) |
|
| 1119 | + ) { |
|
| 1120 | + return; |
|
| 1121 | + } |
|
| 1122 | + spip_unlink($src); # on supprime la reference a sa source pour marquer cette image comme non intermediaire |
|
| 1123 | + while ( |
|
| 1124 | + ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...) |
|
| 1125 | + and (substr($fichier, 0, strlen(_DIR_VAR)) == _DIR_VAR) # et est dans local |
|
| 1126 | + and (lire_fichier( |
|
| 1127 | + $src = "$fichier.src", |
|
| 1128 | + $source |
|
| 1129 | + )) # le fichier a une source connue (c'est donc une image calculee intermediaire) |
|
| 1130 | + and ($valeurs = unserialize($source)) # et valide |
|
| 1131 | + ) { |
|
| 1132 | + # on efface le fichier |
|
| 1133 | + spip_unlink($fichier); |
|
| 1134 | + # mais laisse le .src qui permet de savoir comment reconstruire l'image si besoin |
|
| 1135 | + #spip_unlink($src); |
|
| 1136 | + } |
|
| 1137 | 1137 | } |
| 1138 | 1138 | |
| 1139 | 1139 | |
@@ -1158,31 +1158,31 @@ discard block |
||
| 1158 | 1158 | * Code HTML de l'image |
| 1159 | 1159 | **/ |
| 1160 | 1160 | function image_graver($img) { |
| 1161 | - // appeler le filtre post_image_filtrer qui permet de faire |
|
| 1162 | - // des traitements auto a la fin d'une serie de filtres |
|
| 1163 | - $img = pipeline('post_image_filtrer', $img); |
|
| 1164 | - |
|
| 1165 | - $fichier_ori = $fichier = extraire_attribut($img, 'src'); |
|
| 1166 | - if (($p = strpos($fichier, '?')) !== false) { |
|
| 1167 | - $fichier = substr($fichier, 0, $p); |
|
| 1168 | - } |
|
| 1169 | - if (strlen($fichier) < 1) { |
|
| 1170 | - $fichier = $img; |
|
| 1171 | - } |
|
| 1172 | - # si jamais le fichier final n'a pas ete calcule car suppose temporaire |
|
| 1173 | - # et qu'il ne s'agit pas d'une URL |
|
| 1174 | - if (strpos($fichier, '://') === false and !@file_exists($fichier)) { |
|
| 1175 | - reconstruire_image_intermediaire($fichier); |
|
| 1176 | - } |
|
| 1177 | - ramasse_miettes($fichier); |
|
| 1178 | - |
|
| 1179 | - // ajouter le timestamp si besoin |
|
| 1180 | - if (strpos($fichier_ori, '?') === false) { |
|
| 1181 | - // on utilise str_replace pour attraper le onmouseover des logo si besoin |
|
| 1182 | - $img = str_replace($fichier_ori, timestamp($fichier_ori), $img); |
|
| 1183 | - } |
|
| 1184 | - |
|
| 1185 | - return $img; |
|
| 1161 | + // appeler le filtre post_image_filtrer qui permet de faire |
|
| 1162 | + // des traitements auto a la fin d'une serie de filtres |
|
| 1163 | + $img = pipeline('post_image_filtrer', $img); |
|
| 1164 | + |
|
| 1165 | + $fichier_ori = $fichier = extraire_attribut($img, 'src'); |
|
| 1166 | + if (($p = strpos($fichier, '?')) !== false) { |
|
| 1167 | + $fichier = substr($fichier, 0, $p); |
|
| 1168 | + } |
|
| 1169 | + if (strlen($fichier) < 1) { |
|
| 1170 | + $fichier = $img; |
|
| 1171 | + } |
|
| 1172 | + # si jamais le fichier final n'a pas ete calcule car suppose temporaire |
|
| 1173 | + # et qu'il ne s'agit pas d'une URL |
|
| 1174 | + if (strpos($fichier, '://') === false and !@file_exists($fichier)) { |
|
| 1175 | + reconstruire_image_intermediaire($fichier); |
|
| 1176 | + } |
|
| 1177 | + ramasse_miettes($fichier); |
|
| 1178 | + |
|
| 1179 | + // ajouter le timestamp si besoin |
|
| 1180 | + if (strpos($fichier_ori, '?') === false) { |
|
| 1181 | + // on utilise str_replace pour attraper le onmouseover des logo si besoin |
|
| 1182 | + $img = str_replace($fichier_ori, timestamp($fichier_ori), $img); |
|
| 1183 | + } |
|
| 1184 | + |
|
| 1185 | + return $img; |
|
| 1186 | 1186 | } |
| 1187 | 1187 | |
| 1188 | 1188 | /** |
@@ -1209,34 +1209,34 @@ discard block |
||
| 1209 | 1209 | * Code html modifié de la balise. |
| 1210 | 1210 | **/ |
| 1211 | 1211 | function _image_tag_changer_taille($tag, $width, $height, $style = false) { |
| 1212 | - if ($style === false) { |
|
| 1213 | - $style = extraire_attribut($tag, 'style'); |
|
| 1214 | - } |
|
| 1215 | - |
|
| 1216 | - // enlever le width et height du style |
|
| 1217 | - if ($style) { |
|
| 1218 | - $style = preg_replace(',(^|;)\s*(width|height)\s*:\s*[^;]+,ims', '', $style); |
|
| 1219 | - } |
|
| 1220 | - if ($style and $style[0] === ';') { |
|
| 1221 | - $style = substr($style, 1); |
|
| 1222 | - } |
|
| 1223 | - |
|
| 1224 | - // mettre des attributs de width et height sur les images, |
|
| 1225 | - // ca accelere le rendu du navigateur |
|
| 1226 | - // ca permet aux navigateurs de reserver la bonne taille |
|
| 1227 | - // quand on a desactive l'affichage des images. |
|
| 1228 | - $tag = inserer_attribut($tag, 'width', round($width)); |
|
| 1229 | - $tag = inserer_attribut($tag, 'height', round($height)); |
|
| 1230 | - |
|
| 1231 | - // attributs deprecies. Transformer en CSS |
|
| 1232 | - if ($espace = extraire_attribut($tag, 'hspace')) { |
|
| 1233 | - $style = "margin:{$espace}px;" . $style; |
|
| 1234 | - $tag = inserer_attribut($tag, 'hspace', ''); |
|
| 1235 | - } |
|
| 1236 | - |
|
| 1237 | - $tag = inserer_attribut($tag, 'style', (string) $style, true, $style ? false : true); |
|
| 1238 | - |
|
| 1239 | - return $tag; |
|
| 1212 | + if ($style === false) { |
|
| 1213 | + $style = extraire_attribut($tag, 'style'); |
|
| 1214 | + } |
|
| 1215 | + |
|
| 1216 | + // enlever le width et height du style |
|
| 1217 | + if ($style) { |
|
| 1218 | + $style = preg_replace(',(^|;)\s*(width|height)\s*:\s*[^;]+,ims', '', $style); |
|
| 1219 | + } |
|
| 1220 | + if ($style and $style[0] === ';') { |
|
| 1221 | + $style = substr($style, 1); |
|
| 1222 | + } |
|
| 1223 | + |
|
| 1224 | + // mettre des attributs de width et height sur les images, |
|
| 1225 | + // ca accelere le rendu du navigateur |
|
| 1226 | + // ca permet aux navigateurs de reserver la bonne taille |
|
| 1227 | + // quand on a desactive l'affichage des images. |
|
| 1228 | + $tag = inserer_attribut($tag, 'width', round($width)); |
|
| 1229 | + $tag = inserer_attribut($tag, 'height', round($height)); |
|
| 1230 | + |
|
| 1231 | + // attributs deprecies. Transformer en CSS |
|
| 1232 | + if ($espace = extraire_attribut($tag, 'hspace')) { |
|
| 1233 | + $style = "margin:{$espace}px;" . $style; |
|
| 1234 | + $tag = inserer_attribut($tag, 'hspace', ''); |
|
| 1235 | + } |
|
| 1236 | + |
|
| 1237 | + $tag = inserer_attribut($tag, 'style', (string) $style, true, $style ? false : true); |
|
| 1238 | + |
|
| 1239 | + return $tag; |
|
| 1240 | 1240 | } |
| 1241 | 1241 | |
| 1242 | 1242 | |
@@ -1262,72 +1262,72 @@ discard block |
||
| 1262 | 1262 | * Retourne le code HTML de l'image |
| 1263 | 1263 | **/ |
| 1264 | 1264 | function _image_ecrire_tag($valeurs, $surcharge = []) { |
| 1265 | - $valeurs = pipeline('image_ecrire_tag_preparer', $valeurs); |
|
| 1266 | - |
|
| 1267 | - // fermer les tags img pas bien fermes; |
|
| 1268 | - $tag = str_replace('>', '/>', str_replace('/>', '>', $valeurs['tag'])); |
|
| 1269 | - |
|
| 1270 | - // le style |
|
| 1271 | - $style = $valeurs['style']; |
|
| 1272 | - if (isset($surcharge['style'])) { |
|
| 1273 | - $style = $surcharge['style']; |
|
| 1274 | - unset($surcharge['style']); |
|
| 1275 | - } |
|
| 1276 | - |
|
| 1277 | - // traiter specifiquement la largeur et la hauteur |
|
| 1278 | - $width = $valeurs['largeur']; |
|
| 1279 | - if (isset($surcharge['width'])) { |
|
| 1280 | - $width = $surcharge['width']; |
|
| 1281 | - unset($surcharge['width']); |
|
| 1282 | - } |
|
| 1283 | - $height = $valeurs['hauteur']; |
|
| 1284 | - if (isset($surcharge['height'])) { |
|
| 1285 | - $height = $surcharge['height']; |
|
| 1286 | - unset($surcharge['height']); |
|
| 1287 | - } |
|
| 1288 | - |
|
| 1289 | - $tag = _image_tag_changer_taille($tag, $width, $height, $style); |
|
| 1290 | - // traiter specifiquement le src qui peut etre repris dans un onmouseout |
|
| 1291 | - // on remplace toute les ref a src dans le tag |
|
| 1292 | - $src = extraire_attribut($tag, 'src'); |
|
| 1293 | - if (isset($surcharge['src'])) { |
|
| 1294 | - $tag = str_replace($src, $surcharge['src'], $tag); |
|
| 1295 | - // si il y a des & dans src, alors ils peuvent provenir d'un & |
|
| 1296 | - // pas garanti comme methode, mais mieux que rien |
|
| 1297 | - if (strpos($src, '&') !== false) { |
|
| 1298 | - $tag = str_replace(str_replace('&', '&', $src), $surcharge['src'], $tag); |
|
| 1299 | - } |
|
| 1300 | - $src = $surcharge['src']; |
|
| 1301 | - unset($surcharge['src']); |
|
| 1302 | - } |
|
| 1303 | - |
|
| 1304 | - $class = $valeurs['class']; |
|
| 1305 | - if (isset($surcharge['class'])) { |
|
| 1306 | - $class = $surcharge['class']; |
|
| 1307 | - unset($surcharge['class']); |
|
| 1308 | - } |
|
| 1309 | - if (is_scalar($class) && strlen($class)) { |
|
| 1310 | - $tag = inserer_attribut($tag, 'class', $class); |
|
| 1311 | - } |
|
| 1312 | - |
|
| 1313 | - if (count($surcharge)) { |
|
| 1314 | - foreach ($surcharge as $attribut => $valeur) { |
|
| 1315 | - $tag = inserer_attribut($tag, $attribut, $valeur); |
|
| 1316 | - } |
|
| 1317 | - } |
|
| 1318 | - |
|
| 1319 | - $tag = pipeline( |
|
| 1320 | - 'image_ecrire_tag_finir', |
|
| 1321 | - [ |
|
| 1322 | - 'args' => [ |
|
| 1323 | - 'valeurs' => $valeurs, |
|
| 1324 | - 'surcharge' => $surcharge, |
|
| 1325 | - ], |
|
| 1326 | - 'data' => $tag |
|
| 1327 | - ] |
|
| 1328 | - ); |
|
| 1329 | - |
|
| 1330 | - return $tag; |
|
| 1265 | + $valeurs = pipeline('image_ecrire_tag_preparer', $valeurs); |
|
| 1266 | + |
|
| 1267 | + // fermer les tags img pas bien fermes; |
|
| 1268 | + $tag = str_replace('>', '/>', str_replace('/>', '>', $valeurs['tag'])); |
|
| 1269 | + |
|
| 1270 | + // le style |
|
| 1271 | + $style = $valeurs['style']; |
|
| 1272 | + if (isset($surcharge['style'])) { |
|
| 1273 | + $style = $surcharge['style']; |
|
| 1274 | + unset($surcharge['style']); |
|
| 1275 | + } |
|
| 1276 | + |
|
| 1277 | + // traiter specifiquement la largeur et la hauteur |
|
| 1278 | + $width = $valeurs['largeur']; |
|
| 1279 | + if (isset($surcharge['width'])) { |
|
| 1280 | + $width = $surcharge['width']; |
|
| 1281 | + unset($surcharge['width']); |
|
| 1282 | + } |
|
| 1283 | + $height = $valeurs['hauteur']; |
|
| 1284 | + if (isset($surcharge['height'])) { |
|
| 1285 | + $height = $surcharge['height']; |
|
| 1286 | + unset($surcharge['height']); |
|
| 1287 | + } |
|
| 1288 | + |
|
| 1289 | + $tag = _image_tag_changer_taille($tag, $width, $height, $style); |
|
| 1290 | + // traiter specifiquement le src qui peut etre repris dans un onmouseout |
|
| 1291 | + // on remplace toute les ref a src dans le tag |
|
| 1292 | + $src = extraire_attribut($tag, 'src'); |
|
| 1293 | + if (isset($surcharge['src'])) { |
|
| 1294 | + $tag = str_replace($src, $surcharge['src'], $tag); |
|
| 1295 | + // si il y a des & dans src, alors ils peuvent provenir d'un & |
|
| 1296 | + // pas garanti comme methode, mais mieux que rien |
|
| 1297 | + if (strpos($src, '&') !== false) { |
|
| 1298 | + $tag = str_replace(str_replace('&', '&', $src), $surcharge['src'], $tag); |
|
| 1299 | + } |
|
| 1300 | + $src = $surcharge['src']; |
|
| 1301 | + unset($surcharge['src']); |
|
| 1302 | + } |
|
| 1303 | + |
|
| 1304 | + $class = $valeurs['class']; |
|
| 1305 | + if (isset($surcharge['class'])) { |
|
| 1306 | + $class = $surcharge['class']; |
|
| 1307 | + unset($surcharge['class']); |
|
| 1308 | + } |
|
| 1309 | + if (is_scalar($class) && strlen($class)) { |
|
| 1310 | + $tag = inserer_attribut($tag, 'class', $class); |
|
| 1311 | + } |
|
| 1312 | + |
|
| 1313 | + if (count($surcharge)) { |
|
| 1314 | + foreach ($surcharge as $attribut => $valeur) { |
|
| 1315 | + $tag = inserer_attribut($tag, $attribut, $valeur); |
|
| 1316 | + } |
|
| 1317 | + } |
|
| 1318 | + |
|
| 1319 | + $tag = pipeline( |
|
| 1320 | + 'image_ecrire_tag_finir', |
|
| 1321 | + [ |
|
| 1322 | + 'args' => [ |
|
| 1323 | + 'valeurs' => $valeurs, |
|
| 1324 | + 'surcharge' => $surcharge, |
|
| 1325 | + ], |
|
| 1326 | + 'data' => $tag |
|
| 1327 | + ] |
|
| 1328 | + ); |
|
| 1329 | + |
|
| 1330 | + return $tag; |
|
| 1331 | 1331 | } |
| 1332 | 1332 | |
| 1333 | 1333 | /** |
@@ -1350,268 +1350,268 @@ discard block |
||
| 1350 | 1350 | * Description de l'image, sinon null. |
| 1351 | 1351 | **/ |
| 1352 | 1352 | function _image_creer_vignette($valeurs, $maxWidth, $maxHeight, $process = 'AUTO', $force = false) { |
| 1353 | - $srcHeight = null; |
|
| 1354 | - $retour = []; |
|
| 1355 | - // ordre de preference des formats graphiques pour creer les vignettes |
|
| 1356 | - // le premier format disponible, selon la methode demandee, est utilise |
|
| 1357 | - $image = $valeurs['fichier']; |
|
| 1358 | - $format = $valeurs['format_source']; |
|
| 1359 | - $destdir = dirname($valeurs['fichier_dest']); |
|
| 1360 | - $destfile = basename($valeurs['fichier_dest'], '.' . $valeurs['format_dest']); |
|
| 1361 | - |
|
| 1362 | - $format_sortie = $valeurs['format_dest']; |
|
| 1363 | - |
|
| 1364 | - if (($process == 'AUTO') and isset($GLOBALS['meta']['image_process'])) { |
|
| 1365 | - $process = $GLOBALS['meta']['image_process']; |
|
| 1366 | - } |
|
| 1367 | - |
|
| 1368 | - // si le doc n'est pas une image dans un format accetpable, refuser |
|
| 1369 | - if (!$force and !in_array($format, formats_image_acceptables(in_array($process, ['gd1', 'gd2'])))) { |
|
| 1370 | - return; |
|
| 1371 | - } |
|
| 1372 | - $destination = "$destdir/$destfile"; |
|
| 1373 | - |
|
| 1374 | - // calculer la taille |
|
| 1375 | - if (($srcWidth = $valeurs['largeur']) && ($srcHeight = $valeurs['hauteur'])) { |
|
| 1376 | - if (!($destWidth = $valeurs['largeur_dest']) || !($destHeight = $valeurs['hauteur_dest'])) { |
|
| 1377 | - [$destWidth, $destHeight] = _image_ratio($srcWidth, $srcHeight, $maxWidth, $maxHeight); |
|
| 1378 | - } |
|
| 1379 | - } elseif ($process == 'convert' or $process == 'imagick') { |
|
| 1380 | - $destWidth = $maxWidth; |
|
| 1381 | - $destHeight = $maxHeight; |
|
| 1382 | - } else { |
|
| 1383 | - spip_log("echec $process sur $image"); |
|
| 1384 | - |
|
| 1385 | - return; |
|
| 1386 | - } |
|
| 1387 | - |
|
| 1388 | - $vignette = ''; |
|
| 1389 | - |
|
| 1390 | - // Si l'image est de la taille demandee (ou plus petite), simplement la retourner |
|
| 1391 | - if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) { |
|
| 1392 | - $vignette = $destination . '.' . $format; |
|
| 1393 | - @copy($image, $vignette); |
|
| 1394 | - } |
|
| 1395 | - |
|
| 1396 | - elseif ($valeurs['format_source'] === 'svg') { |
|
| 1397 | - include_spip('inc/svg'); |
|
| 1398 | - if ($svg = svg_redimensionner($valeurs['fichier'], $destWidth, $destHeight)) { |
|
| 1399 | - $format_sortie = 'svg'; |
|
| 1400 | - $vignette = $destination . '.' . $format_sortie; |
|
| 1401 | - $valeurs['fichier_dest'] = $vignette; |
|
| 1402 | - _image_gd_output($svg, $valeurs); |
|
| 1403 | - } |
|
| 1404 | - } |
|
| 1405 | - |
|
| 1406 | - // imagemagick en ligne de commande |
|
| 1407 | - elseif ($process == 'convert') { |
|
| 1408 | - if (!defined('_CONVERT_COMMAND')) { |
|
| 1409 | - define('_CONVERT_COMMAND', 'convert'); |
|
| 1410 | - } // Securite : mes_options.php peut preciser le chemin absolu |
|
| 1411 | - if (!defined('_RESIZE_COMMAND')) { |
|
| 1412 | - define('_RESIZE_COMMAND', _CONVERT_COMMAND . ' -quality ' . _IMG_CONVERT_QUALITE . ' -orient Undefined -resize %xx%y! %src %dest'); |
|
| 1413 | - } |
|
| 1414 | - $vignette = $destination . '.' . $format_sortie; |
|
| 1415 | - $commande = str_replace( |
|
| 1416 | - ['%x', '%y', '%src', '%dest'], |
|
| 1417 | - [ |
|
| 1418 | - $destWidth, |
|
| 1419 | - $destHeight, |
|
| 1420 | - escapeshellcmd($image), |
|
| 1421 | - escapeshellcmd($vignette) |
|
| 1422 | - ], |
|
| 1423 | - _RESIZE_COMMAND |
|
| 1424 | - ); |
|
| 1425 | - spip_log($commande); |
|
| 1426 | - exec($commande); |
|
| 1427 | - if (!@file_exists($vignette)) { |
|
| 1428 | - spip_log("echec convert sur $vignette"); |
|
| 1429 | - |
|
| 1430 | - return; // echec commande |
|
| 1431 | - } |
|
| 1432 | - } |
|
| 1433 | - |
|
| 1434 | - // php5 imagemagick |
|
| 1435 | - elseif ($process == 'imagick') { |
|
| 1436 | - if (!class_exists(\Imagick::class)) { |
|
| 1437 | - spip_log('Classe Imagick absente !', _LOG_ERREUR); |
|
| 1438 | - |
|
| 1439 | - return; |
|
| 1440 | - } |
|
| 1441 | - |
|
| 1442 | - // chemin compatible Windows |
|
| 1443 | - $output = realpath(dirname($destination)); |
|
| 1444 | - if (!$output) { |
|
| 1445 | - return; |
|
| 1446 | - } |
|
| 1447 | - $vignette = $output . DIRECTORY_SEPARATOR . basename($destination) . '.' . $format_sortie; |
|
| 1448 | - |
|
| 1449 | - $imagick = new Imagick(); |
|
| 1450 | - $imagick->readImage(realpath($image)); |
|
| 1451 | - $imagick->resizeImage( |
|
| 1452 | - $destWidth, |
|
| 1453 | - $destHeight, |
|
| 1454 | - Imagick::FILTER_LANCZOS, |
|
| 1455 | - 1 |
|
| 1456 | - );//, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100); |
|
| 1457 | - $imagick->writeImage($vignette); |
|
| 1458 | - |
|
| 1459 | - if (!@file_exists($vignette)) { |
|
| 1460 | - spip_log("echec imagick sur $vignette"); |
|
| 1461 | - |
|
| 1462 | - return; |
|
| 1463 | - } |
|
| 1464 | - // remettre le chemin relatif car c'est ce qu'attend SPIP pour la suite (en particlier action/tester) |
|
| 1465 | - $vignette = $destination . '.' . $format_sortie; |
|
| 1466 | - } |
|
| 1467 | - |
|
| 1468 | - // netpbm |
|
| 1469 | - elseif ($process == 'netpbm') { |
|
| 1470 | - if (!defined('_PNMSCALE_COMMAND')) { |
|
| 1471 | - define('_PNMSCALE_COMMAND', 'pnmscale'); |
|
| 1472 | - } // Securite : mes_options.php peut preciser le chemin absolu |
|
| 1473 | - if (_PNMSCALE_COMMAND == '') { |
|
| 1474 | - return; |
|
| 1475 | - } |
|
| 1476 | - $vignette = $destination . '.' . $format_sortie; |
|
| 1477 | - $pnmtojpeg_command = str_replace('pnmscale', 'pnmtojpeg', _PNMSCALE_COMMAND); |
|
| 1478 | - if ($format == 'jpg') { |
|
| 1479 | - $jpegtopnm_command = str_replace('pnmscale', 'jpegtopnm', _PNMSCALE_COMMAND); |
|
| 1480 | - exec("$jpegtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette"); |
|
| 1481 | - if (!($s = @filesize($vignette))) { |
|
| 1482 | - spip_unlink($vignette); |
|
| 1483 | - } |
|
| 1484 | - if (!@file_exists($vignette)) { |
|
| 1485 | - spip_log("echec netpbm-jpg sur $vignette"); |
|
| 1486 | - |
|
| 1487 | - return; |
|
| 1488 | - } |
|
| 1489 | - } else { |
|
| 1490 | - if ($format == 'gif') { |
|
| 1491 | - $giftopnm_command = str_replace('pnmscale', 'giftopnm', _PNMSCALE_COMMAND); |
|
| 1492 | - exec("$giftopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette"); |
|
| 1493 | - if (!($s = @filesize($vignette))) { |
|
| 1494 | - spip_unlink($vignette); |
|
| 1495 | - } |
|
| 1496 | - if (!@file_exists($vignette)) { |
|
| 1497 | - spip_log("echec netpbm-gif sur $vignette"); |
|
| 1498 | - |
|
| 1499 | - return; |
|
| 1500 | - } |
|
| 1501 | - } else { |
|
| 1502 | - if ($format == 'png') { |
|
| 1503 | - $pngtopnm_command = str_replace('pnmscale', 'pngtopnm', _PNMSCALE_COMMAND); |
|
| 1504 | - exec("$pngtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette"); |
|
| 1505 | - if (!($s = @filesize($vignette))) { |
|
| 1506 | - spip_unlink($vignette); |
|
| 1507 | - } |
|
| 1508 | - if (!@file_exists($vignette)) { |
|
| 1509 | - spip_log("echec netpbm-png sur $vignette"); |
|
| 1510 | - |
|
| 1511 | - return; |
|
| 1512 | - } |
|
| 1513 | - } |
|
| 1514 | - } |
|
| 1515 | - } |
|
| 1516 | - } |
|
| 1517 | - |
|
| 1518 | - // gd ou gd2 |
|
| 1519 | - elseif ($process == 'gd1' or $process == 'gd2') { |
|
| 1520 | - if (!function_exists('gd_info')) { |
|
| 1521 | - spip_log('Librairie GD absente !', _LOG_ERREUR); |
|
| 1522 | - |
|
| 1523 | - return; |
|
| 1524 | - } |
|
| 1525 | - if (_IMG_GD_MAX_PIXELS && $srcWidth * $srcHeight > _IMG_GD_MAX_PIXELS) { |
|
| 1526 | - spip_log('vignette gd1/gd2 impossible : ' . $srcWidth * $srcHeight . 'pixels'); |
|
| 1527 | - |
|
| 1528 | - return; |
|
| 1529 | - } |
|
| 1530 | - $destFormat = $format_sortie; |
|
| 1531 | - if (!$destFormat) { |
|
| 1532 | - spip_log("pas de format pour $image"); |
|
| 1533 | - |
|
| 1534 | - return; |
|
| 1535 | - } |
|
| 1536 | - |
|
| 1537 | - $fonction_imagecreatefrom = $valeurs['fonction_imagecreatefrom']; |
|
| 1538 | - if (!function_exists($fonction_imagecreatefrom)) { |
|
| 1539 | - return; |
|
| 1540 | - } |
|
| 1541 | - $srcImage = @$fonction_imagecreatefrom($image); |
|
| 1542 | - if (!$srcImage) { |
|
| 1543 | - spip_log('echec gd1/gd2'); |
|
| 1544 | - |
|
| 1545 | - return; |
|
| 1546 | - } |
|
| 1547 | - |
|
| 1548 | - // Initialisation de l'image destination |
|
| 1549 | - $destImage = null; |
|
| 1550 | - if ($process == 'gd2' and $destFormat != 'gif') { |
|
| 1551 | - $destImage = ImageCreateTrueColor($destWidth, $destHeight); |
|
| 1552 | - } |
|
| 1553 | - if (!$destImage) { |
|
| 1554 | - $destImage = ImageCreate($destWidth, $destHeight); |
|
| 1555 | - } |
|
| 1556 | - |
|
| 1557 | - // Recopie de l'image d'origine avec adaptation de la taille |
|
| 1558 | - $ok = false; |
|
| 1559 | - if (($process == 'gd2') and function_exists('ImageCopyResampled')) { |
|
| 1560 | - if ($format == 'gif') { |
|
| 1561 | - // Si un GIF est transparent, |
|
| 1562 | - // fabriquer un PNG transparent |
|
| 1563 | - $transp = imagecolortransparent($srcImage); |
|
| 1564 | - if ($transp > 0) { |
|
| 1565 | - $destFormat = 'png'; |
|
| 1566 | - } |
|
| 1567 | - } |
|
| 1568 | - if (in_array($destFormat, _image_extensions_conservent_transparence())) { |
|
| 1569 | - // Conserver la transparence |
|
| 1570 | - if (function_exists('imageAntiAlias')) { |
|
| 1571 | - imageAntiAlias($destImage, true); |
|
| 1572 | - } |
|
| 1573 | - @imagealphablending($destImage, false); |
|
| 1574 | - @imagesavealpha($destImage, true); |
|
| 1575 | - } |
|
| 1576 | - $ok = @ImageCopyResampled($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight); |
|
| 1577 | - } |
|
| 1578 | - if (!$ok) { |
|
| 1579 | - $ok = ImageCopyResized($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight); |
|
| 1580 | - } |
|
| 1581 | - |
|
| 1582 | - // Sauvegarde de l'image destination |
|
| 1583 | - $valeurs['fichier_dest'] = $vignette = "$destination.$destFormat"; |
|
| 1584 | - $valeurs['format_dest'] = $format = $destFormat; |
|
| 1585 | - _image_gd_output($destImage, $valeurs); |
|
| 1586 | - |
|
| 1587 | - if ($srcImage) { |
|
| 1588 | - ImageDestroy($srcImage); |
|
| 1589 | - } |
|
| 1590 | - ImageDestroy($destImage); |
|
| 1591 | - } |
|
| 1592 | - |
|
| 1593 | - if (!$vignette or !$size = @spip_getimagesize($vignette)) { |
|
| 1594 | - $size = [$destWidth, $destHeight]; |
|
| 1595 | - } |
|
| 1596 | - |
|
| 1597 | - // Gaffe: en safe mode, pas d'acces a la vignette, |
|
| 1598 | - // donc risque de balancer "width='0'", ce qui masque l'image sous MSIE |
|
| 1599 | - if ($size[0] < 1) { |
|
| 1600 | - $size[0] = $destWidth; |
|
| 1601 | - } |
|
| 1602 | - if ($size[1] < 1) { |
|
| 1603 | - $size[1] = $destHeight; |
|
| 1604 | - } |
|
| 1605 | - |
|
| 1606 | - $retour['width'] = $largeur = $size[0]; |
|
| 1607 | - $retour['height'] = $hauteur = $size[1]; |
|
| 1608 | - |
|
| 1609 | - $retour['fichier'] = $vignette; |
|
| 1610 | - $retour['format'] = $format; |
|
| 1611 | - $retour['date'] = @filemtime($vignette); |
|
| 1612 | - |
|
| 1613 | - // renvoyer l'image |
|
| 1614 | - return $retour; |
|
| 1353 | + $srcHeight = null; |
|
| 1354 | + $retour = []; |
|
| 1355 | + // ordre de preference des formats graphiques pour creer les vignettes |
|
| 1356 | + // le premier format disponible, selon la methode demandee, est utilise |
|
| 1357 | + $image = $valeurs['fichier']; |
|
| 1358 | + $format = $valeurs['format_source']; |
|
| 1359 | + $destdir = dirname($valeurs['fichier_dest']); |
|
| 1360 | + $destfile = basename($valeurs['fichier_dest'], '.' . $valeurs['format_dest']); |
|
| 1361 | + |
|
| 1362 | + $format_sortie = $valeurs['format_dest']; |
|
| 1363 | + |
|
| 1364 | + if (($process == 'AUTO') and isset($GLOBALS['meta']['image_process'])) { |
|
| 1365 | + $process = $GLOBALS['meta']['image_process']; |
|
| 1366 | + } |
|
| 1367 | + |
|
| 1368 | + // si le doc n'est pas une image dans un format accetpable, refuser |
|
| 1369 | + if (!$force and !in_array($format, formats_image_acceptables(in_array($process, ['gd1', 'gd2'])))) { |
|
| 1370 | + return; |
|
| 1371 | + } |
|
| 1372 | + $destination = "$destdir/$destfile"; |
|
| 1373 | + |
|
| 1374 | + // calculer la taille |
|
| 1375 | + if (($srcWidth = $valeurs['largeur']) && ($srcHeight = $valeurs['hauteur'])) { |
|
| 1376 | + if (!($destWidth = $valeurs['largeur_dest']) || !($destHeight = $valeurs['hauteur_dest'])) { |
|
| 1377 | + [$destWidth, $destHeight] = _image_ratio($srcWidth, $srcHeight, $maxWidth, $maxHeight); |
|
| 1378 | + } |
|
| 1379 | + } elseif ($process == 'convert' or $process == 'imagick') { |
|
| 1380 | + $destWidth = $maxWidth; |
|
| 1381 | + $destHeight = $maxHeight; |
|
| 1382 | + } else { |
|
| 1383 | + spip_log("echec $process sur $image"); |
|
| 1384 | + |
|
| 1385 | + return; |
|
| 1386 | + } |
|
| 1387 | + |
|
| 1388 | + $vignette = ''; |
|
| 1389 | + |
|
| 1390 | + // Si l'image est de la taille demandee (ou plus petite), simplement la retourner |
|
| 1391 | + if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) { |
|
| 1392 | + $vignette = $destination . '.' . $format; |
|
| 1393 | + @copy($image, $vignette); |
|
| 1394 | + } |
|
| 1395 | + |
|
| 1396 | + elseif ($valeurs['format_source'] === 'svg') { |
|
| 1397 | + include_spip('inc/svg'); |
|
| 1398 | + if ($svg = svg_redimensionner($valeurs['fichier'], $destWidth, $destHeight)) { |
|
| 1399 | + $format_sortie = 'svg'; |
|
| 1400 | + $vignette = $destination . '.' . $format_sortie; |
|
| 1401 | + $valeurs['fichier_dest'] = $vignette; |
|
| 1402 | + _image_gd_output($svg, $valeurs); |
|
| 1403 | + } |
|
| 1404 | + } |
|
| 1405 | + |
|
| 1406 | + // imagemagick en ligne de commande |
|
| 1407 | + elseif ($process == 'convert') { |
|
| 1408 | + if (!defined('_CONVERT_COMMAND')) { |
|
| 1409 | + define('_CONVERT_COMMAND', 'convert'); |
|
| 1410 | + } // Securite : mes_options.php peut preciser le chemin absolu |
|
| 1411 | + if (!defined('_RESIZE_COMMAND')) { |
|
| 1412 | + define('_RESIZE_COMMAND', _CONVERT_COMMAND . ' -quality ' . _IMG_CONVERT_QUALITE . ' -orient Undefined -resize %xx%y! %src %dest'); |
|
| 1413 | + } |
|
| 1414 | + $vignette = $destination . '.' . $format_sortie; |
|
| 1415 | + $commande = str_replace( |
|
| 1416 | + ['%x', '%y', '%src', '%dest'], |
|
| 1417 | + [ |
|
| 1418 | + $destWidth, |
|
| 1419 | + $destHeight, |
|
| 1420 | + escapeshellcmd($image), |
|
| 1421 | + escapeshellcmd($vignette) |
|
| 1422 | + ], |
|
| 1423 | + _RESIZE_COMMAND |
|
| 1424 | + ); |
|
| 1425 | + spip_log($commande); |
|
| 1426 | + exec($commande); |
|
| 1427 | + if (!@file_exists($vignette)) { |
|
| 1428 | + spip_log("echec convert sur $vignette"); |
|
| 1429 | + |
|
| 1430 | + return; // echec commande |
|
| 1431 | + } |
|
| 1432 | + } |
|
| 1433 | + |
|
| 1434 | + // php5 imagemagick |
|
| 1435 | + elseif ($process == 'imagick') { |
|
| 1436 | + if (!class_exists(\Imagick::class)) { |
|
| 1437 | + spip_log('Classe Imagick absente !', _LOG_ERREUR); |
|
| 1438 | + |
|
| 1439 | + return; |
|
| 1440 | + } |
|
| 1441 | + |
|
| 1442 | + // chemin compatible Windows |
|
| 1443 | + $output = realpath(dirname($destination)); |
|
| 1444 | + if (!$output) { |
|
| 1445 | + return; |
|
| 1446 | + } |
|
| 1447 | + $vignette = $output . DIRECTORY_SEPARATOR . basename($destination) . '.' . $format_sortie; |
|
| 1448 | + |
|
| 1449 | + $imagick = new Imagick(); |
|
| 1450 | + $imagick->readImage(realpath($image)); |
|
| 1451 | + $imagick->resizeImage( |
|
| 1452 | + $destWidth, |
|
| 1453 | + $destHeight, |
|
| 1454 | + Imagick::FILTER_LANCZOS, |
|
| 1455 | + 1 |
|
| 1456 | + );//, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100); |
|
| 1457 | + $imagick->writeImage($vignette); |
|
| 1458 | + |
|
| 1459 | + if (!@file_exists($vignette)) { |
|
| 1460 | + spip_log("echec imagick sur $vignette"); |
|
| 1461 | + |
|
| 1462 | + return; |
|
| 1463 | + } |
|
| 1464 | + // remettre le chemin relatif car c'est ce qu'attend SPIP pour la suite (en particlier action/tester) |
|
| 1465 | + $vignette = $destination . '.' . $format_sortie; |
|
| 1466 | + } |
|
| 1467 | + |
|
| 1468 | + // netpbm |
|
| 1469 | + elseif ($process == 'netpbm') { |
|
| 1470 | + if (!defined('_PNMSCALE_COMMAND')) { |
|
| 1471 | + define('_PNMSCALE_COMMAND', 'pnmscale'); |
|
| 1472 | + } // Securite : mes_options.php peut preciser le chemin absolu |
|
| 1473 | + if (_PNMSCALE_COMMAND == '') { |
|
| 1474 | + return; |
|
| 1475 | + } |
|
| 1476 | + $vignette = $destination . '.' . $format_sortie; |
|
| 1477 | + $pnmtojpeg_command = str_replace('pnmscale', 'pnmtojpeg', _PNMSCALE_COMMAND); |
|
| 1478 | + if ($format == 'jpg') { |
|
| 1479 | + $jpegtopnm_command = str_replace('pnmscale', 'jpegtopnm', _PNMSCALE_COMMAND); |
|
| 1480 | + exec("$jpegtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette"); |
|
| 1481 | + if (!($s = @filesize($vignette))) { |
|
| 1482 | + spip_unlink($vignette); |
|
| 1483 | + } |
|
| 1484 | + if (!@file_exists($vignette)) { |
|
| 1485 | + spip_log("echec netpbm-jpg sur $vignette"); |
|
| 1486 | + |
|
| 1487 | + return; |
|
| 1488 | + } |
|
| 1489 | + } else { |
|
| 1490 | + if ($format == 'gif') { |
|
| 1491 | + $giftopnm_command = str_replace('pnmscale', 'giftopnm', _PNMSCALE_COMMAND); |
|
| 1492 | + exec("$giftopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette"); |
|
| 1493 | + if (!($s = @filesize($vignette))) { |
|
| 1494 | + spip_unlink($vignette); |
|
| 1495 | + } |
|
| 1496 | + if (!@file_exists($vignette)) { |
|
| 1497 | + spip_log("echec netpbm-gif sur $vignette"); |
|
| 1498 | + |
|
| 1499 | + return; |
|
| 1500 | + } |
|
| 1501 | + } else { |
|
| 1502 | + if ($format == 'png') { |
|
| 1503 | + $pngtopnm_command = str_replace('pnmscale', 'pngtopnm', _PNMSCALE_COMMAND); |
|
| 1504 | + exec("$pngtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette"); |
|
| 1505 | + if (!($s = @filesize($vignette))) { |
|
| 1506 | + spip_unlink($vignette); |
|
| 1507 | + } |
|
| 1508 | + if (!@file_exists($vignette)) { |
|
| 1509 | + spip_log("echec netpbm-png sur $vignette"); |
|
| 1510 | + |
|
| 1511 | + return; |
|
| 1512 | + } |
|
| 1513 | + } |
|
| 1514 | + } |
|
| 1515 | + } |
|
| 1516 | + } |
|
| 1517 | + |
|
| 1518 | + // gd ou gd2 |
|
| 1519 | + elseif ($process == 'gd1' or $process == 'gd2') { |
|
| 1520 | + if (!function_exists('gd_info')) { |
|
| 1521 | + spip_log('Librairie GD absente !', _LOG_ERREUR); |
|
| 1522 | + |
|
| 1523 | + return; |
|
| 1524 | + } |
|
| 1525 | + if (_IMG_GD_MAX_PIXELS && $srcWidth * $srcHeight > _IMG_GD_MAX_PIXELS) { |
|
| 1526 | + spip_log('vignette gd1/gd2 impossible : ' . $srcWidth * $srcHeight . 'pixels'); |
|
| 1527 | + |
|
| 1528 | + return; |
|
| 1529 | + } |
|
| 1530 | + $destFormat = $format_sortie; |
|
| 1531 | + if (!$destFormat) { |
|
| 1532 | + spip_log("pas de format pour $image"); |
|
| 1533 | + |
|
| 1534 | + return; |
|
| 1535 | + } |
|
| 1536 | + |
|
| 1537 | + $fonction_imagecreatefrom = $valeurs['fonction_imagecreatefrom']; |
|
| 1538 | + if (!function_exists($fonction_imagecreatefrom)) { |
|
| 1539 | + return; |
|
| 1540 | + } |
|
| 1541 | + $srcImage = @$fonction_imagecreatefrom($image); |
|
| 1542 | + if (!$srcImage) { |
|
| 1543 | + spip_log('echec gd1/gd2'); |
|
| 1544 | + |
|
| 1545 | + return; |
|
| 1546 | + } |
|
| 1547 | + |
|
| 1548 | + // Initialisation de l'image destination |
|
| 1549 | + $destImage = null; |
|
| 1550 | + if ($process == 'gd2' and $destFormat != 'gif') { |
|
| 1551 | + $destImage = ImageCreateTrueColor($destWidth, $destHeight); |
|
| 1552 | + } |
|
| 1553 | + if (!$destImage) { |
|
| 1554 | + $destImage = ImageCreate($destWidth, $destHeight); |
|
| 1555 | + } |
|
| 1556 | + |
|
| 1557 | + // Recopie de l'image d'origine avec adaptation de la taille |
|
| 1558 | + $ok = false; |
|
| 1559 | + if (($process == 'gd2') and function_exists('ImageCopyResampled')) { |
|
| 1560 | + if ($format == 'gif') { |
|
| 1561 | + // Si un GIF est transparent, |
|
| 1562 | + // fabriquer un PNG transparent |
|
| 1563 | + $transp = imagecolortransparent($srcImage); |
|
| 1564 | + if ($transp > 0) { |
|
| 1565 | + $destFormat = 'png'; |
|
| 1566 | + } |
|
| 1567 | + } |
|
| 1568 | + if (in_array($destFormat, _image_extensions_conservent_transparence())) { |
|
| 1569 | + // Conserver la transparence |
|
| 1570 | + if (function_exists('imageAntiAlias')) { |
|
| 1571 | + imageAntiAlias($destImage, true); |
|
| 1572 | + } |
|
| 1573 | + @imagealphablending($destImage, false); |
|
| 1574 | + @imagesavealpha($destImage, true); |
|
| 1575 | + } |
|
| 1576 | + $ok = @ImageCopyResampled($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight); |
|
| 1577 | + } |
|
| 1578 | + if (!$ok) { |
|
| 1579 | + $ok = ImageCopyResized($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight); |
|
| 1580 | + } |
|
| 1581 | + |
|
| 1582 | + // Sauvegarde de l'image destination |
|
| 1583 | + $valeurs['fichier_dest'] = $vignette = "$destination.$destFormat"; |
|
| 1584 | + $valeurs['format_dest'] = $format = $destFormat; |
|
| 1585 | + _image_gd_output($destImage, $valeurs); |
|
| 1586 | + |
|
| 1587 | + if ($srcImage) { |
|
| 1588 | + ImageDestroy($srcImage); |
|
| 1589 | + } |
|
| 1590 | + ImageDestroy($destImage); |
|
| 1591 | + } |
|
| 1592 | + |
|
| 1593 | + if (!$vignette or !$size = @spip_getimagesize($vignette)) { |
|
| 1594 | + $size = [$destWidth, $destHeight]; |
|
| 1595 | + } |
|
| 1596 | + |
|
| 1597 | + // Gaffe: en safe mode, pas d'acces a la vignette, |
|
| 1598 | + // donc risque de balancer "width='0'", ce qui masque l'image sous MSIE |
|
| 1599 | + if ($size[0] < 1) { |
|
| 1600 | + $size[0] = $destWidth; |
|
| 1601 | + } |
|
| 1602 | + if ($size[1] < 1) { |
|
| 1603 | + $size[1] = $destHeight; |
|
| 1604 | + } |
|
| 1605 | + |
|
| 1606 | + $retour['width'] = $largeur = $size[0]; |
|
| 1607 | + $retour['height'] = $hauteur = $size[1]; |
|
| 1608 | + |
|
| 1609 | + $retour['fichier'] = $vignette; |
|
| 1610 | + $retour['format'] = $format; |
|
| 1611 | + $retour['date'] = @filemtime($vignette); |
|
| 1612 | + |
|
| 1613 | + // renvoyer l'image |
|
| 1614 | + return $retour; |
|
| 1615 | 1615 | } |
| 1616 | 1616 | |
| 1617 | 1617 | /** |
@@ -1631,25 +1631,25 @@ discard block |
||
| 1631 | 1631 | * @return array Liste [ largeur, hauteur, ratio de réduction ] |
| 1632 | 1632 | **/ |
| 1633 | 1633 | function _image_ratio(int $srcWidth, int $srcHeight, int $maxWidth, int $maxHeight): array { |
| 1634 | - $ratioWidth = $srcWidth / $maxWidth; |
|
| 1635 | - $ratioHeight = $srcHeight / $maxHeight; |
|
| 1636 | - |
|
| 1637 | - if ($srcWidth <= $maxWidth and $srcHeight <= $maxHeight) { |
|
| 1638 | - $destWidth = $srcWidth; |
|
| 1639 | - $destHeight = $srcHeight; |
|
| 1640 | - } elseif ($ratioWidth < $ratioHeight) { |
|
| 1641 | - $destWidth = $srcWidth / $ratioHeight; |
|
| 1642 | - $destHeight = $maxHeight; |
|
| 1643 | - } else { |
|
| 1644 | - $destWidth = $maxWidth; |
|
| 1645 | - $destHeight = $srcHeight / $ratioWidth; |
|
| 1646 | - } |
|
| 1647 | - |
|
| 1648 | - return [ |
|
| 1649 | - intval(round($destWidth)), |
|
| 1650 | - intval(round($destHeight)), |
|
| 1651 | - max($ratioWidth, $ratioHeight) |
|
| 1652 | - ]; |
|
| 1634 | + $ratioWidth = $srcWidth / $maxWidth; |
|
| 1635 | + $ratioHeight = $srcHeight / $maxHeight; |
|
| 1636 | + |
|
| 1637 | + if ($srcWidth <= $maxWidth and $srcHeight <= $maxHeight) { |
|
| 1638 | + $destWidth = $srcWidth; |
|
| 1639 | + $destHeight = $srcHeight; |
|
| 1640 | + } elseif ($ratioWidth < $ratioHeight) { |
|
| 1641 | + $destWidth = $srcWidth / $ratioHeight; |
|
| 1642 | + $destHeight = $maxHeight; |
|
| 1643 | + } else { |
|
| 1644 | + $destWidth = $maxWidth; |
|
| 1645 | + $destHeight = $srcHeight / $ratioWidth; |
|
| 1646 | + } |
|
| 1647 | + |
|
| 1648 | + return [ |
|
| 1649 | + intval(round($destWidth)), |
|
| 1650 | + intval(round($destHeight)), |
|
| 1651 | + max($ratioWidth, $ratioHeight) |
|
| 1652 | + ]; |
|
| 1653 | 1653 | } |
| 1654 | 1654 | |
| 1655 | 1655 | /** |
@@ -1669,25 +1669,25 @@ discard block |
||
| 1669 | 1669 | * @return array Liste [ largeur, hauteur, ratio de réduction ] |
| 1670 | 1670 | **/ |
| 1671 | 1671 | function ratio_passe_partout(int $srcWidth, int $srcHeight, int $maxWidth, int $maxHeight): array { |
| 1672 | - $ratioWidth = $srcWidth / $maxWidth; |
|
| 1673 | - $ratioHeight = $srcHeight / $maxHeight; |
|
| 1674 | - |
|
| 1675 | - if ($srcWidth <= $maxWidth and $srcHeight <= $maxHeight) { |
|
| 1676 | - $destWidth = $srcWidth; |
|
| 1677 | - $destHeight = $srcHeight; |
|
| 1678 | - } elseif ($ratioWidth > $ratioHeight) { |
|
| 1679 | - $destWidth = $srcWidth / $ratioHeight; |
|
| 1680 | - $destHeight = $maxHeight; |
|
| 1681 | - } else { |
|
| 1682 | - $destWidth = $maxWidth; |
|
| 1683 | - $destHeight = $srcHeight / $ratioWidth; |
|
| 1684 | - } |
|
| 1685 | - |
|
| 1686 | - return [ |
|
| 1687 | - intval(round($destWidth)), |
|
| 1688 | - intval(round($destHeight)), |
|
| 1689 | - min($ratioWidth, $ratioHeight) |
|
| 1690 | - ]; |
|
| 1672 | + $ratioWidth = $srcWidth / $maxWidth; |
|
| 1673 | + $ratioHeight = $srcHeight / $maxHeight; |
|
| 1674 | + |
|
| 1675 | + if ($srcWidth <= $maxWidth and $srcHeight <= $maxHeight) { |
|
| 1676 | + $destWidth = $srcWidth; |
|
| 1677 | + $destHeight = $srcHeight; |
|
| 1678 | + } elseif ($ratioWidth > $ratioHeight) { |
|
| 1679 | + $destWidth = $srcWidth / $ratioHeight; |
|
| 1680 | + $destHeight = $maxHeight; |
|
| 1681 | + } else { |
|
| 1682 | + $destWidth = $maxWidth; |
|
| 1683 | + $destHeight = $srcHeight / $ratioWidth; |
|
| 1684 | + } |
|
| 1685 | + |
|
| 1686 | + return [ |
|
| 1687 | + intval(round($destWidth)), |
|
| 1688 | + intval(round($destHeight)), |
|
| 1689 | + min($ratioWidth, $ratioHeight) |
|
| 1690 | + ]; |
|
| 1691 | 1691 | } |
| 1692 | 1692 | |
| 1693 | 1693 | |
@@ -1700,12 +1700,12 @@ discard block |
||
| 1700 | 1700 | * @return string |
| 1701 | 1701 | */ |
| 1702 | 1702 | function process_image_svg_identite($image) { |
| 1703 | - if ($image['creer']) { |
|
| 1704 | - $source = $image['fichier']; |
|
| 1705 | - _image_gd_output($source, $image); |
|
| 1706 | - } |
|
| 1703 | + if ($image['creer']) { |
|
| 1704 | + $source = $image['fichier']; |
|
| 1705 | + _image_gd_output($source, $image); |
|
| 1706 | + } |
|
| 1707 | 1707 | |
| 1708 | - return _image_ecrire_tag($image, ['src' => $image['fichier_dest']]); |
|
| 1708 | + return _image_ecrire_tag($image, ['src' => $image['fichier_dest']]); |
|
| 1709 | 1709 | } |
| 1710 | 1710 | |
| 1711 | 1711 | |
@@ -1738,109 +1738,109 @@ discard block |
||
| 1738 | 1738 | * Code HTML de la balise img produite |
| 1739 | 1739 | **/ |
| 1740 | 1740 | function process_image_reduire($fonction, $img, $taille, $taille_y, $force, $process = 'AUTO') { |
| 1741 | - $image = false; |
|
| 1742 | - if (($process == 'AUTO') and isset($GLOBALS['meta']['image_process'])) { |
|
| 1743 | - $process = $GLOBALS['meta']['image_process']; |
|
| 1744 | - } |
|
| 1745 | - # determiner le format de sortie |
|
| 1746 | - $format_sortie = false; // le choix par defaut sera bon |
|
| 1747 | - if ($process == 'netpbm') { |
|
| 1748 | - $format_sortie = 'jpg'; |
|
| 1749 | - } elseif ($process == 'gd1' or $process == 'gd2') { |
|
| 1750 | - $image = _image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}", $format_sortie, $fonction, false, _SVG_SUPPORTED); |
|
| 1751 | - // on verifie que l'extension choisie est bonne (en principe oui) |
|
| 1752 | - $gd_formats = formats_image_acceptables(true); |
|
| 1753 | - if ( |
|
| 1754 | - is_array($image) |
|
| 1755 | - and (!in_array($image['format_dest'], $gd_formats) |
|
| 1756 | - or (!in_array($image['format_dest'], _image_extensions_acceptees_en_sortie())) |
|
| 1757 | - ) |
|
| 1758 | - ) { |
|
| 1759 | - if ($image['format_source'] == 'jpg') { |
|
| 1760 | - $formats_sortie = ['jpg', 'png', 'gif']; |
|
| 1761 | - } else // les gif sont passes en png preferentiellement pour etre homogene aux autres filtres images |
|
| 1762 | - { |
|
| 1763 | - $formats_sortie = ['png', 'jpg', 'gif']; |
|
| 1764 | - } |
|
| 1765 | - // Choisir le format destination |
|
| 1766 | - // - on sauve de preference en JPEG (meilleure compression) |
|
| 1767 | - // - pour le GIF : les GD recentes peuvent le lire mais pas l'ecrire |
|
| 1768 | - # bug : gd_formats contient la liste des fichiers qu'on sait *lire*, |
|
| 1769 | - # pas *ecrire* |
|
| 1770 | - $format_sortie = ''; |
|
| 1771 | - foreach ($formats_sortie as $fmt) { |
|
| 1772 | - if (in_array($fmt, $gd_formats) and in_array($fmt, _image_extensions_acceptees_en_sortie())) { |
|
| 1773 | - $format_sortie = $fmt; |
|
| 1774 | - break; |
|
| 1775 | - } |
|
| 1776 | - } |
|
| 1777 | - $image = false; |
|
| 1778 | - } |
|
| 1779 | - } |
|
| 1780 | - |
|
| 1781 | - if (!is_array($image)) { |
|
| 1782 | - $image = _image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}", $format_sortie, $fonction, false, _SVG_SUPPORTED); |
|
| 1783 | - } |
|
| 1784 | - |
|
| 1785 | - if (!is_array($image) or !$image['largeur'] or !$image['hauteur']) { |
|
| 1786 | - spip_log("image_reduire_src:pas de version locale de $img ou extension non prise en charge"); |
|
| 1787 | - // on peut resizer en mode html si on dispose des elements |
|
| 1788 | - [$srcw, $srch] = taille_image($img); |
|
| 1789 | - if ($srcw and $srch) { |
|
| 1790 | - [$w, $h] = _image_ratio($srcw, $srch, $taille, $taille_y); |
|
| 1791 | - |
|
| 1792 | - return _image_tag_changer_taille($img, $w, $h); |
|
| 1793 | - } |
|
| 1794 | - // la on n'a pas d'infos sur l'image source... on refile le truc a css |
|
| 1795 | - // sous la forme style='max-width: NNpx;' |
|
| 1796 | - return inserer_attribut( |
|
| 1797 | - $img, |
|
| 1798 | - 'style', |
|
| 1799 | - "max-width: {$taille}px;max-width: min(100%,{$taille}px); max-height: {$taille_y}px" |
|
| 1800 | - ); |
|
| 1801 | - } |
|
| 1802 | - |
|
| 1803 | - // si l'image est plus petite que la cible retourner une copie cachee de l'image |
|
| 1804 | - if (($image['largeur'] <= $taille) && ($image['hauteur'] <= $taille_y)) { |
|
| 1805 | - if ($image['creer']) { |
|
| 1806 | - @copy($image['fichier'], $image['fichier_dest']); |
|
| 1807 | - } |
|
| 1808 | - |
|
| 1809 | - return _image_ecrire_tag($image, ['src' => $image['fichier_dest']]); |
|
| 1810 | - } |
|
| 1811 | - |
|
| 1812 | - if ($image['creer'] == false && !$force) { |
|
| 1813 | - return _image_ecrire_tag( |
|
| 1814 | - $image, |
|
| 1815 | - ['src' => $image['fichier_dest'], 'width' => $image['largeur_dest'], 'height' => $image['hauteur_dest']] |
|
| 1816 | - ); |
|
| 1817 | - } |
|
| 1818 | - |
|
| 1819 | - if (in_array($image['format_source'], _image_extensions_acceptees_en_entree())) { |
|
| 1820 | - $destWidth = $image['largeur_dest']; |
|
| 1821 | - $destHeight = $image['hauteur_dest']; |
|
| 1822 | - $logo = $image['fichier']; |
|
| 1823 | - $date = $image['date_src']; |
|
| 1824 | - $preview = _image_creer_vignette($image, $taille, $taille_y, $process, $force); |
|
| 1825 | - |
|
| 1826 | - if ($preview && $preview['fichier']) { |
|
| 1827 | - $logo = $preview['fichier']; |
|
| 1828 | - $destWidth = $preview['width']; |
|
| 1829 | - $destHeight = $preview['height']; |
|
| 1830 | - $date = $preview['date']; |
|
| 1831 | - } |
|
| 1832 | - // dans l'espace prive mettre un timestamp sur l'adresse |
|
| 1833 | - // de l'image, de facon a tromper le cache du navigateur |
|
| 1834 | - // quand on fait supprimer/reuploader un logo |
|
| 1835 | - // (pas de filemtime si SAFE MODE) |
|
| 1836 | - $date = test_espace_prive() ? ('?' . $date) : ''; |
|
| 1837 | - |
|
| 1838 | - return _image_ecrire_tag($image, ['src' => "$logo$date", 'width' => $destWidth, 'height' => $destHeight]); |
|
| 1839 | - } |
|
| 1840 | - else { |
|
| 1841 | - # BMP, tiff ... les redacteurs osent tout! |
|
| 1842 | - return $img; |
|
| 1843 | - } |
|
| 1741 | + $image = false; |
|
| 1742 | + if (($process == 'AUTO') and isset($GLOBALS['meta']['image_process'])) { |
|
| 1743 | + $process = $GLOBALS['meta']['image_process']; |
|
| 1744 | + } |
|
| 1745 | + # determiner le format de sortie |
|
| 1746 | + $format_sortie = false; // le choix par defaut sera bon |
|
| 1747 | + if ($process == 'netpbm') { |
|
| 1748 | + $format_sortie = 'jpg'; |
|
| 1749 | + } elseif ($process == 'gd1' or $process == 'gd2') { |
|
| 1750 | + $image = _image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}", $format_sortie, $fonction, false, _SVG_SUPPORTED); |
|
| 1751 | + // on verifie que l'extension choisie est bonne (en principe oui) |
|
| 1752 | + $gd_formats = formats_image_acceptables(true); |
|
| 1753 | + if ( |
|
| 1754 | + is_array($image) |
|
| 1755 | + and (!in_array($image['format_dest'], $gd_formats) |
|
| 1756 | + or (!in_array($image['format_dest'], _image_extensions_acceptees_en_sortie())) |
|
| 1757 | + ) |
|
| 1758 | + ) { |
|
| 1759 | + if ($image['format_source'] == 'jpg') { |
|
| 1760 | + $formats_sortie = ['jpg', 'png', 'gif']; |
|
| 1761 | + } else // les gif sont passes en png preferentiellement pour etre homogene aux autres filtres images |
|
| 1762 | + { |
|
| 1763 | + $formats_sortie = ['png', 'jpg', 'gif']; |
|
| 1764 | + } |
|
| 1765 | + // Choisir le format destination |
|
| 1766 | + // - on sauve de preference en JPEG (meilleure compression) |
|
| 1767 | + // - pour le GIF : les GD recentes peuvent le lire mais pas l'ecrire |
|
| 1768 | + # bug : gd_formats contient la liste des fichiers qu'on sait *lire*, |
|
| 1769 | + # pas *ecrire* |
|
| 1770 | + $format_sortie = ''; |
|
| 1771 | + foreach ($formats_sortie as $fmt) { |
|
| 1772 | + if (in_array($fmt, $gd_formats) and in_array($fmt, _image_extensions_acceptees_en_sortie())) { |
|
| 1773 | + $format_sortie = $fmt; |
|
| 1774 | + break; |
|
| 1775 | + } |
|
| 1776 | + } |
|
| 1777 | + $image = false; |
|
| 1778 | + } |
|
| 1779 | + } |
|
| 1780 | + |
|
| 1781 | + if (!is_array($image)) { |
|
| 1782 | + $image = _image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}", $format_sortie, $fonction, false, _SVG_SUPPORTED); |
|
| 1783 | + } |
|
| 1784 | + |
|
| 1785 | + if (!is_array($image) or !$image['largeur'] or !$image['hauteur']) { |
|
| 1786 | + spip_log("image_reduire_src:pas de version locale de $img ou extension non prise en charge"); |
|
| 1787 | + // on peut resizer en mode html si on dispose des elements |
|
| 1788 | + [$srcw, $srch] = taille_image($img); |
|
| 1789 | + if ($srcw and $srch) { |
|
| 1790 | + [$w, $h] = _image_ratio($srcw, $srch, $taille, $taille_y); |
|
| 1791 | + |
|
| 1792 | + return _image_tag_changer_taille($img, $w, $h); |
|
| 1793 | + } |
|
| 1794 | + // la on n'a pas d'infos sur l'image source... on refile le truc a css |
|
| 1795 | + // sous la forme style='max-width: NNpx;' |
|
| 1796 | + return inserer_attribut( |
|
| 1797 | + $img, |
|
| 1798 | + 'style', |
|
| 1799 | + "max-width: {$taille}px;max-width: min(100%,{$taille}px); max-height: {$taille_y}px" |
|
| 1800 | + ); |
|
| 1801 | + } |
|
| 1802 | + |
|
| 1803 | + // si l'image est plus petite que la cible retourner une copie cachee de l'image |
|
| 1804 | + if (($image['largeur'] <= $taille) && ($image['hauteur'] <= $taille_y)) { |
|
| 1805 | + if ($image['creer']) { |
|
| 1806 | + @copy($image['fichier'], $image['fichier_dest']); |
|
| 1807 | + } |
|
| 1808 | + |
|
| 1809 | + return _image_ecrire_tag($image, ['src' => $image['fichier_dest']]); |
|
| 1810 | + } |
|
| 1811 | + |
|
| 1812 | + if ($image['creer'] == false && !$force) { |
|
| 1813 | + return _image_ecrire_tag( |
|
| 1814 | + $image, |
|
| 1815 | + ['src' => $image['fichier_dest'], 'width' => $image['largeur_dest'], 'height' => $image['hauteur_dest']] |
|
| 1816 | + ); |
|
| 1817 | + } |
|
| 1818 | + |
|
| 1819 | + if (in_array($image['format_source'], _image_extensions_acceptees_en_entree())) { |
|
| 1820 | + $destWidth = $image['largeur_dest']; |
|
| 1821 | + $destHeight = $image['hauteur_dest']; |
|
| 1822 | + $logo = $image['fichier']; |
|
| 1823 | + $date = $image['date_src']; |
|
| 1824 | + $preview = _image_creer_vignette($image, $taille, $taille_y, $process, $force); |
|
| 1825 | + |
|
| 1826 | + if ($preview && $preview['fichier']) { |
|
| 1827 | + $logo = $preview['fichier']; |
|
| 1828 | + $destWidth = $preview['width']; |
|
| 1829 | + $destHeight = $preview['height']; |
|
| 1830 | + $date = $preview['date']; |
|
| 1831 | + } |
|
| 1832 | + // dans l'espace prive mettre un timestamp sur l'adresse |
|
| 1833 | + // de l'image, de facon a tromper le cache du navigateur |
|
| 1834 | + // quand on fait supprimer/reuploader un logo |
|
| 1835 | + // (pas de filemtime si SAFE MODE) |
|
| 1836 | + $date = test_espace_prive() ? ('?' . $date) : ''; |
|
| 1837 | + |
|
| 1838 | + return _image_ecrire_tag($image, ['src' => "$logo$date", 'width' => $destWidth, 'height' => $destHeight]); |
|
| 1839 | + } |
|
| 1840 | + else { |
|
| 1841 | + # BMP, tiff ... les redacteurs osent tout! |
|
| 1842 | + return $img; |
|
| 1843 | + } |
|
| 1844 | 1844 | } |
| 1845 | 1845 | |
| 1846 | 1846 | /** |
@@ -1854,145 +1854,145 @@ discard block |
||
| 1854 | 1854 | * Class phpthumb_functions |
| 1855 | 1855 | */ |
| 1856 | 1856 | class phpthumb_functions { |
| 1857 | - /** |
|
| 1858 | - * Retourne la couleur d'un pixel dans une image |
|
| 1859 | - * |
|
| 1860 | - * @param resource|GdImage $img |
|
| 1861 | - * @param int $x |
|
| 1862 | - * @param int $y |
|
| 1863 | - * @return array|bool |
|
| 1864 | - */ |
|
| 1865 | - public static function GetPixelColor(&$img, $x, $y) { |
|
| 1866 | - if (is_resource($img) || (is_object($img) && $img instanceof \GdImage)) { |
|
| 1867 | - return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y)); |
|
| 1868 | - } |
|
| 1869 | - return false; |
|
| 1870 | - } |
|
| 1871 | - |
|
| 1872 | - /** |
|
| 1873 | - * Retourne un nombre dans une représentation en Little Endian |
|
| 1874 | - * |
|
| 1875 | - * @param int $number |
|
| 1876 | - * @param int $minbytes |
|
| 1877 | - * @return string |
|
| 1878 | - */ |
|
| 1879 | - public static function LittleEndian2String($number, $minbytes = 1) { |
|
| 1880 | - $intstring = ''; |
|
| 1881 | - while ($number > 0) { |
|
| 1882 | - $intstring = $intstring . chr($number & 255); |
|
| 1883 | - $number >>= 8; |
|
| 1884 | - } |
|
| 1885 | - |
|
| 1886 | - return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT); |
|
| 1887 | - } |
|
| 1888 | - |
|
| 1889 | - /** |
|
| 1890 | - * Transforme une ressource GD en image au format ICO |
|
| 1891 | - * |
|
| 1892 | - * @param array $gd_image_array |
|
| 1893 | - * Tableau de ressources d'images GD |
|
| 1894 | - * @return string |
|
| 1895 | - * Image au format ICO |
|
| 1896 | - */ |
|
| 1897 | - public static function GD2ICOstring(&$gd_image_array) { |
|
| 1898 | - foreach ($gd_image_array as $key => $gd_image) { |
|
| 1899 | - $ImageWidths[$key] = ImageSX($gd_image); |
|
| 1900 | - $ImageHeights[$key] = ImageSY($gd_image); |
|
| 1901 | - $bpp[$key] = ImageIsTrueColor($gd_image) ? 32 : 24; |
|
| 1902 | - $totalcolors[$key] = ImageColorsTotal($gd_image); |
|
| 1903 | - |
|
| 1904 | - $icXOR[$key] = ''; |
|
| 1905 | - for ($y = $ImageHeights[$key] - 1; $y >= 0; $y--) { |
|
| 1906 | - for ($x = 0; $x < $ImageWidths[$key]; $x++) { |
|
| 1907 | - $argb = phpthumb_functions::GetPixelColor($gd_image, $x, $y); |
|
| 1908 | - $a = round(255 * ((127 - $argb['alpha']) / 127)); |
|
| 1909 | - $r = $argb['red']; |
|
| 1910 | - $g = $argb['green']; |
|
| 1911 | - $b = $argb['blue']; |
|
| 1912 | - |
|
| 1913 | - if ($bpp[$key] == 32) { |
|
| 1914 | - $icXOR[$key] .= chr($b) . chr($g) . chr($r) . chr($a); |
|
| 1915 | - } elseif ($bpp[$key] == 24) { |
|
| 1916 | - $icXOR[$key] .= chr($b) . chr($g) . chr($r); |
|
| 1917 | - } |
|
| 1918 | - |
|
| 1919 | - if ($a < 128) { |
|
| 1920 | - @$icANDmask[$key][$y] .= '1'; |
|
| 1921 | - } else { |
|
| 1922 | - @$icANDmask[$key][$y] .= '0'; |
|
| 1923 | - } |
|
| 1924 | - } |
|
| 1925 | - // mask bits are 32-bit aligned per scanline |
|
| 1926 | - while (strlen($icANDmask[$key][$y]) % 32) { |
|
| 1927 | - $icANDmask[$key][$y] .= '0'; |
|
| 1928 | - } |
|
| 1929 | - } |
|
| 1930 | - $icAND[$key] = ''; |
|
| 1931 | - foreach ($icANDmask[$key] as $y => $scanlinemaskbits) { |
|
| 1932 | - for ($i = 0; $i < strlen($scanlinemaskbits); $i += 8) { |
|
| 1933 | - $icAND[$key] .= chr(bindec(str_pad(substr($scanlinemaskbits, $i, 8), 8, '0', STR_PAD_LEFT))); |
|
| 1934 | - } |
|
| 1935 | - } |
|
| 1936 | - } |
|
| 1937 | - |
|
| 1938 | - foreach ($gd_image_array as $key => $gd_image) { |
|
| 1939 | - $biSizeImage = $ImageWidths[$key] * $ImageHeights[$key] * ($bpp[$key] / 8); |
|
| 1940 | - |
|
| 1941 | - // BITMAPINFOHEADER - 40 bytes |
|
| 1942 | - $BitmapInfoHeader[$key] = ''; |
|
| 1943 | - $BitmapInfoHeader[$key] .= "\x28\x00\x00\x00"; // DWORD biSize; |
|
| 1944 | - $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4); // LONG biWidth; |
|
| 1945 | - // The biHeight member specifies the combined |
|
| 1946 | - // height of the XOR and AND masks. |
|
| 1947 | - $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG biHeight; |
|
| 1948 | - $BitmapInfoHeader[$key] .= "\x01\x00"; // WORD biPlanes; |
|
| 1949 | - $BitmapInfoHeader[$key] .= chr($bpp[$key]) . "\x00"; // wBitCount; |
|
| 1950 | - $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD biCompression; |
|
| 1951 | - $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4); // DWORD biSizeImage; |
|
| 1952 | - $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // LONG biXPelsPerMeter; |
|
| 1953 | - $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // LONG biYPelsPerMeter; |
|
| 1954 | - $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD biClrUsed; |
|
| 1955 | - $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD biClrImportant; |
|
| 1956 | - } |
|
| 1957 | - |
|
| 1958 | - |
|
| 1959 | - $icondata = "\x00\x00"; // idReserved; // Reserved (must be 0) |
|
| 1960 | - $icondata .= "\x01\x00"; // idType; // Resource Type (1 for icons) |
|
| 1961 | - $icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2); // idCount; // How many images? |
|
| 1962 | - |
|
| 1963 | - $dwImageOffset = 6 + (count($gd_image_array) * 16); |
|
| 1964 | - foreach ($gd_image_array as $key => $gd_image) { |
|
| 1965 | - // ICONDIRENTRY idEntries[1]; // An entry for each image (idCount of 'em) |
|
| 1966 | - |
|
| 1967 | - $icondata .= chr($ImageWidths[$key]); // bWidth; // Width, in pixels, of the image |
|
| 1968 | - $icondata .= chr($ImageHeights[$key]); // bHeight; // Height, in pixels, of the image |
|
| 1969 | - $icondata .= chr($totalcolors[$key]); // bColorCount; // Number of colors in image (0 if >=8bpp) |
|
| 1970 | - $icondata .= "\x00"; // bReserved; // Reserved ( must be 0) |
|
| 1971 | - |
|
| 1972 | - $icondata .= "\x01\x00"; // wPlanes; // Color Planes |
|
| 1973 | - $icondata .= chr($bpp[$key]) . "\x00"; // wBitCount; // Bits per pixel |
|
| 1974 | - |
|
| 1975 | - $dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]); |
|
| 1976 | - $icondata .= phpthumb_functions::LittleEndian2String( |
|
| 1977 | - $dwBytesInRes, |
|
| 1978 | - 4 |
|
| 1979 | - ); // dwBytesInRes; // How many bytes in this resource? |
|
| 1980 | - |
|
| 1981 | - $icondata .= phpthumb_functions::LittleEndian2String( |
|
| 1982 | - $dwImageOffset, |
|
| 1983 | - 4 |
|
| 1984 | - ); // dwImageOffset; // Where in the file is this image? |
|
| 1985 | - $dwImageOffset += strlen($BitmapInfoHeader[$key]); |
|
| 1986 | - $dwImageOffset += strlen($icXOR[$key]); |
|
| 1987 | - $dwImageOffset += strlen($icAND[$key]); |
|
| 1988 | - } |
|
| 1989 | - |
|
| 1990 | - foreach ($gd_image_array as $key => $gd_image) { |
|
| 1991 | - $icondata .= $BitmapInfoHeader[$key]; |
|
| 1992 | - $icondata .= $icXOR[$key]; |
|
| 1993 | - $icondata .= $icAND[$key]; |
|
| 1994 | - } |
|
| 1995 | - |
|
| 1996 | - return $icondata; |
|
| 1997 | - } |
|
| 1857 | + /** |
|
| 1858 | + * Retourne la couleur d'un pixel dans une image |
|
| 1859 | + * |
|
| 1860 | + * @param resource|GdImage $img |
|
| 1861 | + * @param int $x |
|
| 1862 | + * @param int $y |
|
| 1863 | + * @return array|bool |
|
| 1864 | + */ |
|
| 1865 | + public static function GetPixelColor(&$img, $x, $y) { |
|
| 1866 | + if (is_resource($img) || (is_object($img) && $img instanceof \GdImage)) { |
|
| 1867 | + return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y)); |
|
| 1868 | + } |
|
| 1869 | + return false; |
|
| 1870 | + } |
|
| 1871 | + |
|
| 1872 | + /** |
|
| 1873 | + * Retourne un nombre dans une représentation en Little Endian |
|
| 1874 | + * |
|
| 1875 | + * @param int $number |
|
| 1876 | + * @param int $minbytes |
|
| 1877 | + * @return string |
|
| 1878 | + */ |
|
| 1879 | + public static function LittleEndian2String($number, $minbytes = 1) { |
|
| 1880 | + $intstring = ''; |
|
| 1881 | + while ($number > 0) { |
|
| 1882 | + $intstring = $intstring . chr($number & 255); |
|
| 1883 | + $number >>= 8; |
|
| 1884 | + } |
|
| 1885 | + |
|
| 1886 | + return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT); |
|
| 1887 | + } |
|
| 1888 | + |
|
| 1889 | + /** |
|
| 1890 | + * Transforme une ressource GD en image au format ICO |
|
| 1891 | + * |
|
| 1892 | + * @param array $gd_image_array |
|
| 1893 | + * Tableau de ressources d'images GD |
|
| 1894 | + * @return string |
|
| 1895 | + * Image au format ICO |
|
| 1896 | + */ |
|
| 1897 | + public static function GD2ICOstring(&$gd_image_array) { |
|
| 1898 | + foreach ($gd_image_array as $key => $gd_image) { |
|
| 1899 | + $ImageWidths[$key] = ImageSX($gd_image); |
|
| 1900 | + $ImageHeights[$key] = ImageSY($gd_image); |
|
| 1901 | + $bpp[$key] = ImageIsTrueColor($gd_image) ? 32 : 24; |
|
| 1902 | + $totalcolors[$key] = ImageColorsTotal($gd_image); |
|
| 1903 | + |
|
| 1904 | + $icXOR[$key] = ''; |
|
| 1905 | + for ($y = $ImageHeights[$key] - 1; $y >= 0; $y--) { |
|
| 1906 | + for ($x = 0; $x < $ImageWidths[$key]; $x++) { |
|
| 1907 | + $argb = phpthumb_functions::GetPixelColor($gd_image, $x, $y); |
|
| 1908 | + $a = round(255 * ((127 - $argb['alpha']) / 127)); |
|
| 1909 | + $r = $argb['red']; |
|
| 1910 | + $g = $argb['green']; |
|
| 1911 | + $b = $argb['blue']; |
|
| 1912 | + |
|
| 1913 | + if ($bpp[$key] == 32) { |
|
| 1914 | + $icXOR[$key] .= chr($b) . chr($g) . chr($r) . chr($a); |
|
| 1915 | + } elseif ($bpp[$key] == 24) { |
|
| 1916 | + $icXOR[$key] .= chr($b) . chr($g) . chr($r); |
|
| 1917 | + } |
|
| 1918 | + |
|
| 1919 | + if ($a < 128) { |
|
| 1920 | + @$icANDmask[$key][$y] .= '1'; |
|
| 1921 | + } else { |
|
| 1922 | + @$icANDmask[$key][$y] .= '0'; |
|
| 1923 | + } |
|
| 1924 | + } |
|
| 1925 | + // mask bits are 32-bit aligned per scanline |
|
| 1926 | + while (strlen($icANDmask[$key][$y]) % 32) { |
|
| 1927 | + $icANDmask[$key][$y] .= '0'; |
|
| 1928 | + } |
|
| 1929 | + } |
|
| 1930 | + $icAND[$key] = ''; |
|
| 1931 | + foreach ($icANDmask[$key] as $y => $scanlinemaskbits) { |
|
| 1932 | + for ($i = 0; $i < strlen($scanlinemaskbits); $i += 8) { |
|
| 1933 | + $icAND[$key] .= chr(bindec(str_pad(substr($scanlinemaskbits, $i, 8), 8, '0', STR_PAD_LEFT))); |
|
| 1934 | + } |
|
| 1935 | + } |
|
| 1936 | + } |
|
| 1937 | + |
|
| 1938 | + foreach ($gd_image_array as $key => $gd_image) { |
|
| 1939 | + $biSizeImage = $ImageWidths[$key] * $ImageHeights[$key] * ($bpp[$key] / 8); |
|
| 1940 | + |
|
| 1941 | + // BITMAPINFOHEADER - 40 bytes |
|
| 1942 | + $BitmapInfoHeader[$key] = ''; |
|
| 1943 | + $BitmapInfoHeader[$key] .= "\x28\x00\x00\x00"; // DWORD biSize; |
|
| 1944 | + $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4); // LONG biWidth; |
|
| 1945 | + // The biHeight member specifies the combined |
|
| 1946 | + // height of the XOR and AND masks. |
|
| 1947 | + $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG biHeight; |
|
| 1948 | + $BitmapInfoHeader[$key] .= "\x01\x00"; // WORD biPlanes; |
|
| 1949 | + $BitmapInfoHeader[$key] .= chr($bpp[$key]) . "\x00"; // wBitCount; |
|
| 1950 | + $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD biCompression; |
|
| 1951 | + $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4); // DWORD biSizeImage; |
|
| 1952 | + $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // LONG biXPelsPerMeter; |
|
| 1953 | + $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // LONG biYPelsPerMeter; |
|
| 1954 | + $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD biClrUsed; |
|
| 1955 | + $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD biClrImportant; |
|
| 1956 | + } |
|
| 1957 | + |
|
| 1958 | + |
|
| 1959 | + $icondata = "\x00\x00"; // idReserved; // Reserved (must be 0) |
|
| 1960 | + $icondata .= "\x01\x00"; // idType; // Resource Type (1 for icons) |
|
| 1961 | + $icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2); // idCount; // How many images? |
|
| 1962 | + |
|
| 1963 | + $dwImageOffset = 6 + (count($gd_image_array) * 16); |
|
| 1964 | + foreach ($gd_image_array as $key => $gd_image) { |
|
| 1965 | + // ICONDIRENTRY idEntries[1]; // An entry for each image (idCount of 'em) |
|
| 1966 | + |
|
| 1967 | + $icondata .= chr($ImageWidths[$key]); // bWidth; // Width, in pixels, of the image |
|
| 1968 | + $icondata .= chr($ImageHeights[$key]); // bHeight; // Height, in pixels, of the image |
|
| 1969 | + $icondata .= chr($totalcolors[$key]); // bColorCount; // Number of colors in image (0 if >=8bpp) |
|
| 1970 | + $icondata .= "\x00"; // bReserved; // Reserved ( must be 0) |
|
| 1971 | + |
|
| 1972 | + $icondata .= "\x01\x00"; // wPlanes; // Color Planes |
|
| 1973 | + $icondata .= chr($bpp[$key]) . "\x00"; // wBitCount; // Bits per pixel |
|
| 1974 | + |
|
| 1975 | + $dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]); |
|
| 1976 | + $icondata .= phpthumb_functions::LittleEndian2String( |
|
| 1977 | + $dwBytesInRes, |
|
| 1978 | + 4 |
|
| 1979 | + ); // dwBytesInRes; // How many bytes in this resource? |
|
| 1980 | + |
|
| 1981 | + $icondata .= phpthumb_functions::LittleEndian2String( |
|
| 1982 | + $dwImageOffset, |
|
| 1983 | + 4 |
|
| 1984 | + ); // dwImageOffset; // Where in the file is this image? |
|
| 1985 | + $dwImageOffset += strlen($BitmapInfoHeader[$key]); |
|
| 1986 | + $dwImageOffset += strlen($icXOR[$key]); |
|
| 1987 | + $dwImageOffset += strlen($icAND[$key]); |
|
| 1988 | + } |
|
| 1989 | + |
|
| 1990 | + foreach ($gd_image_array as $key => $gd_image) { |
|
| 1991 | + $icondata .= $BitmapInfoHeader[$key]; |
|
| 1992 | + $icondata .= $icXOR[$key]; |
|
| 1993 | + $icondata .= $icAND[$key]; |
|
| 1994 | + } |
|
| 1995 | + |
|
| 1996 | + return $icondata; |
|
| 1997 | + } |
|
| 1998 | 1998 | } |