Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1497 → Rev 1498

/trunk/jrest/services/CelWidgetSaisie.php
22,6 → 22,8
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) {
if (self::ARRET_SERVICE) {
45,10 → 47,9
$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
$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,21 → 123,7
// 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->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;
}
}
$this->stockerImagesEtLierAObs($img, $id_utilisateur, $utilisateur);
}
}
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,6 → 311,14
}
}
}
// 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) {