Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1564 → Rev 1565

/trunk/jrest/services/CelWidgetSaisie.php
23,7 → 23,7
private $utilisateur_id = null;
const DUREE_DE_VIE_IMG = 86400;// 3600 * 24 * 2 = 172 800
const ARRET_SERVICE = false;// Permet de bloquer le service en cas de problème sur le serveur
 
private $correspondanceIdImgTags = array();
 
public function createElement($requeteDonnees) {
48,7 → 48,7
$utilisateur = $this->affecterChampsManquantsUtilisateur($utilisateur);
extract($utilisateur);
$this->utilisateur_id = $id_utilisateur;
$ordre = $this->getMaxOrdre($id_utilisateur);
$ordre = $this->getMaxOrdre($id_utilisateur);
if (!is_null($ordre)) {
$requeteDonnees = $this->supprimerSlashesProfond($requeteDonnees);
// Triage et manipulation des données
91,7 → 91,7
$obsAAjouter['date_creation'] = date('Y-m-d H:i:s');
$obsAAjouter['date_modification'] = $obsAAjouter['date_creation'];
$obsAAjouter['date_transmission'] = $obsAAjouter['date_creation'];
 
$this->champsEtendusObs[$ordreObs] = isset($obs['obs_etendue']) ? $obs['obs_etendue'] : array();
 
$imgAAjouter = null;
122,7 → 122,7
} else {
$obs_a_taguer_ordres[] = trim($obs['ordre'], "'");
}
 
// si le formulaire contient une image on la traite
if ($img != null) {
$this->nettoyerImagesUploades();
129,11 → 129,11
$img_a_taguer_ids = $this->stockerImagesEtLierAObs($img, $id_utilisateur, $utilisateur);
}
}
 
$obs_a_taguer_ids = $this->obtenirIdsObsPourTableauOrdres($this->utilisateur_id, $obs_a_taguer_ordres);
$this->taguerObs($obs_a_taguer_ids);
$this->taguerImg($img_a_taguer_ids);
 
// Les champs taggés sont des champs supplémentaires stockés sous forme de clé => valeur
$this->ajouterChampsEtendusObs($obs_a_taguer_ids, $this->champsEtendusObs);
} else {
152,32 → 152,42
$retour = (object) array('msg' => $msg);
$this->envoyerJson($retour);
}
 
