|
|
|
@ -9,15 +9,15 @@ include_spip('inc/cachelab_utils');
|
|
|
|
|
* Applique une action sur un cache donné et renvoie éventuellement une donnée |
|
|
|
|
* Nécessite Mémoization (toutes méthodes OK). |
|
|
|
|
* |
|
|
|
|
* @param string $action : del, pass, list, clean, list_html, get, get_html ou user defined |
|
|
|
|
* @param string $cle : clé du cache ciblé |
|
|
|
|
* @param null|array $data : valeur du cache pour cette clé (pas forcément fourni) |
|
|
|
|
* @param $options |
|
|
|
|
* @param $return : résultat éventuellement fourni, pour les actions list et get |
|
|
|
|
* @return bool : indique si l'action a pu être appliquée ou non |
|
|
|
|
* @param string $action del, pass, list, clean, list_html, get, get_html ou user defined |
|
|
|
|
* @param string $cle clé du cache ciblé |
|
|
|
|
* @param null|array $data valeur du cache pour cette clé (pas forcément fourni) |
|
|
|
|
* @param $options pour les fonctions cachelab_cibler_{action} |
|
|
|
|
* @param &$return résultat éventuellement fourni, pour les actions list et get |
|
|
|
|
* @return bool indique si l'action a pu être appliquée ou non |
|
|
|
|
*/ |
|
|
|
|
function cachelab_appliquer(string $action, string $cle, $data = null, $options = '', &$return = null) { |
|
|
|
|
global $Memoization; |
|
|
|
|
function cachelab_appliquer(string $action, string $cle, $data = null, $options = '', &$return = null) : bool { |
|
|
|
|
$Memoization = memoization(); |
|
|
|
|
if (!isset($Memoization) or !$Memoization) { |
|
|
|
|
spip_log("cachelab_appliquer ($action, $cle...) : Memoization n'est pas activé", 'ERREUR_cachelab'); |
|
|
|
|
return false; |
|
|
|
@ -38,7 +38,7 @@ static $len_prefix;
|
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
// gérés par cachelab_cibler |
|
|
|
|
// entièrement gérés par cachelab_cibler |
|
|
|
|
case 'pass': // passe |
|
|
|
|
case 'list': // renvoie les clés |
|
|
|
|
case 'clean': // nettoie |
|
|
|
@ -77,7 +77,7 @@ static $len_prefix;
|
|
|
|
|
if (function_exists($f)) { |
|
|
|
|
return $f($action, $cle, $data, $options, $return); |
|
|
|
|
} else { |
|
|
|
|
spip_log("L'action $action n'est pas définie pour cachelab_applique", 'ERREUR_cachelab'); |
|
|
|
|
spip_log("L'action '$action' n'est pas définie pour cachelab_applique", 'ERREUR_cachelab'); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -154,7 +154,7 @@ function cachelab_prepare_conditions(array $conditions) {
|
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
function cachelab_cibler(string $action, array $conditions = array(), array $options = array()) { |
|
|
|
|
global $Memoization; |
|
|
|
|
$Memoization = memoization(); |
|
|
|
|
if (!isset($Memoization) or !$Memoization or !in_array($Memoization->methode(), array('apc', 'apcu'))) { |
|
|
|
|
spip_log("cachelab_cibler($action...) : Mémoization n'est pas activé avec APC ou APCu", 'ERREUR_cachelab'); |
|
|
|
|
die("cachelab_cibler($action...) : le plugin Mémoization doit être activé avec APC ou APCu"); |
|
|
|
@ -162,8 +162,7 @@ global $Memoization;
|
|
|
|
|
|
|
|
|
|
$return = $session = $chemin = $chemins = $cle_objet = $id_objet = $plusfunc = null; |
|
|
|
|
|
|
|
|
|
// Prise en compte des OU (alternatives de conditions) |
|
|
|
|
// Attention la réentrance n'est pas prévue historiquement alors surprises en perspectives |
|
|
|
|
// Prise en compte des 'OU' ('OR', alternatives de conditions) |
|
|
|
|
$l_conditions = (isset($conditions['ou']) ? $conditions['ou'] : '') or (isset($conditions['or']) ? $conditions['or'] : ''); |
|
|
|
|
if (!$l_conditions) { |
|
|
|
|
$l_conditions = array($conditions); |
|
|
|
@ -336,7 +335,6 @@ global $Memoization;
|
|
|
|
|
|
|
|
|
|
// pour les filtres suivants on a besoin du contenu du cache |
|
|
|
|
if ($cle_objet or $plusfunc) { |
|
|
|
|
global $Memoization; |
|
|
|
|
$mdata = $Memoization->get (substr ($cle, $len_prefix)); |
|
|
|
|
if (!$mdata or !is_array ($mdata)) { |
|
|
|
|
spip_log ("clé=$cle : mdata est vide ou n'est pas un tableau : " . print_r ($mdata, 1), 'ERREUR_cachelab'); |
|
|
|
|