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

Last change on this file since 37969 was 37969, checked in by gilles.vincent@…, 11 years ago

Commentaires phpDoc

Je sors également quelques affectations qui sont noyées dans des conditions PHP : en général on perd en lisibilité avec ce type de syntaxe.

Le seul avantage que j'y vois est quand on a des 'AND' en cascade dans les conditions (mais à ce niveau ça reste de la micro-optimisation, ça ne justifie pas beaucoup de rendre le code moins lisible..)

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