| Line 60... |
Line 60... |
| 60 |
* Les stations de la carte par défaut
|
60 |
* Les stations de la carte par défaut
|
| 61 |
*/
|
61 |
*/
|
| 62 |
public function getStations($params) {
|
62 |
public function getStations($params) {
|
| 63 |
$json = null;
|
63 |
$json = null;
|
| 64 |
$requete = 'SELECT utm_secteur, utm_x, utm_y, wgs84_latitude AS latitude, wgs84_longitude AS longitude '.
|
64 |
$requete = 'SELECT utm_secteur, utm_x, utm_y, wgs84_latitude AS latitude, wgs84_longitude AS longitude '.
|
| 65 |
'FROM cel_obs AS co '.
|
65 |
'FROM cel_obs AS co '.
|
| 66 |
' LEFT JOIN cel_zones_geo AS l '.
|
66 |
' LEFT JOIN cel_zones_geo AS l '.
|
| 67 |
' ON (l.id_zone_geo = co.ce_zone_geo) '.
|
67 |
' ON (l.id_zone_geo = co.ce_zone_geo) '.
|
| 68 |
"WHERE transmission = '1' ".
|
68 |
"WHERE transmission = '1' ".
|
| 69 |
$this->construireWhereDept().
|
69 |
$this->construireWhereDept().
|
| 70 |
$this->construireWhereCommune().
|
70 |
$this->construireWhereCommune().
|
| 71 |
$this->construireWherePhotosSeulement().
|
71 |
$this->construireWherePhotosSeulement().
|
| 72 |
$this->construireWhereUtilisateur().
|
72 |
$this->construireWhereUtilisateur().
|
| 73 |
$this->construireWhereNumTaxon().
|
73 |
$this->construireWhereNumTaxon().
|
| 74 |
$this->construireWhereNomTaxon().
|
74 |
$this->construireWhereNomTaxon().
|
| 75 |
$this->construireWhereDate().
|
75 |
$this->construireWhereDate().
|
| 76 |
$this->construireWhereCommentaire().
|
76 |
$this->construireWhereCommentaire().
|
| 77 |
$this->construireWhereProjet().
|
77 |
$this->construireWhereProjet().
|
| Line 131... |
Line 131... |
| 131 |
public function getObservations($params) {
|
131 |
public function getObservations($params) {
|
| 132 |
$resultats = array();
|
132 |
$resultats = array();
|
| 133 |
$total = 0;
|
133 |
$total = 0;
|
| 134 |
if (!$this->etreNull($this->parametres['station'])) {
|
134 |
if (!$this->etreNull($this->parametres['station'])) {
|
| 135 |
$requete = 'SELECT SQL_CALC_FOUND_ROWS id_observation, ce_utilisateur, courriel_utilisateur, '.
|
135 |
$requete = 'SELECT SQL_CALC_FOUND_ROWS id_observation, ce_utilisateur, courriel_utilisateur, '.
|
| 136 |
' nom_sel, nom_ret, nom_sel_nn, nom_ret_nn, nt, famille, '.
|
136 |
' nom_sel, nom_ret, nom_sel_nn, nom_ret_nn, nt, famille, '.
|
| 137 |
' lieudit, zone_geo, date_observation, milieu, commentaire, '.
|
137 |
' lieudit, zone_geo, date_observation, milieu, commentaire, '.
|
| 138 |
' utm_secteur, utm_x, utm_y, id_zone_geo, date_transmission, nom_referentiel '.
|
138 |
' utm_secteur, utm_x, utm_y, id_zone_geo, date_transmission, nom_referentiel '.
|
| 139 |
'FROM cel_obs AS co '.
|
139 |
'FROM cel_obs AS co '.
|
| 140 |
' LEFT JOIN cel_zones_geo AS l '.
|
140 |
' LEFT JOIN cel_zones_geo AS l '.
|
| 141 |
" ON (l.id_zone_geo = co.ce_zone_geo) ".
|
141 |
" ON (l.id_zone_geo = co.ce_zone_geo) ".
|
| 142 |
"WHERE transmission = '1' ".
|
142 |
"WHERE transmission = '1' ".
|
| 143 |
$this->construireWhereCoordonnees().
|
143 |
$this->construireWhereCoordonnees().
|
| 144 |
$this->construireWherePhotosSeulement().
|
144 |
$this->construireWherePhotosSeulement().
|
| 145 |
$this->construireWhereUtilisateur().
|
145 |
$this->construireWhereUtilisateur().
|
| 146 |
$this->construireWhereNumTaxon().
|
146 |
$this->construireWhereNumTaxon().
|
| 147 |
$this->construireWhereNomTaxon().
|
147 |
$this->construireWhereNomTaxon().
|
| 148 |
$this->construireWhereDate().
|
148 |
$this->construireWhereDate().
|
| 149 |
$this->construireWhereCommentaire().
|
149 |
$this->construireWhereCommentaire().
|
| 150 |
$this->construireWhereProjet().
|
150 |
$this->construireWhereProjet().
|
| 151 |
$this->construireWhereTag().
|
151 |
$this->construireWhereTag().
|
| 152 |
'ORDER BY nom_sel ASC '.
|
152 |
'ORDER BY nom_sel ASC '.
|
| 153 |
"LIMIT {$this->start},{$this->limit} ";
|
153 |
"LIMIT {$this->start},{$this->limit} ";
|
| 154 |
//die($requete);
|
154 |
//die($requete);
|
| 155 |
$resultats = Cel::db()->requeter($requete, self::SQL_RETOUR_COMPLET, self::SQL_MODE_OBJET);
|
155 |
$resultats = Cel::db()->requeter($requete, self::SQL_RETOUR_COMPLET, self::SQL_MODE_OBJET);
|
| Line 156... |
Line 156... |
| 156 |
|
156 |
|
| 157 |
$requete = 'SELECT FOUND_ROWS()';
|
157 |
$requete = 'SELECT FOUND_ROWS()';
|
| Line 350... |
Line 350... |
| 350 |
if (!$this->etreNull($commentaire)) {
|
350 |
if (!$this->etreNull($commentaire)) {
|
| 351 |
$commentaire = Cel::db()->proteger('%'.$commentaire.'%');
|
351 |
$commentaire = Cel::db()->proteger('%'.$commentaire.'%');
|
| 352 |
switch ($type) {
|
352 |
switch ($type) {
|
| 353 |
case '*' :
|
353 |
case '*' :
|
| 354 |
$sql = $this->obtenirConditionPourCommentaires($commentaire);
|
354 |
$sql = $this->obtenirConditionPourCommentaires($commentaire);
|
| 355 |
$sql = " AND (commentaire LIKE $commentaire OR ($sql)) ";
|
355 |
$sql = " AND (ci.commentaire LIKE $commentaire OR ($sql)) ";
|
| 356 |
break;
|
356 |
break;
|
| 357 |
case 'observation' :
|
357 |
case 'observation' :
|
| 358 |
$sql = " AND co.commentaire LIKE $commentaire ";
|
358 |
$sql = " AND co.commentaire LIKE $commentaire ";
|
| 359 |
break;
|
359 |
break;
|
| 360 |
case 'photo' :
|
360 |
case 'photo' :
|
| Line 503... |
Line 503... |
| 503 |
* Récupération des identifiant d'utilisateur et des ordres des observations correspondant à une date.
|
503 |
* Récupération des identifiant d'utilisateur et des ordres des observations correspondant à une date.
|
| 504 |
* Retour sous forme de tableau : array[identifiant] = array(ordre, ordre...);
|
504 |
* Retour sous forme de tableau : array[identifiant] = array(ordre, ordre...);
|
| 505 |
*/
|
505 |
*/
|
| 506 |
private function obtenirObsLieesImg($type, $param) {
|
506 |
private function obtenirObsLieesImg($type, $param) {
|
| 507 |
// Construction de la requête
|
507 |
// Construction de la requête
|
| 508 |
$requete = 'SELECT DISTINCT id_observation AS id_obs, ce_utilisateur AS utilisateur '.
|
508 |
$requete = 'SELECT DISTINCT id_observation AS id_obs, co.ce_utilisateur AS utilisateur '.
|
| 509 |
'FROM cel_images ci'.
|
509 |
'FROM cel_images ci'.
|
| 510 |
' LEFT JOIN cel_obs_images coi '.
|
- |
|
| 511 |
' ON (coi.id_image = ci.id_image) '.
|
- |
|
| 512 |
' LEFT JOIN cel_obs AS co '.
|
510 |
' INNER JOIN cel_obs AS co '.
|
| 513 |
' ON coi.id_observation = co.id_observation '.
|
511 |
' ON ci.ce_observation = co.id_observation '.
|
| 514 |
' LEFT JOIN locations AS l '.
|
512 |
' LEFT JOIN locations AS l '.
|
| 515 |
' ON (l.id_zone_geo = co.ce_zone_geo) '.
|
513 |
' ON (l.id_zone_geo = co.ce_zone_geo) '.
|
| 516 |
"WHERE transmission = '1' ".
|
514 |
"WHERE co.transmission = '1' ".
|
| 517 |
($type == 'date.photo' ? " AND (date_prise_de_vue LIKE ".str_replace('-', ':', $param).") " : '').
|
515 |
($type == 'date.photo' ? " AND (date_prise_de_vue LIKE ".str_replace('-', ':', $param).") " : '').
|
| 518 |
($type == 'date.ajout' ? " AND date_creation LIKE $param " : '').
|
516 |
($type == 'date.ajout' ? " AND ci.date_creation LIKE $param " : '').
|
| 519 |
($type == 'date.liaison' ? " AND date_liaison LIKE $param " : '').
|
517 |
($type == 'date.liaison' ? " AND ci.date_liaison LIKE $param " : '').
|
| 520 |
// TODO: recherche sur le xml
|
518 |
// TODO: recherche sur le xml
|
| 521 |
//($type == 'commentaire.meta' ? " AND ci.commentaire LIKE $param " : '').
|
519 |
//($type == 'commentaire.meta' ? " AND ci.commentaire LIKE $param " : '').
|
| 522 |
($type == 'commentaire.utilisateur' ? " AND ci.commentaire LIKE $param " : '').
|
520 |
($type == 'commentaire.utilisateur' ? " AND ci.commentaire LIKE $param " : '').
|
| 523 |
($type == 'commentaire.*' ? " AND (ci.commentaire LIKE $param) " : '').
|
521 |
($type == 'commentaire.*' ? " AND (ci.commentaire LIKE $param) " : '').
|
| 524 |
$this->construireWhereCoordonnees().
|
522 |
$this->construireWhereCoordonnees().
|
| Line 597... |
Line 595... |
| 597 |
}
|
595 |
}
|
| Line 598... |
Line 596... |
| 598 |
|
596 |
|
| 599 |
private function construireWherePhotosSeulement() {
|
597 |
private function construireWherePhotosSeulement() {
|
| 600 |
$sql = '';
|
598 |
$sql = '';
|
| 601 |
if (isset($this->parametres['photos']) && $this->parametres['photos'] == 1) {
|
599 |
if (isset($this->parametres['photos']) && $this->parametres['photos'] == 1) {
|
| 602 |
$sql = 'AND co.id_observation IN (SELECT DISTINCT id_observation FROM cel_obs_images) ';
|
600 |
$sql = 'AND co.id_observation IN (SELECT DISTINCT ce_observation FROM cel_images) ';
|
| 603 |
}
|
601 |
}
|
| 604 |
return $sql;
|
602 |
return $sql;
|
| Line 665... |
Line 663... |
| 665 |
private function getSqlWhereObsAvecImagesTaguees($tag) {
|
663 |
private function getSqlWhereObsAvecImagesTaguees($tag) {
|
| 666 |
$sql = null;
|
664 |
$sql = null;
|
| 667 |
if (isset($tag) && !$this->etreNull($tag)) {
|
665 |
if (isset($tag) && !$this->etreNull($tag)) {
|
| 668 |
$tag_sql = $this->getSqlWhereMotsCles($tag);
|
666 |
$tag_sql = $this->getSqlWhereMotsCles($tag);
|
| 669 |
// Construction de la requête
|
667 |
// Construction de la requête
|
| 670 |
$requete = 'SELECT DISTINCT coi.id_observation AS id_obs, ci.ce_utilisateur AS utilisateur '.
|
668 |
$requete = 'SELECT DISTINCT co.id_observation AS id_obs, ci.ce_utilisateur AS utilisateur '.
|
| 671 |
'FROM cel_images ci'.
|
669 |
'FROM cel_images ci'.
|
| 672 |
' LEFT JOIN cel_obs_images coi'.
|
- |
|
| 673 |
' ON (ci.id_image = coi.id_image) '.
|
- |
|
| 674 |
' LEFT JOIN cel_obs AS co '.
|
670 |
' INNER JOIN cel_obs AS co '.
|
| 675 |
' ON (coi.id_observation = co.id_observation) '.
|
671 |
' ON (ci.ce_observation = co.id_observation) '.
|
| 676 |
' LEFT JOIN cel_zones_geo AS l '.
|
672 |
' LEFT JOIN cel_zones_geo AS l '.
|
| 677 |
" ON (l.id_zone_geo = co.ce_zone_geo) ".
|
673 |
" ON (l.id_zone_geo = co.ce_zone_geo) ".
|
| 678 |
"WHERE transmission = '1' ".
|
674 |
"WHERE co.transmission = '1' ".
|
| 679 |
$this->construireWhereCoordonnees().
|
675 |
$this->construireWhereCoordonnees().
|
| 680 |
$this->construireWhereUtilisateur().
|
676 |
$this->construireWhereUtilisateur().
|
| 681 |
$this->construireWhereNumTaxon().
|
677 |
$this->construireWhereNumTaxon().
|
| 682 |
$this->construireWhereNomTaxon().
|
678 |
$this->construireWhereNomTaxon().
|
| 683 |
$this->construireWhereProjet().
|
679 |
$this->construireWhereProjet().
|
| Line 741... |
Line 737... |
| 741 |
$where_mots_cles_images = implode(' '.$mots_cles_encodes['type'].' ', $where_mots_cles_images);
|
737 |
$where_mots_cles_images = implode(' '.$mots_cles_encodes['type'].' ', $where_mots_cles_images);
|
| 742 |
return $where_mots_cles_images;
|
738 |
return $where_mots_cles_images;
|
| 743 |
}
|
739 |
}
|
| Line 744... |
Line 740... |
| 744 |
|
740 |
|
| 745 |
private function decomposerParametreTag($tags) {
|
- |
|
| 746 |
|
741 |
private function decomposerParametreTag($tags) {
|
| 747 |
$mots_cles = array('type' => null, 'motsCles' => null, 'motsClesEncodesProteges' => null);
|
742 |
$mots_cles = array('type' => null, 'motsCles' => null, 'motsClesEncodesProteges' => null);
|
| 748 |
if (preg_match('/.+OU.+/', $tags)) {
|
743 |
if (preg_match('/.+OU.+/', $tags)) {
|
| 749 |
$mots_cles['type'] = 'OR';
|
744 |
$mots_cles['type'] = 'OR';
|
| 750 |
$mots_cles['motsCles'] = explode('OU', $tags);
|
745 |
$mots_cles['motsCles'] = explode('OU', $tags);
|