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

Last change on this file since 114425 was 114425, checked in by erational@…, 9 months ago

Un peu de PSR et suppression d'une pagination à 3 non standard et non ergonomique

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