diff --git a/ecrire/auth/sha256.inc.php b/ecrire/auth/sha256.inc.php index c0e13f76a76807703f436978bd701809e465efa9..23632281b0c2c6ad835e094273b8954d2fdd8152 100644 --- a/ecrire/auth/sha256.inc.php +++ b/ecrire/auth/sha256.inc.php @@ -202,14 +202,14 @@ if (!class_exists('nanoSha2')) * @param $ig_func Option param to ignore checking for php > 5.1.2 * @return string Hexadecimal representation of the message digest */ - function hash($str, $ig_func = false) + function hash($str, $ig_func = true) { unset($binStr); // binary representation of input string unset($hexStr); // 256-bit message digest in readable hex format // check for php's internal sha256 function, ignore if ig_func==true if ($ig_func == false) { - if (version_compare(PHP_VERSION,'5.1.2','>=')) { + if (version_compare(PHP_VERSION,'5.1.2','>=') AND !defined('_NO_HASH_DEFINED')) { return hash("sha256", $str, false); } else if (function_exists('mhash') && defined('MHASH_SHA256')) { return base64_encode(bin2hex(mhash(MHASH_SHA256, $str))); @@ -385,12 +385,12 @@ if (!function_exists('str_split')) */ // 2009-07-23: Added check for function as the Suhosin plugin adds this routine. if (!function_exists('sha256')) { - function sha256($str, $ig_func = false) { + function sha256($str, $ig_func = true) { $obj = new nanoSha2((defined('_NANO_SHA2_UPPER')) ? true : false); return $obj->hash($str, $ig_func); } } else { - function _nano_sha256($str, $ig_func = false) { + function _nano_sha256($str, $ig_func = true) { $obj = new nanoSha2((defined('_NANO_SHA2_UPPER')) ? true : false); return $obj->hash($str, $ig_func); } @@ -399,6 +399,7 @@ if (!function_exists('sha256')) { // support to give php4 the hash() routine which abstracts this code. if (!function_exists('hash')) { + define('_NO_HASH_DEFINED',true); function hash($algo, $data) { if (empty($algo) || !is_string($algo) || !is_string($data)) { diff --git a/ecrire/inc/plugin.php b/ecrire/inc/plugin.php index ab0de21e714dadac0273be952bb39fc70c778e92..3938ba9c9f586dfa07db15e21131dea511944fc1 100644 --- a/ecrire/inc/plugin.php +++ b/ecrire/inc/plugin.php @@ -59,19 +59,21 @@ function liste_plugin_files($dir_plugins = null){ // http://doc.spip.org/@plugin_version_compatible function plugin_version_compatible($intervalle,$version){ if (!strlen($intervalle)) return true; - if (!preg_match(',^[\[\(]([0-9.a-zRC\s]*)[;]([0-9.a-zRC\s]*)[\]\)]$,',$intervalle,$regs)) return false; - $mineure = $regs[1]; - $majeure = $regs[2]; - $mineure_inc = $intervalle{0}=="["; - $majeure_inc = substr($intervalle,-1)=="]"; - #var_dump("$mineure_inc-$mineure-$majeure-$majeure_inc"); - if (strlen($mineure)){ - if ($mineure_inc AND version_compare($version,$mineure,'<')) return false; - if (!$mineure_inc AND version_compare($version,$mineure,'<=')) return false; + if (!preg_match(',^[\[\(]([0-9.a-zRC\s\-]*)[;]([0-9.a-zRC\s\-]*)[\]\)]$,',$intervalle,$regs)) return false; + #var_dump("$version::$intervalle"); + $minimum = $regs[1]; + $maximum = $regs[2]; + $minimum_inc = $intervalle{0}=="["; + $maximum_inc = substr($intervalle,-1)=="]"; + #var_dump("$version::$minimum_inc::$minimum::$maximum::$maximum_inc"); + #var_dump(version_compare($version,$minimum,'<')); + if (strlen($minimum)){ + if ($minimum_inc AND version_compare($version,$minimum,'<')) return false; + if (!$minimum_inc AND version_compare($version,$minimum,'<=')) return false; } - if (strlen($majeure)){ - if ($majeure_inc AND version_compare($version,$majeure,'>')) return false; - if (!$majeure_inc AND version_compare($version,$majeure,'>=')) return false; + if (strlen($maximum)){ + if ($maximum_inc AND version_compare($version,$maximum,'>')) return false; + if (!$maximum_inc AND version_compare($version,$maximum,'>=')) return false; } return true; } @@ -114,7 +116,7 @@ function erreur_necessite($n, $liste) { // Necessite SPIP version x ? if ($id=='SPIP') { if (!plugin_version_compatible($need['version'], - $GLOBALS['spip_version_branche'].".".$GLOBALS['spip_version_code'])) { + $GLOBALS['spip_version_branche'])) { $msg .= "<li>" ._T('plugin_necessite_spip', array('version' => $need['version']) @@ -361,7 +363,7 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz') { $prefix = strtoupper(preg_replace(',\W,','_',$info['prefix'])); $splugs .= "define('_DIR_PLUGIN_$prefix',$dir); "; foreach($info['path'] as $chemin){ - if (!isset($chemin['version']) OR plugin_version_compatible($chemin['version'],$GLOBALS['spip_version_branche'].".".$GLOBALS['spip_version_code'])){ + if (!isset($chemin['version']) OR plugin_version_compatible($chemin['version'],$GLOBALS['spip_version_branche'])){ if (isset($chemin['type'])) $splugs .= "if (".(($chemin['type']=='public')?"":"!")."_DIR_RESTREINT) "; $dir = $chemin['dir']; diff --git a/ecrire/plugins/afficher_plugin.php b/ecrire/plugins/afficher_plugin.php index cbe6e89f111d8896e560b65cff8473652526c86c..0d69d58d2129d90f082ee297a8f9b48265bbe3ec 100644 --- a/ecrire/plugins/afficher_plugin.php +++ b/ecrire/plugins/afficher_plugin.php @@ -22,8 +22,10 @@ function plugins_afficher_plugin_dist($url_page, $plug_file, $actif, $expose=fal $erreur = false; $s = ""; + $force_reload = (_request('var_mode')=='recalcul'?true:false); + $get_infos = charger_fonction('get_infos','plugins'); - $info = $get_infos($plug_file); + $info = $get_infos($plug_file, $force_reload, $dir_plugins); // numerotons les occurences d'un meme prefix $versions[$info['prefix']] = isset($versions[$info['prefix']]) ? $versions[$info['prefix']] + 1 : ''; @@ -175,4 +177,4 @@ function affiche_bloc_plugin($plug_file, $info, $dir_plugins=null) { return $s; } -?> \ No newline at end of file +?> diff --git a/ecrire/plugins/verifie_conformite.php b/ecrire/plugins/verifie_conformite.php index 6c4d1b8f6021a9736a8643a406330cc19e310a9a..604ca6667ffee64948ec1b4b7475d01b6adedba0 100644 --- a/ecrire/plugins/verifie_conformite.php +++ b/ecrire/plugins/verifie_conformite.php @@ -22,7 +22,7 @@ function plugins_verifie_conformite_dist($plug, &$arbre, $dir_plugins = _DIR_PLU // chercher la declaration <plugin spip='...'> a prendre pour cette version de SPIP if ($n = spip_xml_match_nodes(",^plugin(\s|$),", $arbre, $matches)){ // version de SPIP - $vspip = $GLOBALS['spip_version_branche'].".".$GLOBALS['spip_version_code']; + $vspip = $GLOBALS['spip_version_branche']; foreach($matches as $tag=>$sous){ list($tagname,$atts) = spip_xml_decompose_tag($tag); if ($tagname=='plugin' AND is_array($sous)){ @@ -148,4 +148,4 @@ function plugins_verifie_conformite_dist($plug, &$arbre, $dir_plugins = _DIR_PLU } } -?> \ No newline at end of file +?> diff --git a/ecrire/public.php b/ecrire/public.php index 2bcba062f68868af921ec7edec327bab644f3620..07f1891d0b66946d6e574b138d7a27f102a1bc3f 100644 --- a/ecrire/public.php +++ b/ecrire/public.php @@ -148,11 +148,10 @@ if (isset($GLOBALS['_INC_PUBLIC'])) { // type tableau pour y mettre des choses au besoin. $debug = ((_request('var_mode') == 'debug') OR $tableau_des_temps) ? array(1) : array(); - $affiche_boutons_admin = (( + $affiche_boutons_admin = ($html AND (( isset($_COOKIE['spip_admin']) AND !$flag_preserver - AND $html - ) OR $debug); + ) OR $debug)); if ($affiche_boutons_admin) include_spip('balise/formulaire_admin'); diff --git a/ecrire/public/cacher.php b/ecrire/public/cacher.php index 8ff102c2b6af85050d7138308b50f7be21a0cdd1..1c83590cb7f7b7ad883c78032afc78069066193a 100644 --- a/ecrire/public/cacher.php +++ b/ecrire/public/cacher.php @@ -133,13 +133,21 @@ function cache_valide(&$page, $date) { return 0; } -function cache_sessionne($chemin_cache, $creer=false) { +function cache_sessionne($chemin_cache, $session, $creer=false) { $fs = substr(md5($chemin_cache),0,8); $a = substr($fs,0,1); $b = sous_repertoire(_DIR_CACHE, $a); - if ($creer) - sous_repertoire($b, $fs); - return $a.'/'.$fs.'/_'; + // si la session n'est pas anonyme, creer un sous dossier + // car spip est susceptible de generer auant de caches que de visiteur identifie + if ($session){ + if ($creer) + sous_repertoire($b, $fs); + return $a.'/'.$fs.'/_'.$session; + } + // sinon un simple fichier suffixe par _anonyme + else { + return $a.'/'.$fs.'_anonyme'; + } } // Creer le fichier cache @@ -154,7 +162,7 @@ function creer_cache(&$page, &$chemin_cache) { if (isset($page['invalideurs']) AND isset($page['invalideurs']['session'])) { supprimer_fichier(_DIR_CACHE . $chemin_cache); - $chemin_cache = cache_sessionne($chemin_cache, true).$page['invalideurs']['session']; + $chemin_cache = cache_sessionne($chemin_cache,$page['invalideurs']['session'], true); } @@ -234,7 +242,7 @@ function public_cacher_dist($contexte, &$use_cache, &$chemin_cache, &$page, &$la $chemin_cache = generer_nom_fichier_cache($contexte, $page); $lastmodified = 0; if (!lire_fichier(_DIR_CACHE . ($f = $chemin_cache), $page)) - $fs = lire_fichier(_DIR_CACHE . ($f = cache_sessionne($f).spip_session()), $page); + $fs = lire_fichier(_DIR_CACHE . ($f = cache_sessionne($f, spip_session())), $page); // HEAD : cas sans jamais de calcul pour raisons de performance if ($_SERVER['REQUEST_METHOD'] == 'HEAD') { diff --git a/squelettes-dist/formulaires/mot_de_passe.php b/squelettes-dist/formulaires/mot_de_passe.php index b743669b1c8465a4738edfb1d752e59df3e841d7..77d0a5801ec7044be4bab6d18fb5312933732b2e 100644 --- a/squelettes-dist/formulaires/mot_de_passe.php +++ b/squelettes-dist/formulaires/mot_de_passe.php @@ -82,7 +82,7 @@ function formulaires_mot_de_passe_traiter_dist($id_auteur=null){ && ($id_auteur = $row['id_auteur']) && ($oubli = _request('oubli'))) { include_spip('action/editer_auteur'); - instituer_auteur($id_auteur, array('pass'=>$oubli)); + auteurs_set($id_auteur, array('pass'=>$oubli,'cookie_oubli'=>'')); $login = $row['login']; $message = "<b>" . _T('pass_nouveau_enregistre') . "</b>".