3,21 → 3,21 |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 5.1.1 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2006 Tela Botanica (accueil@tela-botanica.org) | |
// | Copyright (C) 2011 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This file is part of DEL. | |
// | | |
// | Foobar is free software; you can redistribute it and/or modify | |
// | DEL is free software; you can redistribute it and/or modify | |
// | it under the terms of the GNU General Public License as published by | |
// | the Free Software Foundation; either version 2 of the License, or | |
// | (at your option) any later version. | |
// | | |
// | Foobar is distributed in the hope that it will be useful, | |
// | DEL is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
// | GNU General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU General Public License | |
// | You should have received a copy of the GNU General Public License | |
// | along with Foobar; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
41,7 → 41,6 |
private $limite = 10; |
private $total; // Le nombre total d'images |
private $masque = array(); //Enregistrer les paramètres du masque |
private $auteurIds = array(); // La liste des identifiants des auteurs pour retrouver leur nom dans la base |
private $imageIds = array(); |
|
|
65,7 → 64,6 |
// Lancement du service |
$liaisons = $this->chargerLiaisons(); |
$images = $this->chargerImage($liaisons); |
$this->chargerAuteurs($images); |
$this->chargerVotes($images); |
|
// Mettre en forme le résultat et l'envoyer pour affichage |
125,40 → 123,65 |
} |
|
if (isset($this->masque['ns'])) { |
$where[] = " nom_sel_nn = '".$this->masque['ns']."' "; |
$where[] = " nom_sel = '".$this->masque['ns']."' "; |
} |
|
// TODO : voir la définition du webservice et la gestion nn et ns |
/*if (isset($this->masque['nn'])) { |
$where[] = " nn = '".$this->masque['nn']."' "; |
}*/ |
if (isset($this->masque['nn'])) { |
$where[] = " nom_sel_nn = '".$this->masque['nn']."' "; |
} |
|
|
// TODO : voir la liaision avec auteur : sur id ? |
if (isset($this->masque['auteur'])) { |
$where[] = " ce_utilisateur = '".$this->masque['auteur']."' "; |
|
$auteurId = $this->masque['auteur']; |
if (is_numeric($auteurId)) { |
$where[] = " ce_utilisateur = ".$this->masque['auteur']." "; |
} else { |
if (strpos($auteurId, '@') === false) { |
|
// TODO : j'ai utilisé implode car ça évite de faire un rtrim à la fin |
// mais comme je ne peux pas protéger chaque valeur d'un tableau, ca alourdit le code. |
// quid ? |
$nomPrenom = explode(' ', $auteurId); |
foreach ($nomPrenom as &$valeur) { |
$valeur = $this->getBdd()->proteger($valeur); |
} |
$chaineNomPrenom = implode(', ', $nomPrenom); |
$where[] = '((nom IN ('.$chaineNomPrenom.')) OR (prenom IN('.$chaineNomPrenom.')))'; |
|
} else { |
$where[] = " courriel LIKE ".$this->getBdd()->proteger($this->masque['auteur'].'%')." "; |
} |
} |
} |
|
// TODO : date de quoi ? |
/*if (isset($this->masque['date'])) { |
$where[] = " date = '".$this->masque['date']."' "; |
}*/ |
//TODO : gérer le format de la date ? |
// rechercher sur LIKE DATE % ? |
if (isset($this->masque['date'])) { |
$where[] = " date_observation = ".$this->getBdd()->proteger($this->masque['date']); |
} |
|
//TODO : ??? |
/*if (isset($this->masque['commune'])) { |
$where[] = " commune = '".$this->masque['commune']."' "; |
}*/ |
|
//TODO : ??? |
/*if (isset($this->masque['departement'])) { |
$where[] = " departement = '".$this->masque['departement']."' "; |
}*/ |
if (isset($this->masque['commune'])) { |
$where[] = " zone_geo LIKE ".$this->getBdd()->proteger($this->masque['commune']); |
} |
|
if (isset($this->masque['departement'])) { |
//TODO : que faire si le département n'est pas numérique ? |
$dept = $this->masque['departement']; |
if (is_numeric($dept)) { |
$where[] = " ce_zone_geo LIKE ".$this->getBdd()->proteger('INSEE-C:'.$this->masque['departement'].'%'); |
} |
} |
|
if (isset($this->masque['tag'])) { |
$where[] = " mots_cles_texte = '".$this->masque['tag']."' "; |
} |
|
return 'WHERE '.implode('AND', $where); |
if (!empty($where)) { |
return ' WHERE '.implode('AND', $where); |
} else { |
return; |
} |
} |
|
/** |
184,7 → 207,10 |
'INNER JOIN del_image di '. |
'ON doi.ce_image = di.id_image '. |
'INNER JOIN del_observation dob '. |
'ON doi.ce_observation = dob.id_observation '; |
'ON doi.ce_observation = dob.id_observation '. |
'INNER JOIN del_utilisateur du '. |
'ON du.id_utilisateur = doi.ce_utilisateur'; |
|
$requeteLiaisons .= $this->chargerClauseWhere(); |
$requeteLiaisons .= $this->getLimite(); |
|
201,9 → 227,6 |
foreach ($liaisons as $liaison) { |
$idImage = $liaison['ce_image']; |
|
// On enregistre l'ID de l'auteur pour n'effectuer qu'une seule requête par la suite |
$this->auteursIds[$liaison['ce_utilisateur']] = true; |
|
// On enregistre l'ID de l'image pour n'effectuer qu'une seule requête par la suite |
$this->imageIds[] = $idImage; |
|
214,36 → 237,6 |
} |
|
/** |
* Récupère les auteurs utilisés dans la sous-liste, effectue une requête, et met à jour |
* les résultats |
* @param $images le tableau d'images récupéré et mis en forme |
* */ |
private function chargerAuteurs(&$images) { |
if (sizeof($this->auteursIds) > 0) { |
$auteursIds = array_keys($this->auteursIds); |
|
$chaineAuteursIds = implode(',', $auteursIds); |
$requeteAuteurs = 'SELECT * FROM '.$this->schemaBdd.'.del_utilisateur '. |
'WHERE id_utilisateur IN ('.$chaineAuteursIds.')'; |
$resultatAuteurs = $this->getBdd()->recupererTous($requeteAuteurs); |
|
$auteurs = array(); |
foreach ($resultatAuteurs as $auteur) { |
|
$id = $auteur['id_utilisateur']; |
$auteurs[$id]['nom'] = $auteur['nom']; |
$auteurs[$id]['prenom'] = $auteur['prenom']; |
} |
|
foreach ($images as &$image) { |
$idAuteur = $image['observation']['auteur.id']; |
$image['observation']['auteur.nom'] = $auteurs["$idAuteur"]['nom']; |
$image['observation']['auteur.prenom'] = $auteurs["$idAuteur"]['prenom']; |
} |
} |
} |
|
/** |
* Charger les votes pour chaque image |
* */ |
private function chargerVotes(&$images) { |
262,11 → 255,10 |
$id_protocole = $vote['ce_protocole']; |
$auteur_id = $vote['ce_utilisateur']; |
$valeur = $vote['valeur_vote']; |
//TODO : voir la définition du webservice ! La date n'est pas présent dans la base |
//TODO : ajouter la date au modèle |
//$date = $vote['']; |
|
//TODO : voir la définition du webservice : ne devrait pas être "valeur" ? |
$votes[$idImage]['vote'] = $valeur; |
$votes[$idImage]['valeur'] = $valeur; |
$votes[$idImage]['protocole'] = $id_protocole; |
$votes[$idImage]['auteur_id'] = $auteur_id; |
} |
301,7 → 293,8 |
$observation['station'] = $liaison['station']; |
$observation['milieu'] = $liaison['milieu']; |
$observation['auteur.id'] = $liaison['ce_utilisateur']; |
//$this->chargerAuteur($observation); |
$observation['auteur.nom'] = $liaison['nom']; |
$observation['auteur.prenom'] = $liaison['prenom']; |
return $observation; |
} |
|