/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
- * Copyright (c) 2001-2014 *
+ * Copyright (c) 2001-2016 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
return $texte;
}
+/**
+ * Version securisee de filtrer_entites
+ * @param string $t
+ * @return string
+ */
+if (!function_exists('filtre_filtrer_entites_dist')) {
+ function filtre_filtrer_entites_dist($t) {
+ include_spip('inc/texte');
+ return interdire_scripts(filtrer_entites($t));
+ }
+}
+
+
// caracteres de controle - http://www.w3.org/TR/REC-xml/#charsets
// http://doc.spip.org/@supprimer_caracteres_illegaux
function supprimer_caracteres_illegaux($texte) {
static $to = null;
if (is_array($texte)) {
- return array_map('corriger_caracteres_windows', $texte);
+ return array_map('supprimer_caracteres_illegaux', $texte);
}
if (!$to) $to = str_repeat('-', strlen($from));
function date_ical($date, $addminutes = 0) {
list($heures, $minutes, $secondes) = recup_heure($date);
list($annee, $mois, $jour) = recup_date($date);
- return date("Ymd\THis",
- mktime($heures, $minutes+$addminutes,$secondes,$mois,$jour,$annee));
+
+ return gmdate("Ymd\THis\Z", mktime($heures, $minutes + $addminutes, $secondes, $mois, $jour, $annee));
}
// date_iso retourne la date au format "RFC 3339" / "ISO 8601"
* @param mixed $defaut
* Valeur par defaut retournee si la cle demandee n'existe pas
*
+ * @param bool $conserver_null
+ * Permet de forcer la fonction à renvoyer la valeur null d'un index
+ * et non pas $defaut comme cela est fait naturellement par la fonction
+ * isset. On utilise alors array_key_exists() à la place de isset().
+ *
* @return mixed Valeur trouvee ou valeur par defaut.
**/
-function table_valeur($table, $cle, $defaut='') {
+function table_valeur($table, $cle, $defaut = '', $conserver_null = false) {
foreach (explode('/', $cle) as $k) {
$table = is_string($table) ? @unserialize($table) : $table;
if (is_object($table)) {
- $table = (($k !== "") and isset($table->$k)) ? $table->$k : $defaut;
+ $table = (($k !== "") and isset($table->$k)) ? $table->$k : $defaut;
} elseif (is_array($table)) {
- $table = isset($table[$k]) ? $table[$k] : $defaut;
+ if ($conserver_null) {
+ $table = array_key_exists($k, $table) ? $table[$k] : $defaut;
+ } else {
+ $table = isset($table[$k]) ? $table[$k] : $defaut;
+ }
} else {
$table = $defaut;
}
}
+
return $table;
}
if (!function_exists('calculer_cle_action'))
include_spip("inc/securiser_action");
- $cle = calculer_cle_action($form.(is_array($c)?serialize($c):$c));
- $c = serialize(array($c,$cle));
+
+ $c = serialize($c);
+ $cle = calculer_cle_action($form . $c);
+ $c = "$cle:$c";
// on ne stocke pas les contextes dans des fichiers caches
// par defaut, sauf si cette configuration a ete forcee
$r = self();
$r = ' data-origin="'.$r.'"';
$class = 'ajaxbloc';
- if ($ajaxid AND is_string($ajaxid)){
- $class .= ' ajax-id-'.$ajaxid;
+ if ($ajaxid and is_string($ajaxid)) {
+ // ajaxid est normalement conforme a un nom de classe css
+ // on ne verifie pas la conformite, mais on passe entites_html par dessus par precaution
+ $class .= ' ajax-id-' . entites_html($ajaxid);
}
return "<div class='$class' "."data-ajax-env='$env'$r>\n$emboite</div><!--ajaxbloc-->\n";
}
if (function_exists('gzdeflate') && function_exists('gzinflate'))
$c = @gzinflate($c);
}
- list($env, $cle) = @unserialize($c);
- if ($cle == calculer_cle_action($form.(is_array($env)?serialize($env):$env)))
- return $env;
+ // extraire la signature en debut de contexte
+ // et la verifier avant de deserializer
+ // format : signature:donneesserializees
+ if ($p = strpos($c,":")){
+ $cle = substr($c,0,$p);
+ $c = substr($c,$p+1);
+
+ if ($cle == calculer_cle_action($form . $c)) {
+ $env = @unserialize($c);
+ return $env;
+ }
+ }
+
return false;
}