/** * Reperer une demande de formulaire autosave * et la conditionner * * @param array $flux * @return array */ function cvtautosave_formulaire_charger($flux) { if (is_array($flux['data']) and isset($flux['data']['_autosave_id']) and $cle_autosave = $flux['data']['_autosave_id']) { $form = $flux['args']['form']; $je_suis_poste = $flux['args']['je_suis_poste']; $cle_autosave = serialize($cle_autosave); $cle_autosave = $form . "_" . md5($cle_autosave); // si on a un backup en session et qu'on est au premier chargement, non poste // on restitue les donnees if (isset($GLOBALS['visiteur_session']['session_autosave_' . $cle_autosave]) and !$je_suis_poste) { parse_str($GLOBALS['visiteur_session']['session_autosave_' . $cle_autosave], $vars); foreach ($vars as $key => $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'] .= "<input type='hidden' name='autosave' class='autosaveactive' value='{$cle_autosave}' />" . '<script type="text/javascript">/*<![CDATA[*/if (window.jQuery) jQuery(function(){ $("input.autosaveactive").closest("form:not(.autosaveon)").autosave({url:"' . $GLOBALS['meta']['adresse_site'] . '/"}).addClass("autosaveon"); });/*]]>*/</script>'; } return $flux; }
/** * Ajouter un jeton temporaire lie a l'heure et a l'IP pour limiter la reutilisation possible du formulaire * * @param array $flux * @return array */ function nospam_formulaire_charger($flux) { $form = $flux['args']['form']; if (in_array($form, nospam_lister_formulaires()) and $flux['data'] and is_array($flux['data'])) { include_spip("inc/nospam"); $jeton = creer_jeton($form); if (!isset($flux['data']['_hidden'])) { $flux['data']['_hidden'] = ""; } $flux['data']['_hidden'] .= "<input type='hidden' name='_jeton' value='{$jeton}' />"; if (_SPAM_ENCRYPT_NAME) { $flux['data']['_hidden'] .= "<input type='hidden' name='_encrypt' value='1' />"; // recuperer les autosave encryptes si possible if (is_array($flux['data']) and isset($flux['data']['_autosave_id']) and $cle_autosave = $flux['data']['_autosave_id'] and include_spip("inc/cvt_autosave") and function_exists("autosave_clean_value")) { $je_suis_poste = $flux['args']['je_suis_poste']; $cle_autosave = serialize($cle_autosave); $cle_autosave = $form . "_" . md5($cle_autosave); // si on a un backup en session et qu'on est au premier chargement, non poste // on restitue les donnees if (isset($GLOBALS['visiteur_session']['session_autosave_' . $cle_autosave]) and !$je_suis_poste) { parse_str($GLOBALS['visiteur_session']['session_autosave_' . $cle_autosave], $vars); if (isset($vars['_jeton']) and $key = $vars['_jeton']) { foreach ($vars as $name => $val) { if (($dname = nospam_name_decode($name, $key)) !== $name and isset($flux['data'][$dname])) { $flux['data'][$dname] = is_string($val) ? autosave_clean_value($val) : array_map('autosave_clean_value', $val); } } } } } } } return $flux; }