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

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

Invalider le cache d'un objet dont on change le logo

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