[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins / formidable / action / formidable_recuperer_fichier_par_email.php
diff --git a/www/plugins/formidable/action/formidable_recuperer_fichier_par_email.php b/www/plugins/formidable/action/formidable_recuperer_fichier_par_email.php
new file mode 100644 (file)
index 0000000..7bd7692
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
+include_spip('inc/autoriser');
+include_spip('inc/formidable_fichiers');
+/**
+ * Récupère un fichier depuis un lien email, si on ne clique pas trop tard
+ * et l'envoi en http
+ **/
+function action_formidable_recuperer_fichier_par_email() {
+       //La vérification est inspirée de ce qui se fait dans notifications, pour les modifications de formu par email
+       $arg = _request('arg');
+       $hash = _request('hash');
+
+       include_spip('inc/securiser_action');
+       $action = 'formidable_recuperer_fichier_par_email';
+       $pass = secret_du_site();
+       if ($hash==_action_auteur("$action-$arg", '', $pass, 'alea_ephemere')
+               or $hash==_action_auteur("$action-$arg", '', $pass, 'alea_ephemere_ancien')) {
+               $arg = unserialize($arg);
+               // Construire le chemin du fichier, en fonction de ce qu'on reçoit
+               $chemin_fichier = formidable_generer_chemin_fichier($arg);
+               // Vérifier que le fichier existe, qu'il n'est pas trop vieux, et l'envoyer le cas échéant
+               if (@file_exists($chemin_fichier)) {
+                       $f = $arg['fichier'];
+                       $date = filemtime($chemin_fichier);
+                       if (_FORMIDABLE_EXPIRATION_FICHIERS_EMAIL > 0 and $date +  _FORMIDABLE_EXPIRATION_FICHIERS_EMAIL < time()) {// vérifier que le fichier n'est pas trop vieux
+                               include_spip('inc/minipres');
+                               echo minipres(_T('formidable:erreur_fichier_expire'));
+                       } else {
+                               formidable_retourner_fichier($chemin_fichier, $f);
+                       }
+               } else {
+                       include_spip('inc/minipres');
+                       echo minipres(_T('formidable:erreur_fichier_introuvable'));
+               }
+       } else {
+               include_spip('inc/minipres');
+               echo minipres();
+       }
+       exit;
+}