Subversion Repositories Applications.referentiel

Rev

Rev 344 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
295 aurelien 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Classe Arbre du module Consultation.
5
 * Permet de consultater un référentiel sous forme d'arbre
6
 *
7
 * @package		Referentiel
8
 * @category	Php5.2
9
 * @author		Aurélien PERONNET <aurelien@tela-botanica.org>
10
 * @copyright	2010 Tela-Botanica
11
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
12
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
13
 * @version		SVN: $Id$
14
 */
15
class Arbre extends AppliControleur {
16
 
17
	private $referentiel = null;
300 aurelien 18
	private $rechercheDao = null;
295 aurelien 19
 
20
	public function __construct()  {
21
		parent::__construct();
22
 
300 aurelien 23
		// Récupération de paramètres
24
		if (isset($_GET['ref'])) { // code du projet courant
295 aurelien 25
			$this->referentiel = strtolower($_GET['ref']);
26
		}
27
	}
28
 
29
	//+----------------------------------------------------------------------------------------------------------------+
30
	// Méthodes
31
	/**
32
	 * Fonction d'affichage par défaut
33
	 */
34
	public function executerActionParDefaut() {
35
		$this->definirCommeModulePrincipal(get_class($this));
36
		$this->construireMenu($this->referentiel);
37
		$this->construireFilAriane($this->referentiel);
300 aurelien 38
		$this->executerActionReferentiel('Arbre', 'afficherArbre', $this->referentiel, false);
295 aurelien 39
	}
40
 
41
	public function afficherArbre() {
42
		$donnees = array();
300 aurelien 43
		$donnees['resultats'] = $this->chercherFamilles();
44
		$nns = array();
45
		foreach($donnees['resultats'] as $resultat) {
46
			$nns[] = $resultat['num_nom'];
47
		}
48
 
49
		$donnees['resultats_nb_infra'] = $this->chercherNombreInfras($nns);
50
		$donnees['resultats_nb_syn'] = $this->chercherNombreSynonymes($nns);
51
 
295 aurelien 52
		$donnees['url_service_tpl'] = Config::get('url_jrest');
300 aurelien 53
		$donnees['url_sous_taxons_tpl'] = $this->obtenirUrlMenuBranche($this->referentiel, '');
54
		$donnees['url_synonymes_tpl'] = $this->obtenirUrlMenuBrancheSynonyme($this->referentiel, '');
295 aurelien 55
		$donnees['url_fiche_taxon_tpl'] = $this->obtenirUrlFicheTaxon($this->referentiel, '%s');
56
		$donnees['referentiel'] = $this->referentiel;
300 aurelien 57
 
295 aurelien 58
		$resultat = $this->getVue('arbre_taxon', $donnees);
59
		$this->setSortie(self::RENDU_CORPS, $resultat);
60
	}
300 aurelien 61
 
62
	public function afficherBranche() {
63
		$donnees = array();
64
		$donnees['resultats_infra'] = $this->chercherInfras($_GET['num_nom']);
65
		foreach($donnees['resultats_infra'] as $resultat) {
66
			$nns[] = $resultat['num_nom'];
67
		}
68
 
69
		$donnees['resultats_nb_infra'] = $this->chercherNombreInfras($nns);
70
		$donnees['resultats_nb_syn'] = $this->chercherNombreSynonymes($nns);
71
 
72
		$resultat = json_encode($donnees);
73
		header('Content-type: application/json');
74
		echo $resultat;
75
		exit;
76
	}
77
 
78
	public function afficherBrancheSynonyme() {
79
		$donnees['resultats_syn'] = $this->chercherSynonymes($_GET['num_nom']);
80
		$resultat = json_encode($donnees);
81
		header('Content-type: application/json');
82
		echo $resultat;
83
		exit;
84
	}
85
 
86
	private function getDao() {
87
		if($this->rechercheDao == null) {
88
			$this->rechercheDao = new RechercheDao();
89
		}
90
		return $this->rechercheDao;
91
	}
92
 
93
	private function chercherFamilles() {
94
		$rechercheDao = $this->getDao();
95
		$rechercheDao->setLimitation(0,10000);
96
		$parametres = array('mots' => '*',
97
									'ref' => $this->referentiel,
98
									'rg' => 180);
412 delphine 99
		$resultats = $rechercheDao->chercher('ParDefaut', $parametres , 500);
300 aurelien 100
		return $resultats;
101
	}
102
 
103
	private function chercherNombreSynonymes($tableau_nn) {
104
		$rechercheDao = $this->getDao();
105
		$parametres_syn = array('mots' => '*',
106
										'ref' => $this->referentiel,
107
										'nn' => implode(',', $tableau_nn));
108
		$resultats_nb_syn = $rechercheDao->chercher('NombreSynonymeParTaxon', $parametres_syn);
109
		return $resultats_nb_syn;
110
	}
111
 
112
	private function chercherSynonymes($num_nom) {
113
		$rechercheDao = $this->getDao();
114
		$parametres_syn = array('mots' => '*',
115
								'ref' => $this->referentiel,
116
								'nn' => $num_nom);
117
		$resultats_syn = $rechercheDao->chercher('ParTaxon', $parametres_syn);
118
		return $resultats_syn;
119
	}
120
 
121
	private function chercherNombreInfras($tableau_nn) {
122
		$rechercheDao = $this->getDao();
123
		$parametres_infra = array('mots' => '*',
124
								  'ref' => $this->referentiel,
125
								  'classif' => 'infra',
126
								  'nn' => implode(',', $tableau_nn));
127
		$resultats_nb_infra = $rechercheDao->chercher('NombreClassifParTaxon', $parametres_infra);
128
		return $resultats_nb_infra;
129
	}
130
 
131
	private function chercherInfras($num_nom) {
132
		$rechercheDao = $this->getDao();
133
		$parametres = array('mots' => '*',
134
											'ref' => $this->referentiel,
135
											'classif' => 'infra',
136
											'nn' => $num_nom);
137
		$resultats_infra = $rechercheDao->chercher('Classification', $parametres);
138
		return $resultats_infra;
139
	}
295 aurelien 140
}
141
?>