Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 724 → Rev 725

/trunk/services/modules/0.1/images/Images.php
19,11 → 19,17
private $imageIds = array();
private $conteneur;
private $navigation;
private $masque;
private $gestionBdd;
private $bdd;
public function __construct(Conteneur $conteneur = null) {
$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
$this->bdd = $this->conteneur->getBdd();
$this->navigation = $conteneur->getNavigation();
$this->masque = $conteneur->getMasque();
$this->gestionBdd = $conteneur->getGestionBdd();
$this->bdd = $this->gestionBdd->getBdd();
}
/**
42,7 → 48,7
// Lancement du service
$liaisons = $this->chargerLiaisons();
$total = $this->compterImages();
$this->conteneur->setTotal($total);
$this->navigation->setTotal($total);
$images = $this->chargerImage($liaisons);
$images = $this->chargerVotes($images);
135,52 → 141,53
* */
private function chargerClauseWhere() {
$where = array();
$tableauMasque = $this->masque->getMasque();
// TODO : vérifier les communes et les communes avec une apostrophe
foreach($this->conteneur->getMasque() as $idMasque => $valeurMasque) {
if (!empty($tableauMasque)) {
foreach($tableauMasque as $idMasque => $valeurMasque) {
$idMasque = str_replace('masque.', '', $idMasque);
switch ($idMasque) {
// nom du masque => nom BDD
case 'auteur' :
$auteurId = $this->masque->getMasque('auteur');
if (is_numeric($auteurId)) {
$where[] = ' ce_utilisateur = '.$auteurId;
} else {
if (strpos($auteurId, '@') === false) {
$chaineNomPrenom = $this->getChaineNomPrenom($auteurId);
$where[] = '((nom IN ('.$chaineNomPrenom.')) OR (prenom IN ('.$chaineNomPrenom.')))';
} else {
$where[] = " courriel LIKE ".$this->proteger($this->masque->getMasque('auteur').'%')." ";
}
}
break;
$idMasque = str_replace('masque.', '', $idMasque);
switch ($idMasque) {
// nom du masque => nom BDD
case 'auteur' :
$auteurId = $this->conteneur->getMasque('auteur');
if (is_numeric($auteurId)) {
$where[] = ' ce_utilisateur = '.$auteurId;
} else {
if (strpos($auteurId, '@') === false) {
$chaineNomPrenom = $this->getChaineNomPrenom($auteurId);
$where[] = '((nom IN ('.$chaineNomPrenom.')) OR (prenom IN ('.$chaineNomPrenom.')))';
//TODO : gérer le format de la date ?
// rechercher sur LIKE DATE % ?
// TODO : recherche sur JOUR MOIS ou ANNEE
case 'departement' :
$dept = $valeurMasque;
if (is_numeric($dept)) {
$where[] = " ce_zone_geo LIKE ".$this->proteger('INSEE-C:'.$dept.'%');
} else {
$where[] = " courriel LIKE ".$this->proteger($this->conteneur->getMasque('auteur').'%')." ";
//TODO : que faire si le département n'est pas numérique ?
// TODO : modifier le modèle pour intégrer les zones geos !
}
}
break;
//TODO : gérer le format de la date ?
// rechercher sur LIKE DATE % ?
// TODO : recherche sur JOUR MOIS ou ANNEE
case 'departement' :
$dept = $valeurMasque;
if (is_numeric($dept)) {
$where[] = " ce_zone_geo LIKE ".$this->proteger('INSEE-C:'.$dept.'%');
} else {
//TODO : que faire si le département n'est pas numérique ?
// TODO : modifier le modèle pour intégrer les zones geos !
}
break;
case 'genre' :
break;
case 'genre' :
$where[] = ' '.$this->mappingFiltre['ns'].' LIKE '.$this->proteger($valeurMasque.' %');
break;
case 'tag' :
$where[] = " di.mots_cles_texte LIKE ".$this->proteger($valeurMasque);
break;
default:
$where[] = ' '.$this->mappingFiltre[$idMasque].' = '.$this->proteger($valeurMasque);
break;
}
break;
case 'tag' :
$where[] = " di.mots_cles_texte LIKE ".$this->proteger($valeurMasque);
break;
default:
$where[] = ' '.$this->mappingFiltre[$idMasque].' = '.$this->proteger($valeurMasque);
break;
}
}
}
if (!empty($where)) {
return ' WHERE '.implode('AND', $where);
} else {
197,7 → 204,7
private function chargerLiaisons() {
$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS * '.
'FROM '.$this->conteneur->getSchemaBdd().'.del_obs_images doi '.
'FROM '.$this->gestionBdd->formaterTable('del_obs_images', 'doi').
'INNER JOIN del_image di '.
'ON doi.ce_image = di.id_image '.
'INNER JOIN del_observation dob '.
205,7 → 212,7
'INNER JOIN del_utilisateur du '.
'ON du.id_utilisateur = doi.ce_utilisateur';
$requeteLiaisons .= $this->chargerClauseWhere();
$requeteLiaisons .= $this->conteneur->getLimitSql();
$requeteLiaisons .= $this->gestionBdd->getLimitSql();
return $this->bdd->recupererTous($requeteLiaisons);
}
246,7 → 253,7
$chaineImageIds = implode(',', $this->imageIds);
$requeteVotes = 'SELECT * FROM '.
$this->conteneur->getSchemaBdd().'.del_vote_image '.
$this->gestionBdd->formaterTable('del_vote_image ').
'WHERE ce_image IN ('.$chaineImageIds.')';
$resultatsVotes = $this->bdd->recupererTous($requeteVotes);