| Line 23... | 
            Line 23... | 
          
          
            | 23 | 
            	
  | 
            23 | 
            	
  | 
          
          
            | 24 | 
            	const SEPARATEUR_MOT_CLE_TEXTE = '##';
  | 
            24 | 
            	const SEPARATEUR_MOT_CLE_TEXTE = '##';
  | 
          
          
            | Line 25... | 
            Line 25... | 
          
          
            | 25 | 
            	private $mode = 'obs';
  | 
            25 | 
            	private $mode = 'obs';
  | 
          
          
            | - | 
               | 
            26 | 
            	
  | 
          
          
            | 26 | 
            	
  | 
            27 | 
            	public function LiaisonMotsCles($config, $mode) {
  | 
          
          
            | 27 | 
            	public function LiaisonMotsCles($config, $mode) {
  | 
            28 | 
            		parent::__construct($config);
  | 
          
          
            | Line 28... | 
            Line 29... | 
          
          
            | 28 | 
            		$this->mode = $mode;
  | 
            29 | 
            		$this->mode = $mode;
  | 
          
          
            | Line -... | 
            Line 30... | 
          
          
            | - | 
               | 
            30 | 
            	}
  | 
          
          
            | - | 
               | 
            31 | 
            	
  | 
          
          
            | 29 | 
            	}
  | 
            32 | 
            	public function ajouterLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
  | 
          
          
            | 30 | 
            	
  | 
            33 | 
            		
  | 
          
          
            | 31 | 
            	public function ajouterLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
  | 
            34 | 
            		// le mot clé ignore est spécifique mysql, mais il est utilisé ici pour des raisons
  | 
          
          
            | Line 32... | 
            Line 35... | 
          
          
            | 32 | 
            		
  | 
            35 | 
            		// de performance, à remplacer par un test sur les mots clés déjà existant si ça gène
  | 
          
          
            | 33 | 
            		$requete_liaison_mots_cles = 'INSERT INTO cel_'.$this->mode.'_mots_cles '.
  | 
            36 | 
            		$requete_liaison_mots_cles = 'INSERT IGNORE INTO cel_'.$this->mode.'_mots_cles '.
  | 
          
          
            | 34 | 
            								   '(id_observation, id_mot_cle_utilisateur)'.
  | 
            37 | 
            								   '(id_observation, id_mot_cle_utilisateur) '.
  | 
          
          
            | 35 | 
            								   'VALUES (';
  | 
            38 | 
            								   'VALUES ';
  | 
          
          
            | 36 | 
            								   
  | 
            39 | 
            								   
  | 
          
          
            | 37 | 
            		foreach($ids_images_ou_obs as $id_image_ou_obs) {
  | 
            40 | 
            		foreach($ids_images_ou_obs as $id_image_ou_obs) {
  | 
          
          
            | - | 
               | 
            41 | 
            			foreach($mots_cles as $mot) {
  | 
          
          
            | - | 
               | 
            42 | 
            				$requete_liaison_mots_cles .= '('.$id_image_ou_obs.','.$this->proteger($mot).'),';
  | 
          
          
            | Line 38... | 
            Line 43... | 
          
          
            | 38 | 
            			foreach($mots_cles as $mot) {
  | 
            43 | 
            			}
  | 
          
          
            | Line 39... | 
            Line 44... | 
          
          
            | 39 | 
            				$requete_liaison_mots_cles .= '('.$id_image_ou_obs.','.$mot.')';
  | 
            44 | 
            			$this->regenererIndexTexteMotCle($id_image_ou_obs, $id_utilisateur);
  | 
          
          
            | 40 | 
            			}
  | 
            45 | 
            		}
  | 
          
          
            | Line 52... | 
            Line 57... | 
          
          
            | 52 | 
            	
  | 
            57 | 
            	
  | 
          
          
            | Line 53... | 
            Line 58... | 
          
          
            | 53 | 
            	public function supprimerLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
  | 
            58 | 
            	public function supprimerLiaisonMotsCles($id_utilisateur, $ids_images_ou_obs, $mots_cles) {
  | 
          
          
            | Line 54... | 
            Line 59... | 
          
          
            | 54 | 
            		
  | 
            59 | 
            		
  | 
          
          
            | 55 | 
            		$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; 
  | 
            60 | 
            		$champ = ($this->mode == 'obs') ? 'id_observation' : 'id_image'; 
  | 
          
          
            | 56 | 
            		
  | 
            61 | 
            		
  | 
          
          
            | Line 57... | 
            Line 62... | 
          
          
            | 57 | 
            		$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE ';
  | 
            62 | 
            		$requete_suppression_liaison_mot_cle = 'DELETE FROM cel_'.$this->mode.'_mots_cles WHERE '.
  | 
          
          
            | Line 58... | 
            Line 63... | 
          
          
            | 58 | 
            											   $champ.' IN ('.implode(',',$ids_images_ou_obs).') '.
  | 
            63 | 
            											   $champ.' IN ('.implode(',',$ids_images_ou_obs).') '.
  | 
          
          
            | 59 | 
            											   'AND id_mot_cle_utilisateur IN ('.implode(',',$ids_images_ou_obs).')';
  | 
            64 | 
            											   'AND id_mot_cle_utilisateur IN ('.implode(',',$mots_cles).')';
  | 
          
          
            | 60 | 
            		
  | 
            65 | 
            		
  | 
          
          
            | 61 | 
            		$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
  | 
            66 | 
            		$resultat_suppression_mot_cle = $this->executer($requete_suppression_liaison_mot_cle);
  | 
          
          
            | 62 | 
            		
  | 
            67 | 
            		
  | 
          
          
            | - | 
               | 
            68 | 
            		if ($resultat_suppression_mot_cle) {
  | 
          
          
            | - | 
               | 
            69 | 
            			$retour = true;
  | 
          
          
            | 63 | 
            		if ($resultat_suppression_mot_cle) {
  | 
            70 | 
            		} else {
  | 
          
          
            | Line 64... | 
            Line 71... | 
          
          
            | 64 | 
            			$retour = true;
  | 
            71 | 
            			$message = "Erreur de suppression des mots clés de plusieurs ".$this->mode." : $requete";
  | 
          
          
            | 65 | 
            		} else {
  | 
            72 | 
            			$this->logger($message);
  | 
          
          
            | 66 | 
            			$message = "Erreur de suppression des mots clés de plusieurs ".$this->mode." : $requete";
  | 
            73 | 
            			
  | 
          
          
            | - | 
               | 
            74 | 
            			$retour = false;
  | 
          
          
            | - | 
               | 
            75 | 
            		}
  | 
          
          
            | 67 | 
            			$this->logger($message);
  | 
            76 | 
            		
  | 
          
          
            | Line 68... | 
            Line 77... | 
          
          
            | 68 | 
            		}
  | 
            77 | 
            		foreach($ids_images_ou_obs as $image_ou_obs) {
  | 
          
          
            | Line 69... | 
            Line 78... | 
          
          
            | 69 | 
            		
  | 
            78 | 
            			$this->regenererIndexTexteMotCle($image_ou_obs, $id_utilisateur);	
  | 
          
          
            | Line 70... | 
            Line 79... | 
          
          
            | 70 | 
            		foreach($ids_images_ou_obs as $image_ou_obs) {
  | 
            79 | 
            		}	
  | 
          
          
            | 71 | 
            			$this->regenererIndexTexteMotCle($image_ou_obs, $id_utilisateur);	
  | 
            80 | 
            		
  | 
          
          
            | 72 | 
            		}	
  | 
            81 | 
            		return $retour;
  | 
          
          
            | 73 | 
            	}
  | 
            82 | 
            	}
  | 
          
          
            | 74 | 
            		
  | 
            83 | 
            		
  | 
          
          
            | Line 75... | 
            Line -... | 
          
          
            | 75 | 
            	private function regenererIndexTexteMotCle($image_ou_obs, $identifiant_utilisateur) {
  | 
            - | 
               | 
          
          
            | 76 | 
            		
  | 
            84 | 
            	private function regenererIndexTexteMotCle($image_ou_obs, $identifiant_utilisateur) {
  | 
          
          
            | 77 | 
            		$mots_cles = $this->obtenirMotsCles($image_ou_obs, $identifiant_utilisateur);
  | 
            85 | 
            		
  | 
          
          
            | 78 | 
            		
  | 
            86 | 
            		$mots_cles = $this->obtenirMotsClesTexte($image_ou_obs, $identifiant_utilisateur);
  | 
          
          
            | 79 | 
            		if (count($mots_cles) > 0) {
  | 
            87 | 
            		
  | 
          
          
            | 80 | 
            			$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($mots_cles);
  | 
            88 | 
            		if (count($mots_cles) > 0) {
  | 
          
          
            | Line 81... | 
            Line 89... | 
          
          
            | 81 | 
            			$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $image_ou_obs, $identifiant_utilisateur);
  | 
            89 | 
            			$mots_cles_texte_chaine = $this->formaterTableauMotCleTextePourInsertion($mots_cles);
  | 
          
          
            | 82 | 
            		}
  | 
            90 | 
            			$this->executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $image_ou_obs, $identifiant_utilisateur);
  | 
          
          
            | Line 83... | 
            Line 91... | 
          
          
            | 83 | 
            	}
  | 
            91 | 
            		}
  | 
          
          
            | 84 | 
            	
  | 
            92 | 
            	}
  | 
          
          
            | - | 
               | 
            93 | 
            	
  | 
          
          
            | - | 
               | 
            94 | 
            	private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_image_ou_obs, $identifiant_utilisateur) {
  | 
          
          
            | - | 
               | 
            95 | 
            		$requete = 	'UPDATE '.(($this->mode == 'obs') ? 'cel_obs' : 'cel_images').' '.
  | 
          
          
            | - | 
               | 
            96 | 
            					'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '.
  | 
          
          
            | 85 | 
            	//TODO : a refaire 
  | 
            97 | 
            					'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs).
  | 
          
          
            | 86 | 
            	private function executerRequeteMiseAJourMotCleTexte($mots_cles_texte_chaine, $id_image_ou_obs, $identifiant_utilisateur) {
  | 
            98 | 
            					' AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur);
  | 
          
          
            | - | 
               | 
            99 | 
            		
  | 
          
          
            | 87 | 
            		$requete = 	'UPDATE '.(($this->mode == 'obs') ? 'cel_observation' : 'cel_image').
  | 
            100 | 
            		return $this->executer($requete);
  | 
          
          
            | Line 88... | 
            Line 101... | 
          
          
            | 88 | 
            					'SET mots_cles_texte = '.$this->proteger($mots_cles_texte_chaine).' '.
  | 
            101 | 
            	}
  | 
          
          
            | Line 89... | 
            Line 102... | 
          
          
            | 89 | 
            					'WHERE '.(($this->mode == 'obs') ? 'id_observation' : 'id_image').' = '.$this->proteger($id_image_ou_obs).
  | 
            102 | 
            	
  | 
          
          
            | 90 | 
            					'	AND ce_utilisateur = '.$this->proteger($identifiant_utilisateur);
  | 
            103 | 
            	private function obtenirMotsClesTexte($id_image_ou_obs, $identifiant_utilisateur) {
  | 
          
          
            | Line 91... | 
            Line 104... | 
          
          
            | 91 | 
            		
  | 
            104 | 
            		$requete = 	'SELECT mot_cle '.
  | 
          
          
            | Line 115... | 
            Line 128... | 
          
          
            | 115 | 
            		$mot_cles_texte_chaine = rtrim($mot_cles_texte_chaine, self::SEPARATEUR_MOT_CLE_TEXTE);
  | 
            128 | 
            		$mot_cles_texte_chaine = rtrim($mot_cles_texte_chaine, self::SEPARATEUR_MOT_CLE_TEXTE);
  | 
          
          
            | Line 116... | 
            Line 129... | 
          
          
            | 116 | 
            		
  | 
            129 | 
            		
  | 
          
          
            | 117 | 
            		return $mot_cles_texte_chaine;
  | 
            130 | 
            		return $mot_cles_texte_chaine;
  | 
          
          
            | Line 118... | 
            Line 131... | 
          
          
            | 118 | 
            	}
  | 
            131 | 
            	}
  | 
          
          
            | 119 | 
            	
  | 
            132 | 
            	
  | 
          
          
            | 120 | 
            	private function nettoyerMotsCles($chaine) {
  | 
            133 | 
            	public function nettoyerMotsCles($chaine) {
  | 
          
          
            | Line 121... | 
            Line 134... | 
          
          
            | 121 | 
            		$valeur = str_replace('null', '', $chaine);
  | 
            134 | 
            		$valeur = str_replace('null', '', $chaine);
  | 
          
          
            | 122 | 
            		$valeur = trim($valeur, ';;');
  | 
            135 | 
            		$valeur = trim($valeur, ';;');
  |