Subversion Repositories eFlore/Applications.cel

Rev

Rev 3194 | Rev 3196 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3164 idir 1
 <?php
3122 delphine 2
// declare(encoding='UTF-8');
3
/**
4
 * Service affichant les dernières photo publiques du CEL ouvrable sous forme de diaporama.
5
 * Encodage en entrée : utf8
6
 * Encodage en sortie : utf8
7
 *
8
 * Cas d'utilisation et documentation :
9
 * @link http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=AideCELWidgetPhoto
10
 *
11
 * Paramètres :
12
 * ===> extra = booléen (1 ou 0)  [par défaut : 1]
13
 * Affiche / Cache la vignette en taille plus importante au bas du widget.
14
 * ===> vignette = [0-9]+,[0-9]+  [par défaut : 4,3]
15
 * Indique le nombre de vignette par ligne et le nombre de ligne.
16
 *
3164 idir 17
 * @author              Jean-Pascal MILCENT <jpm@tela-botanica.org>
18
 * @license     GPL v3 <http://www.gnu.org/licenses/gpl.txt>
19
 * @license     CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
20
 * @version     $Id$
21
 * @copyright   Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
3122 delphine 22
 */
23
class Manager extends WidgetCommun {
24
 
3164 idir 25
        const DS = DIRECTORY_SEPARATOR;
26
        const SERVICE_DEFAUT = 'manager';
27
        private $cel_url_tpl = null;
28
        /** Si spécifié, on ajoute une barre de navigation inter-applications */
29
        private $bar;
30
        //private $parametres_autorises = array('projet', 'type', 'langue', 'order');
31
        private $parametres_autorises = array(
32
                        'projet' => 'projet',
33
                        'type' => 'type',
34
                        'langue' => 'langue',
35
                        'order' => 'order'
36
        );
37
        /**
38
         * Méthode appelée par défaut pour charger ce widget.
39
         */
40
        public function executer() {
41
                $retour = null;
42
                // Pour la création de l'id du cache nous ne tenons pas compte du paramètre de l'url callback
43
                unset($this->parametres['callback']);
44
                extract($this->parametres);
45
                $this->bar = (isset($bar)) ? $bar : false;
46
 
47
                if (!isset($mode)) {
48
                        $mode = self::SERVICE_DEFAUT;
49
                }
50
 
51
                $this->cel_url_tpl = $this->config['manager']['celUrlTpl'];
3195 delphine 52
 
53
 
3194 delphine 54
                if ($_POST != array()) { //print_r($_POST);
3164 idir 55
                        $this->parametres['projet'] = $_POST['projet'];
56
                        $this->parametres['langue'] = $_POST['langue'];
57
                        if ($mode == 'modification') {
58
                                $parametres = $this->traiterParametresModif();
59
                                $json = $this->getDao()->modifier($this->cel_url_tpl, $parametres);
60
                        } else {
61
                                $json = $this->getDao()->ajouter($this->cel_url_tpl, $_POST);
62
                                $this->parametres['mode'] = $mode = 'modification';
63
                        }
64
                }
65
 
66
 
67
 
68
 
69
                $methode = $this->traiterNomMethodeExecuter($mode);
70
                if (method_exists($this, $methode)) {
71
                        $retour = $this->$methode();
72
                } else {
73
                        $this->messages[] = "Ce type de service '$methode' n'est pas disponible.";
74
                }
3194 delphine 75
 
3164 idir 76
                $contenu = '';
77
                if (is_null($retour)) {
78
                        $this->messages[] = 'La ressource demandée a retourné une valeur nulle.';
79
                } else {
80
                        if (isset($retour['donnees'])) {
3195 delphine 81
                        		$retour['donnees']['params'] = '&projet='.$_POST['projet'].
82
                        			'&langue='.$_POST['langue'];
3164 idir 83
                                $retour['donnees']['prod'] = ($this->config['parametres']['modeServeur'] == "prod");
84
                                $retour['donnees']['bar'] = $this->bar;
85
                                $retour['donnees']['url_base'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
3195 delphine 86
                                $retour['donnees']['mode'] = $mode; //print_r($retour);
3164 idir 87
                                $squelette = dirname(__FILE__).self::DS.'squelettes'.self::DS.$retour['squelette'].'.tpl.html';
88
                                $contenu = $this->traiterSquelettePhp($squelette, $retour['donnees']);
89
                        } else {
90
                                $this->messages[] = 'Les données à transmettre au squelette sont nulles.';
91
                        }
92
                }
93
                $this->envoyer($contenu);
94
        }
95
 
96
        private function executerManager() {
97
                $params = array();
98
                $retour['squelette'] = 'manager';
99
                foreach ($this->parametres_autorises as $id=>$pa) {
100
                        if (isset($this->parametres[$pa])) {
101
                                $params[] = $pa."=".$this->parametres[$pa];
102
                        }
103
                }
104
                $param = implode($params, '&');
105
                $url = $this->cel_url_tpl;
106
                if ($param != "") $url .= '?'.$param;
107
                $json = $this->getDao()->consulter($url);
3194 delphine 108
                $retour['donnees']['widget'] = (array) json_decode($json, true);
3164 idir 109
                $retour['donnees']['widgetUrlTpl'] = $this->config['manager']['widgetUrlTpl'];
110
                return $retour;
111
        }
112
 
113
        private function executerCreation() {
114
                //https://api.tela-botanica.org/service:cel:NomsChampsEtendus/cle
115
                $retour['squelette'] ='creation';
116
                $jsonlangue = $this->getDao()->consulter($this->config['manager']['languesUrl']);
3166 idir 117
                $tableaulangue = (array) json_decode($jsonlangue, true);
3164 idir 118
                $retour['donnees']['langues'] = $tableaulangue['resultat'] ;
119
                $retour['donnees']['widget'] = array();
120
                if (isset($this->parametres['projet'])) {
121
                        $url = $this->cel_url_tpl.'?projet='.$this->parametres['projet'];
122
                        $json = $this->getDao()->consulter($url);
123
                        $tableau = (array) json_decode($json, true);
124
                        $retour['donnees']['widget'] = $tableau[0];
3166 idir 125
 
3164 idir 126
                }
3166 idir 127
                $urltype = $this->cel_url_tpl.'?esttype=1';
128
                $jsontype = $this->getDao()->consulter($urltype);
129
                $tableautype= (array) json_decode($jsontype, true);
130
                $retour['donnees']['type'] = $tableautype;
3164 idir 131
                return $retour;
132
        }
133
 
134
 
3194 delphine 135
 
3164 idir 136
        private function executerModification() {
137
                $retour = '';
138
                if (isset($this->parametres['projet'])) {
139
                        $retour['squelette'] = 'creation';
140
                        $url = $this->cel_url_tpl.'?projet='.$this->parametres['projet'].'&langue='.$this->parametres['langue'];
141
                        $json = $this->getDao()->consulter($url);
142
                        $tableau = (array) json_decode($json, true);
143
                        $retour['donnees']['widget'] = $tableau[0];
144
                        $urltype = $this->cel_url_tpl.'?esttype=1';
145
                        $jsontype = $this->getDao()->consulter($urltype);
146
                        $tableautype= (array) json_decode($jsontype, true);
147
                        $retour['donnees']['type'] = $tableautype;
3194 delphine 148
                }//print_r($retour['donnees']);
3164 idir 149
                return $retour;
150
        }
151
        private function traiterParametres() {
152
                $parametres_flux = '?';
153
                $criteres = array('utilisateur', 'commune', 'dept', 'taxon', 'commentaire', 'date', 'tag', 'motcle', 'projet', 'num_taxon', 'num_nom', 'referentiel', 'groupe_zones_geo');
154
                foreach($this->parametres as $nom_critere => $valeur_critere) {
155
                        if (in_array($nom_critere, $criteres)) {
156
                                $valeur_critere = str_replace(' ', '%20', $valeur_critere);
157
                                $parametres_flux .= $nom_critere.'='.$valeur_critere.'&';
158
                        }
159
                }
160
 
161
                if ($parametres_flux == '?') {
162
                        $parametres_flux = '';
163
                } else {
164
                        $parametres_flux = rtrim($parametres_flux, '&');
165
                }
166
                return $parametres_flux;
167
        }
168
 
169
        private function traiterParametresModif() {
3194 delphine 170
                $parametres_modif = array();
3164 idir 171
                foreach ($_POST as $id => $parametres) {
172
                        if ($parametres != "") {
173
                                $parametres_modif[$id] = $parametres;
174
                        }
175
                }
176
                return $parametres_modif;
177
        }
3122 delphine 178
}
3164 idir 179
?>