source: spip-zone/_plugins_/uploadhtml5/trunk/uploadhtml5_fonctions.php @ 95495

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

Règles de codages

File size: 4.9 KB
Line 
1<?php
2/**
3 * Fonctions utiles au plugin Formulaire upload html5
4 *
5 * @plugin     Formulaire upload html5
6 * @copyright  2014
7 * @author     Phenix
8 * @licence    GNU/GPL
9 * @package    SPIP\Uploadhtml5\Fonctions
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16/**
17 * Uploader et lier des documents à un objet SPIP
18 *
19 * @param mixed $files $_FILES envoyer par un formulaire had hoc
20 * @param mixed $objet
21 * @param mixed $id_objet
22 * @param string $id_document Dans le cas ou l'on veux remplacer un document.
23 * @access public
24 */
25function uploadhtml5_uploader_document($objet, $id_objet, $files, $id_document = 'new', $mode = 'auto') {
26
27    // tester l'autorisation d'ajout de document
28    include_spip('inc/autoriser');
29    /* S'il n'y a pas d'id_objet, c'est qu'on crée un nouveau
30       document. Les autorisations seront gérées en aval dans
31       ajouter_document. */
32    if ($id_objet and (!autoriser('joindredocument', $objet, $id_objet))) {
33        return false;
34    }
35
36    // On va créer le tableau des documents.
37    $docs = array();
38    foreach ($files as $doc) {
39        // pas de fichier vide
40        if (!empty($doc['name'])) {
41            $docs[] = $doc;
42        }
43    }
44
45    // On fait un test au cas ou
46    if (!empty($docs)) {
47        // On ajoute les documents a un objet SPIP.
48        $ajouter_documents = charger_fonction('ajouter_documents','action');
49        return $ajouter_documents(
50            $id_document,
51            $docs,
52            $objet, // Article, rubrique, autre objet
53            $id_objet,
54            $mode
55        );
56    }
57}
58
59/**
60 * Uploader un logo sur un objet en spip 3.0/3.1
61 *
62 * @param mixed $objet
63 * @param mixed $id_objet
64 * @param mixed $fichier
65 * @access public
66 * @return mixed
67 */
68function uploadhtml5_uploader_logo($objet, $id_objet, $fichier) {
69
70    // Autorisation de mettre un logo?
71    include_spip('inc/autoriser');
72    if (!autoriser('iconifier', $objet, $id_objet)) {
73        return false;
74    }
75
76    // On commence par invalider le cache de l'objet
77    include_spip('inc/invalideur');
78    suivre_invalideur("id='$objet/$id_objet'");
79
80    include_spip('action/editer_logo');
81    // Version SPIP 3.1 de cette fonction:
82    if (function_exists('logo_modifier')) {
83        return logo_modifier($objet, $id_objet, 'on', $fichier);
84    }
85
86    include_spip('action/iconifier');
87    $chercher_logo = charger_fonction('chercher_logo', 'inc');
88    $ajouter_image = charger_fonction('spip_image_ajouter', 'action');
89
90    $type = type_du_logo(id_table_objet($objet));
91    $logo = $chercher_logo($id_objet, id_table_objet($objet));
92
93    if ($logo) {
94        spip_unlink($logo[0]);
95    }
96
97    // Dans le cas d'un tableau, on présume que c'est un $_FILES et on passe directement
98    if (is_array($fichier)) {
99        $err = $ajouter_image($type.'on'.$id_objet, ' ', $fichier, true);
100    } else {
101        // Sinon, on caviarde la fonction ajouter_image
102        $err = $ajouter_image($type.'on'.$id_objet, ' ', array('tmp_name' => $fichier), true);
103    }
104
105    return ($err) ? $err : true;
106}
107
108/**
109 * Convertir les formats de logo accepté en mime_type
110 *
111 * @param mixed $type Liste des formats à convertir en mime type, séparé par une virgule.
112 * @access public
113 * @global mixed $formats_logos
114 * @return mixed Liste des mimes types séparé par une virgule.
115 */
116function trouver_mime_type($type) {
117
118    // Si le type est logo on récupère automatiquement les formats de
119    // logo défini par SPIP
120    if ($type == 'logo') {
121        global $formats_logos;
122        $type = $formats_logos;
123    } else {
124        // on explode pour passer $type dans sql_in
125        $type = explode(',', $type);
126    }
127
128    // On récupère les mimes types demandé par la fonction
129    $mime_type = sql_allfetsel('mime_type', 'spip_types_documents', sql_in('extension', $type));
130
131    // Simplifier le tableau
132    $mime_type = array_column($mime_type, 'mime_type');
133
134    // Renvoyer une chaine utilisable
135    return implode(',', $mime_type);
136}
137
138
139/**
140 * Fonction qui va créer le titre du cadre d'un logo
141 * C'est reprit de prive/formulaires/editer_logo.phpL55
142 * Cela devrait être dans une fonction du core de SPIP non ?
143 */
144function titre_cadre_logo($objet, $id_objet) {
145    $balise_img = chercher_filtre('balise_img');
146    $img = $balise_img(chemin_image('image-24.png'), '', 'cadre-icone');
147    $libelles = pipeline('libeller_logo', $GLOBALS['logo_libelles']);
148    $libelle = (($id_objet OR $objet != 'rubrique') ? $objet : 'racine');
149    if (isset($libelles[$libelle])) {
150        $libelle = $libelles[$libelle];
151    } elseif ($libelle = objet_info($objet, 'texte_logo_objet')) {
152        $libelle = _T($libelle);
153    } else {
154        $libelle = _L('Logo');
155    }
156    switch ($objet) {
157        case 'article':
158                $libelle .= ' ' . aide('logoart');
159                break;
160        case 'breve':
161                $libelle .= ' ' . aide('breveslogo');
162                break;
163        case 'rubrique':
164                $libelle .= ' ' . aide('rublogo');
165                break;
166        default:
167                break;
168    }
169
170    return $img . $libelle;
171}
Note: See TracBrowser for help on using the repository browser.