* @copyright 2010, 2013 Tela-Botanica * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL * * Service de liaisons de mots clés à des observations. * Le service lie une ou plusieurs mots clés à une ou plusieurs observations */ class InventoryKeyWordObsLink extends Cel { public function getElement($uid) { } public function createElement($pairs) { // Controle detournement utilisateur $this->controleUtilisateur($pairs['ce_utilisateur']); if (!isset($pairs['mots_cles']) || !isset($pairs['observations']) || !isset($pairs['ce_utilisateur'])) { return; } $ids_obs = explode(',',$pairs['observations']); $mots_cles = explode(',',$pairs['mots_cles']); $gestionnaire_mots_cles = new LiaisonMotsCles($this->config,'obs'); $liaison_mot_cle = $gestionnaire_mots_cles->ajouterLiaisonMotsCles($pairs['ce_utilisateur'],$ids_obs, $mots_cles); return $liaison_mot_cle; } public function deleteElement($uid){ // Controle detournement utilisateur $this->controleUtilisateur($uid[0]); if (!isset($uid[0]) || !isset($uid[1]) || !isset($uid[2]) || ! self::estUnIdentifiantMotCle($uid[2])) { return FALSE; } return self::unlinkKeyword($this->config, 'obs', explode(',',$uid[1]), $uid[0], $uid[2]); } static function unlinkKeyword($config, $type /* = obs|images */, Array $obsIds, $uid, $keywordIds /* comma-separated string */) { if($type != 'obs' && $type != 'images') return FALSE; $gestionnaire_mots_cles = new LiaisonMotsCles($config, $type); $mots_cles = explode(',', LiaisonMotsCles::nettoyerMotsCles($keywordIds)); return $gestionnaire_mots_cles->supprimerLiaisonMotsClesEtRegenererIndexTexte($uid, $obsIds, $mots_cles); } static function estUnIdentifiantMotCle($chaine) { return trim($chaine) != '' && preg_match('/[0-9A-Z]+\.[0-9A-Z]+/i', $chaine); } }