private function ajouterChampsEtendusObs($obs_ids, $obs_a_champs_etendus) {
$champs_etendus_obs = array();
foreach($obs_ids as $id_obs) {
$gestionChampsEtendus = new GestionChampsEtendus($this->config, 'obs');
 
foreach ($obs_ids as $id_obs) {
$champs = array_shift($obs_a_champs_etendus);
if($champs != null && is_array($champs)) {
foreach($champs as $champ_etendu => $valeur) {
$champs_etendus_obs[] = array(
'id' => $id_obs,
'cle' => $champ_etendu,
'valeur' => $valeur
);
if ($champs != null && is_array($champs)) {
foreach ($champs as $infosChamp) {
$cle = isset($infosChamp['cle']) ? $infosChamp['cle'] : '';
$label = isset($infosChamp['label']) ? $infosChamp['label'] : '';
$valeur = isset($infosChamp['valeur']) ? $infosChamp['valeur'] : '';
 
if (empty($cle) && !empty($label)) {
$cle = $gestionChampsEtendus->transformerLabelEnCle($label);
}
 
if (!empty($cle) && !empty($valeur)) {
$champEtendu = new ChampEtendu();
$champEtendu->id = $id_obs;
$champEtendu->cle = $cle;
$champEtendu->label = empty($label) ? $cle : $label;
$champEtendu->valeur = $valeur;
 
$champs_etendus_obs[] = $champEtendu;
}
}
}
}
$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
$ajout_champ_etendus = $gestion_champs_etendus->ajouterChampsEtendusMultiplesAElementsMultiples($champs_etendus_obs);
$ajout_champ_etendus = $gestionChampsEtendus->ajouterParLots($champs_etendus_obs);
return $ajout_champ_etendus;
}
 
private function traiterImagesALierAObs($id_utilisateur, $ordreObs, $obs) {
$imgAAjouter = null;
if(is_array($obs['image_nom'])) {
if (is_array($obs['image_nom'])) {
$imgAAjouter = array();
foreach ($obs['image_nom'] as $index => $nom_image) {
$image = array();
185,10 → 195,10
$image['id_obs'] = $ordreObs;
$image['nom'] = $nom_image;
$image['tags'] = isset($obs['image_tag'][$index]) ? explode(',',$obs['image_tag'][$index]) : '';
// on suppose que les b64 des images sont envoyés dans le même ordre que leurs noms
// on suppose que les b64 des images sont envoyés dans le même ordre que leurs noms
// TODO: indexer le tableau avec le nom des images
$image['b64'] = isset($obs['image_b64'][$index]) ? $obs['image_b64'][$index] : '';
$this->debug[] = 'Contient B64 : '.(empty($obs['image_b64']) ? 'non' : 'oui');
$this->debug[] = 'Contient B64 : '.(empty($obs['image_b64']) ? 'non' : 'oui');
$imgAAjouter[] = $image;
}
} else {
202,13 → 212,14
$this->debug[] = 'Contient B64 : '.(empty($obs['image_b64']) ? 'non' : 'oui');
}
}
 
return $imgAAjouter;
}
 
private function stockerImagesEtLierAObs($img, $id_utilisateur, $utilisateur) {
if(!isset($img['nom']) && is_array($img)) {
foreach($img as $index => $image) {
$img_a_taguer_ids = array();
if (!isset($img['nom']) && is_array($img)) {
foreach ($img as $index => $image) {
$nomFichierImg = $this->traiterNomFichierImage($image['nom']);
$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
// Si l'image est transmise en base 64
215,7 → 226,7
if (empty($image['b64']) === false) {
$this->transformerBase64enFichier($cheminImage, $image['b64']);
}
 
$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
$idImg = $this->ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImg);
if ($idImg !== false) {
222,7 → 233,7
$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $image['id_obs']);
if ($liaisonOk === true) {
$img_a_taguer_ids[] = $idImg;
if(isset($image['tags'])) {
if (isset($image['tags'])) {
$this->correspondanceIdImgTags[$idImg] = $image['tags'];
}
}
235,7 → 246,7
if (empty($img['b64']) === false) {
$this->transformerBase64enFichier($cheminImage, $img['b64']);
}
 
$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
$idImg = $this->ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImg);
if ($idImg !== false) {
242,16 → 253,16
$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $img['id_obs']);
if ($liaisonOk === true) {
$img_a_taguer_ids[] = $idImg;
if(isset($img['tags'])) {
if (isset($img['tags'])) {
$this->correspondanceIdImgTags[$idImg] = $img['tags'];
}
}
}
}
 
return $img_a_taguer_ids;
}
 
private function affecterChampsManquantsUtilisateur($utilisateur) {
$gestion_utilisateur = new User($this->config);
$infos_complementaires = $gestion_utilisateur->obtenirUtilisateurSiExiste($utilisateur['courriel']);
413,12 → 424,12
}
return $liaison;
}
 
private function obtenirIdObsPourIdentifiantEtOrdre($id_utilisateur, $ordre) {
 
$id_utilisateur = $this->proteger($id_utilisateur);
$ordre = $this->proteger($ordre);
 
$requete = 'SELECT id_observation '.
'FROM cel_obs '.
"WHERE ce_utilisateur = $id_utilisateur ".
425,20 → 436,20
" AND ordre = $ordre ";
 
$resultat = $this->executerRequete($requete);
 
$id_obs = (count($resultat) > 0) ? $resultat[0]['id_observation'] : false;
return $id_obs;
}
 
private function obtenirIdsObsPourTableauOrdres($id_utilisateur, $ordres) {
$id_utilisateur = $this->proteger($id_utilisateur);
$ordres = array_map(array($this,'proteger'), $ordres);
 
$requete = 'SELECT id_observation '.
'FROM cel_obs '.
"WHERE ce_utilisateur = $id_utilisateur ".
" AND ordre IN (".implode(',',$ordres).") ";
 
$resultat = $this->executerRequete($requete);
$ids = array();
foreach($resultat as $id) {