19,6 → 19,9 |
*/ |
class ParametresFiltrage { |
|
const APPLI_IMG = 'IMG'; |
const APPLI_OBS = 'OBS'; |
|
const LISTE_OBS_MAX_RESULT_LIMIT = 1000; |
const LISTE_OBS_MAX_ID_OBS = 10e7; |
const LISTE_OBS_MAX_BDTFX_NT = 1000000; // SELECT MAX(num_taxonomique) FROM bdtfx_v2_00; // 44378 + 1000 |
28,6 → 31,7 |
private $contexte; |
private $parametres = array(); |
private $parametresFiltres = array(); |
private $appli; |
|
public function __construct($conteneur) { |
$this->conteneur = $conteneur; |
35,7 → 39,16 |
$this->parametres = $this->contexte->getQS(); |
} |
|
private function etreAppliImg() { |
return $this->appli === 'IMG' ? true : false; |
} |
|
private function etreAppliObs() { |
return $this->appli === 'OBS' ? true : false; |
} |
|
public function filtrerUrlParamsAppliImg() { |
$this->appli = self::APPLI_IMG; |
$this->maintenirCompatibilitesParametres(); |
|
$parametresAutorises = $this->conteneur->getParametreTableau('images.masques_possibles'); |
59,6 → 72,7 |
} |
|
public function filtrerUrlParamsAppliObs() { |
$this->appli = self::APPLI_OBS; |
$this->maintenirCompatibilitesParametres(); |
|
$parametresAutorises = $this->conteneur->getParametreTableau(('observations.masques_possibles')); |
81,10 → 95,15 |
private function maintenirCompatibilitesParametres() { |
$this->renommerParametres(); |
|
if (!isset($this->parametres['masque.tag_del']) && isset($this->parametres['masque.tag'])) { |
if ($this->etreAppliImg() && !isset($this->parametres['masque.tag_del']) && isset($this->parametres['masque.tag'])) { |
$this->parametres['masque.tag_del'] = $this->parametres['masque.tag']; |
unset($this->parametres['masque.tag']); |
} |
if ($this->etreAppliobs() && !isset($this->parametres['masque.tag_cel']) && isset($this->parametres['masque.tag'])) { |
$this->parametres['masque.tag_cel'] = $this->parametres['masque.tag']; |
unset($this->parametres['masque.tag']); |
} |
} |
|
private function renommerParametres() { |
$renomages = array('masque.tag_pictoflora' => 'masque.tag_del'); |
174,7 → 193,6 |
$this->filtrerCommune(); |
$this->filtrerType(); |
|
$this->filtrerTag(); |
$this->filtrerTagCel(); |
$this->filtrerTagDel(); |
} |
247,14 → 265,15 |
private function filtrerDate() { |
if (isset($this->parametres['masque.date'])) { |
$date = $this->parametres['masque.date']; |
// une année, TODO: masque.annee |
$paramFiltre = null; |
if (is_numeric($date)) { |
if (preg_match('/^\d{4}$/', $date)) { |
$paramFiltre = $date; |
} elseif(strpos($date, '/' !== false) && ($x = strtotime(str_replace('/', '-', $date)))) { |
$paramFiltre = $x; |
} elseif(strpos($date, '-' !== false) && ($x = strtotime($date)) ) { |
$paramFiltre = $x; |
} else if (strpos($date, '/') !== false) { |
// Format d'entrée DEL : jj/mm/yyyy |
list($jour, $mois, $annee) = explode('/', $date); |
$paramFiltre = "$annee-$mois-$jour"; |
} else if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $date)) { |
$paramFiltre = $date; |
} |
$this->parametresFiltres['masque.date'] = $paramFiltre; |
} |
322,17 → 341,6 |
} |
} |
|
// masque.tag, idem que pour masque.genre et masque.commune |
private function filtrerTag() { |
if (isset($this->parametres['masque.tag'])) { |
$tagsArray = explode(',', $this->parametres['masque.tag']); |
$tagsTrimes = array_map('trim', $tagsArray); |
$tagsFiltres = array_filter($tagsTrimes); |
$paramFiltre = implode('|', $tagsFiltres); |
$this->parametresFiltres['masque.tag'] = $paramFiltre; |
} |
} |
|
private function filtrerTagCel() { |
if (isset($this->parametres['masque.tag_cel'])) { |
$this->parametresFiltres['masque.tag_cel'] = $this->construireTableauTags($this->parametres['masque.tag_cel'], 'OR', ','); |