Subversion Repositories eFlore/Applications.cel

Rev

Rev 3166 | Rev 3195 | 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'];
52
 
3194 delphine 53
                if ($_POST != array()) { //print_r($_POST);
3164 idir 54
                        $this->parametres['projet'] = $_POST['projet'];
55
                        $this->parametres['langue'] = $_POST['langue'];
56
                        if ($mode == 'modification') {
57
                                $parametres = $this->traiterParametresModif();
58
                                $json = $this->getDao()->modifier($this->cel_url_tpl, $parametres);
59
                        } else {
60
                                $json = $this->getDao()->ajouter($this->cel_url_tpl, $_POST);
61
                                $this->parametres['mode'] = $mode = 'modification';
62
                        }
63
                }
64
 
65
 
66
 
67
 
68
                $methode = $this->traiterNomMethodeExecuter($mode);
69
                if (method_exists($this, $methode)) {
70
                        $retour = $this->$methode();
71
                } else {
72
                        $this->messages[] = "Ce type de service '$methode' n'est pas disponible.";
73
                }
3194 delphine 74
 
3164 idir 75
                $contenu = '';
76
                if (is_null($retour)) {
77
                        $this->messages[] = 'La ressource demandée a retourné une valeur nulle.';
78
                } else {
79
                        if (isset($retour['donnees'])) {
80
                                $retour['donnees']['prod'] = ($this->config['parametres']['modeServeur'] == "prod");
81
                                $retour['donnees']['bar'] = $this->bar;
82
                                $retour['donnees']['url_base'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
83
                                $retour['donnees']['mode'] = $mode;
84
                                $squelette = dirname(__FILE__).self::DS.'squelettes'.self::DS.$retour['squelette'].'.tpl.html';
85
                                $contenu = $this->traiterSquelettePhp($squelette, $retour['donnees']);
86
                        } else {
87
                                $this->messages[] = 'Les données à transmettre au squelette sont nulles.';
88
                        }
89
                }
90
                $this->envoyer($contenu);
91
        }
92
 
93
        private function executerManager() {
94
                $params = array();
95
                $retour['squelette'] = 'manager';
96
                foreach ($this->parametres_autorises as $id=>$pa) {
97
                        if (isset($this->parametres[$pa])) {
98
                                $params[] = $pa."=".$this->parametres[$pa];
99
                        }
100
                }
101
                $param = implode($params, '&');
102
                $url = $this->cel_url_tpl;
103
                if ($param != "") $url .= '?'.$param;
104
                $json = $this->getDao()->consulter($url);
3194 delphine 105
                $retour['donnees']['widget'] = (array) json_decode($json, true);
3164 idir 106
                $retour['donnees']['widgetUrlTpl'] = $this->config['manager']['widgetUrlTpl'];
107
                return $retour;
108
        }
109
 
110
        private function executerCreation() {
111
                //https://api.tela-botanica.org/service:cel:NomsChampsEtendus/cle
112
                $retour['squelette'] ='creation';
113
                $jsonlangue = $this->getDao()->consulter($this->config['manager']['languesUrl']);
3166 idir 114
                $tableaulangue = (array) json_decode($jsonlangue, true);
3164 idir 115
                $retour['donnees']['langues'] = $tableaulangue['resultat'] ;
116
                $retour['donnees']['widget'] = array();
117
                if (isset($this->parametres['projet'])) {
118
                        $url = $this->cel_url_tpl.'?projet='.$this->parametres['projet'];
119
                        $json = $this->getDao()->consulter($url);
120
                        $tableau = (array) json_decode($json, true);
121
                        $retour['donnees']['widget'] = $tableau[0];
3166 idir 122
 
3164 idir 123
                }
3166 idir 124
                $urltype = $this->cel_url_tpl.'?esttype=1';
125
                $jsontype = $this->getDao()->consulter($urltype);
126
                $tableautype= (array) json_decode($jsontype, true);
127
                $retour['donnees']['type'] = $tableautype;
3164 idir 128
                return $retour;
129
        }
130
 
131
 
3194 delphine 132
 
3164 idir 133
        private function executerModification() {
134
                $retour = '';
135
                if (isset($this->parametres['projet'])) {
136
                        $retour['squelette'] = 'creation';
137
                        $url = $this->cel_url_tpl.'?projet='.$this->parametres['projet'].'&langue='.$this->parametres['langue'];
138
                        $json = $this->getDao()->consulter($url);
139
                        $tableau = (array) json_decode($json, true);
140
                        $retour['donnees']['widget'] = $tableau[0];
141
                        $urltype = $this->cel_url_tpl.'?esttype=1';
142
                        $jsontype = $this->getDao()->consulter($urltype);
143
                        $tableautype= (array) json_decode($jsontype, true);
144
                        $retour['donnees']['type'] = $tableautype;
3194 delphine 145
                }//print_r($retour['donnees']);
3164 idir 146
                return $retour;
147
        }
148
        private function traiterParametres() {
149
                $parametres_flux = '?';
150
                $criteres = array('utilisateur', 'commune', 'dept', 'taxon', 'commentaire', 'date', 'tag', 'motcle', 'projet', 'num_taxon', 'num_nom', 'referentiel', 'groupe_zones_geo');
151
                foreach($this->parametres as $nom_critere => $valeur_critere) {
152
                        if (in_array($nom_critere, $criteres)) {
153
                                $valeur_critere = str_replace(' ', '%20', $valeur_critere);
154
                                $parametres_flux .= $nom_critere.'='.$valeur_critere.'&';
155
                        }
156
                }
157
 
158
                if ($parametres_flux == '?') {
159
                        $parametres_flux = '';
160
                } else {
161
                        $parametres_flux = rtrim($parametres_flux, '&');
162
                }
163
                return $parametres_flux;
164
        }
165
 
166
        private function traiterParametresModif() {
3194 delphine 167
                $parametres_modif = array();
3164 idir 168
                foreach ($_POST as $id => $parametres) {
169
                        if ($parametres != "") {
170
                                $parametres_modif[$id] = $parametres;
171
                        }
172
                }
173
                return $parametres_modif;
174
        }
3122 delphine 175
}
3164 idir 176
?>