15,6 → 15,8 |
* @copyright 1999-2012 Tela Botanica (accueil@tela-botanica.org) |
*/ |
|
require_once(dirname(__FILE__) . '/../../baseflor/Informations.php'); |
|
class SyntaxonsCommun extends Commun { |
|
|
25,18 → 27,18 |
protected $syn; |
protected $niv; |
protected $limite_requete = array('depart' => 0, 'limite' => 100); |
protected $requete_condition = ''; |
protected $requete_condition = array(); |
protected $total_resultat; |
protected $champs_recherches = ' * '; |
protected $table_version; |
protected $version_projet = '+' ; |
protected $cache = array(); |
static $cache = array(); |
|
|
public function __construct(Conteneur $conteneur) { |
$this->Bdd = $conteneur->getBdd(); |
$this->syn = $this->getParametreTableauSpe('synonymes'); |
$this->niv = $this->getParametreTableauSpe('niveaux'); |
$this->syn = $this->getParametreTableauSpe('Paramètres.synonymes'); |
$this->niv = $this->getParametreTableauSpe('Paramètres.niveaux'); |
} |
|
|
105,11 → 107,11 |
$ontologie = array(); |
$url = Config::get('url_service_base').Config::get('nom_projet'). |
'/ontologies/'.$code.':'.urlencode(urlencode($valeur)); |
if(array_key_exists($url, $this->cache)) { |
$val = $this->cache[$url]; |
if(array_key_exists($url, self::$cache)) { |
$val = self::$cache[$url]; |
} else { |
$val = $this->consulterHref($url); |
$this->cache[$url] = $val; |
self::$cache[$url] = $val; |
} |
$ontologie['niveau.code'] = $valeur; |
$ontologie['niveau.libelle'] = $val->nom; |
145,9 → 147,8 |
|
protected function traiterOntologieNiveau($niveau) { |
$ontologie = array(); |
if ( preg_match('/syn {0,1}(['.implode($this->syn).']*)( *\[.+\])*/',$niveau,$retour)) { |
|
if ( preg_match('/syn {0,1}(['.implode('',$this->syn).']*)( *\[.+\])*/',$niveau,$retour)) { |
|
$ontologie = $this->recupererOntologiesNiveauSyn($retour); |
|
} else { |
160,26 → 161,18 |
|
protected function assemblerLaRequete() { |
$requete = ' SELECT '.$this->champs_recherches.' FROM '.$this->table.' ' |
.$this->retournerRequeteCondition().' '.$this->delimiterResultatsRequete(); |
.Informations::retournerRequeteCondition($this->requete_condition).' '.$this->delimiterResultatsRequete(); |
|
return $requete; |
} |
|
protected function calculerTotalResultat() { |
$requete = 'SELECT count(*) as nombre FROM '.$this->table.' '.$this->retournerRequeteCondition(); |
protected function delimiterResultatsRequete() { |
$this->total_resultat = Informations::calculerTotalResultat( |
$this->getBdd(), |
$this->table, |
Array(), |
$this->requete_condition); |
|
$res = $this->getBdd()->recuperer($requete); |
if ($res) { |
$this->total_resultat = $res['nombre']; |
} else { |
$this->total_resultat = 0; |
$e = 'Données introuvables dans la base'; |
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e); |
} |
} |
|
protected function delimiterResultatsRequete() { |
$this->calculerTotalResultat(); |
$requete_limite = ''; |
if (($this->limite_requete['depart'] <= $this->total_resultat) ){ |
if (($this->limite_requete['limite'] + $this->limite_requete['depart'] ) |
197,14 → 190,6 |
|
|
|
protected function retournerRequeteCondition() { |
$condition = ''; |
if (empty($this->requete_condition) == false) { |
$condition = ' WHERE '.implode(' AND ', $this->requete_condition); |
} |
|
return $condition; |
} |
|
} |
?> |