From 5a0c73c95bc6f3f05265e8fbdf9fdd2ba5b592a6 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Wed, 24 Jun 2009 20:59:40 +0000 Subject: [PATCH] Report de [14127] [14128] [14129] [14130] [14131] [14132] [14133] --- ecrire/action/editer_site.php | 4 ++-- ecrire/inc/ajouter_documents.php | 2 +- ecrire/inc/filtres_mini.php | 15 +++++++++------ ecrire/inc/import.php | 10 +++++++++- ecrire/inc/invalideur.php | 4 ++-- ecrire/index.php | 10 ++++++++-- ecrire/public/assembler.php | 14 +++++++++----- 7 files changed, 40 insertions(+), 19 deletions(-) diff --git a/ecrire/action/editer_site.php b/ecrire/action/editer_site.php index 4b1fe2c3e9..994c72744d 100644 --- a/ecrire/action/editer_site.php +++ b/ecrire/action/editer_site.php @@ -74,8 +74,8 @@ function action_editer_site_dist() { OR !$t) { if ($auto = vider_url(_request('url_auto'))) { $auto = analyser_site($auto); - revisions_sites($id_syndic, - array('descriptif' => $auto['descriptif'])); + if (!strlen($t) AND strlen($auto['descriptif'])) + revisions_sites($id_syndic, array('descriptif' => $auto['descriptif'])); } if (!$logo AND $auto['logo'] AND $auto['format_logo']) diff --git a/ecrire/inc/ajouter_documents.php b/ecrire/inc/ajouter_documents.php index 44a15b7f9e..14b0347ae2 100644 --- a/ecrire/inc/ajouter_documents.php +++ b/ecrire/inc/ajouter_documents.php @@ -430,7 +430,7 @@ function traite_svg($file) // mysql> SELECT * FROM spip_types_documents WHERE extension="pdf "; // http://doc.spip.org/@corriger_extension function corriger_extension($ext) { - $ext = preg_replace(',[^a-z0-9],', '', $ext); + $ext = preg_replace(',[^a-z0-9],i', '', $ext); switch ($ext) { case 'docx': return 'doc'; diff --git a/ecrire/inc/filtres_mini.php b/ecrire/inc/filtres_mini.php index c5cb383622..4e094f6673 100644 --- a/ecrire/inc/filtres_mini.php +++ b/ecrire/inc/filtres_mini.php @@ -44,26 +44,29 @@ function suivre_lien($url, $lien) { return $lien; if (preg_match(',^([a-z0-9]+://.*?)(/.*)?$,iS', $lien, $r)) return $r[1].resolve_path($r[2]); - + # L'url site spip est un lien absolu aussi if ($lien == $GLOBALS['meta']['adresse_site']){ return $lien; } - + # lien relatif, il faut verifier l'url de base - if (preg_match(',^(.*?://[^/]+)(/.*?/?)?([^/#]*)(#.*)?$,S', $url, $regs)) { + # commencer par virer la chaine de get de l'url de base + if (preg_match(',^(.*?://[^/]+)(/.*?/?)?([^/#?]*)([?][^#]*)?(#.*)?$,S', $url, $regs)) { $debut = $regs[1]; $dir = !strlen($regs[2]) ? '/' : $regs[2]; $mot = $regs[3]; - $hash = isset($regs[4])?$regs[4]:""; + $get = isset($regs[4])?$regs[4]:""; + $hash = isset($regs[5])?$regs[5]:""; } + #var_dump(array('url'=>$url,'debut'=>$debut,'dir'=>$dir,'mot'=>$mot,'get'=>$get,'hash'=>$hash)); switch (substr($lien,0,1)) { case '/': return $debut . resolve_path($lien); case '#': - return $debut . resolve_path($dir.$mot.$lien); + return $debut . resolve_path($dir.$mot.$get.$lien); case '': - return $debut . resolve_path($dir.$mot.$hash); + return $debut . resolve_path($dir.$mot.$get.$hash); default: return $debut . resolve_path($dir.$lien); } diff --git a/ecrire/inc/import.php b/ecrire/inc/import.php index 10cd40de00..d54cf30a5b 100644 --- a/ecrire/inc/import.php +++ b/ecrire/inc/import.php @@ -30,6 +30,12 @@ if (@is_readable(_DIR_TMP."charger_plugins_fonctions.php")){ global $IMPORT_tables_noerase; $IMPORT_tables_noerase[]='spip_meta'; +// par defaut on ne vide pas les stats, car elles ne figurent pas dans les dump +// et le cas echeant, un bouton dans l'admin permet de les vider a la main... +$IMPORT_tables_noerase[]='spip_referers'; +$IMPORT_tables_noerase[]='spip_referers_articles'; +$IMPORT_tables_noerase[]='spip_visites'; +$IMPORT_tables_noerase[]='spip_visites_articles'; // Retourne la premiere balise XML figurant dans le buffet de la sauvegarde // et avance dans ce buffet jusqu'au '>' de cette balise. @@ -146,9 +152,11 @@ function import_init_tables($request) // grand menage // on vide toutes les tables dont la restauration est demandee $tables = import_table_choix($request); + $tables = array_diff($tables,$IMPORT_tables_noerase); + foreach($tables as $table){ // regarder si il y a au moins un champ impt='non' - if (($table!='spip_auteurs')&&(!in_array($table,$IMPORT_tables_noerase))){ + if (($table!='spip_auteurs')){ $desc = description_table($table); if (isset($desc['field']['impt'])) sql_delete($table, "impt='oui'"); diff --git a/ecrire/inc/invalideur.php b/ecrire/inc/invalideur.php index 9648da39fb..44e60adf4c 100644 --- a/ecrire/inc/invalideur.php +++ b/ecrire/inc/invalideur.php @@ -166,12 +166,12 @@ function appliquer_quota_cache() { function retire_cache($cache) { if (preg_match( - "|^([0-9a-f]/)?([0-9]+/)?[^.][\-_\%0-9a-z]+\.[0-9a-f]+(\.gz)?$|i", + "|^([0-9a-f]/)?([0-9]+/)?[^.][\-_\%0-9a-z]+--[0-9a-f]+(\.gz)?$|i", $cache)) { // supprimer le fichier (de facon propre) supprimer_fichier(_DIR_CACHE . $cache); } else - spip_log("Impossible de retirer $cache"); + spip_log("Nom de fichier cache incorrect : $cache"); } ####################################################################### diff --git a/ecrire/index.php b/ecrire/index.php index b018384583..26e9c4aaaf 100644 --- a/ecrire/index.php +++ b/ecrire/index.php @@ -78,8 +78,14 @@ AND ($GLOBALS['spip_version_base'] != (str_replace(',','.',$GLOBALS['meta']['ver // sinon c'est qu'elle a ete interrompue et il faut la reprendre elseif (isset($GLOBALS['meta']["admin"])) { - $n = preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']["admin"], $l); - if (_AJAX OR !isset($_COOKIE['spip_admin'])) { + if (preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']["admin"], $l)) + list(,$var_f,$n) = $l; + if (_AJAX + OR !( + isset($_COOKIE['spip_admin']) + OR (isset($GLOBALS['visiteur_session']) AND $GLOBALS['visiteur_session']['statut']=='0minirezo') + ) + ) { spip_log("Quand la meta admin vaut " . $GLOBALS['meta']["admin"] . " seul un admin peut se connecter et sans AJAX." . diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php index c3153e1500..cb3a7e9f90 100644 --- a/ecrire/public/assembler.php +++ b/ecrire/public/assembler.php @@ -546,11 +546,6 @@ function evaluer_fond ($fond, $contexte=array(), $connect=null) { $page = inclure_page($fond, $contexte, $connect); - // Lever un drapeau (global) si le fond utilise #SESSION - // a destination de public/parametrer - if (isset($page['invalideurs']) - AND isset($page['invalideurs']['session'])) - $GLOBALS['cache_utilise_session'] = $page['invalideurs']['session']; if ($GLOBALS['flag_ob'] AND ($page['process_ins'] != 'html')) { ob_start(); xml_hack($page, true); @@ -562,6 +557,15 @@ function evaluer_fond ($fond, $contexte=array(), $connect=null) { } page_base_href($page['texte']); + // Lever un drapeau (global) si le fond utilise #SESSION + // a destination de public/parametrer + // pour remonter vers les inclusions appelantes + // il faut bien lever ce drapeau apres avoir evalue le fond + // pour ne pas faire descendre le flag vers les inclusions appelees + if (isset($page['invalideurs']) + AND isset($page['invalideurs']['session'])) + $GLOBALS['cache_utilise_session'] = $page['invalideurs']['session']; + return $page; } -- GitLab