[SPIP] ~v3.0.17-->v3.0.19
[ptitvelo/web/www.git] / www / plugins-dist / forum / formulaires / forum.php
index 9294d71..405073b 100644 (file)
@@ -162,7 +162,7 @@ function formulaires_forum_charger_dist($objet, $id_objet, $id_forum,
  * Ce systeme n'est pas fonctionnel pour les forums sans previsu (notamment\r
  * si $afficher_previsu = 'non')\r
  *\r
- * http://doc.spip.org/@forum_fichier_tmp\r
+ * http://code.spip.net/@forum_fichier_tmp\r
  *\r
  * @param $arg\r
  * @return int\r
@@ -211,6 +211,7 @@ function formulaires_forum_verifier_dist($objet, $id_objet, $id_forum,
        include_spip('base/abstract_sql');\r
 \r
        $erreurs = array();\r
+       $doc = array();\r
 \r
        // desactiver id_rubrique si un id_article ou autre existe dans le contexte\r
        // if ($id_article OR $id_breve OR $id_forum OR $id_syndic)\r
@@ -219,33 +220,34 @@ function formulaires_forum_verifier_dist($objet, $id_objet, $id_forum,
        // stocker un eventuel document dans un espace temporaire\r
        // portant la cle du formulaire ; et ses metadonnees avec\r
 \r
-       if (!isset($GLOBALS['visiteur_session']['tmp_forum_document']))\r
-               session_set('tmp_forum_document',\r
-                       sous_repertoire(_DIR_TMP, 'documents_forum') . md5(uniqid(rand())));\r
-       $tmp = $GLOBALS['visiteur_session']['tmp_forum_document'];\r
-       $doc = &$_FILES['ajouter_document'];\r
        if (isset($_FILES['ajouter_document'])\r
-               AND $_FILES['ajouter_document']['tmp_name']\r
-       ){\r
-               // securite :\r
-               // verifier si on possede la cle (ie on est autorise a poster)\r
-               // (sinon tant pis) ; cf. charger.php pour la definition de la cle\r
-               if (_request('cle_ajouter_document')!=calculer_cle_action($a = "ajouter-document-$objet-$id_objet")){\r
+               AND $_FILES['ajouter_document']['tmp_name']){\r
+\r
+               $acceptes = forum_documents_acceptes();\r
+               if (\r
+                       // si on a poste un $_FILES mais que l'option n'est pas active : cas produit par les bots qui spamment automatiquement\r
+                       !count($acceptes)\r
+                       // securite :\r
+                       // verifier si on possede la cle (ie on est autorise a poster)\r
+                       // (sinon tant pis) ; cf. charger.php pour la definition de la cle\r
+                 OR _request('cle_ajouter_document')!=calculer_cle_action($a = "ajouter-document-$objet-$id_objet")\r
+               ){\r
                        $erreurs['document_forum'] = _T('forum:documents_interdits_forum');\r
                        unset($_FILES['ajouter_document']);\r
                }\r
                else {\r
+                       if (!isset($GLOBALS['visiteur_session']['tmp_forum_document']))\r
+                               session_set('tmp_forum_document', sous_repertoire(_DIR_TMP, 'documents_forum') . md5(uniqid(rand())));\r
+\r
+                       $tmp = $GLOBALS['visiteur_session']['tmp_forum_document'];\r
+                       $doc = &$_FILES['ajouter_document'];\r
+\r
                        include_spip('inc/joindre_document');\r
                        include_spip('action/ajouter_documents');\r
                        list($extension, $doc['name']) = fixer_extension_document($doc);\r
-                       $acceptes = forum_documents_acceptes();\r
 \r
                        if (!in_array($extension, $acceptes)){\r
-                               # normalement on n'arrive pas ici : pas d'upload si aucun format\r
-                               if (!$formats = join(', ', $acceptes)){\r
-                                       $formats = '-'; //_L('aucun');\r
-                               }\r
-                               $erreurs['document_forum'] = _T('public:formats_acceptes', array('formats' => $formats));\r
+                               $erreurs['document_forum'] = _T('public:formats_acceptes', array('formats' => join(', ', $acceptes)));\r
                        }\r
                        else {\r
                                include_spip('inc/getdocument');\r
@@ -261,19 +263,22 @@ function formulaires_forum_verifier_dist($objet, $id_objet, $id_forum,
                        if (isset($erreurs['document_forum'])){\r
                                spip_unlink($tmp . '.bin');\r
                                unset ($_FILES['ajouter_document']);\r
-                       }\r
-                       else {\r
+                       } else {\r
                                $doc['tmp_name'] = $tmp . '.bin';\r
                                ecrire_fichier($tmp . '.txt', serialize($doc));\r
                        }\r
                }\r
-       } // restaurer le document uploade au tour precedent\r
-       elseif (file_exists($tmp . '.bin')){\r
+       }\r
+       // restaurer/supprimer le document eventuellement uploade au tour precedent\r
+       elseif (isset($GLOBALS['visiteur_session']['tmp_forum_document'])\r
+         AND $tmp = $GLOBALS['visiteur_session']['tmp_forum_document']\r
+         AND file_exists($tmp . '.bin')){\r
                if (_request('supprimer_document_ajoute')){\r
                        spip_unlink($tmp . '.bin');\r
                        spip_unlink($tmp . '.txt');\r
                }\r
                elseif (lire_fichier($tmp . '.txt', $meta)){\r
+                       $doc = &$_FILES['ajouter_document'];\r
                        $doc = @unserialize($meta);\r
                }\r
        }\r
@@ -359,7 +364,7 @@ function forum_documents_acceptes(){
 /**\r
  * Preparer la previsu d'un message de forum\r
  *\r
- * http://doc.spip.org/@inclure_previsu\r
+ * http://code.spip.net/@inclure_previsu\r
  *\r
  * @param string $texte\r
  * @param string $titre\r