/trunk/jrest/services/InventoryKeyWordList.php |
---|
42,27 → 42,69 |
// Controle detournement utilisateur |
$id_utilisateur = $uid[1] ; |
$this->controleUtilisateur($uid[1]); |
$this->setChampsEtTablePourSuffixe($uid[0]); |
$requete = 'SELECT mot_cle, id_mot_cle'.$this->suffixe_champ.', ce_mot_cle'.$this->suffixe_champ.'_parent '. |
'FROM cel_mots_cles'.$this->suffixe_table.' '. |
'WHERE id_utilisateur = '.Cel::db()->proteger($id_utilisateur).' '. |
'ORDER BY niveau '; |
$resultats_mots_cles = Cel::db()->requeter($requete); |
if (is_array($resultats_mots_cles)) { |
$mots_cles = array(); |
foreach($resultats_mots_cles as $mot_cle) { |
$mots_cles[] = $mot_cle; |
} |
$this->envoyerJson($mots_cles); |
return true; |
$this->envoyerJson(self::getMotsClefs($uid[1], $uid[0])); |
return TRUE; // compat: pourquoi renvoyer true si vide ? |
} |
static function getMotsClefs($uid, $type) { |
if($type == 'obs') { |
return Cel::db()->requeter(sprintf( |
'SELECT mot_cle, id_mot_cle_obs, ce_mot_cle_obs_parent'. |
' FROM cel_mots_cles_obs'. |
' WHERE id_utilisateur = %s'. |
' ORDER BY niveau', |
Cel::db()->proteger($uid))); |
} |
if($type == 'images') { |
return Cel::db()->requeter(sprintf( |
'SELECT mot_cle, id_mot_cle_image, ce_mot_cle_image_parent'. |
' FROM cel_mots_cles_images'. |
' WHERE id_utilisateur = %s'. |
' ORDER BY niveau', |
Cel::db()->proteger($uid))); |
} |
/* pour extraire un mot-clef en particulier (bien que getMotsClefId() soit plus adapté: |
array_walk($ret, |
create_function('&$val, $k, $keyword', |
'if($val["mot_cle"] != $keyword) $val = NULL;' . |
'else $val = $val["id_mot_cle_obs"];'), |
'XXX'); |
$obsKeywordIdToDetach = array_filter($ret); |
$obsKeywordIdToDetach = array_pop($obsKeywordIdToDetach); */ |
return array(); |
} |
static function getMotsClefId($uid, $type, $keyword) { |
if($type == 'obs') { |
$ret = Cel::db()->requeter(sprintf( |
'SELECT mot_cle, id_mot_cle_obs, ce_mot_cle_obs_parent'. |
' FROM cel_mots_cles_obs'. |
' WHERE id_utilisateur = %s'. |
' AND mot_cle = %s'. |
' ORDER BY niveau', |
Cel::db()->proteger($uid), |
Cel::db()->proteger($keyword) )); |
} |
if($type == 'images') { |
$ret = Cel::db()->requeter(sprintf( |
'SELECT mot_cle, id_mot_cle_image, ce_mot_cle_image_parent'. |
' FROM cel_mots_cles_images'. |
' WHERE id_utilisateur = %s'. |
' AND mot_cle = %s'. |
' ORDER BY niveau', |
Cel::db()->proteger($uid), |
Cel::db()->proteger($keyword) )); |
} |
return @$ret[0]['id_mot_cle_obs']; |
} |
public function updateElement($uid, $pairs) { |
$id_utilisateur = $uid[1]; |
$this->controleUtilisateur($uid[1]); |
/trunk/jrest/services/InventoryKeyWordImageLink.php |
---|
1,26 → 1,19 |
<?php |
// declare(encoding='UTF-8'); |
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author Aurélien Peronnet <aurelien@tela-botania.org> |
* @copyright 2010 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/jrest/ |
*/ |
/** |
* in : utf8 |
* out : utf8 |
* |
* @category PHP |
* @package jrest |
* @author Aurélien Peronnet <aurelien@tela-botania.org> |
* @author Raphaël Droz <raphael@tela-botania.org> |
* @copyright 2010, 2013 Tela-Botanica |
* @license Licence CECILL <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt> |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* |
* Service de liaisons de mots clés à des images. |
* Le service lie une ou plusieurs mots clés à une ou plusieurs images |
* |
*/ |
*/ |
require_once('InventoryKeyWordObsLink.php'); |
class InventoryKeyWordImageLink extends Cel { |
public function getElement($uid) { |
36,46 → 29,24 |
return; |
} |
$pairs['images'] = rtrim($pairs['images'],','); |
$id_images = explode(',',$pairs['images']); |
$id_images = array_filter(explode(',', $pairs['images'])); |
$mots_cles = array_filter(explode(',', $pairs['mots_cles'])); |
$pairs['mots_cles'] = rtrim($pairs['mots_cles'],','); |
$mots_cles = explode(',',$pairs['mots_cles']); |
// Pour le moment on ne peut que supprimer les mots clés et ajouter les nouveaux à cause du fonctionnement |
// de l'arbre de mots clés des images |
$gestionnaire_mots_cles = new LiaisonMotsCles($this->config,'images'); |
$suppression_liaison_mot_cle = $gestionnaire_mots_cles->supprimerToutesLiaisonsPourIdImageOuObs($pairs['ce_utilisateur'], $id_images); |
$liaison_mot_cle = $gestionnaire_mots_cles->ajouterLiaisonMotsCles($pairs['ce_utilisateur'],$id_images, $mots_cles); |
return $liaison_mot_cle; |
return $gestionnaire_mots_cles->ajouterLiaisonMotsCles($pairs['ce_utilisateur'],$id_images, $mots_cles); |
} |
public function deleteElement($uid){ |
$retour = false; |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
if (!isset($uid[0]) || !isset($uid[1]) || !isset($uid[2]) || !$this->estUnIdentifiantMotCle($uid[2])) { |
return; |
if (!isset($uid[0]) || !isset($uid[1]) || !isset($uid[2]) || ! InventoryKeyWordObsLink::estUnIdentifiantMotCle($uid[2])) { |
return FALSE; |
} |
$id_images = explode(',',$uid[1]); |
$id_utilisateur = $uid[0]; |
$gestionnaire_mots_cles = new LiaisonMotsCles($this->config,'images'); |
$mots_cles = $gestionnaire_mots_cles->nettoyerMotsCles($uid[2]); |
$mots_cles = explode(',',$mots_cles); |
$suppression_liaison_mot_cle = $gestionnaire_mots_cles->supprimerLiaisonMotsClesEtRegenererIndexTexte($id_utilisateur, $id_images, $mots_cles); |
return $suppression_liaison_mot_cle; |
return InventoryKeyWordObsLink::unlinkKeyword($this->config, 'images', explode(',',$uid[1]), $uid[0], $uid[2]); |
} |
private function estUnIdentifiantMotCle($chaine) { |
return trim($chaine) != '' && preg_match('/[0-9A-Z]+\.[0-9A-Z]+/i', $chaine); |
} |
} |
?> |
/trunk/jrest/services/InventoryKeyWordObsLink.php |
---|
1,31 → 1,18 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author Aurélien Peronnet <aurelien@tela-botania.org> |
* @copyright 2010 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/jrest/ |
*/ |
/** |
* in : utf8 |
* out : utf8 |
* |
* @package jrest |
* @author Aurélien Peronnet <aurelien@tela-botania.org> |
* @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 getElement($uid) { } |
} |
public function createElement($pairs) { |
// Controle detournement utilisateur |
45,30 → 32,25 |
} |
public function deleteElement($uid){ |
$retour = false; |
// Controle detournement utilisateur |
$this->controleUtilisateur($uid[0]); |
if (!isset($uid[0]) || !isset($uid[1]) || !isset($uid[2]) || !$this->estUnIdentifiantMotCle($uid[2])) { |
return; |
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; |
$ids_obs = explode(',',$uid[1]); |
$id_utilisateur = $uid[0]; |
$gestionnaire_mots_cles = new LiaisonMotsCles($this->config,'obs'); |
$mots_cles = $gestionnaire_mots_cles->nettoyerMotsCles($uid[2]); |
$mots_cles = explode(',',$mots_cles); |
$suppression_liaison_mot_cle = $gestionnaire_mots_cles->supprimerLiaisonMotsClesEtRegenererIndexTexte($id_utilisateur, $ids_obs, $mots_cles); |
$gestionnaire_mots_cles = new LiaisonMotsCles($config, $type); |
$mots_cles = explode(',', LiaisonMotsCles::nettoyerMotsCles($keywordIds)); |
return $gestionnaire_mots_cles->supprimerLiaisonMotsClesEtRegenererIndexTexte($uid, $obsIds, $mots_cles); |
} |
return $suppression_liaison_mot_cle; |
static function estUnIdentifiantMotCle($chaine) { |
return trim($chaine) != '' && preg_match('/[0-9A-Z]+\.[0-9A-Z]+/i', $chaine); |
} |
private function estUnIdentifiantMotCle($chaine) { |
return trim($chaine) != '' && preg_match('/[0-9A-Z]+\.[0-9A-Z]+/i', $chaine); |
} |
} |
?> |