Subversion Repositories eFlore/Applications.eflore-consultation

Rev

Rev 1410 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1410 Rev 1435
Line 26... Line 26...
26
		parent::__construct();
26
		parent::__construct();
27
	}
27
	}
Line 28... Line 28...
28
	
28
	
29
	public function getDonnees() {
29
	public function getDonnees() {
30
		$url_wiki = $this->obtenirUrlWikini();
30
		$url_wiki = $this->obtenirUrlWikini();
Line 31... Line -...
31
		$obj =  json_decode(file_get_contents($url_wiki));
-
 
32
		
-
 
33
		//echo '<pre>'.print_r($obj, true).'</pre>';exit;
31
		$obj =  json_decode(file_get_contents($url_wiki), true);
34
		
-
 
35
		$this->donnees['corps'] = $obj->{'texte'};
-
 
36
		if (strpos($this->format, "html") != false) {
-
 
37
			$this->obtenirCorpsHtml();
32
		
38
		} else {
-
 
39
			$this->obtenirCorpsPlain();
-
 
40
		}
33
		$this->donnees['sources'] = $obj['sections']['Sources'];
41
		
-
 
42
		if ($this->donnees['corps'] != "") {
-
 
43
			$this->donnees['corps'] = preg_split('/===/', $this->donnees['corps'], -1, PREG_SPLIT_NO_EMPTY);
-
 
44
			
-
 
45
			$this->extraireInfosTableauCorps();
-
 
46
			
-
 
47
			if (strpos($this->format, "html") != false) {
-
 
48
				$this->obtenirTitreHtml();
-
 
49
			} else {
-
 
50
				$this->obtenirTitrePlain();
-
 
Line 51... Line 34...
51
			}
34
		unset($obj['sections']['Sources']);
52
		}
35
		$this->donnees['corps'] = $obj['sections'];
Line 53... Line -...
53
		
-
 
54
		return $this->donnees;
-
 
55
	}
-
 
56
	
-
 
57
	private function extraireInfosTableauCorps() {
-
 
58
		
-
 
59
		$this->donnees['titre'] = array_shift($this->donnees['corps']);
-
 
60
		$this->donnees['sources'] = array_pop($this->donnees['corps']);
-
 
61
		// array_pop "gratuit" pour supprimer la case qui ne contient que le terme "sources"
-
 
62
		array_pop($this->donnees['corps']);
-
 
63
		
-
 
64
		$corps_fmt = array();
-
 
65
		// Le tableau contient un titre de section puis son contenu, puis le titre de la section suivante
-
 
66
		// puis son contenu on dépile les éléments deux par deux pour faire un tableau associatif pas trop relou à afficher
-
 
67
		for($i = 0; $i < count($this->donnees['corps']); $i = $i+2) {
-
 
68
				$corps_fmt[$this->donnees['corps'][$i]] = $this->donnees['corps'][$i + 1];
-
 
69
		}
-
 
70
		
-
 
71
		$this->donnees['corps'] = $corps_fmt;
-
 
72
	}
36
		
73
	
37
		return $this->donnees;
74
	
38
	}
75
	//formater pour AppUrls ?
39
	
76
	public function obtenirUrlWikini() {
40
	public function obtenirUrlWikini() {
77
		$titre = urlencode("Fiche simplifiée Smart'flore");
41
		$titre = urlencode(Config::get('smartFloreSectionsFiches'));
Line 78... Line 42...
78
		$base_url_wiki = Config::get('smartFloreWikiTpl');
42
		$base_url_wiki = Config::get('smartFloreWikiTpl');
79
		$url_wiki = $base_url_wiki
43
		$url_wiki = $base_url_wiki
80
			.strtoupper($this->conteneur->getParametre('referentiel'))."nt".$this->nomCourant->getNomSelectionne()->get('num_taxonomique')
-
 
81
			."?txt.format=".$this->format."&txt.section.titre=".$titre;
-
 
82
		
-
 
83
		return ($url_wiki);
-
 
84
	}
-
 
85
	
-
 
86
	private function obtenirCorpsHtml() {
-
 
87
		$a_remplacer = array('<h3>', '</h3>');
-
 
88
		$this->donnees['corps'] = str_replace($a_remplacer, "===", $this->donnees['corps']);
-
 
89
	}
-
 
90
	
-
 
91
	private function obtenirCorpsPlain() {
-
 
92
		$a_enlever = array(Chr(10).'=', '='.Chr(10), Chr(10).''.Chr(10));
-
 
93
		$this->donnees['corps'] = str_replace($a_enlever, '', $this->donnees['corps']);
-
 
94
		$this->donnees['corps'] = str_replace(Chr(10), '<br />', $this->donnees['corps']);
-
 
95
	}
-
 
96
	
-
 
97
	private function obtenirTitreHtml() {
-
 
98
		$a_remplacer = array('<b>', '</b>', '(<br />', '<br />)');
-
 
99
		$this->donnees['titre'] = str_replace($a_remplacer, '<br />', $this->donnees['titre']);
-
 
100
		
-
 
101
		$a_enlever = array(Chr(10).'<br />', '<br />'.Chr(10), Chr(10).''.Chr(10), '<br />'.Chr(10).'<br />'.Chr(10));
-
 
102
		$this->donnees['titre'] = str_replace($a_enlever, '', $this->donnees['titre']);
-
 
103
		
-
 
104
		$this->separer_NomCommun_NomSci();
-
 
105
	}
-
 
106
 
-
 
107
	private function separer_NomCommun_NomSci() {
-
 
108
		$this->donnees['titre'] = str_replace('<br />', '::', $this->donnees['titre']);
-
 
109
		$this->donnees['titre'] = preg_split("/::/", $this->donnees['titre'], -1, PREG_SPLIT_NO_EMPTY);
-
 
110
		$this->donnees['nom-commun'] = $this->donnees['titre'][0]; // sauf erreur ? parser le wikini serait peut-être plus adapté
-
 
111
	}
-
 
112
	
-
 
113
	private function obtenirTitrePlain() {
-
 
114
		$this->donnees['titre'] = str_replace('**', '<br />', $this->donnees['titre']);
-
 
115
		
-
 
116
		$a_remplacer = array('(<br />', '<br />)', '<br /><br />');
-
 
117
		$this->donnees['titre'] = str_replace($a_remplacer, '<br />', $this->donnees['titre']);
-
 
118
		
-
 
119
		$this->separer_NomCommun_NomSci();
-
 
120
		$this->separer_NomSci_NomAuteur();
-
 
121
	}
-
 
122
 
-
 
123
	private function separer_NomSci_NomAuteur() {
44
			.strtoupper($this->conteneur->getParametre('referentiel'))."nt".$this->nomCourant->getNomSelectionne()->get('num_taxonomique')
124
		$nom_sci = str_replace('//', '::', $this->donnees['titre'][1]);
45
			."?txt.format=".$this->format."&txt.section.titre=".$titre;
125
		$nom_sci = preg_split("/::/", $nom_sci, -1, PREG_SPLIT_NO_EMPTY);
46