$val) { if (isset($flux['data'][$key])) $flux['data'][$key] = (is_string($val)?autosave_clean_value($val):array_map('autosave_clean_value',$val)); } } /** * Envoyer le input hidden et le bout de js qui l'utilisera */ $flux['data']['_hidden'] .= "" .''; } return $flux; } /** * Quand on poste definitivement un formulaire autosave, * on peut vider la session autosave * et on vide aussi toutes les autosave de plus de 72H (delai par defaut) ou sans __timestamp (vieilles sessions) * @param $flux * @return */ function cvtautosave_formulaire_traiter($flux){ // si on poste 'autosave' c'est qu'on n'a plus besoin de sauvegarder : // on elimine les donnees de la session if ($cle_autosave = _request('autosave')){ include_spip('inc/session'); session_set('session_autosave_'.$cle_autosave, null); } if (isset($GLOBALS['visiteur_session']) AND $GLOBALS['visiteur_session']){ // delai par defaut avant purge d'un backup de form : 72H if (!defined('_AUTOSAVE_GB_DELAY')) define('_AUTOSAVE_GB_DELAY',72*3600); $time_too_old = time() - _AUTOSAVE_GB_DELAY; // purger aussi toutes les vieilles autosave $session = $GLOBALS['visiteur_session']; foreach($session as $k=>$v){ if (strncmp($k,'session_autosave_',17)==0){ $timestamp = 0; if (preg_match(",&__timestamp=(\d+)$,",$v,$m)){ $timestamp = intval($m[1]); } if ($timestamp<$time_too_old) session_set($k, null); } } } return $flux; }