[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / ecrire / inc / cvt_autosave.php
index 36b41c3..ed080e2 100644 (file)
@@ -3,50 +3,63 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2016                                                *
+ *  Copyright (c) 2001-2017                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-if (!defined('_ECRIRE_INC_VERSION')) return;
+/**
+ * Sauvegarde automatique des formulaires CVT
+ *
+ * @package SPIP\Core\CVT\Autosave
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 
 /**
- * Nettoyer les echappements
+ * Nettoyer les échappements
+ *
  * @param $val
  * @return string
  */
-function autosave_clean_value($val){
+function autosave_clean_value($val) {
        return stripslashes(urldecode($val));
 }
 
 /**
- * Reperer une demande de formulaire autosave
+ * Repérer une demande de formulaire autosave
  * et la conditionner
  *
  * @param array $flux
  * @return array
  */
-function cvtautosave_formulaire_charger($flux){
+function cvtautosave_formulaire_charger($flux) {
        if (is_array($flux['data'])
-         AND isset($flux['data']['_autosave_id'])
-         AND $cle_autosave = $flux['data']['_autosave_id']){
+               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);
+               $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));
+               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));
+                               }
                        }
                }
 
@@ -54,48 +67,53 @@ function cvtautosave_formulaire_charger($flux){
                 * 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 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;
 }
 
 /**
- * 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
+ * Traitement d'un formulaire ayant activé `autosave`
+ *
+ * Quand on poste définitivement un formulaire `autosave`,
+ * on peut vider la session `autosave`
+ * et on vide aussi toutes les `autosave` de plus de 72H (délai par défaut) ou sans `__timestamp` (vieilles sessions)
+ *
+ * @param array $flux
+ * @return array
  */
-function cvtautosave_formulaire_traiter($flux){
+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')){
+       if ($cle_autosave = _request('autosave')) {
                include_spip('inc/session');
-               session_set('session_autosave_'.$cle_autosave, null);
+               session_set('session_autosave_' . $cle_autosave, null);
        }
 
-       if (isset($GLOBALS['visiteur_session']) AND $GLOBALS['visiteur_session']){
+       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);
+               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){
+               foreach ($session as $k => $v) {
+                       if (strncmp($k, 'session_autosave_', 17) == 0) {
                                $timestamp = 0;
-                               if (preg_match(",&__timestamp=(\d+)$,",$v,$m)){
+                               if (preg_match(",&__timestamp=(\d+)$,", $v, $m)) {
                                        $timestamp = intval($m[1]);
                                }
-                               if ($timestamp<$time_too_old)
+                               if ($timestamp < $time_too_old) {
                                        session_set($k, null);
+                               }
                        }
                }
        }
-       
+
        return $flux;
 }
-
-