source: spip-zone/_plugins_/ajaxforms/formulaires/editer_logo.php @ 38700

Last change on this file since 38700 was 38700, checked in by marcimat@…, 11 years ago

Permettre de changer la taille de la vignette de logo

#FORMULAIRE_EDITER_LOGO{article,#ID_ARTICLE,,#ARRAY{image_reduire,180}}

File size: 5.2 KB
Line 
1<?php
2/**
3 * Formulaire #EDITER_LOGO
4 *
5 * Ce formulaire ajoute, modifie ou supprime des logos sur les objets de SPIP.
6 * - En dehors d'une boucle, ce formulaire modifie le logo du site.
7 * - Dans une boucle, il modifie le logo de la table selectionnee.
8 * Pensez juste que l'appel de #LOGO_{TYPE} s'appuie sur le nom de la cle primaire et non sur le
9 * nom de l'objet reel. Par exemple on ecrira #LOGO_GROUPE (et non #LOGO_GROUPEMOTS) pour afficher
10 * un logo issu du formulaire mis dans une boucle GROUPES_MOTS
11 * - il est possible de lui passer les parametres objet et id : #FORMULAIRE_EDITER_LOGO{article,1}
12 * - il est possible de spécifier une url de redirection apres traitement :
13 * ex. #FORMULAIRE_EDITER_LOGO{article,1,#URL_ARTICLE}
14 */
15if (!defined("_ECRIRE_INC_VERSION")) return;
16
17/**
18 * Chargement du formulaire
19 *
20 * @param string $objet        Objet SPIP auquel sera lie le document (ex. article)
21 * @param integer $id_objet    Identifiant de l'objet
22 * @param string $retour       Url de redirection apres traitement
23 * @param Array $options       Tableau d'option (exemple : image_reduire => 50)
24 * @return Array               Variables d'environnement pour le fond
25 */
26function formulaires_editer_logo_charger_dist($objet, $id_objet, $retour='', $options=array()){
27        $res = array(
28                'editable'=>($GLOBALS['meta']['activer_logos'] == 'oui' ? ' ' : ''),
29                'logo_survol'=>($GLOBALS['meta']['activer_logos_survol'] == 'oui' ? ' ' : ''),
30                'objet'=>$objet,
31                'id_objet'=>$id_objet,
32                '_options'=>$options
33        );
34
35        // pas dans une boucle ? formulaire pour le logo du site
36        // dans ce cas, il faut chercher un 'siteon0.ext'       
37        if (!$objet)
38                $_id_objet = 'site';
39        else
40                $_id_objet = id_table_objet($objet);
41       
42        // rechercher le logo de l'objet
43        // la fonction prend un parametre '_id_objet' etrange :
44        // le nom de la cle primaire (et non le nom de la table)
45        // ou directement le nom du raccourcis a chercher
46        $chercher_logo = charger_fonction('chercher_logo', 'inc');
47        $etats = $res['logo_survol'] ? array('on','off') : array('on');
48        foreach($etats as $etat) {
49                $logo = $chercher_logo($id_objet, $_id_objet, $etat);
50                if ($logo){
51                        $res['logo_'.$etat] = $logo[0];
52                }
53        }
54        // pas de logo_on -> pas de formulaire pour le survol
55        if (!isset($res['logo_on']))
56                $res['logo_survol']='';
57               
58        return $res;
59}
60
61/**
62 * Verification avant traitement
63 *
64 * On verifie que l'upload s'est bien passe et
65 * que le document recu est une image (d'apres son extension)
66 *
67 * @param string $objet
68 * @param integer $id_objet
69 * @param string $retour
70 * @return Array Tableau des erreurs
71 */
72function formulaires_editer_logo_verifier_dist($objet, $id_objet, $retour=''){
73        $erreurs = array();
74        // verifier les extensions
75        $sources = formulaire_editer_logo_get_sources();
76        foreach($sources as $etat=>$file) {
77                // seulement si une reception correcte a eu lieu
78                if ($file AND $file['error'] == 0) {
79                        if (!in_array(strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)),array('jpg','png','gif','jpeg')))
80                                $erreurs['logo_'.$etat] = _L('Extension non reconnue');
81                }
82        }
83        return $erreurs;
84}
85
86/**
87 * Traitement de l'upload d'un logo
88 *
89 * Il est affecte au site si la balise n'est pas dans une boucle,
90 * sinon a l'objet concerne par la boucle ou indiquee par les parametres d'appel
91 *
92 * @param string $objet
93 * @param integer $id_objet
94 * @param string $retour
95 * @return Array
96 */
97function formulaires_editer_logo_traiter_dist($objet, $id_objet, $retour=''){
98        $res = array('editable'=>' ');
99       
100        // pas dans une boucle ? formulaire pour le logo du site
101        // dans ce cas, il faut chercher un 'siteon0.ext'       
102        if (!$objet)
103                $_id_objet = 'site';
104        else
105                $_id_objet = id_table_objet($objet);
106
107        // supprimer l'ancien logo puis copier le nouveau
108        include_spip('inc/chercher_logo');
109        include_spip('inc/flock');
110        $type = type_du_logo($_id_objet);
111        $chercher_logo = charger_fonction('chercher_logo','inc');
112       
113        // effectuer la suppression si demandee d'un logo
114        $on = _request('supprimer_logo_on');
115        if ($on OR _request('supprimer_logo_off')){
116                $logo = $chercher_logo($id_objet, $_id_objet, $on ? 'on' : 'off');
117                if ($logo)
118                        spip_unlink($logo[0]);
119                $res['message_ok'] = _T('ajaxform:confirmer_suppression');
120        }
121       
122        // sinon supprimer ancien logo puis copier le nouveau
123        else {
124                include_spip('action/iconifier');
125                $ajouter_image = charger_fonction('spip_image_ajouter','action');
126                $sources = formulaire_editer_logo_get_sources();
127                foreach($sources as $etat=>$file) {
128                        if ($file and $file['error']==0) {
129                                $logo = $chercher_logo($id_objet, $_id_objet, $etat);
130                                if ($logo)
131                                        spip_unlink($logo[0]);
132                                $ajouter_image($type.$etat.$id_objet," ",$file);
133                                $res['message_ok'] = _T('ajaxform:logo_maj');
134                        }
135                }
136        }
137       
138        if ($retour){
139                include_spip('inc/headers');
140                $res['redirect'] = parametre_url($retour,'var_mode','calcul');
141        }
142
143        return $res;
144}
145
146
147/**
148 * Extraction des sources des fichiers uploades correspondant aux 2 logos (normal + survol)
149 * si leur upload s'est bien passé
150 *
151 * @return Array
152 */
153function formulaire_editer_logo_get_sources(){
154        if (!$_FILES) $_FILES = $GLOBALS['HTTP_POST_FILES'];
155        if (!is_array($_FILES)) return array();
156       
157        $sources = array();
158        foreach(array('on','off') as $etat) {
159                if ($_FILES['logo_'.$etat]['error'] == 0) {
160                        $sources[$etat] = $_FILES['logo_'.$etat];
161                }
162        }
163        return $sources;
164}
165?>
Note: See TracBrowser for help on using the repository browser.