Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1894 → Rev 1895

/branches/v1.7-croissant/widget/modules/saisie/squelettes/florileges/florileges.tpl.html
44,13 → 44,17
// La présence du parametre 'html5' dans l'URL enclenche les fonctions avancées HTML5
var HTML5 = <?=isset($_GET['html5']) ? 'true' : 'false'?>;
// Mot-clé du widget/projet
var TAG_PROJET = "WidgetFlorileges,Sauvages";
var TAG_PROJET = "Florileges,WidgetFlorileges,Sauvages";
// Mots-clés à ajouter aux images
var TAG_IMG = "<?=isset($_GET['tag-img']) ? $_GET['tag-img'] : ''?>";
TAG_IMG = <?=isset($_GET['motcle']) ? "'".$_GET['motcle']."'" : 'TAG_IMG' ?>;
var SEPARATION_TAG_IMG = "<?= isset($_GET['motcle']) && isset($_GET['tag-img']) ? ',' : '' ?>";
TAG_IMG = <?=isset($_GET['motcle']) ? "'".$_GET['motcle']."' + SEPARATION_TAG_IMG + TAG_IMG" : 'TAG_IMG' ?>;
// Mots-clés à ajouter aux observations
var TAG_OBS = "<?=isset($_GET['tag-obs']) ? $_GET['tag-obs'] : ''?>";
TAG_OBS = <?=isset($_GET['projet']) ? "'".$_GET['projet']."'" : 'TAG_OBS' ?>;
var SEPARATION_TAG_OBS = "<?= isset($_GET['projet']) && isset($_GET['tag-obs']) ? ',' : '' ?>";
TAG_OBS = <?=isset($_GET['projet']) ? "'".$_GET['projet']."' + SEPARATION_TAG_OBS + TAG_OBS" : 'TAG_OBS' ?>;
// URL du web service réalisant l'insertion des données dans la base du CEL.
// Précharger le formulaire avec les infos d'une observation
var OBS_ID = "<?=isset($_GET['id-obs']) ? $_GET['id-obs'] : ''?>";
/branches/v1.7-croissant/jrest/services/CelWidgetSaisie.php
17,6 → 17,7
class CelWidgetSaisie extends CelMotCle {
 
private $projet = null;
private $projetTags = array();
private $tagsObs = null;
private $tagsImg = null;
private $champsEtendusObs = null;
30,21 → 31,24
if (self::ARRET_SERVICE) {
$this->messages[] = "Désactivation temporaire du service d'envoi des données au CEL.";
} else if (array_key_exists('projet', $requeteDonnees)) {
$this->debug[] = 'Projet : ok';
$this->debug[] = 'Projet : '.$requeteDonnees['projet'];
$this->projet = $requeteDonnees['projet'];
if (array_key_exists('tag-obs', $requeteDonnees) && $requeteDonnees['tag-obs'] != '') {
$this->tagsObs = explode(',', $requeteDonnees['tag-obs']);
}
$this->tagsObs[] = 'Projets coopératifs>'.$this->projet;
if (array_key_exists('tag-img', $requeteDonnees) && $requeteDonnees['tag-img'] != '') {
$this->tagsImg = explode(',', $requeteDonnees['tag-img']);
}
$this->tagsImg[] = 'Projets coopératifs>'.$this->projet;
 
// Traitements des tags multiples de projet
$this->traiterProjetTags();
 
// Traitement des tags spécifique aux obs
$this->traiterTagObs($requeteDonnees);
 
// Traitement des tags spécifique aux images
$this->traiterTagImg($requeteDonnees);
 
// Traitement des observations et des images
if (filter_var($requeteDonnees['utilisateur']['courriel'], FILTER_VALIDATE_EMAIL)) {
$this->debug[] = 'Utilisateur : ok';
$this->debug[] = 'Utilisateur : '.print_r($requeteDonnees['utilisateur'], true);
$utilisateur = $requeteDonnees['utilisateur'];
if (array_key_exists('courriel', $utilisateur)) {
$this->debug[] = 'Courriel : ok';
$this->debug[] = 'Courriel : '.$utilisateur['courriel'];
$utilisateur = $this->affecterChampsManquantsUtilisateur($utilisateur);
extract($utilisateur);
$this->utilisateur_id = $id_utilisateur;
86,7 → 90,7
$obsAAjouter['latitude'] = $obs['latitude'];
$obsAAjouter['longitude'] = $obs['longitude'];
$obsAAjouter['geodatum'] = 'WGS84';
 
$obsAAjouter['certitude'] = isset($obs['certitude']) ? $obs['certitude'] : null;
$obsAAjouter['phenologie'] = isset($obs['phenologie']) ? $obs['phenologie'] : null;
$obsAAjouter['abondance'] = isset($obs['abondance']) ? $obs['abondance'] : null;
116,6 → 120,9
}
}
$this->debug[] = 'Nbre obs ajoutée : '.count($observations);
$this->debug[] = 'projet : '.$this->projet;
$this->debug[] = 'tagsObs : '.print_r($this->tagsObs, true);
$this->debug[] = 'tagsImg : '.print_r($this->tagsImg, true);
 
// Insertion dans la base
$obs_a_taguer_ordres = array();
159,6 → 166,9
} else {
$this->messages[] = "Les informations concernant le projet coopératif n'ont pas été transmises.";
}
if (count($this->messages) > 0) {
$this->debug[] = print_r($this->messages, true);
}
$msg = (count($this->messages) > 0) ? 'erreur' : 'ok';
$retour = (object) array('msg' => $msg);
$this->envoyerJson($retour);
165,6 → 175,35
exit;
}
 
