@@ -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 | /** |
@@ -39,28 +39,28 @@ discard block |
||
| 39 | 39 | * Tableau des champs et valeurs collectées |
| 40 | 40 | */ |
| 41 | 41 | function collecter_requests($include_list, $exclude_list = [], $set = null, $tous = false) { |
| 42 | - $c = $set; |
|
| 43 | - if (!$c) { |
|
| 44 | - $c = []; |
|
| 45 | - foreach ($include_list as $champ) { |
|
| 46 | - // on ne collecte que les champs reellement envoyes par defaut. |
|
| 47 | - // le cas d'un envoi de valeur NULL peut du coup poser probleme. |
|
| 48 | - $val = _request($champ); |
|
| 49 | - if ($tous or $val !== null) { |
|
| 50 | - $c[$champ] = $val; |
|
| 51 | - } |
|
| 52 | - } |
|
| 53 | - // on ajoute toujours la lang en saisie possible |
|
| 54 | - // meme si pas prevu au depart pour l'objet concerne |
|
| 55 | - if ($l = _request('changer_lang')) { |
|
| 56 | - $c['lang'] = $l; |
|
| 57 | - } |
|
| 58 | - } |
|
| 59 | - foreach ($exclude_list as $champ) { |
|
| 60 | - unset($c[$champ]); |
|
| 61 | - } |
|
| 62 | - |
|
| 63 | - return $c; |
|
| 42 | + $c = $set; |
|
| 43 | + if (!$c) { |
|
| 44 | + $c = []; |
|
| 45 | + foreach ($include_list as $champ) { |
|
| 46 | + // on ne collecte que les champs reellement envoyes par defaut. |
|
| 47 | + // le cas d'un envoi de valeur NULL peut du coup poser probleme. |
|
| 48 | + $val = _request($champ); |
|
| 49 | + if ($tous or $val !== null) { |
|
| 50 | + $c[$champ] = $val; |
|
| 51 | + } |
|
| 52 | + } |
|
| 53 | + // on ajoute toujours la lang en saisie possible |
|
| 54 | + // meme si pas prevu au depart pour l'objet concerne |
|
| 55 | + if ($l = _request('changer_lang')) { |
|
| 56 | + $c['lang'] = $l; |
|
| 57 | + } |
|
| 58 | + } |
|
| 59 | + foreach ($exclude_list as $champ) { |
|
| 60 | + unset($c[$champ]); |
|
| 61 | + } |
|
| 62 | + |
|
| 63 | + return $c; |
|
| 64 | 64 | } |
| 65 | 65 | |
| 66 | 66 | /** |
@@ -97,262 +97,262 @@ discard block |
||
| 97 | 97 | * - chaîne : texte d'un message d'erreur |
| 98 | 98 | */ |
| 99 | 99 | function objet_modifier_champs($objet, $id_objet, $options, $c = null, $serveur = '') { |
| 100 | - if (!$id_objet = intval($id_objet)) { |
|
| 101 | - spip_log('Erreur $id_objet non defini', 'warn'); |
|
| 102 | - |
|
| 103 | - return _T('erreur_technique_enregistrement_impossible'); |
|
| 104 | - } |
|
| 105 | - |
|
| 106 | - include_spip('inc/filtres'); |
|
| 107 | - |
|
| 108 | - $table_objet = table_objet($objet, $serveur); |
|
| 109 | - $spip_table_objet = table_objet_sql($objet, $serveur); |
|
| 110 | - $id_table_objet = id_table_objet($objet, $serveur); |
|
| 111 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 112 | - $desc = $trouver_table($spip_table_objet, $serveur); |
|
| 113 | - |
|
| 114 | - // Appels incomplets (sans $c) |
|
| 115 | - if (!is_array($c)) { |
|
| 116 | - spip_log('erreur appel objet_modifier_champs(' . $objet . '), manque $c'); |
|
| 117 | - |
|
| 118 | - return _T('erreur_technique_enregistrement_impossible'); |
|
| 119 | - } |
|
| 120 | - |
|
| 121 | - // Securite : certaines variables ne sont jamais acceptees ici |
|
| 122 | - // car elles ne relevent pas de autoriser(xxx, modifier) ; |
|
| 123 | - // il faut passer par instituer_XX() |
|
| 124 | - // TODO: faut-il passer ces variables interdites |
|
| 125 | - // dans un fichier de description separe ? |
|
| 126 | - unset($c['statut']); |
|
| 127 | - unset($c['id_parent']); |
|
| 128 | - unset($c['id_rubrique']); |
|
| 129 | - unset($c['id_secteur']); |
|
| 130 | - |
|
| 131 | - // Gerer les champs non vides |
|
| 132 | - if (isset($options['nonvide']) and is_array($options['nonvide'])) { |
|
| 133 | - foreach ($options['nonvide'] as $champ => $sinon) { |
|
| 134 | - if (isset($c[$champ]) and $c[$champ] === '') { |
|
| 135 | - $c[$champ] = $sinon; |
|
| 136 | - } |
|
| 137 | - } |
|
| 138 | - } |
|
| 139 | - |
|
| 140 | - // N'accepter que les champs qui existent dans la table |
|
| 141 | - $champs = array_intersect_key($c, $desc['field']); |
|
| 142 | - // et dont la valeur n'est pas null |
|
| 143 | - $champs = array_filter($champs, static function ($var) { |
|
| 144 | - return $var !== null; |
|
| 145 | - }); |
|
| 146 | - // TODO: ici aussi on peut valider les contenus |
|
| 147 | - // en fonction du type |
|
| 148 | - |
|
| 149 | - // Nettoyer les valeurs |
|
| 150 | - $champs = array_map('corriger_caracteres', $champs); |
|
| 151 | - |
|
| 152 | - // On récupère l'état avant toute modification |
|
| 153 | - $row = sql_fetsel('*', $spip_table_objet, $id_table_objet . '=' . $id_objet); |
|
| 154 | - |
|
| 155 | - // Envoyer aux plugins |
|
| 156 | - $champs = pipeline( |
|
| 157 | - 'pre_edition', |
|
| 158 | - [ |
|
| 159 | - 'args' => [ |
|
| 160 | - 'table' => $spip_table_objet, // compatibilite |
|
| 161 | - 'table_objet' => $table_objet, |
|
| 162 | - 'spip_table_objet' => $spip_table_objet, |
|
| 163 | - 'desc' => $desc, |
|
| 164 | - 'type' => $objet, |
|
| 165 | - 'id_objet' => $id_objet, |
|
| 166 | - 'data' => $options['data'] ?? null, |
|
| 167 | - 'champs' => $options['champs'] ?? [], // [doc] c'est quoi ? |
|
| 168 | - 'champs_anciens' => $row, // état du contenu avant modif |
|
| 169 | - 'serveur' => $serveur, |
|
| 170 | - 'action' => $options['action'] ?? 'modifier' |
|
| 171 | - ], |
|
| 172 | - 'data' => $champs |
|
| 173 | - ] |
|
| 174 | - ); |
|
| 175 | - |
|
| 176 | - if (!$champs) { |
|
| 177 | - return false; |
|
| 178 | - } |
|
| 179 | - |
|
| 180 | - |
|
| 181 | - // marquer le fait que l'objet est travaille par toto a telle date |
|
| 182 | - include_spip('inc/config'); |
|
| 183 | - if (lire_config('articles_modif', 'non') !== 'non') { |
|
| 184 | - include_spip('inc/drapeau_edition'); |
|
| 185 | - signale_edition($id_objet, $GLOBALS['visiteur_session'], $objet); |
|
| 186 | - } |
|
| 187 | - |
|
| 188 | - // Verifier si les mises a jour sont pertinentes, datees, en conflit etc |
|
| 189 | - include_spip('inc/editer'); |
|
| 190 | - if (!isset($options['data']) or is_null($options['data'])) { |
|
| 191 | - $options['data'] = &$_POST; |
|
| 192 | - } |
|
| 193 | - $conflits = controler_md5($champs, $options['data'], $objet, $id_objet, $serveur); |
|
| 194 | - // cas hypothetique : normalement inc/editer verifie en amont le conflit edition |
|
| 195 | - // et gere l'interface |
|
| 196 | - // ici on ne renvoie donc qu'un messsage d'erreur, au cas ou on y arrive quand meme |
|
| 197 | - if ($conflits) { |
|
| 198 | - return _T('titre_conflit_edition'); |
|
| 199 | - } |
|
| 200 | - |
|
| 201 | - if ($champs) { |
|
| 202 | - // cas particulier de la langue : passer par instituer_langue_objet |
|
| 203 | - if (isset($champs['lang'])) { |
|
| 204 | - if ($changer_lang = $champs['lang']) { |
|
| 205 | - $id_rubrique = 0; |
|
| 206 | - if (isset($desc['field']['id_rubrique'])) { |
|
| 207 | - $parent = ($objet == 'rubrique') ? 'id_parent' : 'id_rubrique'; |
|
| 208 | - $id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=" . intval($id_objet)); |
|
| 209 | - } |
|
| 210 | - $instituer_langue_objet = charger_fonction('instituer_langue_objet', 'action'); |
|
| 211 | - $champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang, $serveur); |
|
| 212 | - } |
|
| 213 | - // on laisse 'lang' dans $champs, |
|
| 214 | - // ca permet de passer dans le pipeline post_edition et de journaliser |
|
| 215 | - // et ca ne gene pas qu'on refasse un sql_updateq dessus apres l'avoir |
|
| 216 | - // deja pris en compte |
|
| 217 | - } |
|
| 218 | - |
|
| 219 | - // la modif peut avoir lieu |
|
| 220 | - |
|
| 221 | - // faut-il ajouter date_modif ? |
|
| 222 | - if ( |
|
| 223 | - !empty($options['date_modif']) |
|
| 224 | - and !isset($champs[$options['date_modif']]) |
|
| 225 | - ) { |
|
| 226 | - $champs[$options['date_modif']] = date('Y-m-d H:i:s'); |
|
| 227 | - } |
|
| 228 | - |
|
| 229 | - // allez on commit la modif |
|
| 230 | - sql_updateq($spip_table_objet, $champs, "$id_table_objet=" . intval($id_objet), [], $serveur); |
|
| 231 | - |
|
| 232 | - // on verifie si elle est bien passee |
|
| 233 | - $moof = sql_fetsel( |
|
| 234 | - array_keys($champs), |
|
| 235 | - $spip_table_objet, |
|
| 236 | - "$id_table_objet=" . intval($id_objet), |
|
| 237 | - [], |
|
| 238 | - [], |
|
| 239 | - '', |
|
| 240 | - [], |
|
| 241 | - $serveur |
|
| 242 | - ); |
|
| 243 | - // si difference entre les champs, reperer les champs mal enregistres |
|
| 244 | - if ($moof != $champs) { |
|
| 245 | - $liste = []; |
|
| 246 | - foreach ($moof as $k => $v) { |
|
| 247 | - if ( |
|
| 248 | - $v !== $champs[$k] |
|
| 249 | - // ne pas alerter si le champ est numerique est que les valeurs sont equivalentes |
|
| 250 | - and (!is_numeric($v) or intval($v) !== intval($champs[$k])) |
|
| 251 | - // ne pas alerter si le champ est date, qu'on a envoye une valeur vide et qu'on recupere une date nulle |
|
| 252 | - and (strlen($champs[$k]) or !in_array($v, ['0000-00-00 00:00:00', '0000-00-00'])) |
|
| 253 | - ) { |
|
| 254 | - $liste[] = $k; |
|
| 255 | - $conflits[$k]['post'] = $champs[$k]; |
|
| 256 | - $conflits[$k]['save'] = $v; |
|
| 257 | - |
|
| 258 | - // cas specifique MySQL+emoji : si l'un est la |
|
| 259 | - // conversion utf8_noplanes de l'autre alors c'est OK |
|
| 260 | - if (defined('_MYSQL_NOPLANES') && _MYSQL_NOPLANES) { |
|
| 261 | - include_spip('inc/charsets'); |
|
| 262 | - if ($v == utf8_noplanes($champs[$k])) { |
|
| 263 | - array_pop($liste); |
|
| 264 | - } |
|
| 265 | - } |
|
| 266 | - } |
|
| 267 | - } |
|
| 268 | - // si un champ n'a pas ete correctement enregistre, loger et retourner une erreur |
|
| 269 | - // c'est un cas exceptionnel |
|
| 270 | - if (count($liste)) { |
|
| 271 | - spip_log( |
|
| 272 | - "Erreur enregistrement en base $objet/$id_objet champs :" . var_export($conflits, true), |
|
| 273 | - 'modifier.' . _LOG_CRITIQUE |
|
| 274 | - ); |
|
| 275 | - |
|
| 276 | - return _T( |
|
| 277 | - 'erreur_technique_enregistrement_champs', |
|
| 278 | - ['champs' => "<i>'" . implode("'</i>,<i>'", $liste) . "'</i>"] |
|
| 279 | - ); |
|
| 280 | - } |
|
| 281 | - } |
|
| 282 | - |
|
| 283 | - // Invalider les caches |
|
| 284 | - if (isset($options['invalideur']) and $options['invalideur']) { |
|
| 285 | - include_spip('inc/invalideur'); |
|
| 286 | - if (is_array($options['invalideur'])) { |
|
| 287 | - array_map('suivre_invalideur', $options['invalideur']); |
|
| 288 | - } else { |
|
| 289 | - suivre_invalideur($options['invalideur']); |
|
| 290 | - } |
|
| 291 | - } |
|
| 292 | - |
|
| 293 | - // Notifications, gestion des revisions... |
|
| 294 | - // en standard, appelle |nouvelle_revision ci-dessous |
|
| 295 | - pipeline( |
|
| 296 | - 'post_edition', |
|
| 297 | - [ |
|
| 298 | - 'args' => [ |
|
| 299 | - 'table' => $spip_table_objet, |
|
| 300 | - 'table_objet' => $table_objet, |
|
| 301 | - 'spip_table_objet' => $spip_table_objet, |
|
| 302 | - 'desc' => $desc, |
|
| 303 | - 'type' => $objet, |
|
| 304 | - 'id_objet' => $id_objet, |
|
| 305 | - 'champs' => $options['champs'] ?? [], // [doc] kesako ? |
|
| 306 | - 'champs_anciens' => $row, // état du contenu avant modif |
|
| 307 | - 'serveur' => $serveur, |
|
| 308 | - 'action' => $options['action'] ?? 'modifier' |
|
| 309 | - ], |
|
| 310 | - 'data' => $champs |
|
| 311 | - ] |
|
| 312 | - ); |
|
| 313 | - } |
|
| 100 | + if (!$id_objet = intval($id_objet)) { |
|
| 101 | + spip_log('Erreur $id_objet non defini', 'warn'); |
|
| 102 | + |
|
| 103 | + return _T('erreur_technique_enregistrement_impossible'); |
|
| 104 | + } |
|
| 105 | + |
|
| 106 | + include_spip('inc/filtres'); |
|
| 107 | + |
|
| 108 | + $table_objet = table_objet($objet, $serveur); |
|
| 109 | + $spip_table_objet = table_objet_sql($objet, $serveur); |
|
| 110 | + $id_table_objet = id_table_objet($objet, $serveur); |
|
| 111 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 112 | + $desc = $trouver_table($spip_table_objet, $serveur); |
|
| 113 | + |
|
| 114 | + // Appels incomplets (sans $c) |
|
| 115 | + if (!is_array($c)) { |
|
| 116 | + spip_log('erreur appel objet_modifier_champs(' . $objet . '), manque $c'); |
|
| 117 | + |
|
| 118 | + return _T('erreur_technique_enregistrement_impossible'); |
|
| 119 | + } |
|
| 120 | + |
|
| 121 | + // Securite : certaines variables ne sont jamais acceptees ici |
|
| 122 | + // car elles ne relevent pas de autoriser(xxx, modifier) ; |
|
| 123 | + // il faut passer par instituer_XX() |
|
| 124 | + // TODO: faut-il passer ces variables interdites |
|
| 125 | + // dans un fichier de description separe ? |
|
| 126 | + unset($c['statut']); |
|
| 127 | + unset($c['id_parent']); |
|
| 128 | + unset($c['id_rubrique']); |
|
| 129 | + unset($c['id_secteur']); |
|
| 130 | + |
|
| 131 | + // Gerer les champs non vides |
|
| 132 | + if (isset($options['nonvide']) and is_array($options['nonvide'])) { |
|
| 133 | + foreach ($options['nonvide'] as $champ => $sinon) { |
|
| 134 | + if (isset($c[$champ]) and $c[$champ] === '') { |
|
| 135 | + $c[$champ] = $sinon; |
|
| 136 | + } |
|
| 137 | + } |
|
| 138 | + } |
|
| 139 | + |
|
| 140 | + // N'accepter que les champs qui existent dans la table |
|
| 141 | + $champs = array_intersect_key($c, $desc['field']); |
|
| 142 | + // et dont la valeur n'est pas null |
|
| 143 | + $champs = array_filter($champs, static function ($var) { |
|
| 144 | + return $var !== null; |
|
| 145 | + }); |
|
| 146 | + // TODO: ici aussi on peut valider les contenus |
|
| 147 | + // en fonction du type |
|
| 148 | + |
|
| 149 | + // Nettoyer les valeurs |
|
| 150 | + $champs = array_map('corriger_caracteres', $champs); |
|
| 151 | + |
|
| 152 | + // On récupère l'état avant toute modification |
|
| 153 | + $row = sql_fetsel('*', $spip_table_objet, $id_table_objet . '=' . $id_objet); |
|
| 154 | + |
|
| 155 | + // Envoyer aux plugins |
|
| 156 | + $champs = pipeline( |
|
| 157 | + 'pre_edition', |
|
| 158 | + [ |
|
| 159 | + 'args' => [ |
|
| 160 | + 'table' => $spip_table_objet, // compatibilite |
|
| 161 | + 'table_objet' => $table_objet, |
|
| 162 | + 'spip_table_objet' => $spip_table_objet, |
|
| 163 | + 'desc' => $desc, |
|
| 164 | + 'type' => $objet, |
|
| 165 | + 'id_objet' => $id_objet, |
|
| 166 | + 'data' => $options['data'] ?? null, |
|
| 167 | + 'champs' => $options['champs'] ?? [], // [doc] c'est quoi ? |
|
| 168 | + 'champs_anciens' => $row, // état du contenu avant modif |
|
| 169 | + 'serveur' => $serveur, |
|
| 170 | + 'action' => $options['action'] ?? 'modifier' |
|
| 171 | + ], |
|
| 172 | + 'data' => $champs |
|
| 173 | + ] |
|
| 174 | + ); |
|
| 175 | + |
|
| 176 | + if (!$champs) { |
|
| 177 | + return false; |
|
| 178 | + } |
|
| 179 | + |
|
| 180 | + |
|
| 181 | + // marquer le fait que l'objet est travaille par toto a telle date |
|
| 182 | + include_spip('inc/config'); |
|
| 183 | + if (lire_config('articles_modif', 'non') !== 'non') { |
|
| 184 | + include_spip('inc/drapeau_edition'); |
|
| 185 | + signale_edition($id_objet, $GLOBALS['visiteur_session'], $objet); |
|
| 186 | + } |
|
| 187 | + |
|
| 188 | + // Verifier si les mises a jour sont pertinentes, datees, en conflit etc |
|
| 189 | + include_spip('inc/editer'); |
|
| 190 | + if (!isset($options['data']) or is_null($options['data'])) { |
|
| 191 | + $options['data'] = &$_POST; |
|
| 192 | + } |
|
| 193 | + $conflits = controler_md5($champs, $options['data'], $objet, $id_objet, $serveur); |
|
| 194 | + // cas hypothetique : normalement inc/editer verifie en amont le conflit edition |
|
| 195 | + // et gere l'interface |
|
| 196 | + // ici on ne renvoie donc qu'un messsage d'erreur, au cas ou on y arrive quand meme |
|
| 197 | + if ($conflits) { |
|
| 198 | + return _T('titre_conflit_edition'); |
|
| 199 | + } |
|
| 200 | + |
|
| 201 | + if ($champs) { |
|
| 202 | + // cas particulier de la langue : passer par instituer_langue_objet |
|
| 203 | + if (isset($champs['lang'])) { |
|
| 204 | + if ($changer_lang = $champs['lang']) { |
|
| 205 | + $id_rubrique = 0; |
|
| 206 | + if (isset($desc['field']['id_rubrique'])) { |
|
| 207 | + $parent = ($objet == 'rubrique') ? 'id_parent' : 'id_rubrique'; |
|
| 208 | + $id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=" . intval($id_objet)); |
|
| 209 | + } |
|
| 210 | + $instituer_langue_objet = charger_fonction('instituer_langue_objet', 'action'); |
|
| 211 | + $champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang, $serveur); |
|
| 212 | + } |
|
| 213 | + // on laisse 'lang' dans $champs, |
|
| 214 | + // ca permet de passer dans le pipeline post_edition et de journaliser |
|
| 215 | + // et ca ne gene pas qu'on refasse un sql_updateq dessus apres l'avoir |
|
| 216 | + // deja pris en compte |
|
| 217 | + } |
|
| 218 | + |
|
| 219 | + // la modif peut avoir lieu |
|
| 220 | + |
|
| 221 | + // faut-il ajouter date_modif ? |
|
| 222 | + if ( |
|
| 223 | + !empty($options['date_modif']) |
|
| 224 | + and !isset($champs[$options['date_modif']]) |
|
| 225 | + ) { |
|
| 226 | + $champs[$options['date_modif']] = date('Y-m-d H:i:s'); |
|
| 227 | + } |
|
| 228 | + |
|
| 229 | + // allez on commit la modif |
|
| 230 | + sql_updateq($spip_table_objet, $champs, "$id_table_objet=" . intval($id_objet), [], $serveur); |
|
| 231 | + |
|
| 232 | + // on verifie si elle est bien passee |
|
| 233 | + $moof = sql_fetsel( |
|
| 234 | + array_keys($champs), |
|
| 235 | + $spip_table_objet, |
|
| 236 | + "$id_table_objet=" . intval($id_objet), |
|
| 237 | + [], |
|
| 238 | + [], |
|
| 239 | + '', |
|
| 240 | + [], |
|
| 241 | + $serveur |
|
| 242 | + ); |
|
| 243 | + // si difference entre les champs, reperer les champs mal enregistres |
|
| 244 | + if ($moof != $champs) { |
|
| 245 | + $liste = []; |
|
| 246 | + foreach ($moof as $k => $v) { |
|
| 247 | + if ( |
|
| 248 | + $v !== $champs[$k] |
|
| 249 | + // ne pas alerter si le champ est numerique est que les valeurs sont equivalentes |
|
| 250 | + and (!is_numeric($v) or intval($v) !== intval($champs[$k])) |
|
| 251 | + // ne pas alerter si le champ est date, qu'on a envoye une valeur vide et qu'on recupere une date nulle |
|
| 252 | + and (strlen($champs[$k]) or !in_array($v, ['0000-00-00 00:00:00', '0000-00-00'])) |
|
| 253 | + ) { |
|
| 254 | + $liste[] = $k; |
|
| 255 | + $conflits[$k]['post'] = $champs[$k]; |
|
| 256 | + $conflits[$k]['save'] = $v; |
|
| 257 | + |
|
| 258 | + // cas specifique MySQL+emoji : si l'un est la |
|
| 259 | + // conversion utf8_noplanes de l'autre alors c'est OK |
|
| 260 | + if (defined('_MYSQL_NOPLANES') && _MYSQL_NOPLANES) { |
|
| 261 | + include_spip('inc/charsets'); |
|
| 262 | + if ($v == utf8_noplanes($champs[$k])) { |
|
| 263 | + array_pop($liste); |
|
| 264 | + } |
|
| 265 | + } |
|
| 266 | + } |
|
| 267 | + } |
|
| 268 | + // si un champ n'a pas ete correctement enregistre, loger et retourner une erreur |
|
| 269 | + // c'est un cas exceptionnel |
|
| 270 | + if (count($liste)) { |
|
| 271 | + spip_log( |
|
| 272 | + "Erreur enregistrement en base $objet/$id_objet champs :" . var_export($conflits, true), |
|
| 273 | + 'modifier.' . _LOG_CRITIQUE |
|
| 274 | + ); |
|
| 275 | + |
|
| 276 | + return _T( |
|
| 277 | + 'erreur_technique_enregistrement_champs', |
|
| 278 | + ['champs' => "<i>'" . implode("'</i>,<i>'", $liste) . "'</i>"] |
|
| 279 | + ); |
|
| 280 | + } |
|
| 281 | + } |
|
| 282 | + |
|
| 283 | + // Invalider les caches |
|
| 284 | + if (isset($options['invalideur']) and $options['invalideur']) { |
|
| 285 | + include_spip('inc/invalideur'); |
|
| 286 | + if (is_array($options['invalideur'])) { |
|
| 287 | + array_map('suivre_invalideur', $options['invalideur']); |
|
| 288 | + } else { |
|
| 289 | + suivre_invalideur($options['invalideur']); |
|
| 290 | + } |
|
| 291 | + } |
|
| 292 | + |
|
| 293 | + // Notifications, gestion des revisions... |
|
| 294 | + // en standard, appelle |nouvelle_revision ci-dessous |
|
| 295 | + pipeline( |
|
| 296 | + 'post_edition', |
|
| 297 | + [ |
|
| 298 | + 'args' => [ |
|
| 299 | + 'table' => $spip_table_objet, |
|
| 300 | + 'table_objet' => $table_objet, |
|
| 301 | + 'spip_table_objet' => $spip_table_objet, |
|
| 302 | + 'desc' => $desc, |
|
| 303 | + 'type' => $objet, |
|
| 304 | + 'id_objet' => $id_objet, |
|
| 305 | + 'champs' => $options['champs'] ?? [], // [doc] kesako ? |
|
| 306 | + 'champs_anciens' => $row, // état du contenu avant modif |
|
| 307 | + 'serveur' => $serveur, |
|
| 308 | + 'action' => $options['action'] ?? 'modifier' |
|
| 309 | + ], |
|
| 310 | + 'data' => $champs |
|
| 311 | + ] |
|
| 312 | + ); |
|
| 313 | + } |
|
| 314 | 314 | |
| 315 | - // Appeler une notification |
|
| 316 | - if ($notifications = charger_fonction('notifications', 'inc')) { |
|
| 317 | - $notifications( |
|
| 318 | - "{$objet}_modifier", |
|
| 319 | - $id_objet, |
|
| 320 | - [ |
|
| 321 | - 'champs' => $champs, |
|
| 322 | - ] |
|
| 323 | - ); |
|
| 324 | - $notifications( |
|
| 325 | - 'objet_modifier', |
|
| 326 | - $id_objet, |
|
| 327 | - [ |
|
| 328 | - 'objet' => $objet, |
|
| 329 | - 'id_objet' => $id_objet, |
|
| 330 | - 'champs' => $champs, |
|
| 331 | - ] |
|
| 332 | - ); |
|
| 333 | - } |
|
| 334 | - |
|
| 335 | - // journaliser l'affaire |
|
| 336 | - // message a affiner :-) |
|
| 337 | - include_spip('inc/filtres_mini'); |
|
| 338 | - $qui = ''; |
|
| 339 | - if (!empty($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 340 | - $qui .= ' #id_auteur:' . $GLOBALS['visiteur_session']['id_auteur'] . '#'; |
|
| 341 | - } |
|
| 342 | - if (!empty($GLOBALS['visiteur_session']['nom'])) { |
|
| 343 | - $qui .= ' #nom:' . $GLOBALS['visiteur_session']['nom'] . '#'; |
|
| 344 | - } |
|
| 345 | - if ($qui == '') { |
|
| 346 | - $qui = '#ip:' . $GLOBALS['ip'] . '#'; |
|
| 347 | - } |
|
| 348 | - journal(_L($qui . ' a édité ' . $objet . ' ' . $id_objet . ' (' . join( |
|
| 349 | - '+', |
|
| 350 | - array_diff(array_keys($champs), ['date_modif']) |
|
| 351 | - ) . ')'), [ |
|
| 352 | - 'faire' => 'modifier', |
|
| 353 | - 'quoi' => $objet, |
|
| 354 | - 'id' => $id_objet |
|
| 355 | - ]); |
|
| 356 | - |
|
| 357 | - return ''; |
|
| 315 | + // Appeler une notification |
|
| 316 | + if ($notifications = charger_fonction('notifications', 'inc')) { |
|
| 317 | + $notifications( |
|
| 318 | + "{$objet}_modifier", |
|
| 319 | + $id_objet, |
|
| 320 | + [ |
|
| 321 | + 'champs' => $champs, |
|
| 322 | + ] |
|
| 323 | + ); |
|
| 324 | + $notifications( |
|
| 325 | + 'objet_modifier', |
|
| 326 | + $id_objet, |
|
| 327 | + [ |
|
| 328 | + 'objet' => $objet, |
|
| 329 | + 'id_objet' => $id_objet, |
|
| 330 | + 'champs' => $champs, |
|
| 331 | + ] |
|
| 332 | + ); |
|
| 333 | + } |
|
| 334 | + |
|
| 335 | + // journaliser l'affaire |
|
| 336 | + // message a affiner :-) |
|
| 337 | + include_spip('inc/filtres_mini'); |
|
| 338 | + $qui = ''; |
|
| 339 | + if (!empty($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 340 | + $qui .= ' #id_auteur:' . $GLOBALS['visiteur_session']['id_auteur'] . '#'; |
|
| 341 | + } |
|
| 342 | + if (!empty($GLOBALS['visiteur_session']['nom'])) { |
|
| 343 | + $qui .= ' #nom:' . $GLOBALS['visiteur_session']['nom'] . '#'; |
|
| 344 | + } |
|
| 345 | + if ($qui == '') { |
|
| 346 | + $qui = '#ip:' . $GLOBALS['ip'] . '#'; |
|
| 347 | + } |
|
| 348 | + journal(_L($qui . ' a édité ' . $objet . ' ' . $id_objet . ' (' . join( |
|
| 349 | + '+', |
|
| 350 | + array_diff(array_keys($champs), ['date_modif']) |
|
| 351 | + ) . ')'), [ |
|
| 352 | + 'faire' => 'modifier', |
|
| 353 | + 'quoi' => $objet, |
|
| 354 | + 'id' => $id_objet |
|
| 355 | + ]); |
|
| 356 | + |
|
| 357 | + return ''; |
|
| 358 | 358 | } |
@@ -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 | /** |
@@ -30,12 +30,12 @@ discard block |
||
| 30 | 30 | * @return string |
| 31 | 31 | */ |
| 32 | 32 | function set_spip_doc(?string $fichier): string { |
| 33 | - if ($fichier and strpos($fichier, (string) _DIR_IMG) === 0) { |
|
| 34 | - return substr($fichier, strlen(_DIR_IMG)); |
|
| 35 | - } else { |
|
| 36 | - // ex: fichier distant |
|
| 37 | - return $fichier ?? ''; |
|
| 38 | - } |
|
| 33 | + if ($fichier and strpos($fichier, (string) _DIR_IMG) === 0) { |
|
| 34 | + return substr($fichier, strlen(_DIR_IMG)); |
|
| 35 | + } else { |
|
| 36 | + // ex: fichier distant |
|
| 37 | + return $fichier ?? ''; |
|
| 38 | + } |
|
| 39 | 39 | } |
| 40 | 40 | |
| 41 | 41 | /** |
@@ -47,26 +47,26 @@ discard block |
||
| 47 | 47 | * @return bool|string |
| 48 | 48 | */ |
| 49 | 49 | function get_spip_doc(?string $fichier) { |
| 50 | - if ($fichier === null) { |
|
| 51 | - return false; |
|
| 52 | - } |
|
| 53 | - |
|
| 54 | - // fichier distant |
|
| 55 | - if (tester_url_absolue($fichier)) { |
|
| 56 | - return $fichier; |
|
| 57 | - } |
|
| 58 | - |
|
| 59 | - // gestion d'erreurs, fichier='' |
|
| 60 | - if (!strlen($fichier)) { |
|
| 61 | - return false; |
|
| 62 | - } |
|
| 63 | - |
|
| 64 | - if (strncmp($fichier, _DIR_IMG, strlen(_DIR_IMG)) !== 0) { |
|
| 65 | - $fichier = _DIR_IMG . $fichier; |
|
| 66 | - } |
|
| 67 | - |
|
| 68 | - // fichier normal |
|
| 69 | - return $fichier; |
|
| 50 | + if ($fichier === null) { |
|
| 51 | + return false; |
|
| 52 | + } |
|
| 53 | + |
|
| 54 | + // fichier distant |
|
| 55 | + if (tester_url_absolue($fichier)) { |
|
| 56 | + return $fichier; |
|
| 57 | + } |
|
| 58 | + |
|
| 59 | + // gestion d'erreurs, fichier='' |
|
| 60 | + if (!strlen($fichier)) { |
|
| 61 | + return false; |
|
| 62 | + } |
|
| 63 | + |
|
| 64 | + if (strncmp($fichier, _DIR_IMG, strlen(_DIR_IMG)) !== 0) { |
|
| 65 | + $fichier = _DIR_IMG . $fichier; |
|
| 66 | + } |
|
| 67 | + |
|
| 68 | + // fichier normal |
|
| 69 | + return $fichier; |
|
| 70 | 70 | } |
| 71 | 71 | |
| 72 | 72 | /** |
@@ -80,26 +80,26 @@ discard block |
||
| 80 | 80 | * @return string |
| 81 | 81 | */ |
| 82 | 82 | function creer_repertoire_documents($ext) { |
| 83 | - $rep = sous_repertoire(_DIR_IMG, $ext); |
|
| 84 | - |
|
| 85 | - if (!$ext or !$rep) { |
|
| 86 | - spip_log("creer_repertoire_documents '$rep' interdit"); |
|
| 87 | - exit; |
|
| 88 | - } |
|
| 89 | - |
|
| 90 | - // Cette variable de configuration peut etre posee par un plugin |
|
| 91 | - // par exemple acces_restreint |
|
| 92 | - // sauf pour logo/ utilise pour stocker les logoon et logooff |
|
| 93 | - if ( |
|
| 94 | - isset($GLOBALS['meta']['creer_htaccess']) |
|
| 95 | - and $GLOBALS['meta']['creer_htaccess'] == 'oui' |
|
| 96 | - and $ext !== 'logo' |
|
| 97 | - ) { |
|
| 98 | - include_spip('inc/acces'); |
|
| 99 | - verifier_htaccess($rep); |
|
| 100 | - } |
|
| 101 | - |
|
| 102 | - return $rep; |
|
| 83 | + $rep = sous_repertoire(_DIR_IMG, $ext); |
|
| 84 | + |
|
| 85 | + if (!$ext or !$rep) { |
|
| 86 | + spip_log("creer_repertoire_documents '$rep' interdit"); |
|
| 87 | + exit; |
|
| 88 | + } |
|
| 89 | + |
|
| 90 | + // Cette variable de configuration peut etre posee par un plugin |
|
| 91 | + // par exemple acces_restreint |
|
| 92 | + // sauf pour logo/ utilise pour stocker les logoon et logooff |
|
| 93 | + if ( |
|
| 94 | + isset($GLOBALS['meta']['creer_htaccess']) |
|
| 95 | + and $GLOBALS['meta']['creer_htaccess'] == 'oui' |
|
| 96 | + and $ext !== 'logo' |
|
| 97 | + ) { |
|
| 98 | + include_spip('inc/acces'); |
|
| 99 | + verifier_htaccess($rep); |
|
| 100 | + } |
|
| 101 | + |
|
| 102 | + return $rep; |
|
| 103 | 103 | } |
| 104 | 104 | |
| 105 | 105 | /** |
@@ -108,22 +108,22 @@ discard block |
||
| 108 | 108 | * @param string $nom |
| 109 | 109 | */ |
| 110 | 110 | function effacer_repertoire_temporaire($nom) { |
| 111 | - if ($d = opendir($nom)) { |
|
| 112 | - while (($f = readdir($d)) !== false) { |
|
| 113 | - if (is_file("$nom/$f")) { |
|
| 114 | - spip_unlink("$nom/$f"); |
|
| 115 | - } else { |
|
| 116 | - if ( |
|
| 117 | - $f <> '.' and $f <> '..' |
|
| 118 | - and is_dir("$nom/$f") |
|
| 119 | - ) { |
|
| 120 | - effacer_repertoire_temporaire("$nom/$f"); |
|
| 121 | - } |
|
| 122 | - } |
|
| 123 | - } |
|
| 124 | - } |
|
| 125 | - closedir($d); |
|
| 126 | - @rmdir($nom); |
|
| 111 | + if ($d = opendir($nom)) { |
|
| 112 | + while (($f = readdir($d)) !== false) { |
|
| 113 | + if (is_file("$nom/$f")) { |
|
| 114 | + spip_unlink("$nom/$f"); |
|
| 115 | + } else { |
|
| 116 | + if ( |
|
| 117 | + $f <> '.' and $f <> '..' |
|
| 118 | + and is_dir("$nom/$f") |
|
| 119 | + ) { |
|
| 120 | + effacer_repertoire_temporaire("$nom/$f"); |
|
| 121 | + } |
|
| 122 | + } |
|
| 123 | + } |
|
| 124 | + } |
|
| 125 | + closedir($d); |
|
| 126 | + @rmdir($nom); |
|
| 127 | 127 | } |
| 128 | 128 | |
| 129 | 129 | // |
@@ -140,45 +140,45 @@ discard block |
||
| 140 | 140 | */ |
| 141 | 141 | function copier_document($ext, $orig, $source, $subdir = null) { |
| 142 | 142 | |
| 143 | - $orig = preg_replace(',\.\.+,', '.', $orig); // pas de .. dans le nom du doc |
|
| 144 | - $dir = creer_repertoire_documents($subdir ?: $ext); |
|
| 145 | - |
|
| 146 | - $dest = preg_replace('/<[^>]*>/', '', basename($orig)); |
|
| 147 | - $dest = preg_replace('/\.([^.]+)$/', '', $dest); |
|
| 148 | - $dest = translitteration($dest); |
|
| 149 | - $dest = preg_replace('/[^.=\w-]+/', '_', $dest); |
|
| 150 | - |
|
| 151 | - // ne pas accepter de noms de la forme -r90.jpg qui sont reserves |
|
| 152 | - // pour les images transformees par rotation (action/documenter) |
|
| 153 | - $dest = preg_replace(',-r(90|180|270)$,', '', $dest); |
|
| 154 | - |
|
| 155 | - while (preg_match(',\.(\w+)$,', $dest, $m)) { |
|
| 156 | - if ( |
|
| 157 | - !function_exists('verifier_upload_autorise') |
|
| 158 | - or !$r = verifier_upload_autorise($dest) |
|
| 159 | - or (!empty($r['autozip'])) |
|
| 160 | - ) { |
|
| 161 | - $dest = substr($dest, 0, -strlen($m[0])) . '_' . $m[1]; |
|
| 162 | - break; |
|
| 163 | - } |
|
| 164 | - else { |
|
| 165 | - $dest = substr($dest, 0, -strlen($m[0])); |
|
| 166 | - $ext = $m[1] . '.' . $ext; |
|
| 167 | - } |
|
| 168 | - } |
|
| 169 | - |
|
| 170 | - // Si le document "source" est deja au bon endroit, ne rien faire |
|
| 171 | - if ($source == ($dir . $dest . '.' . $ext)) { |
|
| 172 | - return $source; |
|
| 173 | - } |
|
| 174 | - |
|
| 175 | - // sinon tourner jusqu'a trouver un numero correct |
|
| 176 | - $n = 0; |
|
| 177 | - while (@file_exists($newFile = $dir . $dest . ($n++ ? ('-' . $n) : '') . '.' . $ext)) { |
|
| 178 | - ; |
|
| 179 | - } |
|
| 180 | - |
|
| 181 | - return deplacer_fichier_upload($source, $newFile); |
|
| 143 | + $orig = preg_replace(',\.\.+,', '.', $orig); // pas de .. dans le nom du doc |
|
| 144 | + $dir = creer_repertoire_documents($subdir ?: $ext); |
|
| 145 | + |
|
| 146 | + $dest = preg_replace('/<[^>]*>/', '', basename($orig)); |
|
| 147 | + $dest = preg_replace('/\.([^.]+)$/', '', $dest); |
|
| 148 | + $dest = translitteration($dest); |
|
| 149 | + $dest = preg_replace('/[^.=\w-]+/', '_', $dest); |
|
| 150 | + |
|
| 151 | + // ne pas accepter de noms de la forme -r90.jpg qui sont reserves |
|
| 152 | + // pour les images transformees par rotation (action/documenter) |
|
| 153 | + $dest = preg_replace(',-r(90|180|270)$,', '', $dest); |
|
| 154 | + |
|
| 155 | + while (preg_match(',\.(\w+)$,', $dest, $m)) { |
|
| 156 | + if ( |
|
| 157 | + !function_exists('verifier_upload_autorise') |
|
| 158 | + or !$r = verifier_upload_autorise($dest) |
|
| 159 | + or (!empty($r['autozip'])) |
|
| 160 | + ) { |
|
| 161 | + $dest = substr($dest, 0, -strlen($m[0])) . '_' . $m[1]; |
|
| 162 | + break; |
|
| 163 | + } |
|
| 164 | + else { |
|
| 165 | + $dest = substr($dest, 0, -strlen($m[0])); |
|
| 166 | + $ext = $m[1] . '.' . $ext; |
|
| 167 | + } |
|
| 168 | + } |
|
| 169 | + |
|
| 170 | + // Si le document "source" est deja au bon endroit, ne rien faire |
|
| 171 | + if ($source == ($dir . $dest . '.' . $ext)) { |
|
| 172 | + return $source; |
|
| 173 | + } |
|
| 174 | + |
|
| 175 | + // sinon tourner jusqu'a trouver un numero correct |
|
| 176 | + $n = 0; |
|
| 177 | + while (@file_exists($newFile = $dir . $dest . ($n++ ? ('-' . $n) : '') . '.' . $ext)) { |
|
| 178 | + ; |
|
| 179 | + } |
|
| 180 | + |
|
| 181 | + return deplacer_fichier_upload($source, $newFile); |
|
| 182 | 182 | } |
| 183 | 183 | |
| 184 | 184 | /** |
@@ -193,28 +193,28 @@ discard block |
||
| 193 | 193 | * @return bool|string |
| 194 | 194 | */ |
| 195 | 195 | function determine_upload($type = '') { |
| 196 | - if (!function_exists('autoriser')) { |
|
| 197 | - include_spip('inc/autoriser'); |
|
| 198 | - } |
|
| 199 | - |
|
| 200 | - if ( |
|
| 201 | - !autoriser('chargerftp') |
|
| 202 | - or $type == 'logos' |
|
| 203 | - ) { # on ne le permet pas pour les logos |
|
| 204 | - return false; |
|
| 205 | - } |
|
| 206 | - |
|
| 207 | - $repertoire = _DIR_TRANSFERT; |
|
| 208 | - if (!@is_dir($repertoire)) { |
|
| 209 | - $repertoire = str_replace(_DIR_TMP, '', $repertoire); |
|
| 210 | - $repertoire = sous_repertoire(_DIR_TMP, $repertoire); |
|
| 211 | - } |
|
| 212 | - |
|
| 213 | - if (!$GLOBALS['visiteur_session']['restreint']) { |
|
| 214 | - return $repertoire; |
|
| 215 | - } else { |
|
| 216 | - return sous_repertoire($repertoire, $GLOBALS['visiteur_session']['login']); |
|
| 217 | - } |
|
| 196 | + if (!function_exists('autoriser')) { |
|
| 197 | + include_spip('inc/autoriser'); |
|
| 198 | + } |
|
| 199 | + |
|
| 200 | + if ( |
|
| 201 | + !autoriser('chargerftp') |
|
| 202 | + or $type == 'logos' |
|
| 203 | + ) { # on ne le permet pas pour les logos |
|
| 204 | + return false; |
|
| 205 | + } |
|
| 206 | + |
|
| 207 | + $repertoire = _DIR_TRANSFERT; |
|
| 208 | + if (!@is_dir($repertoire)) { |
|
| 209 | + $repertoire = str_replace(_DIR_TMP, '', $repertoire); |
|
| 210 | + $repertoire = sous_repertoire(_DIR_TMP, $repertoire); |
|
| 211 | + } |
|
| 212 | + |
|
| 213 | + if (!$GLOBALS['visiteur_session']['restreint']) { |
|
| 214 | + return $repertoire; |
|
| 215 | + } else { |
|
| 216 | + return sous_repertoire($repertoire, $GLOBALS['visiteur_session']['login']); |
|
| 217 | + } |
|
| 218 | 218 | } |
| 219 | 219 | |
| 220 | 220 | /** |
@@ -233,35 +233,35 @@ discard block |
||
| 233 | 233 | * @return bool|mixed|string |
| 234 | 234 | */ |
| 235 | 235 | function deplacer_fichier_upload($source, $dest, $move = false) { |
| 236 | - // Securite |
|
| 237 | - if (substr($dest, 0, strlen(_DIR_RACINE)) == _DIR_RACINE) { |
|
| 238 | - $dest = _DIR_RACINE . preg_replace(',\.\.+,', '.', substr($dest, strlen(_DIR_RACINE))); |
|
| 239 | - } else { |
|
| 240 | - $dest = preg_replace(',\.\.+,', '.', $dest); |
|
| 241 | - } |
|
| 242 | - |
|
| 243 | - if ($move) { |
|
| 244 | - $ok = @rename($source, $dest); |
|
| 245 | - } else { |
|
| 246 | - $ok = @copy($source, $dest); |
|
| 247 | - } |
|
| 248 | - if (!$ok) { |
|
| 249 | - $ok = @move_uploaded_file($source, $dest); |
|
| 250 | - } |
|
| 251 | - if ($ok) { |
|
| 252 | - @chmod($dest, _SPIP_CHMOD & ~0111); |
|
| 253 | - } else { |
|
| 254 | - $f = @fopen($dest, 'w'); |
|
| 255 | - if ($f) { |
|
| 256 | - fclose($f); |
|
| 257 | - } else { |
|
| 258 | - include_spip('inc/flock'); |
|
| 259 | - raler_fichier($dest); |
|
| 260 | - } |
|
| 261 | - spip_unlink($dest); |
|
| 262 | - } |
|
| 263 | - |
|
| 264 | - return $ok ? $dest : false; |
|
| 236 | + // Securite |
|
| 237 | + if (substr($dest, 0, strlen(_DIR_RACINE)) == _DIR_RACINE) { |
|
| 238 | + $dest = _DIR_RACINE . preg_replace(',\.\.+,', '.', substr($dest, strlen(_DIR_RACINE))); |
|
| 239 | + } else { |
|
| 240 | + $dest = preg_replace(',\.\.+,', '.', $dest); |
|
| 241 | + } |
|
| 242 | + |
|
| 243 | + if ($move) { |
|
| 244 | + $ok = @rename($source, $dest); |
|
| 245 | + } else { |
|
| 246 | + $ok = @copy($source, $dest); |
|
| 247 | + } |
|
| 248 | + if (!$ok) { |
|
| 249 | + $ok = @move_uploaded_file($source, $dest); |
|
| 250 | + } |
|
| 251 | + if ($ok) { |
|
| 252 | + @chmod($dest, _SPIP_CHMOD & ~0111); |
|
| 253 | + } else { |
|
| 254 | + $f = @fopen($dest, 'w'); |
|
| 255 | + if ($f) { |
|
| 256 | + fclose($f); |
|
| 257 | + } else { |
|
| 258 | + include_spip('inc/flock'); |
|
| 259 | + raler_fichier($dest); |
|
| 260 | + } |
|
| 261 | + spip_unlink($dest); |
|
| 262 | + } |
|
| 263 | + |
|
| 264 | + return $ok ? $dest : false; |
|
| 265 | 265 | } |
| 266 | 266 | |
| 267 | 267 | |
@@ -285,60 +285,60 @@ discard block |
||
| 285 | 285 | */ |
| 286 | 286 | function check_upload_error($error, $msg = '', $return = false) { |
| 287 | 287 | |
| 288 | - if (!$error) { |
|
| 289 | - return false; |
|
| 290 | - } |
|
| 291 | - |
|
| 292 | - spip_log("Erreur upload $error -- cf. http://php.net/manual/fr/features.file-upload.errors.php"); |
|
| 293 | - |
|
| 294 | - switch ($error) { |
|
| 295 | - case 4: /* UPLOAD_ERR_NO_FILE */ |
|
| 296 | - return true; |
|
| 297 | - |
|
| 298 | - # on peut affiner les differents messages d'erreur |
|
| 299 | - case 1: /* UPLOAD_ERR_INI_SIZE */ |
|
| 300 | - $msg = _T( |
|
| 301 | - 'upload_limit', |
|
| 302 | - ['max' => ini_get('upload_max_filesize')] |
|
| 303 | - ); |
|
| 304 | - break; |
|
| 305 | - case 2: /* UPLOAD_ERR_FORM_SIZE */ |
|
| 306 | - $msg = _T( |
|
| 307 | - 'upload_limit', |
|
| 308 | - ['max' => ini_get('upload_max_filesize')] |
|
| 309 | - ); |
|
| 310 | - break; |
|
| 311 | - case 3: /* UPLOAD_ERR_PARTIAL */ |
|
| 312 | - $msg = _T( |
|
| 313 | - 'upload_limit', |
|
| 314 | - ['max' => ini_get('upload_max_filesize')] |
|
| 315 | - ); |
|
| 316 | - break; |
|
| 317 | - |
|
| 318 | - default: /* autre */ |
|
| 319 | - if (!$msg) { |
|
| 320 | - $msg = _T('pass_erreur') . ' ' . $error |
|
| 321 | - . '<br />' . propre('[->http://php.net/manual/fr/features.file-upload.errors.php]'); |
|
| 322 | - } |
|
| 323 | - break; |
|
| 324 | - } |
|
| 325 | - |
|
| 326 | - spip_log("erreur upload $error"); |
|
| 327 | - if ($return) { |
|
| 328 | - return $msg; |
|
| 329 | - } |
|
| 330 | - |
|
| 331 | - if (_request('iframe') == 'iframe') { |
|
| 332 | - echo "<div class='upload_answer upload_error'>$msg</div>"; |
|
| 333 | - exit; |
|
| 334 | - } |
|
| 335 | - |
|
| 336 | - include_spip('inc/minipres'); |
|
| 337 | - echo minipres( |
|
| 338 | - $msg, |
|
| 339 | - "<div style='text-align: " . $GLOBALS['spip_lang_right'] . "'><a href='" . rawurldecode($GLOBALS['redirect']) . "'><button type='button'>" . _T('ecrire:bouton_suivant') . '</button></a></div>' |
|
| 340 | - ); |
|
| 341 | - exit; |
|
| 288 | + if (!$error) { |
|
| 289 | + return false; |
|
| 290 | + } |
|
| 291 | + |
|
| 292 | + spip_log("Erreur upload $error -- cf. http://php.net/manual/fr/features.file-upload.errors.php"); |
|
| 293 | + |
|
| 294 | + switch ($error) { |
|
| 295 | + case 4: /* UPLOAD_ERR_NO_FILE */ |
|
| 296 | + return true; |
|
| 297 | + |
|
| 298 | + # on peut affiner les differents messages d'erreur |
|
| 299 | + case 1: /* UPLOAD_ERR_INI_SIZE */ |
|
| 300 | + $msg = _T( |
|
| 301 | + 'upload_limit', |
|
| 302 | + ['max' => ini_get('upload_max_filesize')] |
|
| 303 | + ); |
|
| 304 | + break; |
|
| 305 | + case 2: /* UPLOAD_ERR_FORM_SIZE */ |
|
| 306 | + $msg = _T( |
|
| 307 | + 'upload_limit', |
|
| 308 | + ['max' => ini_get('upload_max_filesize')] |
|
| 309 | + ); |
|
| 310 | + break; |
|
| 311 | + case 3: /* UPLOAD_ERR_PARTIAL */ |
|
| 312 | + $msg = _T( |
|
| 313 | + 'upload_limit', |
|
| 314 | + ['max' => ini_get('upload_max_filesize')] |
|
| 315 | + ); |
|
| 316 | + break; |
|
| 317 | + |
|
| 318 | + default: /* autre */ |
|
| 319 | + if (!$msg) { |
|
| 320 | + $msg = _T('pass_erreur') . ' ' . $error |
|
| 321 | + . '<br />' . propre('[->http://php.net/manual/fr/features.file-upload.errors.php]'); |
|
| 322 | + } |
|
| 323 | + break; |
|
| 324 | + } |
|
| 325 | + |
|
| 326 | + spip_log("erreur upload $error"); |
|
| 327 | + if ($return) { |
|
| 328 | + return $msg; |
|
| 329 | + } |
|
| 330 | + |
|
| 331 | + if (_request('iframe') == 'iframe') { |
|
| 332 | + echo "<div class='upload_answer upload_error'>$msg</div>"; |
|
| 333 | + exit; |
|
| 334 | + } |
|
| 335 | + |
|
| 336 | + include_spip('inc/minipres'); |
|
| 337 | + echo minipres( |
|
| 338 | + $msg, |
|
| 339 | + "<div style='text-align: " . $GLOBALS['spip_lang_right'] . "'><a href='" . rawurldecode($GLOBALS['redirect']) . "'><button type='button'>" . _T('ecrire:bouton_suivant') . '</button></a></div>' |
|
| 340 | + ); |
|
| 341 | + exit; |
|
| 342 | 342 | } |
| 343 | 343 | |
| 344 | 344 | /** |
@@ -355,24 +355,24 @@ discard block |
||
| 355 | 355 | * @return string |
| 356 | 356 | */ |
| 357 | 357 | function corriger_extension($ext) { |
| 358 | - $ext = preg_replace(',[^a-z0-9],i', '', $ext); |
|
| 359 | - switch ($ext) { |
|
| 360 | - case 'htm': |
|
| 361 | - $ext = 'html'; |
|
| 362 | - break; |
|
| 363 | - case 'jpeg': |
|
| 364 | - $ext = 'jpg'; |
|
| 365 | - break; |
|
| 366 | - case 'tiff': |
|
| 367 | - $ext = 'tif'; |
|
| 368 | - break; |
|
| 369 | - case 'aif': |
|
| 370 | - $ext = 'aiff'; |
|
| 371 | - break; |
|
| 372 | - case 'mpeg': |
|
| 373 | - $ext = 'mpg'; |
|
| 374 | - break; |
|
| 375 | - } |
|
| 376 | - |
|
| 377 | - return $ext; |
|
| 358 | + $ext = preg_replace(',[^a-z0-9],i', '', $ext); |
|
| 359 | + switch ($ext) { |
|
| 360 | + case 'htm': |
|
| 361 | + $ext = 'html'; |
|
| 362 | + break; |
|
| 363 | + case 'jpeg': |
|
| 364 | + $ext = 'jpg'; |
|
| 365 | + break; |
|
| 366 | + case 'tiff': |
|
| 367 | + $ext = 'tif'; |
|
| 368 | + break; |
|
| 369 | + case 'aif': |
|
| 370 | + $ext = 'aiff'; |
|
| 371 | + break; |
|
| 372 | + case 'mpeg': |
|
| 373 | + $ext = 'mpg'; |
|
| 374 | + break; |
|
| 375 | + } |
|
| 376 | + |
|
| 377 | + return $ext; |
|
| 378 | 378 | } |
@@ -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 | } |
@@ -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 | } |
@@ -19,7 +19,7 @@ discard block |
||
| 19 | 19 | **/ |
| 20 | 20 | |
| 21 | 21 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 22 | - return; |
|
| 22 | + return; |
|
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | |
@@ -33,16 +33,16 @@ discard block |
||
| 33 | 33 | * @return array|bool|null |
| 34 | 34 | */ |
| 35 | 35 | function quete_virtuel($id_article, $connect) { |
| 36 | - return sql_getfetsel( |
|
| 37 | - 'virtuel', |
|
| 38 | - 'spip_articles', |
|
| 39 | - ['id_article=' . intval($id_article), "statut='publie'"], |
|
| 40 | - '', |
|
| 41 | - '', |
|
| 42 | - '', |
|
| 43 | - '', |
|
| 44 | - $connect |
|
| 45 | - ); |
|
| 36 | + return sql_getfetsel( |
|
| 37 | + 'virtuel', |
|
| 38 | + 'spip_articles', |
|
| 39 | + ['id_article=' . intval($id_article), "statut='publie'"], |
|
| 40 | + '', |
|
| 41 | + '', |
|
| 42 | + '', |
|
| 43 | + '', |
|
| 44 | + $connect |
|
| 45 | + ); |
|
| 46 | 46 | } |
| 47 | 47 | |
| 48 | 48 | /** |
@@ -57,41 +57,41 @@ discard block |
||
| 57 | 57 | * @return array |
| 58 | 58 | */ |
| 59 | 59 | function quete_parent_lang($table, $id, string $connect = '') { |
| 60 | - static $cache_quete = []; |
|
| 61 | - |
|
| 62 | - if (!isset($cache_quete[$connect][$table][$id])) { |
|
| 63 | - if (!isset($cache_quete[$connect][$table]['_select'])) { |
|
| 64 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 65 | - if ( |
|
| 66 | - !$desc = $trouver_table( |
|
| 67 | - $table, |
|
| 68 | - $connect |
|
| 69 | - ) or !isset($desc['field']['id_rubrique']) |
|
| 70 | - ) { |
|
| 71 | - // pas de parent rubrique, on passe |
|
| 72 | - $cache_quete[$connect][$table]['_select'] = false; |
|
| 73 | - } else { |
|
| 74 | - $select = ($table == 'spip_rubriques' ? 'id_parent' : 'id_rubrique'); |
|
| 75 | - $select .= isset($desc['field']['lang']) ? ', lang' : ''; |
|
| 76 | - $cache_quete[$connect][$table]['_select'] = $select; |
|
| 77 | - $cache_quete[$connect][$table]['_id'] = id_table_objet(objet_type($table)); |
|
| 78 | - } |
|
| 79 | - } |
|
| 80 | - if ($cache_quete[$connect][$table]['_select']) { |
|
| 81 | - $cache_quete[$connect][$table][$id] = sql_fetsel( |
|
| 82 | - $cache_quete[$connect][$table]['_select'], |
|
| 83 | - $table, |
|
| 84 | - $cache_quete[$connect][$table]['_id'] . '=' . intval($id), |
|
| 85 | - '', |
|
| 86 | - '', |
|
| 87 | - '', |
|
| 88 | - '', |
|
| 89 | - $connect |
|
| 90 | - ); |
|
| 91 | - } |
|
| 92 | - } |
|
| 93 | - |
|
| 94 | - return $cache_quete[$connect][$table][$id] ?? null; |
|
| 60 | + static $cache_quete = []; |
|
| 61 | + |
|
| 62 | + if (!isset($cache_quete[$connect][$table][$id])) { |
|
| 63 | + if (!isset($cache_quete[$connect][$table]['_select'])) { |
|
| 64 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 65 | + if ( |
|
| 66 | + !$desc = $trouver_table( |
|
| 67 | + $table, |
|
| 68 | + $connect |
|
| 69 | + ) or !isset($desc['field']['id_rubrique']) |
|
| 70 | + ) { |
|
| 71 | + // pas de parent rubrique, on passe |
|
| 72 | + $cache_quete[$connect][$table]['_select'] = false; |
|
| 73 | + } else { |
|
| 74 | + $select = ($table == 'spip_rubriques' ? 'id_parent' : 'id_rubrique'); |
|
| 75 | + $select .= isset($desc['field']['lang']) ? ', lang' : ''; |
|
| 76 | + $cache_quete[$connect][$table]['_select'] = $select; |
|
| 77 | + $cache_quete[$connect][$table]['_id'] = id_table_objet(objet_type($table)); |
|
| 78 | + } |
|
| 79 | + } |
|
| 80 | + if ($cache_quete[$connect][$table]['_select']) { |
|
| 81 | + $cache_quete[$connect][$table][$id] = sql_fetsel( |
|
| 82 | + $cache_quete[$connect][$table]['_select'], |
|
| 83 | + $table, |
|
| 84 | + $cache_quete[$connect][$table]['_id'] . '=' . intval($id), |
|
| 85 | + '', |
|
| 86 | + '', |
|
| 87 | + '', |
|
| 88 | + '', |
|
| 89 | + $connect |
|
| 90 | + ); |
|
| 91 | + } |
|
| 92 | + } |
|
| 93 | + |
|
| 94 | + return $cache_quete[$connect][$table][$id] ?? null; |
|
| 95 | 95 | } |
| 96 | 96 | |
| 97 | 97 | |
@@ -108,11 +108,11 @@ discard block |
||
| 108 | 108 | * @return int |
| 109 | 109 | */ |
| 110 | 110 | function quete_parent($id_rubrique, string $connect = '') { |
| 111 | - if (!$id_rubrique = intval($id_rubrique)) { |
|
| 112 | - return 0; |
|
| 113 | - } |
|
| 114 | - $id_parent = quete_parent_lang('spip_rubriques', $id_rubrique, $connect); |
|
| 115 | - return $id_parent ? $id_parent['id_parent'] : 0; |
|
| 111 | + if (!$id_rubrique = intval($id_rubrique)) { |
|
| 112 | + return 0; |
|
| 113 | + } |
|
| 114 | + $id_parent = quete_parent_lang('spip_rubriques', $id_rubrique, $connect); |
|
| 115 | + return $id_parent ? $id_parent['id_parent'] : 0; |
|
| 116 | 116 | } |
| 117 | 117 | |
| 118 | 118 | /** |
@@ -128,9 +128,9 @@ discard block |
||
| 128 | 128 | * @return int |
| 129 | 129 | */ |
| 130 | 130 | function quete_rubrique($id_article, $serveur) { |
| 131 | - $id_parent = quete_parent_lang('spip_articles', $id_article, $serveur); |
|
| 131 | + $id_parent = quete_parent_lang('spip_articles', $id_article, $serveur); |
|
| 132 | 132 | |
| 133 | - return $id_parent['id_rubrique']; |
|
| 133 | + return $id_parent['id_rubrique']; |
|
| 134 | 134 | } |
| 135 | 135 | |
| 136 | 136 | |
@@ -144,13 +144,13 @@ discard block |
||
| 144 | 144 | * @return int |
| 145 | 145 | */ |
| 146 | 146 | function quete_profondeur($id, string $connect = '') { |
| 147 | - $n = 0; |
|
| 148 | - while ($id) { |
|
| 149 | - $n++; |
|
| 150 | - $id = quete_parent($id, $connect); |
|
| 151 | - } |
|
| 147 | + $n = 0; |
|
| 148 | + while ($id) { |
|
| 149 | + $n++; |
|
| 150 | + $id = quete_parent($id, $connect); |
|
| 151 | + } |
|
| 152 | 152 | |
| 153 | - return $n; |
|
| 153 | + return $n; |
|
| 154 | 154 | } |
| 155 | 155 | |
| 156 | 156 | |
@@ -166,15 +166,15 @@ discard block |
||
| 166 | 166 | * Morceau de la requête SQL testant la date |
| 167 | 167 | */ |
| 168 | 168 | function quete_condition_postdates($champ_date, $serveur = '', $ignore_previsu = false) { |
| 169 | - if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) { |
|
| 170 | - return '1=1'; |
|
| 171 | - } |
|
| 172 | - |
|
| 173 | - return |
|
| 174 | - (isset($GLOBALS['meta']['date_prochain_postdate']) |
|
| 175 | - and $GLOBALS['meta']['date_prochain_postdate'] > time()) |
|
| 176 | - ? "$champ_date<" . sql_quote(date('Y-m-d H:i:s', $GLOBALS['meta']['date_prochain_postdate']), $serveur) |
|
| 177 | - : '1=1'; |
|
| 169 | + if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) { |
|
| 170 | + return '1=1'; |
|
| 171 | + } |
|
| 172 | + |
|
| 173 | + return |
|
| 174 | + (isset($GLOBALS['meta']['date_prochain_postdate']) |
|
| 175 | + and $GLOBALS['meta']['date_prochain_postdate'] > time()) |
|
| 176 | + ? "$champ_date<" . sql_quote(date('Y-m-d H:i:s', $GLOBALS['meta']['date_prochain_postdate']), $serveur) |
|
| 177 | + : '1=1'; |
|
| 178 | 178 | } |
| 179 | 179 | |
| 180 | 180 | |
@@ -194,101 +194,101 @@ discard block |
||
| 194 | 194 | * @return array|string |
| 195 | 195 | */ |
| 196 | 196 | function quete_condition_statut($mstatut, $previsu, $publie, $serveur = '', $ignore_previsu = false) { |
| 197 | - static $cond = []; |
|
| 198 | - $key = func_get_args(); |
|
| 199 | - $key = implode('-', $key); |
|
| 200 | - if (isset($cond[$key])) { |
|
| 201 | - return $cond[$key]; |
|
| 202 | - } |
|
| 203 | - |
|
| 204 | - $liste_statuts = $publie; |
|
| 205 | - if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) { |
|
| 206 | - $liste_statuts = $previsu; |
|
| 207 | - } |
|
| 208 | - $not = false; |
|
| 209 | - if (strncmp($liste_statuts, '!', 1) == 0) { |
|
| 210 | - $not = true; |
|
| 211 | - $liste_statuts = substr($liste_statuts, 1); |
|
| 212 | - } |
|
| 213 | - // '' => ne rien afficher, '!'=> ne rien filtrer |
|
| 214 | - if (!strlen($liste_statuts)) { |
|
| 215 | - return $cond[$key] = ($not ? '1=1' : '0=1'); |
|
| 216 | - } |
|
| 217 | - |
|
| 218 | - $liste_statuts = explode(',', $liste_statuts); |
|
| 219 | - $where = []; |
|
| 220 | - foreach ($liste_statuts as $k => $v) { |
|
| 221 | - // filtrage /auteur pour limiter les objets d'un statut (prepa en general) |
|
| 222 | - // a ceux de l'auteur identifie |
|
| 223 | - if (strpos($v, '/') !== false) { |
|
| 224 | - $v = explode('/', $v); |
|
| 225 | - $filtre = end($v); |
|
| 226 | - $v = reset($v); |
|
| 227 | - $v = preg_replace(',\W,', '', $v); |
|
| 228 | - if ( |
|
| 229 | - $filtre == 'auteur' |
|
| 230 | - and (strpos($mstatut, '.') !== false) |
|
| 231 | - and $objet = explode('.', $mstatut) |
|
| 232 | - and $id_table = reset($objet) |
|
| 233 | - and $objet = objet_type($id_table) |
|
| 234 | - ) { |
|
| 235 | - $w = "$mstatut<>" . sql_quote($v); |
|
| 236 | - |
|
| 237 | - // retrouver l’id_auteur qui a filé un lien de prévisu éventuellement, |
|
| 238 | - // sinon l’auteur en session |
|
| 239 | - include_spip('inc/securiser_action'); |
|
| 240 | - if ($desc = decrire_token_previsu()) { |
|
| 241 | - $id_auteur = $desc['id_auteur']; |
|
| 242 | - } elseif (isset($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 243 | - $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur']); |
|
| 244 | - } else { |
|
| 245 | - $id_auteur = null; |
|
| 246 | - } |
|
| 247 | - |
|
| 248 | - // dans ce cas (admin en general), pas de filtrage sur ce statut |
|
| 249 | - if (!autoriser('previsualiser' . $v, $objet, '', $id_auteur)) { |
|
| 250 | - // si pas d'auteur identifie pas de sous-requete car pas d'article qui matche |
|
| 251 | - if (!$id_auteur) { |
|
| 252 | - $where[] = $w; |
|
| 253 | - } else { |
|
| 254 | - $primary = id_table_objet($objet); |
|
| 255 | - $where[] = "($w OR $id_table.$primary IN (" . sql_get_select( |
|
| 256 | - 'ssss.id_objet', |
|
| 257 | - 'spip_auteurs_liens AS ssss', |
|
| 258 | - 'ssss.objet=' . sql_quote($objet) . ' AND ssss.id_auteur=' . intval($id_auteur), |
|
| 259 | - '', |
|
| 260 | - '', |
|
| 261 | - '', |
|
| 262 | - '', |
|
| 263 | - $serveur |
|
| 264 | - ) . '))'; |
|
| 265 | - } |
|
| 266 | - } |
|
| 267 | - } // ignorer ce statut si on ne sait pas comment le filtrer |
|
| 268 | - else { |
|
| 269 | - $v = ''; |
|
| 270 | - } |
|
| 271 | - } |
|
| 272 | - // securite |
|
| 273 | - $liste_statuts[$k] = preg_replace(',\W,', '', $v); |
|
| 274 | - } |
|
| 275 | - $liste_statuts = array_filter($liste_statuts); |
|
| 276 | - if (count($liste_statuts) == 1) { |
|
| 277 | - $where[] = ['=', $mstatut, sql_quote(reset($liste_statuts), $serveur)]; |
|
| 278 | - } else { |
|
| 279 | - $where[] = sql_in($mstatut, $liste_statuts, $not, $serveur); |
|
| 280 | - } |
|
| 281 | - |
|
| 282 | - while (count($where) > 1) { |
|
| 283 | - $and = ['AND', array_pop($where), array_pop($where)]; |
|
| 284 | - $where[] = $and; |
|
| 285 | - } |
|
| 286 | - $cond[$key] = reset($where); |
|
| 287 | - if ($not) { |
|
| 288 | - $cond[$key] = ['NOT', $cond[$key]]; |
|
| 289 | - } |
|
| 290 | - |
|
| 291 | - return $cond[$key]; |
|
| 197 | + static $cond = []; |
|
| 198 | + $key = func_get_args(); |
|
| 199 | + $key = implode('-', $key); |
|
| 200 | + if (isset($cond[$key])) { |
|
| 201 | + return $cond[$key]; |
|
| 202 | + } |
|
| 203 | + |
|
| 204 | + $liste_statuts = $publie; |
|
| 205 | + if (defined('_VAR_PREVIEW') and _VAR_PREVIEW and !$ignore_previsu) { |
|
| 206 | + $liste_statuts = $previsu; |
|
| 207 | + } |
|
| 208 | + $not = false; |
|
| 209 | + if (strncmp($liste_statuts, '!', 1) == 0) { |
|
| 210 | + $not = true; |
|
| 211 | + $liste_statuts = substr($liste_statuts, 1); |
|
| 212 | + } |
|
| 213 | + // '' => ne rien afficher, '!'=> ne rien filtrer |
|
| 214 | + if (!strlen($liste_statuts)) { |
|
| 215 | + return $cond[$key] = ($not ? '1=1' : '0=1'); |
|
| 216 | + } |
|
| 217 | + |
|
| 218 | + $liste_statuts = explode(',', $liste_statuts); |
|
| 219 | + $where = []; |
|
| 220 | + foreach ($liste_statuts as $k => $v) { |
|
| 221 | + // filtrage /auteur pour limiter les objets d'un statut (prepa en general) |
|
| 222 | + // a ceux de l'auteur identifie |
|
| 223 | + if (strpos($v, '/') !== false) { |
|
| 224 | + $v = explode('/', $v); |
|
| 225 | + $filtre = end($v); |
|
| 226 | + $v = reset($v); |
|
| 227 | + $v = preg_replace(',\W,', '', $v); |
|
| 228 | + if ( |
|
| 229 | + $filtre == 'auteur' |
|
| 230 | + and (strpos($mstatut, '.') !== false) |
|
| 231 | + and $objet = explode('.', $mstatut) |
|
| 232 | + and $id_table = reset($objet) |
|
| 233 | + and $objet = objet_type($id_table) |
|
| 234 | + ) { |
|
| 235 | + $w = "$mstatut<>" . sql_quote($v); |
|
| 236 | + |
|
| 237 | + // retrouver l’id_auteur qui a filé un lien de prévisu éventuellement, |
|
| 238 | + // sinon l’auteur en session |
|
| 239 | + include_spip('inc/securiser_action'); |
|
| 240 | + if ($desc = decrire_token_previsu()) { |
|
| 241 | + $id_auteur = $desc['id_auteur']; |
|
| 242 | + } elseif (isset($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 243 | + $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur']); |
|
| 244 | + } else { |
|
| 245 | + $id_auteur = null; |
|
| 246 | + } |
|
| 247 | + |
|
| 248 | + // dans ce cas (admin en general), pas de filtrage sur ce statut |
|
| 249 | + if (!autoriser('previsualiser' . $v, $objet, '', $id_auteur)) { |
|
| 250 | + // si pas d'auteur identifie pas de sous-requete car pas d'article qui matche |
|
| 251 | + if (!$id_auteur) { |
|
| 252 | + $where[] = $w; |
|
| 253 | + } else { |
|
| 254 | + $primary = id_table_objet($objet); |
|
| 255 | + $where[] = "($w OR $id_table.$primary IN (" . sql_get_select( |
|
| 256 | + 'ssss.id_objet', |
|
| 257 | + 'spip_auteurs_liens AS ssss', |
|
| 258 | + 'ssss.objet=' . sql_quote($objet) . ' AND ssss.id_auteur=' . intval($id_auteur), |
|
| 259 | + '', |
|
| 260 | + '', |
|
| 261 | + '', |
|
| 262 | + '', |
|
| 263 | + $serveur |
|
| 264 | + ) . '))'; |
|
| 265 | + } |
|
| 266 | + } |
|
| 267 | + } // ignorer ce statut si on ne sait pas comment le filtrer |
|
| 268 | + else { |
|
| 269 | + $v = ''; |
|
| 270 | + } |
|
| 271 | + } |
|
| 272 | + // securite |
|
| 273 | + $liste_statuts[$k] = preg_replace(',\W,', '', $v); |
|
| 274 | + } |
|
| 275 | + $liste_statuts = array_filter($liste_statuts); |
|
| 276 | + if (count($liste_statuts) == 1) { |
|
| 277 | + $where[] = ['=', $mstatut, sql_quote(reset($liste_statuts), $serveur)]; |
|
| 278 | + } else { |
|
| 279 | + $where[] = sql_in($mstatut, $liste_statuts, $not, $serveur); |
|
| 280 | + } |
|
| 281 | + |
|
| 282 | + while (count($where) > 1) { |
|
| 283 | + $and = ['AND', array_pop($where), array_pop($where)]; |
|
| 284 | + $where[] = $and; |
|
| 285 | + } |
|
| 286 | + $cond[$key] = reset($where); |
|
| 287 | + if ($not) { |
|
| 288 | + $cond[$key] = ['NOT', $cond[$key]]; |
|
| 289 | + } |
|
| 290 | + |
|
| 291 | + return $cond[$key]; |
|
| 292 | 292 | } |
| 293 | 293 | |
| 294 | 294 | /** |
@@ -299,7 +299,7 @@ discard block |
||
| 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 | /** |
@@ -347,72 +347,72 @@ discard block |
||
| 347 | 347 | * Retourne soit un tableau, soit le chemin du fichier. |
| 348 | 348 | */ |
| 349 | 349 | function quete_logo($cle_objet, $onoff, $id, $id_rubrique, $flag = false) { |
| 350 | - include_spip('base/objets'); |
|
| 351 | - $nom = strtolower($onoff); |
|
| 352 | - |
|
| 353 | - $cle_objet = id_table_objet($cle_objet); |
|
| 354 | - |
|
| 355 | - while (1) { |
|
| 356 | - $objet = objet_type($cle_objet); |
|
| 357 | - |
|
| 358 | - $on = quete_logo_objet($id, $objet, $nom); |
|
| 359 | - |
|
| 360 | - if ($on) { |
|
| 361 | - if ($flag) { |
|
| 362 | - return $on['fichier']; |
|
| 363 | - } else { |
|
| 364 | - $taille = @spip_getimagesize($on['chemin']); |
|
| 365 | - |
|
| 366 | - // Si on a déjà demandé un survol directement ($onoff = off) |
|
| 367 | - // ou qu'on a demandé uniquement le normal ($onoff = on) |
|
| 368 | - // alors on ne cherche pas du tout le survol ici |
|
| 369 | - if ($onoff != 'ON') { |
|
| 370 | - $off = ''; |
|
| 371 | - } else { |
|
| 372 | - // Sinon, c'est qu'on demande normal ET survol à la fois, donc on cherche maintenant le survol |
|
| 373 | - $off = quete_logo_objet($id, $objet, 'off'); |
|
| 374 | - } |
|
| 375 | - |
|
| 376 | - // on retourne une url du type IMG/artonXX?timestamp |
|
| 377 | - // qui permet de distinguer le changement de logo |
|
| 378 | - // et placer un expire sur le dossier IMG/ |
|
| 379 | - $res = [ |
|
| 380 | - $on['chemin'] . ($on['timestamp'] ? "?{$on['timestamp']}" : ''), |
|
| 381 | - ($off ? $off['chemin'] . ($off['timestamp'] ? "?{$off['timestamp']}" : '') : ''), |
|
| 382 | - (!$taille ? '' : (' ' . $taille[3])) |
|
| 383 | - ]; |
|
| 384 | - $res['src'] = $res[0]; |
|
| 385 | - $res['logo_on'] = $res[0]; |
|
| 386 | - $res['logo_off'] = $res[1]; |
|
| 387 | - $res['width'] = ($taille ? $taille[0] : ''); |
|
| 388 | - $res['height'] = ($taille ? $taille[1] : ''); |
|
| 389 | - $res['fichier'] = $on['fichier']; |
|
| 390 | - $res['titre'] = ($on['titre'] ?? ''); |
|
| 391 | - $res['descriptif'] = ($on['descriptif'] ?? ''); |
|
| 392 | - $res['credits'] = ($on['credits'] ?? ''); |
|
| 393 | - $res['alt'] = ($on['alt'] ?? ''); |
|
| 394 | - $res['id'] = ($on['id_document'] ?? 0); |
|
| 395 | - |
|
| 396 | - return $res; |
|
| 397 | - } |
|
| 398 | - } else { |
|
| 399 | - if (defined('_LOGO_RUBRIQUE_DESACTIVER_HERITAGE')) { |
|
| 400 | - return ''; |
|
| 401 | - } else { |
|
| 402 | - if ($id_rubrique) { |
|
| 403 | - $cle_objet = 'id_rubrique'; |
|
| 404 | - $id = $id_rubrique; |
|
| 405 | - $id_rubrique = 0; |
|
| 406 | - } else { |
|
| 407 | - if ($id and $cle_objet == 'id_rubrique') { |
|
| 408 | - $id = quete_parent($id); |
|
| 409 | - } else { |
|
| 410 | - return ''; |
|
| 411 | - } |
|
| 412 | - } |
|
| 413 | - } |
|
| 414 | - } |
|
| 415 | - } |
|
| 350 | + include_spip('base/objets'); |
|
| 351 | + $nom = strtolower($onoff); |
|
| 352 | + |
|
| 353 | + $cle_objet = id_table_objet($cle_objet); |
|
| 354 | + |
|
| 355 | + while (1) { |
|
| 356 | + $objet = objet_type($cle_objet); |
|
| 357 | + |
|
| 358 | + $on = quete_logo_objet($id, $objet, $nom); |
|
| 359 | + |
|
| 360 | + if ($on) { |
|
| 361 | + if ($flag) { |
|
| 362 | + return $on['fichier']; |
|
| 363 | + } else { |
|
| 364 | + $taille = @spip_getimagesize($on['chemin']); |
|
| 365 | + |
|
| 366 | + // Si on a déjà demandé un survol directement ($onoff = off) |
|
| 367 | + // ou qu'on a demandé uniquement le normal ($onoff = on) |
|
| 368 | + // alors on ne cherche pas du tout le survol ici |
|
| 369 | + if ($onoff != 'ON') { |
|
| 370 | + $off = ''; |
|
| 371 | + } else { |
|
| 372 | + // Sinon, c'est qu'on demande normal ET survol à la fois, donc on cherche maintenant le survol |
|
| 373 | + $off = quete_logo_objet($id, $objet, 'off'); |
|
| 374 | + } |
|
| 375 | + |
|
| 376 | + // on retourne une url du type IMG/artonXX?timestamp |
|
| 377 | + // qui permet de distinguer le changement de logo |
|
| 378 | + // et placer un expire sur le dossier IMG/ |
|
| 379 | + $res = [ |
|
| 380 | + $on['chemin'] . ($on['timestamp'] ? "?{$on['timestamp']}" : ''), |
|
| 381 | + ($off ? $off['chemin'] . ($off['timestamp'] ? "?{$off['timestamp']}" : '') : ''), |
|
| 382 | + (!$taille ? '' : (' ' . $taille[3])) |
|
| 383 | + ]; |
|
| 384 | + $res['src'] = $res[0]; |
|
| 385 | + $res['logo_on'] = $res[0]; |
|
| 386 | + $res['logo_off'] = $res[1]; |
|
| 387 | + $res['width'] = ($taille ? $taille[0] : ''); |
|
| 388 | + $res['height'] = ($taille ? $taille[1] : ''); |
|
| 389 | + $res['fichier'] = $on['fichier']; |
|
| 390 | + $res['titre'] = ($on['titre'] ?? ''); |
|
| 391 | + $res['descriptif'] = ($on['descriptif'] ?? ''); |
|
| 392 | + $res['credits'] = ($on['credits'] ?? ''); |
|
| 393 | + $res['alt'] = ($on['alt'] ?? ''); |
|
| 394 | + $res['id'] = ($on['id_document'] ?? 0); |
|
| 395 | + |
|
| 396 | + return $res; |
|
| 397 | + } |
|
| 398 | + } else { |
|
| 399 | + if (defined('_LOGO_RUBRIQUE_DESACTIVER_HERITAGE')) { |
|
| 400 | + return ''; |
|
| 401 | + } else { |
|
| 402 | + if ($id_rubrique) { |
|
| 403 | + $cle_objet = 'id_rubrique'; |
|
| 404 | + $id = $id_rubrique; |
|
| 405 | + $id_rubrique = 0; |
|
| 406 | + } else { |
|
| 407 | + if ($id and $cle_objet == 'id_rubrique') { |
|
| 408 | + $id = quete_parent($id); |
|
| 409 | + } else { |
|
| 410 | + return ''; |
|
| 411 | + } |
|
| 412 | + } |
|
| 413 | + } |
|
| 414 | + } |
|
| 415 | + } |
|
| 416 | 416 | } |
| 417 | 417 | |
| 418 | 418 | /** |
@@ -427,43 +427,43 @@ discard block |
||
| 427 | 427 | * @return bool|array |
| 428 | 428 | **/ |
| 429 | 429 | function quete_logo_objet($id_objet, $objet, $mode) { |
| 430 | - static $chercher_logo; |
|
| 431 | - if (is_null($chercher_logo)) { |
|
| 432 | - $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 433 | - } |
|
| 434 | - $cle_objet = id_table_objet($objet); |
|
| 435 | - |
|
| 436 | - // On cherche pas la méthode classique |
|
| 437 | - $infos_logo = $chercher_logo($id_objet, $cle_objet, $mode); |
|
| 438 | - |
|
| 439 | - // Si la méthode classique a trouvé quelque chose, on utilise le nouveau format |
|
| 440 | - if (!empty($infos_logo)) { |
|
| 441 | - $infos = [ |
|
| 442 | - 'chemin' => $infos_logo[0], |
|
| 443 | - 'timestamp' => $infos_logo[4], |
|
| 444 | - 'id_document' => ($infos_logo[5]['id_document'] ?? ''), |
|
| 445 | - ]; |
|
| 446 | - foreach (['fichier', 'titre', 'descriptif', 'credits', 'alt'] as $champ) { |
|
| 447 | - $infos[$champ] = ($infos_logo[5][$champ] ?? ''); |
|
| 448 | - } |
|
| 449 | - $infos_logo = $infos; |
|
| 450 | - } |
|
| 451 | - |
|
| 452 | - // On passe cette recherche de logo dans un pipeline |
|
| 453 | - $infos_logo = pipeline( |
|
| 454 | - 'quete_logo_objet', |
|
| 455 | - [ |
|
| 456 | - 'args' => [ |
|
| 457 | - 'id_objet' => $id_objet, |
|
| 458 | - 'objet' => $objet, |
|
| 459 | - 'cle_objet' => $cle_objet, |
|
| 460 | - 'mode' => $mode, |
|
| 461 | - ], |
|
| 462 | - 'data' => $infos_logo, |
|
| 463 | - ] |
|
| 464 | - ); |
|
| 465 | - |
|
| 466 | - return $infos_logo; |
|
| 430 | + static $chercher_logo; |
|
| 431 | + if (is_null($chercher_logo)) { |
|
| 432 | + $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 433 | + } |
|
| 434 | + $cle_objet = id_table_objet($objet); |
|
| 435 | + |
|
| 436 | + // On cherche pas la méthode classique |
|
| 437 | + $infos_logo = $chercher_logo($id_objet, $cle_objet, $mode); |
|
| 438 | + |
|
| 439 | + // Si la méthode classique a trouvé quelque chose, on utilise le nouveau format |
|
| 440 | + if (!empty($infos_logo)) { |
|
| 441 | + $infos = [ |
|
| 442 | + 'chemin' => $infos_logo[0], |
|
| 443 | + 'timestamp' => $infos_logo[4], |
|
| 444 | + 'id_document' => ($infos_logo[5]['id_document'] ?? ''), |
|
| 445 | + ]; |
|
| 446 | + foreach (['fichier', 'titre', 'descriptif', 'credits', 'alt'] as $champ) { |
|
| 447 | + $infos[$champ] = ($infos_logo[5][$champ] ?? ''); |
|
| 448 | + } |
|
| 449 | + $infos_logo = $infos; |
|
| 450 | + } |
|
| 451 | + |
|
| 452 | + // On passe cette recherche de logo dans un pipeline |
|
| 453 | + $infos_logo = pipeline( |
|
| 454 | + 'quete_logo_objet', |
|
| 455 | + [ |
|
| 456 | + 'args' => [ |
|
| 457 | + 'id_objet' => $id_objet, |
|
| 458 | + 'objet' => $objet, |
|
| 459 | + 'cle_objet' => $cle_objet, |
|
| 460 | + 'mode' => $mode, |
|
| 461 | + ], |
|
| 462 | + 'data' => $infos_logo, |
|
| 463 | + ] |
|
| 464 | + ); |
|
| 465 | + |
|
| 466 | + return $infos_logo; |
|
| 467 | 467 | } |
| 468 | 468 | |
| 469 | 469 | /** |
@@ -476,25 +476,25 @@ discard block |
||
| 476 | 476 | * @return bool|string |
| 477 | 477 | */ |
| 478 | 478 | function quete_logo_file($row, $connect = null) { |
| 479 | - include_spip('inc/documents'); |
|
| 480 | - $logo = vignette_logo_document($row, $connect); |
|
| 481 | - if (!$logo) { |
|
| 482 | - $logo = image_du_document($row, $connect); |
|
| 483 | - } |
|
| 484 | - if (!$logo) { |
|
| 485 | - $f = charger_fonction('vignette', 'inc'); |
|
| 486 | - $logo = $f($row['extension'], false); |
|
| 487 | - } |
|
| 488 | - // si c'est une vignette type doc, la renvoyer direct |
|
| 489 | - if ( |
|
| 490 | - strcmp($logo, _DIR_PLUGINS) == 0 |
|
| 491 | - or strcmp($logo, _DIR_PLUGINS_DIST) == 0 |
|
| 492 | - or strcmp($logo, _DIR_RACINE . 'prive/') == 0 |
|
| 493 | - ) { |
|
| 494 | - return $logo; |
|
| 495 | - } |
|
| 496 | - |
|
| 497 | - return get_spip_doc($logo); |
|
| 479 | + include_spip('inc/documents'); |
|
| 480 | + $logo = vignette_logo_document($row, $connect); |
|
| 481 | + if (!$logo) { |
|
| 482 | + $logo = image_du_document($row, $connect); |
|
| 483 | + } |
|
| 484 | + if (!$logo) { |
|
| 485 | + $f = charger_fonction('vignette', 'inc'); |
|
| 486 | + $logo = $f($row['extension'], false); |
|
| 487 | + } |
|
| 488 | + // si c'est une vignette type doc, la renvoyer direct |
|
| 489 | + if ( |
|
| 490 | + strcmp($logo, _DIR_PLUGINS) == 0 |
|
| 491 | + or strcmp($logo, _DIR_PLUGINS_DIST) == 0 |
|
| 492 | + or strcmp($logo, _DIR_RACINE . 'prive/') == 0 |
|
| 493 | + ) { |
|
| 494 | + return $logo; |
|
| 495 | + } |
|
| 496 | + |
|
| 497 | + return get_spip_doc($logo); |
|
| 498 | 498 | } |
| 499 | 499 | |
| 500 | 500 | /** |
@@ -522,20 +522,20 @@ discard block |
||
| 522 | 522 | */ |
| 523 | 523 | function quete_logo_document($row, $lien, $align, $mode_logo, $x, $y, string $connect = '') { |
| 524 | 524 | |
| 525 | - include_spip('inc/documents'); |
|
| 526 | - $logo = ''; |
|
| 527 | - if (!in_array($mode_logo, ['icone', 'apercu'])) { |
|
| 528 | - $logo = vignette_logo_document($row, $connect); |
|
| 529 | - } |
|
| 530 | - // si on veut explicitement la vignette, ne rien renvoyer si il n'y en a pas |
|
| 531 | - if ($mode_logo == 'vignette' and !$logo) { |
|
| 532 | - return ''; |
|
| 533 | - } |
|
| 534 | - if ($mode_logo == 'icone') { |
|
| 535 | - $row['fichier'] = ''; |
|
| 536 | - } |
|
| 537 | - |
|
| 538 | - return vignette_automatique($logo, $row, $lien, $x, $y, $align, null, $connect); |
|
| 525 | + include_spip('inc/documents'); |
|
| 526 | + $logo = ''; |
|
| 527 | + if (!in_array($mode_logo, ['icone', 'apercu'])) { |
|
| 528 | + $logo = vignette_logo_document($row, $connect); |
|
| 529 | + } |
|
| 530 | + // si on veut explicitement la vignette, ne rien renvoyer si il n'y en a pas |
|
| 531 | + if ($mode_logo == 'vignette' and !$logo) { |
|
| 532 | + return ''; |
|
| 533 | + } |
|
| 534 | + if ($mode_logo == 'icone') { |
|
| 535 | + $row['fichier'] = ''; |
|
| 536 | + } |
|
| 537 | + |
|
| 538 | + return vignette_automatique($logo, $row, $lien, $x, $y, $align, null, $connect); |
|
| 539 | 539 | } |
| 540 | 540 | |
| 541 | 541 | /** |
@@ -547,26 +547,26 @@ discard block |
||
| 547 | 547 | */ |
| 548 | 548 | function quete_html_logo($logo, $align, $lien) { |
| 549 | 549 | |
| 550 | - if (!is_array($logo)) { |
|
| 551 | - return ''; |
|
| 552 | - } |
|
| 553 | - |
|
| 554 | - $contexte = []; |
|
| 555 | - foreach ($logo as $k => $v) { |
|
| 556 | - if (!is_numeric($k)) { |
|
| 557 | - $contexte[$k] = $v; |
|
| 558 | - } |
|
| 559 | - } |
|
| 560 | - |
|
| 561 | - foreach (['titre', 'descriptif', 'credits', 'alt'] as $champ) { |
|
| 562 | - if (!empty($contexte[$champ])) { |
|
| 563 | - $contexte[$champ] = appliquer_traitement_champ($contexte[$champ] , $champ, 'document'); |
|
| 564 | - } |
|
| 565 | - } |
|
| 566 | - |
|
| 567 | - $contexte['align'] = $align; |
|
| 568 | - $contexte['lien'] = $lien; |
|
| 569 | - return recuperer_fond('modeles/logo', $contexte); |
|
| 550 | + if (!is_array($logo)) { |
|
| 551 | + return ''; |
|
| 552 | + } |
|
| 553 | + |
|
| 554 | + $contexte = []; |
|
| 555 | + foreach ($logo as $k => $v) { |
|
| 556 | + if (!is_numeric($k)) { |
|
| 557 | + $contexte[$k] = $v; |
|
| 558 | + } |
|
| 559 | + } |
|
| 560 | + |
|
| 561 | + foreach (['titre', 'descriptif', 'credits', 'alt'] as $champ) { |
|
| 562 | + if (!empty($contexte[$champ])) { |
|
| 563 | + $contexte[$champ] = appliquer_traitement_champ($contexte[$champ] , $champ, 'document'); |
|
| 564 | + } |
|
| 565 | + } |
|
| 566 | + |
|
| 567 | + $contexte['align'] = $align; |
|
| 568 | + $contexte['lien'] = $lien; |
|
| 569 | + return recuperer_fond('modeles/logo', $contexte); |
|
| 570 | 570 | } |
| 571 | 571 | |
| 572 | 572 | /** |
@@ -580,14 +580,14 @@ discard block |
||
| 580 | 580 | * @return string|false |
| 581 | 581 | */ |
| 582 | 582 | function document_spip_externe($fichier, $connect) { |
| 583 | - if ($connect) { |
|
| 584 | - $site = quete_meta('adresse_site', $connect); |
|
| 585 | - if ($site) { |
|
| 586 | - $dir = quete_meta('dir_img', $connect); |
|
| 587 | - return "$site/$dir$fichier"; |
|
| 588 | - } |
|
| 589 | - } |
|
| 590 | - return false; |
|
| 583 | + if ($connect) { |
|
| 584 | + $site = quete_meta('adresse_site', $connect); |
|
| 585 | + if ($site) { |
|
| 586 | + $dir = quete_meta('dir_img', $connect); |
|
| 587 | + return "$site/$dir$fichier"; |
|
| 588 | + } |
|
| 589 | + } |
|
| 590 | + return false; |
|
| 591 | 591 | } |
| 592 | 592 | |
| 593 | 593 | /** |
@@ -601,23 +601,23 @@ discard block |
||
| 601 | 601 | */ |
| 602 | 602 | function vignette_logo_document($row, string $connect = '') { |
| 603 | 603 | |
| 604 | - if (!$row or empty($row['id_vignette'])) { |
|
| 605 | - return ''; |
|
| 606 | - } |
|
| 607 | - $fichier = quete_fichier($row['id_vignette'], $connect); |
|
| 608 | - if ($url = document_spip_externe($fichier, $connect)) { |
|
| 609 | - return $url; |
|
| 610 | - } |
|
| 611 | - |
|
| 612 | - $f = get_spip_doc($fichier); |
|
| 613 | - if ($f and @file_exists($f)) { |
|
| 614 | - return $f; |
|
| 615 | - } |
|
| 616 | - if ($row['mode'] !== 'vignette') { |
|
| 617 | - return ''; |
|
| 618 | - } |
|
| 619 | - |
|
| 620 | - return generer_objet_url($row['id_document'], 'document', '', '', null, '', $connect); |
|
| 604 | + if (!$row or empty($row['id_vignette'])) { |
|
| 605 | + return ''; |
|
| 606 | + } |
|
| 607 | + $fichier = quete_fichier($row['id_vignette'], $connect); |
|
| 608 | + if ($url = document_spip_externe($fichier, $connect)) { |
|
| 609 | + return $url; |
|
| 610 | + } |
|
| 611 | + |
|
| 612 | + $f = get_spip_doc($fichier); |
|
| 613 | + if ($f and @file_exists($f)) { |
|
| 614 | + return $f; |
|
| 615 | + } |
|
| 616 | + if ($row['mode'] !== 'vignette') { |
|
| 617 | + return ''; |
|
| 618 | + } |
|
| 619 | + |
|
| 620 | + return generer_objet_url($row['id_document'], 'document', '', '', null, '', $connect); |
|
| 621 | 621 | } |
| 622 | 622 | |
| 623 | 623 | /** |
@@ -633,66 +633,66 @@ discard block |
||
| 633 | 633 | * @return bool|string |
| 634 | 634 | */ |
| 635 | 635 | function calcul_exposer($id, $prim, $reference, $parent, $type, string $connect = '') { |
| 636 | - static $exposer = []; |
|
| 637 | - |
|
| 638 | - // Que faut-il exposer ? Tous les elements de $reference |
|
| 639 | - // ainsi que leur hierarchie ; on ne fait donc ce calcul |
|
| 640 | - // qu'une fois (par squelette) et on conserve le resultat |
|
| 641 | - // en static. |
|
| 642 | - if (!isset($exposer[$m = md5(serialize($reference))][$prim])) { |
|
| 643 | - $principal = $reference[$type] ?? $reference["@$type"] ?? ''; |
|
| 644 | - // le parent fournit en argument est le parent de $id, pas celui de $principal |
|
| 645 | - // il n'est donc pas utile |
|
| 646 | - $parent = 0; |
|
| 647 | - if (!$principal) { // regarder si un enfant est dans le contexte, auquel cas il expose peut etre le parent courant |
|
| 648 | - $enfants = ['id_rubrique' => ['id_article'], 'id_groupe' => ['id_mot']]; |
|
| 649 | - if (isset($enfants[$type])) { |
|
| 650 | - foreach ($enfants[$type] as $t) { |
|
| 651 | - if ( |
|
| 652 | - isset($reference[$t]) |
|
| 653 | - // cas de la reference donnee dynamiquement par la pagination |
|
| 654 | - or isset($reference["@$t"]) |
|
| 655 | - ) { |
|
| 656 | - $type = $t; |
|
| 657 | - $principal = $reference[$type] ?? $reference["@$type"]; |
|
| 658 | - continue; |
|
| 659 | - } |
|
| 660 | - } |
|
| 661 | - } |
|
| 662 | - } |
|
| 663 | - $exposer[$m][$type] = []; |
|
| 664 | - if ($principal) { |
|
| 665 | - $principaux = is_array($principal) ? $principal : [$principal]; |
|
| 666 | - foreach ($principaux as $principal) { |
|
| 667 | - $exposer[$m][$type][$principal] = true; |
|
| 668 | - if ($type == 'id_mot') { |
|
| 669 | - if (!$parent) { |
|
| 670 | - $parent = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot=' . intval($principal), '', '', '', '', $connect); |
|
| 671 | - } |
|
| 672 | - if ($parent) { |
|
| 673 | - $exposer[$m]['id_groupe'][$parent] = true; |
|
| 674 | - } |
|
| 675 | - } else { |
|
| 676 | - if ($type != 'id_groupe') { |
|
| 677 | - if (!$parent) { |
|
| 678 | - if ($type == 'id_rubrique') { |
|
| 679 | - $parent = $principal; |
|
| 680 | - } |
|
| 681 | - if ($type == 'id_article') { |
|
| 682 | - $parent = quete_rubrique($principal, $connect); |
|
| 683 | - } |
|
| 684 | - } |
|
| 685 | - do { |
|
| 686 | - $exposer[$m]['id_rubrique'][$parent] = true; |
|
| 687 | - } while ($parent = quete_parent($parent, $connect)); |
|
| 688 | - } |
|
| 689 | - } |
|
| 690 | - } |
|
| 691 | - } |
|
| 692 | - } |
|
| 693 | - |
|
| 694 | - // And the winner is... |
|
| 695 | - return isset($exposer[$m][$prim]) ? isset($exposer[$m][$prim][$id]) : ''; |
|
| 636 | + static $exposer = []; |
|
| 637 | + |
|
| 638 | + // Que faut-il exposer ? Tous les elements de $reference |
|
| 639 | + // ainsi que leur hierarchie ; on ne fait donc ce calcul |
|
| 640 | + // qu'une fois (par squelette) et on conserve le resultat |
|
| 641 | + // en static. |
|
| 642 | + if (!isset($exposer[$m = md5(serialize($reference))][$prim])) { |
|
| 643 | + $principal = $reference[$type] ?? $reference["@$type"] ?? ''; |
|
| 644 | + // le parent fournit en argument est le parent de $id, pas celui de $principal |
|
| 645 | + // il n'est donc pas utile |
|
| 646 | + $parent = 0; |
|
| 647 | + if (!$principal) { // regarder si un enfant est dans le contexte, auquel cas il expose peut etre le parent courant |
|
| 648 | + $enfants = ['id_rubrique' => ['id_article'], 'id_groupe' => ['id_mot']]; |
|
| 649 | + if (isset($enfants[$type])) { |
|
| 650 | + foreach ($enfants[$type] as $t) { |
|
| 651 | + if ( |
|
| 652 | + isset($reference[$t]) |
|
| 653 | + // cas de la reference donnee dynamiquement par la pagination |
|
| 654 | + or isset($reference["@$t"]) |
|
| 655 | + ) { |
|
| 656 | + $type = $t; |
|
| 657 | + $principal = $reference[$type] ?? $reference["@$type"]; |
|
| 658 | + continue; |
|
| 659 | + } |
|
| 660 | + } |
|
| 661 | + } |
|
| 662 | + } |
|
| 663 | + $exposer[$m][$type] = []; |
|
| 664 | + if ($principal) { |
|
| 665 | + $principaux = is_array($principal) ? $principal : [$principal]; |
|
| 666 | + foreach ($principaux as $principal) { |
|
| 667 | + $exposer[$m][$type][$principal] = true; |
|
| 668 | + if ($type == 'id_mot') { |
|
| 669 | + if (!$parent) { |
|
| 670 | + $parent = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot=' . intval($principal), '', '', '', '', $connect); |
|
| 671 | + } |
|
| 672 | + if ($parent) { |
|
| 673 | + $exposer[$m]['id_groupe'][$parent] = true; |
|
| 674 | + } |
|
| 675 | + } else { |
|
| 676 | + if ($type != 'id_groupe') { |
|
| 677 | + if (!$parent) { |
|
| 678 | + if ($type == 'id_rubrique') { |
|
| 679 | + $parent = $principal; |
|
| 680 | + } |
|
| 681 | + if ($type == 'id_article') { |
|
| 682 | + $parent = quete_rubrique($principal, $connect); |
|
| 683 | + } |
|
| 684 | + } |
|
| 685 | + do { |
|
| 686 | + $exposer[$m]['id_rubrique'][$parent] = true; |
|
| 687 | + } while ($parent = quete_parent($parent, $connect)); |
|
| 688 | + } |
|
| 689 | + } |
|
| 690 | + } |
|
| 691 | + } |
|
| 692 | + } |
|
| 693 | + |
|
| 694 | + // And the winner is... |
|
| 695 | + return isset($exposer[$m][$prim]) ? isset($exposer[$m][$prim][$id]) : ''; |
|
| 696 | 696 | } |
| 697 | 697 | |
| 698 | 698 | /** |
@@ -707,23 +707,23 @@ discard block |
||
| 707 | 707 | * @return int |
| 708 | 708 | */ |
| 709 | 709 | function quete_debut_pagination($primary, $valeur, $pas, $iter) { |
| 710 | - // on ne devrait pas arriver ici si la cle primaire est inexistante |
|
| 711 | - // ou composee, mais verifions |
|
| 712 | - if (!$primary or preg_match('/[,\s]/', $primary)) { |
|
| 713 | - return 0; |
|
| 714 | - } |
|
| 715 | - |
|
| 716 | - $pos = 0; |
|
| 717 | - while ($row = $iter->fetch() and $row[$primary] != $valeur) { |
|
| 718 | - $pos++; |
|
| 719 | - } |
|
| 720 | - // si on a pas trouve |
|
| 721 | - if (!$row or $row[$primary] != $valeur) { |
|
| 722 | - return 0; |
|
| 723 | - } |
|
| 724 | - |
|
| 725 | - // sinon, calculer le bon numero de page |
|
| 726 | - return floor($pos / $pas) * $pas; |
|
| 710 | + // on ne devrait pas arriver ici si la cle primaire est inexistante |
|
| 711 | + // ou composee, mais verifions |
|
| 712 | + if (!$primary or preg_match('/[,\s]/', $primary)) { |
|
| 713 | + return 0; |
|
| 714 | + } |
|
| 715 | + |
|
| 716 | + $pos = 0; |
|
| 717 | + while ($row = $iter->fetch() and $row[$primary] != $valeur) { |
|
| 718 | + $pos++; |
|
| 719 | + } |
|
| 720 | + // si on a pas trouve |
|
| 721 | + if (!$row or $row[$primary] != $valeur) { |
|
| 722 | + return 0; |
|
| 723 | + } |
|
| 724 | + |
|
| 725 | + // sinon, calculer le bon numero de page |
|
| 726 | + return floor($pos / $pas) * $pas; |
|
| 727 | 727 | } |
| 728 | 728 | |
| 729 | 729 | /** |
@@ -734,11 +734,11 @@ discard block |
||
| 734 | 734 | * @return boolean |
| 735 | 735 | */ |
| 736 | 736 | function is_whereable($value): bool { |
| 737 | - if (is_array($value) && count($value)) { |
|
| 738 | - return true; |
|
| 739 | - } |
|
| 740 | - if (is_scalar($value) && strlen($value)) { |
|
| 741 | - return true; |
|
| 742 | - } |
|
| 743 | - return false; |
|
| 737 | + if (is_array($value) && count($value)) { |
|
| 738 | + return true; |
|
| 739 | + } |
|
| 740 | + if (is_scalar($value) && strlen($value)) { |
|
| 741 | + return true; |
|
| 742 | + } |
|
| 743 | + return false; |
|
| 744 | 744 | } |
@@ -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 | } |
@@ -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 | } |
@@ -16,7 +16,7 @@ discard block |
||
| 16 | 16 | * @package SPIP\Core\Fichier |
| 17 | 17 | **/ |
| 18 | 18 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 19 | - return; |
|
| 19 | + return; |
|
| 20 | 20 | } |
| 21 | 21 | |
| 22 | 22 | /** |
@@ -36,28 +36,28 @@ discard block |
||
| 36 | 36 | */ |
| 37 | 37 | function spip_livrer_fichier($fichier, $content_type = 'application/octet-stream', $options = []) { |
| 38 | 38 | |
| 39 | - $defaut = [ |
|
| 40 | - 'attachment' => false, |
|
| 41 | - 'expires' => 3600, |
|
| 42 | - 'range' => null |
|
| 43 | - ]; |
|
| 44 | - $options = array_merge($defaut, $options); |
|
| 45 | - if (is_numeric($options['expires']) and $options['expires'] > 0) { |
|
| 46 | - $options['expires'] = gmdate('D, d M Y H:i:s', time() + $options['expires']) . ' GMT'; |
|
| 47 | - } |
|
| 48 | - |
|
| 49 | - if (is_null($options) and isset($_SERVER['HTTP_RANGE'])) { |
|
| 50 | - $options['range'] = $_SERVER['HTTP_RANGE']; |
|
| 51 | - } |
|
| 52 | - |
|
| 53 | - spip_livrer_fichier_entetes($fichier, $content_type, $options['attachment'] && !$options['range'], $options['expires']); |
|
| 54 | - |
|
| 55 | - if (!is_null($options['range'])) { |
|
| 56 | - spip_livrer_fichier_partie($fichier, $options['range']); |
|
| 57 | - } |
|
| 58 | - else { |
|
| 59 | - spip_livrer_fichier_entier($fichier); |
|
| 60 | - } |
|
| 39 | + $defaut = [ |
|
| 40 | + 'attachment' => false, |
|
| 41 | + 'expires' => 3600, |
|
| 42 | + 'range' => null |
|
| 43 | + ]; |
|
| 44 | + $options = array_merge($defaut, $options); |
|
| 45 | + if (is_numeric($options['expires']) and $options['expires'] > 0) { |
|
| 46 | + $options['expires'] = gmdate('D, d M Y H:i:s', time() + $options['expires']) . ' GMT'; |
|
| 47 | + } |
|
| 48 | + |
|
| 49 | + if (is_null($options) and isset($_SERVER['HTTP_RANGE'])) { |
|
| 50 | + $options['range'] = $_SERVER['HTTP_RANGE']; |
|
| 51 | + } |
|
| 52 | + |
|
| 53 | + spip_livrer_fichier_entetes($fichier, $content_type, $options['attachment'] && !$options['range'], $options['expires']); |
|
| 54 | + |
|
| 55 | + if (!is_null($options['range'])) { |
|
| 56 | + spip_livrer_fichier_partie($fichier, $options['range']); |
|
| 57 | + } |
|
| 58 | + else { |
|
| 59 | + spip_livrer_fichier_entier($fichier); |
|
| 60 | + } |
|
| 61 | 61 | } |
| 62 | 62 | |
| 63 | 63 | /** |
@@ -70,35 +70,35 @@ discard block |
||
| 70 | 70 | * @param int|string $expires |
| 71 | 71 | */ |
| 72 | 72 | function spip_livrer_fichier_entetes($fichier, $content_type = 'application/octet-stream', $attachment = false, $expires = 0) { |
| 73 | - // toujours envoyer un content type, meme vide ! |
|
| 74 | - header('Accept-Ranges: bytes'); |
|
| 75 | - header('Content-Type: ' . $content_type); |
|
| 76 | - |
|
| 77 | - if ($fs = stat($fichier) |
|
| 78 | - and !empty($fs['size']) |
|
| 79 | - and !empty($fs['mtime'])) { |
|
| 80 | - header("Last-Modified: " . gmdate("D, d M Y H:i:s", $fs['mtime']) . " GMT"); |
|
| 81 | - header(sprintf('Etag: "%x-%x"', $fs['size'], str_pad($fs['mtime'], 16, "0"))); |
|
| 82 | - } |
|
| 83 | - |
|
| 84 | - if ($attachment) { |
|
| 85 | - $f = basename($fichier); |
|
| 86 | - // ce content-type est necessaire pour eviter des corruptions de zip dans ie6 |
|
| 87 | - header('Content-Type: application/octet-stream'); |
|
| 88 | - |
|
| 89 | - header("Content-Disposition: attachment; filename=\"$f\";"); |
|
| 90 | - header('Content-Transfer-Encoding: binary'); |
|
| 91 | - |
|
| 92 | - // fix for IE caching or PHP bug issue |
|
| 93 | - header('Expires: 0'); // set expiration time |
|
| 94 | - header('Pragma: public'); |
|
| 95 | - header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); |
|
| 96 | - } |
|
| 97 | - else { |
|
| 98 | - $f = basename($fichier); |
|
| 99 | - header("Content-Disposition: inline; filename=\"$f\";"); |
|
| 100 | - header('Expires: ' . $expires); // set expiration time |
|
| 101 | - } |
|
| 73 | + // toujours envoyer un content type, meme vide ! |
|
| 74 | + header('Accept-Ranges: bytes'); |
|
| 75 | + header('Content-Type: ' . $content_type); |
|
| 76 | + |
|
| 77 | + if ($fs = stat($fichier) |
|
| 78 | + and !empty($fs['size']) |
|
| 79 | + and !empty($fs['mtime'])) { |
|
| 80 | + header("Last-Modified: " . gmdate("D, d M Y H:i:s", $fs['mtime']) . " GMT"); |
|
| 81 | + header(sprintf('Etag: "%x-%x"', $fs['size'], str_pad($fs['mtime'], 16, "0"))); |
|
| 82 | + } |
|
| 83 | + |
|
| 84 | + if ($attachment) { |
|
| 85 | + $f = basename($fichier); |
|
| 86 | + // ce content-type est necessaire pour eviter des corruptions de zip dans ie6 |
|
| 87 | + header('Content-Type: application/octet-stream'); |
|
| 88 | + |
|
| 89 | + header("Content-Disposition: attachment; filename=\"$f\";"); |
|
| 90 | + header('Content-Transfer-Encoding: binary'); |
|
| 91 | + |
|
| 92 | + // fix for IE caching or PHP bug issue |
|
| 93 | + header('Expires: 0'); // set expiration time |
|
| 94 | + header('Pragma: public'); |
|
| 95 | + header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); |
|
| 96 | + } |
|
| 97 | + else { |
|
| 98 | + $f = basename($fichier); |
|
| 99 | + header("Content-Disposition: inline; filename=\"$f\";"); |
|
| 100 | + header('Expires: ' . $expires); // set expiration time |
|
| 101 | + } |
|
| 102 | 102 | } |
| 103 | 103 | |
| 104 | 104 | /** |
@@ -106,20 +106,20 @@ discard block |
||
| 106 | 106 | * @param string $fichier |
| 107 | 107 | */ |
| 108 | 108 | function spip_livrer_fichier_entier($fichier) { |
| 109 | - if (!file_exists($fichier)) { |
|
| 110 | - throw new \Exception(sprintf('File not found: %s', $fichier)); |
|
| 111 | - } |
|
| 109 | + if (!file_exists($fichier)) { |
|
| 110 | + throw new \Exception(sprintf('File not found: %s', $fichier)); |
|
| 111 | + } |
|
| 112 | 112 | |
| 113 | - if (!is_readable($fichier)) { |
|
| 114 | - throw new \Exception(sprintf('File not readable: %s', $fichier)); |
|
| 115 | - } |
|
| 113 | + if (!is_readable($fichier)) { |
|
| 114 | + throw new \Exception(sprintf('File not readable: %s', $fichier)); |
|
| 115 | + } |
|
| 116 | 116 | |
| 117 | - if ($size = filesize($fichier)) { |
|
| 118 | - header(sprintf('Content-Length: %d', $size)); |
|
| 119 | - } |
|
| 117 | + if ($size = filesize($fichier)) { |
|
| 118 | + header(sprintf('Content-Length: %d', $size)); |
|
| 119 | + } |
|
| 120 | 120 | |
| 121 | - readfile($fichier); |
|
| 122 | - exit(); |
|
| 121 | + readfile($fichier); |
|
| 122 | + exit(); |
|
| 123 | 123 | } |
| 124 | 124 | |
| 125 | 125 | /** |
@@ -132,98 +132,98 @@ discard block |
||
| 132 | 132 | * @throws Exception |
| 133 | 133 | */ |
| 134 | 134 | function spip_livrer_fichier_partie($fichier, $range = null) { |
| 135 | - if (!file_exists($fichier)) { |
|
| 136 | - throw new \Exception(sprintf('File not found: %s', $fichier)); |
|
| 137 | - } |
|
| 135 | + if (!file_exists($fichier)) { |
|
| 136 | + throw new \Exception(sprintf('File not found: %s', $fichier)); |
|
| 137 | + } |
|
| 138 | 138 | |
| 139 | - if (!is_readable($fichier)) { |
|
| 140 | - throw new \Exception(sprintf('File not readable: %s', $fichier)); |
|
| 141 | - } |
|
| 139 | + if (!is_readable($fichier)) { |
|
| 140 | + throw new \Exception(sprintf('File not readable: %s', $fichier)); |
|
| 141 | + } |
|
| 142 | 142 | |
| 143 | 143 | |
| 144 | - // Par defaut on envoie tout |
|
| 145 | - $byteOffset = 0; |
|
| 146 | - $byteLength = $fileSize = filesize($fichier); |
|
| 144 | + // Par defaut on envoie tout |
|
| 145 | + $byteOffset = 0; |
|
| 146 | + $byteLength = $fileSize = filesize($fichier); |
|
| 147 | 147 | |
| 148 | 148 | |
| 149 | - // Parse Content-Range header for byte offsets, looks like "bytes=11525-" OR "bytes=11525-12451" |
|
| 150 | - if ($range and preg_match('%bytes=(\d+)-(\d+)?%i', $range, $match)) { |
|
| 151 | - ### Offset signifies where we should begin to read the file |
|
| 152 | - $byteOffset = (int)$match[1]; |
|
| 149 | + // Parse Content-Range header for byte offsets, looks like "bytes=11525-" OR "bytes=11525-12451" |
|
| 150 | + if ($range and preg_match('%bytes=(\d+)-(\d+)?%i', $range, $match)) { |
|
| 151 | + ### Offset signifies where we should begin to read the file |
|
| 152 | + $byteOffset = (int)$match[1]; |
|
| 153 | 153 | |
| 154 | 154 | |
| 155 | - ### Length is for how long we should read the file according to the browser, and can never go beyond the file size |
|
| 156 | - if (isset($match[2])) { |
|
| 157 | - $finishBytes = (int)$match[2]; |
|
| 158 | - $byteLength = $finishBytes + 1; |
|
| 159 | - } else { |
|
| 160 | - $finishBytes = $fileSize - 1; |
|
| 161 | - } |
|
| 155 | + ### Length is for how long we should read the file according to the browser, and can never go beyond the file size |
|
| 156 | + if (isset($match[2])) { |
|
| 157 | + $finishBytes = (int)$match[2]; |
|
| 158 | + $byteLength = $finishBytes + 1; |
|
| 159 | + } else { |
|
| 160 | + $finishBytes = $fileSize - 1; |
|
| 161 | + } |
|
| 162 | 162 | |
| 163 | - $cr_header = sprintf('Content-Range: bytes %d-%d/%d', $byteOffset, $finishBytes, $fileSize); |
|
| 164 | - } |
|
| 165 | - else { |
|
| 166 | - // si pas de range valide, on delegue a la methode d'envoi complet |
|
| 167 | - spip_livrer_fichier_entier($fichier); |
|
| 168 | - // redondant, mais facilite la comprehension du code |
|
| 169 | - exit(); |
|
| 170 | - } |
|
| 163 | + $cr_header = sprintf('Content-Range: bytes %d-%d/%d', $byteOffset, $finishBytes, $fileSize); |
|
| 164 | + } |
|
| 165 | + else { |
|
| 166 | + // si pas de range valide, on delegue a la methode d'envoi complet |
|
| 167 | + spip_livrer_fichier_entier($fichier); |
|
| 168 | + // redondant, mais facilite la comprehension du code |
|
| 169 | + exit(); |
|
| 170 | + } |
|
| 171 | 171 | |
| 172 | - // Remove headers that might unnecessarily clutter up the output |
|
| 173 | - header_remove('Cache-Control'); |
|
| 174 | - header_remove('Pragma'); |
|
| 172 | + // Remove headers that might unnecessarily clutter up the output |
|
| 173 | + header_remove('Cache-Control'); |
|
| 174 | + header_remove('Pragma'); |
|
| 175 | 175 | |
| 176 | - // partial content |
|
| 177 | - header('HTTP/1.1 206 Partial content'); |
|
| 178 | - header($cr_header); ### Decrease by 1 on byte-length since this definition is zero-based index of bytes being sent |
|
| 176 | + // partial content |
|
| 177 | + header('HTTP/1.1 206 Partial content'); |
|
| 178 | + header($cr_header); ### Decrease by 1 on byte-length since this definition is zero-based index of bytes being sent |
|
| 179 | 179 | |
| 180 | 180 | |
| 181 | - $byteRange = $byteLength - $byteOffset; |
|
| 181 | + $byteRange = $byteLength - $byteOffset; |
|
| 182 | 182 | |
| 183 | - header(sprintf('Content-Length: %d', $byteRange)); |
|
| 183 | + header(sprintf('Content-Length: %d', $byteRange)); |
|
| 184 | 184 | |
| 185 | - // Variable containing the buffer |
|
| 186 | - $buffer = ''; |
|
| 187 | - // Just a reasonable buffer size |
|
| 188 | - $bufferSize = 512 * 16; |
|
| 189 | - // Contains how much is left to read of the byteRange |
|
| 190 | - $bytePool = $byteRange; |
|
| 185 | + // Variable containing the buffer |
|
| 186 | + $buffer = ''; |
|
| 187 | + // Just a reasonable buffer size |
|
| 188 | + $bufferSize = 512 * 16; |
|
| 189 | + // Contains how much is left to read of the byteRange |
|
| 190 | + $bytePool = $byteRange; |
|
| 191 | 191 | |
| 192 | - if (!$handle = fopen($fichier, 'r')) { |
|
| 193 | - throw new \Exception(sprintf('Could not get handle for file %s', $fichier)); |
|
| 194 | - } |
|
| 192 | + if (!$handle = fopen($fichier, 'r')) { |
|
| 193 | + throw new \Exception(sprintf('Could not get handle for file %s', $fichier)); |
|
| 194 | + } |
|
| 195 | 195 | |
| 196 | - if (fseek($handle, $byteOffset, SEEK_SET) == -1) { |
|
| 197 | - throw new \Exception(sprintf('Could not seek to byte offset %d', $byteOffset)); |
|
| 198 | - } |
|
| 196 | + if (fseek($handle, $byteOffset, SEEK_SET) == -1) { |
|
| 197 | + throw new \Exception(sprintf('Could not seek to byte offset %d', $byteOffset)); |
|
| 198 | + } |
|
| 199 | 199 | |
| 200 | 200 | |
| 201 | - while ($bytePool > 0) { |
|
| 202 | - // How many bytes we request on this iteration |
|
| 203 | - $chunkSizeRequested = min($bufferSize, $bytePool); |
|
| 201 | + while ($bytePool > 0) { |
|
| 202 | + // How many bytes we request on this iteration |
|
| 203 | + $chunkSizeRequested = min($bufferSize, $bytePool); |
|
| 204 | 204 | |
| 205 | - // Try readin $chunkSizeRequested bytes from $handle and put data in $buffer |
|
| 206 | - $buffer = fread($handle, $chunkSizeRequested); |
|
| 205 | + // Try readin $chunkSizeRequested bytes from $handle and put data in $buffer |
|
| 206 | + $buffer = fread($handle, $chunkSizeRequested); |
|
| 207 | 207 | |
| 208 | - // Store how many bytes were actually read |
|
| 209 | - $chunkSizeActual = strlen($buffer); |
|
| 208 | + // Store how many bytes were actually read |
|
| 209 | + $chunkSizeActual = strlen($buffer); |
|
| 210 | 210 | |
| 211 | - // If we didn't get any bytes that means something unexpected has happened since $bytePool should be zero already |
|
| 212 | - if ($chunkSizeActual == 0) { |
|
| 213 | - // For production servers this should go in your php error log, since it will break the output |
|
| 214 | - trigger_error('Chunksize became 0', E_USER_WARNING); |
|
| 215 | - break; |
|
| 216 | - } |
|
| 211 | + // If we didn't get any bytes that means something unexpected has happened since $bytePool should be zero already |
|
| 212 | + if ($chunkSizeActual == 0) { |
|
| 213 | + // For production servers this should go in your php error log, since it will break the output |
|
| 214 | + trigger_error('Chunksize became 0', E_USER_WARNING); |
|
| 215 | + break; |
|
| 216 | + } |
|
| 217 | 217 | |
| 218 | - // Decrease byte pool with amount of bytes that were read during this iteration |
|
| 219 | - $bytePool -= $chunkSizeActual; |
|
| 218 | + // Decrease byte pool with amount of bytes that were read during this iteration |
|
| 219 | + $bytePool -= $chunkSizeActual; |
|
| 220 | 220 | |
| 221 | - // Write the buffer to output |
|
| 222 | - print $buffer; |
|
| 221 | + // Write the buffer to output |
|
| 222 | + print $buffer; |
|
| 223 | 223 | |
| 224 | - // Try to output the data to the client immediately |
|
| 225 | - flush(); |
|
| 226 | - } |
|
| 224 | + // Try to output the data to the client immediately |
|
| 225 | + flush(); |
|
| 226 | + } |
|
| 227 | 227 | |
| 228 | - exit(); |
|
| 228 | + exit(); |
|
| 229 | 229 | } |