Rev 207 | Rev 215 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
class OdsEspece extends OdsTriple {
const PREFIXE = 'get';
const ABBR_LISTE_TYPE_ESPECE = 'type_espece';
/**
* Méthode appelée avec une requête de type GET.
*
*/
function getElement($param = array()) {
$type = $param[0];
if ($type == '*' || is_numeric($type)) {
$info = $this->getElementParDefaut($param);
} else {
$methode = self::PREFIXE.$type;
if (method_exists($this, $methode)) {
array_shift($param);
$info = $this->$methode($param);
} else {
$this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
}
}
// Envoi sur la sortie standard
$this->envoyer($info);
}
/**
* Méthode appelée pour ajouter un élément.
*/
public function createElement($params) {
//TODO: méthode de création d'espèce spéciale aux admins
}
/**
* Méthode appelée pour mettre à jour un élément
*/
public function updateElement($uid, $params) {
//Mise à jour de la personne
// Identification de l'utilisateur
list($id_utilisateur, $id_session) = $this->getIdentification($params);
// Contrôle du non détournement de l'utilisateur
if ($this->etreAutorise($id_utilisateur)) {
try {
} catch (PDOException $e) {
$messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
}
}
$this->envoyer();
}
/**
* Méthode appelée pour supprimer un élément
*/
public function deleteElement($uid) {
// Vérification de la présence des id passés par l'url
if (!isset($uid[0]) || !isset($uid[1])) {
$this->messages[] = "Identifiant d'utilisateur ou de personne manquant. Vous ne devriez pas avoir accès à ce service.";
} else {
list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
// Contrôle du non détournement de l'utilisateur
if ($this->etreAutorise($id_utilisateur)) {
// Récupération des id passés par l'url
$identifiants = explode(',', rtrim($uid[1], ','));
if (count($identifiants) == 0) {
$this->messages[] = "Aucun enregistrement n'a été supprimé.";
} else {
foreach ($identifiants as $id_personne) {
try {
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
}
}
}
}
}
// Envoie sur la sortie standard
$this->envoyer();
}
/** ======================= Methodes privées d'accès au informations ================================ */
private function getElementParDefaut() {
return $this->getEspecesParType();
}
private function getEspece($params) {
$id_espece = $params[0];
$requete_informations_espece = 'SELECT * FROM ods_especes '.
'WHERE oe_id_espece = '.$this->proteger($id_espece);
$informations_espece = $this->executerRequete($requete_informations_espece);
$informations_espece_formatees = array();
if(!empty($informations_espece)) {
$informations_espece_formatees = $this->formaterTableauEspecePourEnvoi($informations_espece[0]);
}
return $informations_espece_formatees;
}
private function getEspecesPourStation($params) {
$id_station = $params[0];
$requete_especes_pour_station = 'SELECT * FROM ods_especes '.
'WHERE oe_id_espece IN '.
'( '.
'SELECT oi_ce_espece FROM ods_individus '.
'WHERE oi_ce_station = '.$this->proteger($id_station).
') '.
'ORDER BY oe_ce_type, oe_nom_vernaculaire';
$especes_pour_station = $this->executerRequete($requete_especes_pour_station);
foreach($especes_pour_station as &$espece_dans_station) {
$espece_dans_station = $this->formaterTableauEspecePourEnvoi($espece_dans_station);
}
return $especes_pour_station;
}
private function getEspecesParType() {
$requete_toute_espece = 'SELECT * FROM ods_especes ORDER BY oe_ce_type, oe_nom_vernaculaire';
$liste_espece = $this->executerRequete($requete_toute_espece);
$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);
$especes_par_type = array();
foreach($liste_espece as $espece) {
$espece = $this->formaterTableauEspecePourEnvoi($espece);
$type = $espece['type'];
$nom_type = $liste_type_espece[$type]['ot_valeur'];
if(!isset($especes_par_type[$type])) {
$especes_par_type[$type] = array(
'nom' => $nom_type,
'especes' => array()
);
}
$especes_par_type[$type]['especes'][$espece['id_espece']] = $espece;
}
return $especes_par_type;
}
public function getToutesEspeces() {
$requete_toute_espece = 'SELECT * FROM ods_especes ORDER BY oe_nom_vernaculaire';
$liste_espece = $this->executerRequete($requete_toute_espece);
$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);
$especes_par_id = array();
foreach($liste_espece as $espece) {
$espece = $this->formaterTableauEspecePourEnvoi($espece);
$especes_par_id[$espece['id_espece']] = $espece;
}
return $especes_par_id;
}
private function formaterTableauEspecePourEnvoi($espece) {
return array(
'id_espece' => $espece['oe_id_espece'],
'nom_vernaculaire' => $espece['oe_nom_vernaculaire'],
'nom_scientifique' => $espece['oe_nom_scientifique'],
'espece_ecole' => $espece['oe_espece_ecole'],
'description' => $espece['oe_description'],
'climat' => $espece['oe_ce_climat'],
'evenements' => $espece['oe_ce_evenements'],
'type' => $espece['oe_ce_type']
);
}
}
?>