Line 21... |
Line 21... |
21 |
private $tagsImg = null;
|
21 |
private $tagsImg = null;
|
22 |
private $champsEtendusObs = null;
|
22 |
private $champsEtendusObs = null;
|
23 |
private $utilisateur_id = null;
|
23 |
private $utilisateur_id = null;
|
24 |
const DUREE_DE_VIE_IMG = 86400;// 3600 * 24 * 2 = 172 800
|
24 |
const DUREE_DE_VIE_IMG = 86400;// 3600 * 24 * 2 = 172 800
|
25 |
const ARRET_SERVICE = false;// Permet de bloquer le service en cas de problème sur le serveur
|
25 |
const ARRET_SERVICE = false;// Permet de bloquer le service en cas de problème sur le serveur
|
26 |
|
26 |
|
27 |
private $correspondanceIdImgTags = array();
|
27 |
private $correspondanceIdImgTags = array();
|
Line 28... |
Line 28... |
28 |
|
28 |
|
29 |
public function createElement($requeteDonnees) {
|
29 |
public function createElement($requeteDonnees) {
|
30 |
if (self::ARRET_SERVICE) {
|
30 |
if (self::ARRET_SERVICE) {
|
Line 46... |
Line 46... |
46 |
if (array_key_exists('courriel', $utilisateur)) {
|
46 |
if (array_key_exists('courriel', $utilisateur)) {
|
47 |
$this->debug[] = 'Courriel : ok';
|
47 |
$this->debug[] = 'Courriel : ok';
|
48 |
$utilisateur = $this->affecterChampsManquantsUtilisateur($utilisateur);
|
48 |
$utilisateur = $this->affecterChampsManquantsUtilisateur($utilisateur);
|
49 |
extract($utilisateur);
|
49 |
extract($utilisateur);
|
50 |
$this->utilisateur_id = $id_utilisateur;
|
50 |
$this->utilisateur_id = $id_utilisateur;
|
51 |
$ordre = $this->getMaxOrdre($id_utilisateur);
|
51 |
$ordre = $this->getMaxOrdre($id_utilisateur);
|
52 |
if (!is_null($ordre)) {
|
52 |
if (!is_null($ordre)) {
|
53 |
$requeteDonnees = $this->supprimerSlashesProfond($requeteDonnees);
|
53 |
$requeteDonnees = $this->supprimerSlashesProfond($requeteDonnees);
|
54 |
// Triage et manipulation des données
|
54 |
// Triage et manipulation des données
|
55 |
$observations = array();
|
55 |
$observations = array();
|
56 |
foreach ($requeteDonnees as $cle => $obs) {
|
56 |
foreach ($requeteDonnees as $cle => $obs) {
|
Line 89... |
Line 89... |
89 |
|
89 |
|
90 |
$obsAAjouter['transmission'] = '1';
|
90 |
$obsAAjouter['transmission'] = '1';
|
91 |
$obsAAjouter['date_creation'] = date('Y-m-d H:i:s');
|
91 |
$obsAAjouter['date_creation'] = date('Y-m-d H:i:s');
|
92 |
$obsAAjouter['date_modification'] = $obsAAjouter['date_creation'];
|
92 |
$obsAAjouter['date_modification'] = $obsAAjouter['date_creation'];
|
93 |
$obsAAjouter['date_transmission'] = $obsAAjouter['date_creation'];
|
93 |
$obsAAjouter['date_transmission'] = $obsAAjouter['date_creation'];
|
94 |
|
94 |
|
Line 95... |
Line 95... |
95 |
$this->champsEtendusObs[$ordreObs] = isset($obs['obs_etendue']) ? $obs['obs_etendue'] : array();
|
95 |
$this->champsEtendusObs[$ordreObs] = isset($obs['obs_etendue']) ? $obs['obs_etendue'] : array();
|
96 |
|
96 |
|
97 |
$imgAAjouter = null;
|
97 |
$imgAAjouter = null;
|
Line 120... |
Line 120... |
120 |
if ($this->executerRequeteSimple($requete) === false) {
|
120 |
if ($this->executerRequeteSimple($requete) === false) {
|
121 |
$this->messages[] = "Un problème est survenu lors de l'insertion de l'obs dans la base de données.";
|
121 |
$this->messages[] = "Un problème est survenu lors de l'insertion de l'obs dans la base de données.";
|
122 |
} else {
|
122 |
} else {
|
123 |
$obs_a_taguer_ordres[] = trim($obs['ordre'], "'");
|
123 |
$obs_a_taguer_ordres[] = trim($obs['ordre'], "'");
|
124 |
}
|
124 |
}
|
125 |
|
125 |
|
126 |
// si le formulaire contient une image on la traite
|
126 |
// si le formulaire contient une image on la traite
|
127 |
if ($img != null) {
|
127 |
if ($img != null) {
|
128 |
$this->nettoyerImagesUploades();
|
128 |
$this->nettoyerImagesUploades();
|
129 |
$img_a_taguer_ids = $this->stockerImagesEtLierAObs($img, $id_utilisateur, $utilisateur);
|
129 |
$img_a_taguer_ids = $this->stockerImagesEtLierAObs($img, $id_utilisateur, $utilisateur);
|
130 |
}
|
130 |
}
|
131 |
}
|
131 |
}
|
132 |
|
132 |
|
133 |
$obs_a_taguer_ids = $this->obtenirIdsObsPourTableauOrdres($this->utilisateur_id, $obs_a_taguer_ordres);
|
133 |
$obs_a_taguer_ids = $this->obtenirIdsObsPourTableauOrdres($this->utilisateur_id, $obs_a_taguer_ordres);
|
134 |
$this->taguerObs($obs_a_taguer_ids);
|
134 |
$this->taguerObs($obs_a_taguer_ids);
|
135 |
$this->taguerImg($img_a_taguer_ids);
|
135 |
$this->taguerImg($img_a_taguer_ids);
|
136 |
|
136 |
|
137 |
// Les champs taggés sont des champs supplémentaires stockés sous forme de clé => valeur
|
137 |
// Les champs taggés sont des champs supplémentaires stockés sous forme de clé => valeur
|
138 |
$this->ajouterChampsEtendusObs($obs_a_taguer_ids, $this->champsEtendusObs);
|
138 |
$this->ajouterChampsEtendusObs($obs_a_taguer_ids, $this->champsEtendusObs);
|
139 |
} else {
|
139 |
} else {
|
140 |
$this->messages[] = "Un nouveau numéro d'ordre d'observation n'a pu être généré.";
|
140 |
$this->messages[] = "Un nouveau numéro d'ordre d'observation n'a pu être généré.";
|
141 |
}
|
141 |
}
|
Line 150... |
Line 150... |
150 |
}
|
150 |
}
|
151 |
$msg = (count($this->messages) > 0) ? 'erreur' : 'ok';
|
151 |
$msg = (count($this->messages) > 0) ? 'erreur' : 'ok';
|
152 |
$retour = (object) array('msg' => $msg);
|
152 |
$retour = (object) array('msg' => $msg);
|
153 |
$this->envoyerJson($retour);
|
153 |
$this->envoyerJson($retour);
|
154 |
}
|
154 |
}
|
155 |
|
155 |
|
156 |
private function ajouterChampsEtendusObs($obs_ids, $obs_a_champs_etendus) {
|
156 |
private function ajouterChampsEtendusObs($obs_ids, $obs_a_champs_etendus) {
|
157 |
$champs_etendus_obs = array();
|
157 |
$champs_etendus_obs = array();
|
- |
|
158 |
$gestionChampsEtendus = new GestionChampsEtendus($this->config, 'obs');
|
158 |
|
159 |
|
159 |
foreach($obs_ids as $id_obs) {
|
160 |
foreach ($obs_ids as $id_obs) {
|
160 |
$champs = array_shift($obs_a_champs_etendus);
|
161 |
$champs = array_shift($obs_a_champs_etendus);
|
161 |
if($champs != null && is_array($champs)) {
|
162 |
if ($champs != null && is_array($champs)) {
|
162 |
foreach($champs as $champ_etendu => $valeur) {
|
163 |
foreach ($champs as $infosChamp) {
|
- |
|
164 |
$cle = isset($infosChamp['cle']) ? $infosChamp['cle'] : '';
|
- |
|
165 |
$label = isset($infosChamp['label']) ? $infosChamp['label'] : '';
|
- |
|
166 |
$valeur = isset($infosChamp['valeur']) ? $infosChamp['valeur'] : '';
|
- |
|
167 |
|
- |
|
168 |
if (empty($cle) && !empty($label)) {
|
- |
|
169 |
$cle = $gestionChampsEtendus->transformerLabelEnCle($label);
|
- |
|
170 |
}
|
- |
|
171 |
|
- |
|
172 |
if (!empty($cle) && !empty($valeur)) {
|
163 |
$champs_etendus_obs[] = array(
|
173 |
$champEtendu = new ChampEtendu();
|
164 |
'id' => $id_obs,
|
174 |
$champEtendu->id = $id_obs;
|
165 |
'cle' => $champ_etendu,
|
175 |
$champEtendu->cle = $cle;
|
- |
|
176 |
$champEtendu->label = empty($label) ? $cle : $label;
|
166 |
'valeur' => $valeur
|
177 |
$champEtendu->valeur = $valeur;
|
- |
|
178 |
|
- |
|
179 |
$champs_etendus_obs[] = $champEtendu;
|
167 |
);
|
180 |
}
|
168 |
}
|
181 |
}
|
169 |
}
|
182 |
}
|
170 |
}
|
183 |
}
|
171 |
|
- |
|
172 |
$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
|
- |
|
173 |
$ajout_champ_etendus = $gestion_champs_etendus->ajouterChampsEtendusMultiplesAElementsMultiples($champs_etendus_obs);
|
184 |
$ajout_champ_etendus = $gestionChampsEtendus->ajouterParLots($champs_etendus_obs);
|
174 |
|
- |
|
175 |
return $ajout_champ_etendus;
|
185 |
return $ajout_champ_etendus;
|
176 |
}
|
186 |
}
|
177 |
|
187 |
|
178 |
private function traiterImagesALierAObs($id_utilisateur, $ordreObs, $obs) {
|
188 |
private function traiterImagesALierAObs($id_utilisateur, $ordreObs, $obs) {
|
179 |
$imgAAjouter = null;
|
189 |
$imgAAjouter = null;
|
180 |
if(is_array($obs['image_nom'])) {
|
190 |
if (is_array($obs['image_nom'])) {
|
181 |
$imgAAjouter = array();
|
191 |
$imgAAjouter = array();
|
182 |
foreach ($obs['image_nom'] as $index => $nom_image) {
|
192 |
foreach ($obs['image_nom'] as $index => $nom_image) {
|
183 |
$image = array();
|
193 |
$image = array();
|
184 |
$image['id_utilisateur'] = $id_utilisateur;
|
194 |
$image['id_utilisateur'] = $id_utilisateur;
|
185 |
$image['id_obs'] = $ordreObs;
|
195 |
$image['id_obs'] = $ordreObs;
|
186 |
$image['nom'] = $nom_image;
|
196 |
$image['nom'] = $nom_image;
|
187 |
$image['tags'] = isset($obs['image_tag'][$index]) ? explode(',',$obs['image_tag'][$index]) : '';
|
197 |
$image['tags'] = isset($obs['image_tag'][$index]) ? explode(',',$obs['image_tag'][$index]) : '';
|
188 |
// on suppose que les b64 des images sont envoyés dans le même ordre que leurs noms
|
198 |
// on suppose que les b64 des images sont envoyés dans le même ordre que leurs noms
|
189 |
// TODO: indexer le tableau avec le nom des images
|
199 |
// TODO: indexer le tableau avec le nom des images
|
190 |
$image['b64'] = isset($obs['image_b64'][$index]) ? $obs['image_b64'][$index] : '';
|
200 |
$image['b64'] = isset($obs['image_b64'][$index]) ? $obs['image_b64'][$index] : '';
|
191 |
$this->debug[] = 'Contient B64 : '.(empty($obs['image_b64']) ? 'non' : 'oui');
|
201 |
$this->debug[] = 'Contient B64 : '.(empty($obs['image_b64']) ? 'non' : 'oui');
|
192 |
$imgAAjouter[] = $image;
|
202 |
$imgAAjouter[] = $image;
|
193 |
}
|
203 |
}
|
194 |
} else {
|
204 |
} else {
|
195 |
if (!empty($obs['image_nom'])) {
|
205 |
if (!empty($obs['image_nom'])) {
|
196 |
$imgAAjouter = array();
|
206 |
$imgAAjouter = array();
|
Line 200... |
Line 210... |
200 |
//$imgAAjouter['tags'] = isset($obs['image_tag']) ? explode(',',$obs['image_tag']) : '';
|
210 |
//$imgAAjouter['tags'] = isset($obs['image_tag']) ? explode(',',$obs['image_tag']) : '';
|
201 |
$imgAAjouter['b64'] = isset($obs['image_b64']) ? $obs['image_b64'] : array();
|
211 |
$imgAAjouter['b64'] = isset($obs['image_b64']) ? $obs['image_b64'] : array();
|
202 |
$this->debug[] = 'Contient B64 : '.(empty($obs['image_b64']) ? 'non' : 'oui');
|
212 |
$this->debug[] = 'Contient B64 : '.(empty($obs['image_b64']) ? 'non' : 'oui');
|
203 |
}
|
213 |
}
|
204 |
}
|
214 |
}
|
205 |
|
215 |
|
206 |
return $imgAAjouter;
|
216 |
return $imgAAjouter;
|
207 |
}
|
217 |
}
|
208 |
|
218 |
|
209 |
private function stockerImagesEtLierAObs($img, $id_utilisateur, $utilisateur) {
|
219 |
private function stockerImagesEtLierAObs($img, $id_utilisateur, $utilisateur) {
|
- |
|
220 |
$img_a_taguer_ids = array();
|
210 |
if(!isset($img['nom']) && is_array($img)) {
|
221 |
if (!isset($img['nom']) && is_array($img)) {
|
211 |
foreach($img as $index => $image) {
|
222 |
foreach ($img as $index => $image) {
|
212 |
$nomFichierImg = $this->traiterNomFichierImage($image['nom']);
|
223 |
$nomFichierImg = $this->traiterNomFichierImage($image['nom']);
|
213 |
$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
|
224 |
$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
|
214 |
// Si l'image est transmise en base 64
|
225 |
// Si l'image est transmise en base 64
|
215 |
if (empty($image['b64']) === false) {
|
226 |
if (empty($image['b64']) === false) {
|
216 |
$this->transformerBase64enFichier($cheminImage, $image['b64']);
|
227 |
$this->transformerBase64enFichier($cheminImage, $image['b64']);
|
217 |
}
|
228 |
}
|
218 |
|
229 |
|
219 |
$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
|
230 |
$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
|
220 |
$idImg = $this->ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImg);
|
231 |
$idImg = $this->ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImg);
|
221 |
if ($idImg !== false) {
|
232 |
if ($idImg !== false) {
|
222 |
$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $image['id_obs']);
|
233 |
$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $image['id_obs']);
|
223 |
if ($liaisonOk === true) {
|
234 |
if ($liaisonOk === true) {
|
224 |
$img_a_taguer_ids[] = $idImg;
|
235 |
$img_a_taguer_ids[] = $idImg;
|
225 |
if(isset($image['tags'])) {
|
236 |
if (isset($image['tags'])) {
|
226 |
$this->correspondanceIdImgTags[$idImg] = $image['tags'];
|
237 |
$this->correspondanceIdImgTags[$idImg] = $image['tags'];
|
227 |
}
|
238 |
}
|
228 |
}
|
239 |
}
|
229 |
}
|
240 |
}
|
230 |
}
|
241 |
}
|
Line 233... |
Line 244... |
233 |
$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
|
244 |
$cheminImage = $this->config['cel']['chemin_stockage_temp']."/$nomFichierImg";
|
234 |
// Si l'image est transmise en base 64
|
245 |
// Si l'image est transmise en base 64
|
235 |
if (empty($img['b64']) === false) {
|
246 |
if (empty($img['b64']) === false) {
|
236 |
$this->transformerBase64enFichier($cheminImage, $img['b64']);
|
247 |
$this->transformerBase64enFichier($cheminImage, $img['b64']);
|
237 |
}
|
248 |
}
|
238 |
|
249 |
|
239 |
$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
|
250 |
$this->debug[] = 'Nom fichier img debut :'.$nomFichierImg;
|
240 |
$idImg = $this->ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImg);
|
251 |
$idImg = $this->ajouterImageSurDdEtBdd($utilisateur, $cheminImage, $nomFichierImg);
|
241 |
if ($idImg !== false) {
|
252 |
if ($idImg !== false) {
|
242 |
$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $img['id_obs']);
|
253 |
$liaisonOk = $this->lierObsEtImg($idImg, $id_utilisateur, $img['id_obs']);
|
243 |
if ($liaisonOk === true) {
|
254 |
if ($liaisonOk === true) {
|
244 |
$img_a_taguer_ids[] = $idImg;
|
255 |
$img_a_taguer_ids[] = $idImg;
|
245 |
if(isset($img['tags'])) {
|
256 |
if (isset($img['tags'])) {
|
246 |
$this->correspondanceIdImgTags[$idImg] = $img['tags'];
|
257 |
$this->correspondanceIdImgTags[$idImg] = $img['tags'];
|
247 |
}
|
258 |
}
|
248 |
}
|
259 |
}
|
249 |
}
|
260 |
}
|
250 |
}
|
261 |
}
|
251 |
|
262 |
|
252 |
return $img_a_taguer_ids;
|
263 |
return $img_a_taguer_ids;
|
253 |
}
|
264 |
}
|
254 |
|
265 |
|
255 |
private function affecterChampsManquantsUtilisateur($utilisateur) {
|
266 |
private function affecterChampsManquantsUtilisateur($utilisateur) {
|
256 |
$gestion_utilisateur = new User($this->config);
|
267 |
$gestion_utilisateur = new User($this->config);
|
257 |
$infos_complementaires = $gestion_utilisateur->obtenirUtilisateurSiExiste($utilisateur['courriel']);
|
268 |
$infos_complementaires = $gestion_utilisateur->obtenirUtilisateurSiExiste($utilisateur['courriel']);
|
258 |
if(!isset($utilisateur['id_utilisateur']) || trim($utilisateur['id_utilisateur']) == '') {
|
269 |
if(!isset($utilisateur['id_utilisateur']) || trim($utilisateur['id_utilisateur']) == '') {
|
259 |
$utilisateur['id_utilisateur'] = ($infos_complementaires['connecte']) ? $infos_complementaires['id_utilisateur'] : $utilisateur['courriel'];
|
270 |
$utilisateur['id_utilisateur'] = ($infos_complementaires['connecte']) ? $infos_complementaires['id_utilisateur'] : $utilisateur['courriel'];
|
Line 411... |
Line 422... |
411 |
$this->messages[] = "La requête de liaison de l'obs $id_obs à l'image $id_image pour l'utilisateur $id_utilisateur a échouée.";
|
422 |
$this->messages[] = "La requête de liaison de l'obs $id_obs à l'image $id_image pour l'utilisateur $id_utilisateur a échouée.";
|
412 |
$liaison = false;
|
423 |
$liaison = false;
|
413 |
}
|
424 |
}
|
414 |
return $liaison;
|
425 |
return $liaison;
|
415 |
}
|
426 |
}
|
416 |
|
427 |
|
417 |
private function obtenirIdObsPourIdentifiantEtOrdre($id_utilisateur, $ordre) {
|
428 |
private function obtenirIdObsPourIdentifiantEtOrdre($id_utilisateur, $ordre) {
|
418 |
|
429 |
|
419 |
$id_utilisateur = $this->proteger($id_utilisateur);
|
430 |
$id_utilisateur = $this->proteger($id_utilisateur);
|
420 |
$ordre = $this->proteger($ordre);
|
431 |
$ordre = $this->proteger($ordre);
|
421 |
|
432 |
|
422 |
$requete = 'SELECT id_observation '.
|
433 |
$requete = 'SELECT id_observation '.
|
423 |
'FROM cel_obs '.
|
434 |
'FROM cel_obs '.
|
424 |
"WHERE ce_utilisateur = $id_utilisateur ".
|
435 |
"WHERE ce_utilisateur = $id_utilisateur ".
|
425 |
" AND ordre = $ordre ";
|
436 |
" AND ordre = $ordre ";
|
Line 426... |
Line 437... |
426 |
|
437 |
|
427 |
$resultat = $this->executerRequete($requete);
|
438 |
$resultat = $this->executerRequete($requete);
|
428 |
|
439 |
|
429 |
$id_obs = (count($resultat) > 0) ? $resultat[0]['id_observation'] : false;
|
440 |
$id_obs = (count($resultat) > 0) ? $resultat[0]['id_observation'] : false;
|
430 |
return $id_obs;
|
441 |
return $id_obs;
|
431 |
}
|
442 |
}
|
432 |
|
443 |
|
433 |
private function obtenirIdsObsPourTableauOrdres($id_utilisateur, $ordres) {
|
444 |
private function obtenirIdsObsPourTableauOrdres($id_utilisateur, $ordres) {
|
434 |
$id_utilisateur = $this->proteger($id_utilisateur);
|
445 |
$id_utilisateur = $this->proteger($id_utilisateur);
|
435 |
$ordres = array_map(array($this,'proteger'), $ordres);
|
446 |
$ordres = array_map(array($this,'proteger'), $ordres);
|
436 |
|
447 |
|
437 |
$requete = 'SELECT id_observation '.
|
448 |
$requete = 'SELECT id_observation '.
|
438 |
'FROM cel_obs '.
|
449 |
'FROM cel_obs '.
|
439 |
"WHERE ce_utilisateur = $id_utilisateur ".
|
450 |
"WHERE ce_utilisateur = $id_utilisateur ".
|
440 |
" AND ordre IN (".implode(',',$ordres).") ";
|
451 |
" AND ordre IN (".implode(',',$ordres).") ";
|
441 |
|
452 |
|
442 |
$resultat = $this->executerRequete($requete);
|
453 |
$resultat = $this->executerRequete($requete);
|
443 |
$ids = array();
|
454 |
$ids = array();
|
444 |
foreach($resultat as $id) {
|
455 |
foreach($resultat as $id) {
|
445 |
$ids[] = $id['id_observation'];
|
456 |
$ids[] = $id['id_observation'];
|