23,6 → 23,8 |
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) { |
if (self::ARRET_SERVICE) { |
$this->messages[] = "Désactivation temporaire du service d'envoi des données au CEL."; |
48,7 → 50,6 |
$ordre = $this->getMaxOrdre($id_utilisateur); |
if (!is_null($ordre)) { |
$requeteDonnees = $this->supprimerSlashesProfond($requeteDonnees); |
|
// Triage et manipulation des données |
$observations = array(); |
foreach ($requeteDonnees as $cle => $obs) { |
92,12 → 93,7 |
|
$imgAAjouter = null; |
if (!empty($obs['image_nom'])) { |
$imgAAjouter = array(); |
$imgAAjouter['id_utilisateur'] = $id_utilisateur; |
$imgAAjouter['id_obs'] = $ordreObs; |
$imgAAjouter['nom'] = $obs['image_nom']; |
$imgAAjouter['b64'] = $obs['image_b64']; |
$this->debug[] = 'Contient B64 : '.(empty($obs['image_b64']) ? 'non' : 'oui'); |
$imgAAjouter = $this->traiterImagesALierAObs($id_utilisateur, $ordreObs, $obs); |
} |
|
$observations[$ordreObs] = array( |
127,23 → 123,9 |
// si le formulaire contient une image on la traite |
if ($img != null) { |
$this->nettoyerImagesUploades(); |
$nomFichierImg = $this->traiterNomFichierImage($img['nom']); |
$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg"; |
// Si l'image est transmise en base 64 |
if (empty($img['b64']) === false) { |
$this->transformerBase64enFichier($cheminImage, $img['b64']); |
$this->stockerImagesEtLierAObs($img, $id_utilisateur, $utilisateur); |
} |
|
$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg; |
$idImg = $this->ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImg); |
if ($idImg !== false) { |
$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $img['id_obs']); |
if ($liaisonOk === true) { |
$img_a_taguer_ids[] = $idImg; |
} |
} |
} |
} |
|
$obs_a_taguer_ids = $this->obtenirIdsObsPourTableauOrdres($this->utilisateur_id, $obs_a_taguer_ordres); |
$this->taguerObs($obs_a_taguer_ids); |
165,6 → 147,81 |
$this->envoyerJson($retour); |
} |
|
private function traiterImagesALierAObs($id_utilisateur, $ordreObs, $obs) { |
$imgAAjouter = null; |
if(is_array($obs['image_nom'])) { |
$imgAAjouter = array(); |
foreach ($obs['image_nom'] as $index => $nom_image) { |
$image = array(); |
$image['id_utilisateur'] = $id_utilisateur; |
$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 |
// 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'); |
$imgAAjouter[] = $image; |
} |
} else { |
if (!empty($obs['image_nom'])) { |
$imgAAjouter = array(); |
$imgAAjouter['id_utilisateur'] = $id_utilisateur; |
$imgAAjouter['id_obs'] = $ordreObs; |
$imgAAjouter['nom'] = $obs['image_nom']; |
$imgAAjouter['b64'] = $obs['image_b64']; |
$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) { |
//echo '<pre>'.print_r($image,true).'</pre>';exit; |
$nomFichierImg = $this->traiterNomFichierImage($image['nom']); |
$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg"; |
// Si l'image est transmise en base 64 |
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) { |
$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $image['id_obs']); |
if ($liaisonOk === true) { |
$img_a_taguer_ids[] = $idImg; |
if(isset($image['tags'])) { |
$this->correspondanceIdImgTags[$idImg] = $image['tags']; |
} |
} |
} |
} |
} else { |
$nomFichierImg = $this->traiterNomFichierImage($img['nom']); |
$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg"; |
// Si l'image est transmise en base 64 |
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) { |
$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $img['id_obs']); |
if ($liaisonOk === true) { |
$img_a_taguer_ids[] = $idImg; |
if(isset($img['tags'])) { |
$this->correspondanceIdImgTags[$idImg] = $img['tags']; |
} |
} |
} |
} |
} |
|
private function affecterChampsManquantsUtilisateur($utilisateur) { |
$gestion_utilisateur = new User($this->config); |
$infos_complementaires = $gestion_utilisateur->obtenirUtilisateurSiExiste($utilisateur['courriel']); |
254,7 → 311,15 |
} |
} |
} |
// Liaison des tags spécifiques à chaque image s'il y en a |
if(count($this->correspondanceIdImgTags) > 0) { |
foreach ($this->correspondanceIdImgTags as $id_img => $tags) { |
if($tags != null && !empty($tags)) { |
$this->lierImgAMotsCles(array($id_img), $tags); |
} |
} |
} |
} |
|
private function lierImgAMotsCles($images_ids, $tags) { |
$idTagParent = self::IMG_RACINE_ID; |