1,9 → 1,9 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Service de liaisons d'images à des observations. |
* Le service lie une ou plusieurs images à une ou plusieurs observations |
* Le service renvoie les observations liées à une image |
* Service de liaisons de mots clés à des observations. |
* Le service lie une ou plusieurs mots clés à une ou plusieurs observations |
* |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* |
27,45 → 27,41 |
public function getElement($uid) { |
|
} |
|
// met à jour les associations des mots clés des observations |
public function updateElement($uid,$pairs) { |
|
public function createElement($pairs) { |
|
// Controle detournement utilisateur |
session_start(); |
if (($_SESSION['user'] != '') && $_SESSION['user']['name'] != $uid[0]) { |
print "Acces interdit"; |
return; |
} |
$this->controleUtilisateur($pairs['ce_utilisateur']); |
|
if (!isset($pairs['mots_cles']) || !isset($uid[1])) { |
if (!isset($pairs['mots_cles']) || !isset($pairs['observations']) || !isset($pairs['ce_utilisateur'])) { |
return; |
} |
|
if (isset($pairs['action'])) { |
$action = $pairs['action']; |
|
$observations = explode(',',$pairs['observations']); |
$mots_cles = explode(',',$pairs['mots_cles']); |
|
$gestionnaire_observation = new RechercheObservation($this->config); |
$ids_obs = $gestionnaire_observation->obtenirIdObservationsPourOrdre($pairs['ce_utilisateur'],$observations); |
|
$requete_liaison_mots_cles = 'INSERT INTO cel_obs_mots_cles '. |
'(id_observation, id_mot_cle_utilisateur)'. |
'VALUES ('; |
|
foreach($ids_obs as $obs) { |
foreach($mots_cles as $mot) { |
$requete_liaison_mots_cles .= '('.$obs.','.$mot.')'; |
} |
$this->regenererIndexTexteMotCleObservation($obs, $pairs['ce_utilisateur']); |
} |
|
$valeur = $pairs['mots_cles']; |
$valeur = $this->nettoyerMotsCles($valeur); |
$requete = 'UPDATE cel_inventory '. |
"SET mots_cles = REPLACE(CONCAT(IFNULL(mots_cles, ''), '$valeur;'), 'null', '') ". |
"WHERE ordre IN ({$uid[1]}) AND identifiant = ".$this->proteger($uid[0]); |
|
$resultat = $this->executerRequeteSimple($requete); |
$resultat_liaison_mots_cles = $this->executer($requete_liaison_mots_cles); |
|
$retour = false; |
if ($resultat) { |
$retour = true; |
} else { |
$this->logger('CEL_bugs', "Erreur de mise à jour des mots clés d'une obs : $requete"); |
if(!$resultat_liaison_mots_cles) { |
$this->logger('CEL_bugs', "Erreur d'ajout de mots clés à des obs : ".$requete_liaison_mots_cles); |
} |
|
$tableau_id_obs = split(',', $uid[1]); |
foreach($tableau_id_obs as $ordre_obs) { |
$this->regenererIndexTexteMotCleObservation($ordre_obs, $uid[0]); |
} |
|
return $retour; |
return $resultat_liaison_mots_cles; |
} |
|
public function deleteElement($uid){ |
73,56 → 69,66 |
|
// Controle detournement utilisateur |
session_start(); |
if ($_SESSION['user'] != '' && $_SESSION['user']['name'] != $uid[0]) { |
print "Acces interdit"; |
} else { |
if (!isset($uid[2]) || !isset($uid[1])) { |
print 'pas de mots clés'; |
} else { |
$mot_cle = $this->nettoyerMotsCles($uid[2]); |
$mot_cle = $this->proteger($mot_cle); |
$this->controleUtilisateur($uid[0]); |
|
if (!isset($uid[0]) || !isset($uid[1]) || !isset($uid[2])) { |
return; |
} |
|
$requete = 'UPDATE cel_inventory '. |
"SET mots_cles = REPLACE(REPLACE(mots_cles, '$mot_cle', ''), ';;', ';') ". |
"WHERE ordre IN ({$uid[1]}) ". |
" AND identifiant = '".$DB->escapeSimple($uid[0])."'"; |
$resultat = $this->executerRequeteSimple($requete); |
$mots_cle = $this->nettoyerMotsCles($uid[2]); |
$mots_cle = $this->proteger($mots_cle); |
|
if ($resultat) { |
$retour = true; |
} else { |
$e = "Erreur de suppression des mots clés de plusieurs observations : $requete"; |
$this->logger('CEL_bugs', $e); |
} |
} |
$ordre_observations = $uid[1]; |
$id_utilisateur = $uid[0]; |
|
$gestionnaire_observation = new RechercheObservation($this->config); |
$ids_obs = $gestionnaire_observation->obtenirIdObservationsPourOrdre($id_utilisateur,$ordre_observations); |
|
$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_obs_mots_cles WHERE '; |
'id_observation IN ('.implode(',',$ids_obs).') '. |
'AND id_mot_cle_utilisateur IN ('.$mots_cle.')'; |
|
$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle); |
|
if ($resultat_suppression_mot_cle) { |
$retour = true; |
} else { |
$message = "Erreur de suppression des mots clés de plusieurs observations : $requete"; |
$this->logger($message); |
} |
|
foreach($ids_obs as $obs) { |
$this->regenererIndexTexteMotCleObservation($obs, $id_utilisateur); |
} |
|
return $retour; |
} |
|
private function regenererIndexTexteMotCleObservation($ordre_observation, $identifiant_utilisateur) { |
$mots_cles_obs = $this->obtenirMotsClesObs($ordre_observation, $identifiant_utilisateur); |
private function regenererIndexTexteMotCleObservation($id_observation, $identifiant_utilisateur) { |
$mots_cles_obs = $this->obtenirMotsClesObs($id_observation, $identifiant_utilisateur); |
|
if (count($mots_cles_obs) > 0) { |
$tableau_texte_mots_cles = $this->obtenirMotClesTexte($mots_cles_obs[0]['mots_cles'], $identifiant_utilisateur); |
$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($tableau_texte_mots_cles); |
$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $ordre_observation, $identifiant_utilisateur); |
$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_observation, $identifiant_utilisateur); |
} |
} |
|
private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $ordre_observation, $identifiant_utilisateur) { |
$requete = 'UPDATE cel_inventory '. |
//TODO : a refaire |
|
private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_observation, $identifiant_utilisateur) { |
$requete = 'UPDATE cel_obs '. |
'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '. |
'WHERE ordre = '.$this->proteger($ordre_observation). |
'WHERE id_observation = '.$this->proteger($id_observation). |
' AND identifiant = '.$this->proteger($identifiant_utilisateur); |
|
$this->executerRequeteSimple($requete); |
} |
|
private function obtenirMotsClesObs($ordre_observation, $identifiant_utilisateur) { |
$requete = 'SELECT mots_cles '. |
'FROM cel_inventory '. |
'WHERE ordre = '.$this->proteger($ordre_observation). |
private function obtenirMotsClesTexte($id_observation, $identifiant_utilisateur) { |
$requete = 'SELECT mots_cles_texte '. |
'FROM cel_obs '. |
'WHERE id_observation = '.$this->proteger($id_observation). |
' AND identifiant = '.$this->proteger($identifiant_utilisateur); |
|
$resultats = $this->executerRequete($requete); |
130,18 → 136,6 |
return $resultats; |
} |
|
private function obtenirMotClesTexte($chaine_mot_cle, $identifiant_utilisateur) { |
$chaine_mot_cle_obs = $this->formaterChaineMotClePourConditionSql($chaine_mot_cle); |
|
$requete = 'SELECT cmc_mot_cle FROM cel_mots_cles_obs '. |
'WHERE cmc_id_mot_cle_utilisateur IN ('.$chaine_mot_cle_obs.') '. |
'AND cmc_id_proprietaire = '.$this->proteger($identifiant_utilisateur); |
|
$resultat = $this->executerRequete($requete); |
|
return $resultat; |
} |
|
private function formaterChaineMotClePourConditionSql($chaine_mot_cle_obs) { |
$chaine_mot_cle_obs = $this->nettoyerMotsCles($chaine_mot_cle_obs); |
$chaine_mot_cle_obs = str_replace(self::SEPARATEUR_MOT_CLE_ID, ',', $chaine_mot_cle_obs); |
197,7 → 191,7 |
|
$requete_values = rtrim($requete_values, ','); |
if (trim($requete_values) != '') { |
$requete = 'INSERT IGNORE INTO cel_obs_mots_cles (ce_observation, ce_mot_cle) '. |
$requete = 'INSERT IGNORE INTO cel_obs_mots_cles (id_observation, id_mot_cle_utilisateur) '. |
'VALUES '.$requete_values.' '; |
echo $requete.'<br />'; |
$i++; |