Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2461 → Rev 2462

/trunk/jrest/bibliotheque/GestionMotsClesChemin.php
1,14 → 1,20
<?php
// declare(encoding='UTF-8');
/**
* @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
*
* Librairie de liaison d'images et d'observation à des mots clés en utilisant la méthode
* path enumeration
*/
 
* Classe de liaison d'images et d'observation à des mots clés en utilisant la méthode path enumeration.
*
* @internal Mininum PHP version : 5.2
* @category CEL
* @package Services
* @subpackage Bibliothèques
* @version 0.1
* @author Mathias CHOUET <mathias@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Aurelien PERONNET <aurelien@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
*/
class GestionMotsClesChemin {
 
private $config;
54,12 → 60,9
$requete = 'SELECT id_mot_cle '.
"FROM {$this->table_mots_cles} ".
"WHERE chemin LIKE CONCAT(($sousRequete), '%') ".
"AND id_utilisateur = ".$idUtilisateurP." ".
"AND id_utilisateur = $idUtilisateurP ".
' -- '.__FILE__.':'.__LINE__;
 
$ids_enfants = Cel::db()->requeter($requete);
 
return $ids_enfants;
return Cel::db()->requeter($requete);
}
 
/**
69,12 → 72,10
public function obtenirIdsMotsClesParIdElementLie($id_element_lie) {
$idElementLieP = Cel::db()->proteger($id_element_lie);
 
$requete = "SELECT id_mot_cle FROM {$this->table_liaison} WHERE id_element_lie = $idElementLieP" .
$requete = "SELECT id_mot_cle FROM {$this->table_liaison} ".
"WHERE id_element_lie = $idElementLieP ".
' -- '.__FILE__.':'.__LINE__;
 
$ids_mots_cles = Cel::db()->requeter($requete);
 
return $ids_mots_cles;
return Cel::db()->requeter($requete);
}
 
public function insererParCheminSiInexistant($mot_cle, $chemin_parent, $id_utilisateur) {
88,7 → 89,6
"WHERE chemin = $cheminMotCleP ".
"AND id_utilisateur = $idUtilisateurP ".
' -- '.__FILE__.':'.__LINE__;
 
$infosMotCle = Cel::db()->requeter($requete);
 
if (!empty($infosMotCle)) {
110,8 → 110,8
'(chemin, id_utilisateur, mot_cle) '.
"VALUES ($cheminMotCleP, $idUtilisateurP, $motCleP ) ".
' -- '.__FILE__.':'.__LINE__;
$insertion = Cel::db()->executer($requete);
 
$insertion = Cel::db()->executer($requete);
$resultat = false;
if ($insertion !== false) {
$resultat = Cel::db()->obtenirDernierId();
137,8 → 137,8
$requete = "INSERT INTO {$this->table_mots_cles} (chemin, id_utilisateur, mot_cle) ".
"VALUES (CONCAT($sousRequete, $motCleSimpleP, '/'), $idUtilisateurP, $motCleP ) ".
' -- '.__FILE__.':'.__LINE__;
$insertion = Cel::db()->executer($requete);
 
$insertion = Cel::db()->executer($requete);
if ($insertion !== false) {
$resultat = Cel::db()->obtenirDernierId();
}
153,9 → 153,7
"VALUES ($idElementLieP, $idMotCleP) ".
'ON DUPLICATE KEY UPDATE id_element_lie = id_element_lie '.
' -- '.__FILE__.':'.__LINE__;
 
$liaison = Cel::db()->executer($requete);
return $liaison;
return Cel::db()->executer($requete);
}
 
public function lierParChemin($chemin, $id_element_lie, $id_utilisateur) {
172,9 → 170,7
"VALUES ($idElementLieP, $sousRequete) ".
'ON DUPLICATE KEY UPDATE id_element_lie = id_element_lie '.
' -- '.__FILE__.':'.__LINE__;
 
$liaison = Cel::db()->executer($requete);
return $liaison;
return Cel::db()->executer($requete);
}
 
public function lierParTableaux($ids_mots_cles, $ids_elements_lies) {
192,9 → 188,7
"VALUES $valeursGroupees ".
"ON DUPLICATE KEY UPDATE id_element_lie = id_element_lie ".
' -- '.__FILE__.':'.__LINE__;
$liaison = Cel::db()->executer($requete);
 
return $liaison;
return Cel::db()->executer($requete);
}
 
/**
203,10 → 197,9
* et ainsi de perdre la date de liaison des mots clés conservés.
* Si $supprimer est true, les mots clefs existant mais non spécifiés dans le POST seront supprimés,
* sinon ils seront laissés en l'état.
*/
*/
public function modifierLiaisonParTableaux($ids_mots_cles, $ids_elements_lies, $supprimer) {
$reussi = true;
 
foreach ($ids_elements_lies as $id_element_lie) {
$idElementLieP = Cel::db()->proteger($id_element_lie);
// trouver les mots clés actuels
257,7 → 250,6
$reussi = ($reussi && $resultat);
}
}
 
return $reussi;
}
 
275,9 → 267,7
$requete = "DELETE FROM {$this->table_liaison} ".
"WHERE $clauseWhere ".
' -- '.__FILE__.':'.__LINE__;
 
$suppression = Cel::db()->executer($requete);
return $suppression;
return Cel::db()->executer($requete);
}
 
public function supprimerToutesLiaisonsPourIdsElementsLies($ids_elements_lies) {
610,7 → 600,7
return $requeteTpl;
}
 
// Fonctions utilitaires
// Méthodes utilitaires
 
/**
* La profondeur d'un noeud est déterminée par le nombre de slashs
637,21 → 627,18
$chemin = self::startsWith($chemin,'/') ? $chemin : '/'.$chemin;
$chemin = self::endsWith($chemin,'/') ? $chemin : $chemin.'/';
$chemin = str_replace('//', '/', $chemin);
// mise en minuscule du chemin afin d'éviter des cas où l'on aurait
// mise en minuscule du chemin afin d'éviter des cas où l'on aurait
// des même mots clés avec minuscule et majuscule
$chemin = strtolower($chemin);
$chemin = self::supprimerAccents($chemin);
return $chemin;
}
function supprimerAccents($str, $charset='utf-8')
{
 
static function supprimerAccents($str, $charset='utf-8') {
$str = htmlentities($str, ENT_NOQUOTES, $charset);
$str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. '&oelig;'
$str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères
return $str;
}
 
678,11 → 665,11
return $valeur;
}
 
static public function startsWith($haystack, $needle) {
public static function startsWith($haystack, $needle) {
return $needle === '' || strpos($haystack, $needle) === 0;
}
 
static public function endsWith($haystack, $needle) {
public static function endsWith($haystack, $needle) {
return $needle === '' || substr($haystack, -strlen($needle)) === $needle;
}
 
715,5 → 702,4
$migration = ($migration !== false) ? true : false;
return $migration;
}
}
?>
}