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 | */ |
---|
15 | if (!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 | */ |
---|
25 | function 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 | */ |
---|
70 | function 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 | */ |
---|
95 | function 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 | */ |
---|
151 | function 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 | ?> |
---|