source: spip-zone/_plugins_/formulaire_upload/trunk/formulaires/upload.php @ 95963

Last change on this file since 95963 was 95963, checked in by spip.franck@…, 4 years ago

des tab à la place d'espace http://www.spip.net/fr_article3497.html#regles_codage

File size: 3.7 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5//
6// Charger
7//
8function formulaires_upload_charger_dist($objet, $id_objet, $fond_documents){
9        // definition des valeurs de base du formulaire
10        $valeurs = array(
11                'objet'=>$objet,
12                'id_objet'=>$id_objet,
13                'fond_documents'=>$fond_documents,
14                'editable'=>true
15        );
16
17        $id_type_objet = id_table_objet($objet);
18        $valeurs[$id_type_objet] = $id_objet;
19
20        if (!intval($GLOBALS['auteur_session']['id_auteur']))
21                $valeurs['editable'] = false;
22
23        include_spip('inc/autoriser');
24        if (!autoriser('joindredocumentupload', $objet, $id_objet))
25                $valeurs['editable'] = false;
26
27        return $valeurs;
28}
29
30//
31// Verifier
32//
33function formulaires_upload_verifier_dist($objet, $id_objet, $fond_documents){
34        $erreurs = array();
35
36        return $erreurs;
37}
38
39//
40// Traiter
41//
42function formulaires_upload_traiter_dist($objet, $id_objet, $fond_documents){
43        $res = array('editable'=>' ', 'message_ok'=>'');
44
45        $invalider = false;
46        $type = objet_type($objet);
47        $res['message_ok'] = "";
48        $compteur=0;
49
50        // titrer des documents ?
51        if (is_array(_request('ref'))) {
52                foreach (_request('ref') as $ref) {
53                $ref = intval($ref);
54                        if ($titre = _request("titrer_$ref")) {
55                        if (formulaireupload_verifier_doc_liaison($ref,$id_objet,$type))
56                                sql_updateq('spip_documents', array('titre' => $titre) ,'id_document='.$ref);         
57                        }
58                }     
59        }
60
61        // supprimer des documents ?   
62        if (is_array(_request('supprimer'))) {
63        foreach (_request('supprimer') as $supprimer) {
64                if ($supprimer = intval($supprimer)) {
65                        include_spip('inc/autoriser');
66                if (formulaireupload_verifier_doc_liaison($supprimer,$id_objet,$type)) {
67                        sql_delete('spip_documents_liens', 'id_document='.$supprimer);
68                                $supprimer_document = charger_fonction('supprimer_document','action');
69                                $supprimer_document($supprimer);
70                                $invalider = true;
71                                $compteur++;                   
72                        spip_log("supprimer document ($type)".$supprimer, 'upload');
73                }                       
74                }
75        }
76        $res['message_ok'] .= _T("formupload:msg_doc_deleted",array("compteur"=>$compteur))."<br />";
77        }
78
79        // Ajouter un document (cf plugins-dist/medias)
80        include_spip('inc/joindre_document');
81        $files = joindre_trouver_fichier_envoye();
82
83        if (is_array($files)) {     
84        $compteur = 0; 
85
86        // gestion des quotas ?
87        $quota = intval(lire_config("formulaireupload/files_quota"));
88        $quota_left = 100;
89        if ($quota>0) {
90                        if ($res_nb_objet = sql_select('id_document', 'spip_documents_liens', array("objet = '$type'",'id_objet='.intval($id_objet))))
91                                                $nb_objet = sql_count($res_nb_objet);
92                        $quota_left = $quota - $nb_objet; 
93                        if ($quota_left<1 OR $quota_left<count($files)) 
94                                $res['message_ok'] .=  _T("formupload:msg_doc_added_max",array("max"=>$quota))."<br />";
95
96                // on reduit les fichiers proposés par le quota restant       
97                        array_splice($files, $quota_left); 
98    }
99
100
101        // upload des fichiers
102        if ($quota_left>0) {
103                $ajouter_documents = charger_fonction('ajouter_documents', 'action');
104                $nouveaux_doc = $ajouter_documents($id_document,$files,$objet,$id_objet,'document');
105
106                $compteur = count($nouveaux_doc);
107        }
108        /* A verifier:
109                - securite : verifier les extenxions (si forcing)
110
111        */
112                $invalider = true;
113                if ($compteur>0)
114                $res['message_ok'] .= _T("formupload:msg_doc_added",array("compteur"=>$compteur));
115        }
116
117        if ($invalider) {
118                include_spip('inc/invalideur');
119                suivre_invalideur("0",true);
120                spip_log('invalider', 'upload');
121        }
122
123        return $res;
124}
125
126
127//
128//  fonction de securite
129//  verifier la liaison entre objet et le document
130//  pour eviter toucher d'autres documents que ceux traiter ds le doc
131function formulaireupload_verifier_doc_liaison($id_document, $id_objet, $type) {
132        if (sql_countsel('spip_documents_liens', "id_document=".intval($id_document)." AND id_objet=".intval($id_objet)." AND objet='$type'"))
133                return true; 
134
135        return false; 
136}
137
138?>
Note: See TracBrowser for help on using the repository browser.