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) { |