Example #1
0
/**
 * 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;
}