private function traiterProjetTags() {
if (strpos($this->projet, ',') === false) {
$this->projetTags = array('Projets coopératifs>'.$this->projet);
} else {
$projetTagsTxt = explode(',', $this->projet);
foreach ($projetTagsTxt as $tag) {
$this->projetTags[] = 'Projets coopératifs>'.$tag;
}
}
}
 
private function traiterTagObs($requeteDonnees) {
if (array_key_exists('tag-obs', $requeteDonnees) && $requeteDonnees['tag-obs'] != '') {
$this->tagsObs = explode(',', $requeteDonnees['tag-obs']);
}
foreach ($this->projetTags as $tag) {
$this->tagsObs[] = $tag;
}
}
 
private function traiterTagImg($requeteDonnees) {
if (array_key_exists('tag-img', $requeteDonnees) && $requeteDonnees['tag-img'] != '') {
$this->tagsImg = explode(',', $requeteDonnees['tag-img']);
}
foreach ($this->projetTags as $tag) {
$this->tagsImg[] = $tag;
}
}
 
private function ajouterChampsEtendusObs($obs_ids, $obs_a_champs_etendus) {
$champs_etendus_obs = array();
$gestionChampsEtendus = new GestionChampsEtendus($this->config, 'obs');
364,9 → 403,9
}
}
// Liaison des tags spécifiques à chaque image s'il y en a
if(count($this->correspondanceIdImgTags) > 0) {
if (count($this->correspondanceIdImgTags) > 0) {
foreach ($this->correspondanceIdImgTags as $id_img => $tags) {
if($tags != null && !empty($tags)) {
if ($tags != null && !empty($tags)) {
$this->lierImgAMotsCles(array($id_img), $tags);
}
}
443,9 → 482,9
$ordre = Cel::db()->proteger($ordre);
 
$requete = 'SELECT id_observation '.
'FROM cel_obs '.
"WHERE ce_utilisateur = $id_utilisateur ".
" AND ordre = $ordre ";
'FROM cel_obs '.
"WHERE ce_utilisateur = $id_utilisateur ".
" AND ordre = $ordre ";
 
$resultat = Cel::db()->executerRequete($requete);
 
454,14 → 493,15
}
 
private function obtenirIdsObsPourTableauOrdres($id_utilisateur, $ordres) {
$this->debug[] = print_r($ordres,true);
$id_utilisateur = Cel::db()->proteger($id_utilisateur);
$ordres = array_map(array(Cel::db(),'proteger'), $ordres);
 
$requete = 'SELECT id_observation '.
'FROM cel_obs '.
"WHERE ce_utilisateur = $id_utilisateur ".
" AND ordre IN (".implode(',',$ordres).") ";
 
'FROM cel_obs '.
"WHERE ce_utilisateur = $id_utilisateur ".
" AND ordre IN (".implode(',',$ordres).") ";
$this->debug[] = $requete;
$resultat = Cel::db()->executerRequete($requete);
$ids = array();
foreach($resultat as $id) {
/branches/v1.7-croissant/jrest/services/CelMotCle.php
44,13 → 44,13
$this->utilisateur_id = $utilisateur_id;
return $this->lierMotCle($utilisateur_id, $mots_cles_ids, $ids);
}
 
public function lierMotCleImg($utilisateur_id, Array $mots_cles_ids, Array $ids) {
$this->suffix = self::IMG_TABLE_SUFFIXE;
$this->utilisateur_id = $utilisateur_id;
return $this->lierMotCle($utilisateur_id, $mots_cles_ids, $ids);
}
 
/**
* Lie un mot-clé à une ou plusieurs images ou obs suivant le suffixe en cours.
*
62,7 → 62,7
$retour = false;
 
if ($this->contenirNbresEntiers($ids)) {
 
$champ_objet_lie = ($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'id_observation' : 'id_image';
$champ_mot_cle = ($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'id_mot_cle_obs' : 'id_mot_cle_image';
 
69,9 → 69,9
// le mot clé ignore est spécifique mysql, mais il est utilisé ici pour des raisons
// de performance, à remplacer par un test sur les mots clés déjà existant si ça gène
$requete = "INSERT IGNORE INTO cel{$this->suffix}_mots_cles ".
'('.$champ_objet_lie.', '.$champ_mot_cle.') '.
'VALUES ';
'('.$champ_objet_lie.', '.$champ_mot_cle.') '.
'VALUES ';
 
foreach($ids as $id) {
foreach($mots_cles_ids as $mot) {
$requete .= '('.$id.','.Cel::db()->proteger($mot).'),';
79,7 → 79,7
}
$requete = rtrim($requete,',');
$resultat = Cel::db()->executer($requete);
 
// J'en suis ici
if ($resultat) {
$retour = true;
121,13 → 121,13
 
private function obtenirMotsClesTexte($id_image_ou_obs) {
$requete = 'SELECT mot_cle '.
'FROM '.'cel_mots_cles'.$this->suffix.' '.
'WHERE id_mot_cle_'.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image').' IN '.
'('.
'SELECT id_mot_cle_'.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image').' '.
'FROM cel'.$this->suffix.'_mots_cles '.
'WHERE '.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'id_observation' : 'id_image').' = '.Cel::db()->proteger($id_image_ou_obs).
')';
'FROM '.'cel_mots_cles'.$this->suffix.' '.
'WHERE id_mot_cle_'.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image').' IN '.
'('.
'SELECT id_mot_cle_'.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'obs' : 'image').' '.
'FROM cel'.$this->suffix.'_mots_cles '.
'WHERE '.(($this->suffix == self::OBS_TABLE_SUFFIXE) ? 'id_observation' : 'id_image').' = '.Cel::db()->proteger($id_image_ou_obs).
')';
 
$resultats = Cel::db()->requeter($requete);
return $resultats;
144,8 → 144,14
private function concatenerMotsCles(Array $mots_cles) {
$mot_cles_concatenes = '';
if (count($mots_cles) > 0) {
$dedoublonage = array();
foreach ($mots_cles as $mot_cle) {
$mot_cles_concatenes .= $mot_cle['mot_cle'].self::SEPARATEUR_MOT_CLE_TEXTE;
if (array_key_exists($mot_cle['mot_cle'], $dedoublonage) === false) {
$dedoublonage[$mot_cle['mot_cle']] = 1;
$mot_cles_concatenes .= $mot_cle['mot_cle'].self::SEPARATEUR_MOT_CLE_TEXTE;
} else {
$dedoublonage[$mot_cle['mot_cle']]++;
}
}
}
$mot_cles_concatenes = rtrim($mot_cles_concatenes, self::SEPARATEUR_MOT_CLE_TEXTE);