19,17 → 19,11 |
|
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->navigation = $conteneur->getNavigation(); |
$this->masque = $conteneur->getMasque(); |
$this->gestionBdd = $conteneur->getGestionBdd(); |
$this->bdd = $this->gestionBdd->getBdd(); |
$this->bdd = $this->conteneur->getBdd(); |
} |
|
/** |
48,7 → 42,7 |
// Lancement du service |
$liaisons = $this->chargerLiaisons(); |
$total = $this->compterImages(); |
$this->navigation->setTotal($total); |
$this->conteneur->setTotal($total); |
$images = $this->chargerImage($liaisons); |
$images = $this->chargerVotes($images); |
|
141,53 → 135,52 |
* */ |
private function chargerClauseWhere() { |
$where = array(); |
$tableauMasque = $this->masque->getMasque(); |
|
// TODO : vérifier les communes et les communes avec une apostrophe |
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; |
foreach($this->conteneur->getMasque() as $idMasque => $valeurMasque) { |
|
//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.'%'); |
$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.')))'; |
} else { |
//TODO : que faire si le département n'est pas numérique ? |
// TODO : modifier le modèle pour intégrer les zones geos ! |
$where[] = " courriel LIKE ".$this->proteger($this->conteneur->getMasque('auteur').'%')." "; |
} |
break; |
case 'genre' : |
} |
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' : |
$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 { |
204,7 → 197,7 |
private function chargerLiaisons() { |
|
$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS * '. |
'FROM '.$this->gestionBdd->formaterTable('del_obs_images', 'doi'). |
'FROM '.$this->conteneur->getSchemaBdd().'.del_obs_images doi '. |
'INNER JOIN del_image di '. |
'ON doi.ce_image = di.id_image '. |
'INNER JOIN del_observation dob '. |
212,7 → 205,7 |
'INNER JOIN del_utilisateur du '. |
'ON du.id_utilisateur = doi.ce_utilisateur'; |
$requeteLiaisons .= $this->chargerClauseWhere(); |
$requeteLiaisons .= $this->gestionBdd->getLimitSql(); |
$requeteLiaisons .= $this->conteneur->getLimitSql(); |
return $this->bdd->recupererTous($requeteLiaisons); |
} |
|
253,7 → 246,7 |
$chaineImageIds = implode(',', $this->imageIds); |
|
$requeteVotes = 'SELECT * FROM '. |
$this->gestionBdd->formaterTable('del_vote_image '). |
$this->conteneur->getSchemaBdd().'.del_vote_image '. |
'WHERE ce_image IN ('.$chaineImageIds.')'; |
$resultatsVotes = $this->bdd->recupererTous($requeteVotes); |
|