source: spip-zone/_plugins_/uploadhtml5/trunk/inc/saisie_upload.php @ 92843

Last change on this file since 92843 was 92843, checked in by p@…, 4 years ago

Éviter des erreurs dans les fonctions de traitements

File size: 3.0 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5include_spip('inc/session');
6
7/**
8 * Fonction qui renvoie les documents uploader dans un tableau
9 * utilisable par objet_associer
10 *
11 * @access public
12 * @return mixed
13 */
14function saisie_upload_get() {
15    // récupérer les documents en session
16    $documents = session_get('upload');
17
18    if (empty($documents)) {
19        return false;
20    }
21
22    // On va renvoyer un tableau formaté pour passer dans objet_associer
23    return array('document' => $documents);
24}
25
26/**
27 * Détruire la session d'upload quand on à terminé
28 *
29 * @access public
30 */
31function saisie_upload_terminer() {
32    session_set('upload', null);
33}
34
35/**
36 * Supprimer un document de la session
37 *
38 * @param mixed $id_document
39 * @access public
40 */
41function saisie_supprimer_document_session($id_document) {
42    include_spip('inc/session');
43    $upload = session_get('upload');
44    unset($upload[array_search($id_document, $upload)]);
45    session_set('upload', $upload);
46}
47
48/**
49 * Traiter une saisie upload.
50 * Basiquement, on associe les documents à un objet spécifique
51 * Ensuite on nettoye la session
52 *
53 * @param mixed $objet
54 * @param mixed $id_objet
55 * @access public
56 */
57function saisie_upload_traiter($objet, $id_objet) {
58
59    include_spip('action/editer_objet');
60    include_spip('action/editer_liens');
61
62    // Récupérer les documents et associer à l'objet
63    $documents = saisie_upload_get();
64
65    if (!$documents) {
66        return false;
67    }
68
69    objet_associer(
70        $documents,
71        array($objet => $id_objet)
72    );
73
74    // Le lien est fait, les documents ne doivent plus être en mode temporaire
75    foreach($documents['document'] as $id_document) {
76        objet_instituer('document', $id_document, array('statut' => 'publie'));
77    }
78
79    // Terminer l'upload en nettoyant la session
80    saisie_upload_terminer();
81}
82
83/**
84 * Une fonction pour traiter les logos via la saisie upload
85 *
86 * @param mixed $objet
87 * @param mixed $id_objet
88 * @param bool $supprimer
89 *        Supprime le fichier logo de la session et de la médiathèque si true
90 * @access public
91 */
92function saisie_upload_traiter_logo($objet, $id_objet, $supprimer=true) {
93
94    // On prend le premier fichier image de la saisie et on le transform en logo
95    $documents = saisie_upload_get();
96
97    if (!$documents) {
98        return false;
99    }
100
101    $fichier = sql_fetsel(
102        'id_document,fichier',
103        'spip_documents',
104        array(
105            'media='.sql_quote('image'),
106            sql_in('id_document', $documents['document'])
107        ),
108        '',
109        '',
110        '0,1'
111    );
112
113    // On utilise ce fichier de la médiathèque comme logo
114    include_spip('uploadhtml5_fonctions');
115    uploadhtml5_uploader_logo($objet, $id_objet, _DIR_IMG.$fichier['fichier']);
116
117    // Supprime le fichier logo de la session et de la médiathèque
118    if ($supprimer) {
119        saisie_supprimer_document_session($fichier['id_document']);
120        $supprimer_document = charger_fonction('supprimer_document_tmp', 'action');
121        $supprimer_document($fichier['id_document']);
122    }
123}
Note: See TracBrowser for help on using the repository browser.