Subversion Repositories eFlore/Applications.cel

Rev

Rev 1310 | Rev 2045 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
2
/**
1872 raphael 3
 * @package   jrest
4
 * @author    Aurélien Peronnet <aurelien@tela-botania.org>
5
 * @copyright 2010, 2013 Tela-Botanica
6
 * @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
7
 *
930 aurelien 8
 * Service de liaisons de mots clés à des observations.
9
 * Le service lie une ou plusieurs mots clés à une ou plusieurs observations
1872 raphael 10
 */
11
 
819 jpm 12
class InventoryKeyWordObsLink extends Cel {
936 aurelien 13
 
1872 raphael 14
	public function getElement($uid) { }
819 jpm 15
 
930 aurelien 16
	public function createElement($pairs) {
17
 
416 aurelien 18
		// Controle detournement utilisateur
930 aurelien 19
		$this->controleUtilisateur($pairs['ce_utilisateur']);
819 jpm 20
 
930 aurelien 21
		if (!isset($pairs['mots_cles']) || !isset($pairs['observations']) || !isset($pairs['ce_utilisateur'])) {
819 jpm 22
			return;
23
		}
930 aurelien 24
 
1302 aurelien 25
		$ids_obs = explode(',',$pairs['observations']);
930 aurelien 26
		$mots_cles = explode(',',$pairs['mots_cles']);
27
 
936 aurelien 28
		$gestionnaire_mots_cles = new LiaisonMotsCles($this->config,'obs');
958 aurelien 29
		$liaison_mot_cle = $gestionnaire_mots_cles->ajouterLiaisonMotsCles($pairs['ce_utilisateur'],$ids_obs, $mots_cles);
930 aurelien 30
 
936 aurelien 31
		return $liaison_mot_cle;
416 aurelien 32
	}
33
 
819 jpm 34
	public function deleteElement($uid){
35
		// Controle detournement utilisateur
930 aurelien 36
		$this->controleUtilisateur($uid[0]);
37
 
1872 raphael 38
		if (!isset($uid[0]) || !isset($uid[1]) || !isset($uid[2]) || ! self::estUnIdentifiantMotCle($uid[2])) {
39
			return FALSE;
930 aurelien 40
		}
1872 raphael 41
		return self::unlinkKeyword($this->config, 'obs', explode(',',$uid[1]), $uid[0], $uid[2]);
42
	}
43
 
44
	static function unlinkKeyword($config, $type /* = obs|images */, Array $obsIds, $uid, $keywordIds /* comma-separated string */) {
45
		if($type != 'obs' && $type != 'images') return FALSE;
819 jpm 46
 
1872 raphael 47
		$gestionnaire_mots_cles = new LiaisonMotsCles($config, $type);
48
		$mots_cles = explode(',', LiaisonMotsCles::nettoyerMotsCles($keywordIds));
49
		return $gestionnaire_mots_cles->supprimerLiaisonMotsClesEtRegenererIndexTexte($uid, $obsIds, $mots_cles);
50
	}
416 aurelien 51
 
1872 raphael 52
	static function estUnIdentifiantMotCle($chaine) {
53
		return trim($chaine) != '' && preg_match('/[0-9A-Z]+\.[0-9A-Z]+/i', $chaine);
769 aurelien 54
	}
936 aurelien 55
 
416 aurelien 56
}