Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2240 → Rev 2241

/trunk/jrest/services/CelWidgetSaisie.php
395,7 → 395,7
}
}
 
$liaison_ok = $this->gestionMotsClesObs->lierParTableaux($listeIdsTags, $observations_ids, $this->utilisateur_id);
$liaison_ok = $this->gestionMotsClesObs->lierParTableaux($listeIdsTags, $observations_ids);
if($liaison_ok) {
foreach($observations_ids as $id) {
GestionMotsClesChemin::regenererIndexTexteMotCle($id, 'obs');
439,7 → 439,7
}
}
}
$liaison_ok = $this->gestionMotsClesImages->lierParTableaux($listeIdsTags, $images_ids, $this->utilisateur_id);
$liaison_ok = $this->gestionMotsClesImages->lierParTableaux($listeIdsTags, $images_ids);
if($liaison_ok) {
foreach($images_ids as $id) {
GestionMotsClesChemin::regenererIndexTexteMotCle($id, 'images');
/trunk/jrest/services/InventoryKeyWordImageLink.php
25,16 → 25,10
$ids_images = array_filter(explode(',', $pairs['images']));
$ids_mots_cles = array_filter(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
$gestion_mots_cles = new GestionMotsClesChemin($this->config,'images');
$gestion_mots_cles->supprimerToutesLiaisonsPourIdsElementsLies($ids_images);
 
$gestion_mots_cles = new GestionMotsClesChemin($this->config,'images');
$liaison = true;
if(!empty($ids_mots_cles)) {
$liaison = $gestion_mots_cles->lierParTableaux($ids_mots_cles, $ids_images, $pairs['ce_utilisateur']);
}
$liaison = $gestion_mots_cles->modifierLiaisonParTableaux($ids_mots_cles, $ids_images);
foreach($ids_images as $id_element_lie) {
//TODO: que faire si la régénération d'index texte échoue ?
/trunk/jrest/services/InventoryKeyWordObsLink.php
25,7 → 25,7
$ids_mots_cles = explode(',',$pairs['mots_cles']);
$gestion_mots_cles = new GestionMotsClesChemin($this->config,'obs');
$liaison_mot_cle = $gestion_mots_cles->lierParTableaux($ids_mots_cles, $ids_obs, $pairs['ce_utilisateur']);
$liaison_mot_cle = $gestion_mots_cles->lierParTableaux($ids_mots_cles, $ids_obs);
foreach($ids_obs as $id_element_lie) {
$r_index = GestionMotsClesChemin::regenererIndexTexteMotCle($id_element_lie, 'obs');
/trunk/jrest/lib/GestionMotsClesChemin.php
62,6 → 62,21
return $ids_enfants;
}
 
/**
* Retourne la liste des mots clés pour l'élément lié fourni. Ne tient pas compte de l'utilisateur
* car seul le propriétaire d'un élément lié peut y lier des mots clés
*/
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" .
' -- '.__FILE__.':'.__LINE__;
 
$ids_mots_cles = Cel::db()->requeter($requete);
 
return $ids_mots_cles;
}
 
public function insererParCheminSiInexistant($mot_cle, $chemin_parent, $id_utilisateur) {
$mot_cle = self::simplifier($mot_cle);
$cheminMotCle = self::getCheminHarmonise($chemin_parent, $mot_cle);
162,7 → 177,7
return $liaison;
}
 
public function lierParTableaux($ids_mots_cles, $ids_elements_lies, $id_utilisateur) {
public function lierParTableaux($ids_mots_cles, $ids_elements_lies) {
$combinaisons = array();
foreach ($ids_mots_cles as $id_mot_cle) {
$idMotCleP = Cel::db()->proteger($id_mot_cle);
182,6 → 197,66
return $liaison;
}
 
/**
* Modifie les liaisons aux mots clés pour chaque element lié, en supprimant et ajoutant seulement les
* mots clés qui ont changé, sans toucher à ceux qui sont conservés. Ça évite de tout supprimer avant,
* et ainsi de perdre la date de liaison des mots clés conservés.
*/
public function modifierLiaisonParTableaux($ids_mots_cles, $ids_elements_lies) {
$reussi = true;
 
foreach ($ids_elements_lies as $id_element_lie) {
$idElementLieP = Cel::db()->proteger($id_element_lie);
// trouver les mots clés actuels
$ids_mots_cles_actuels = $this->obtenirIdsMotsClesParIdElementLie($id_element_lie);
if (! is_array($ids_mots_cles_actuels)) {
$ids_mots_cles_actuels = array();
}
// remise en forme
foreach ($ids_mots_cles_actuels as $k => $v) {
if (isset($v['id_mot_cle'])) { // je vois mal comment ça pourrait ne pas être set
$ids_mots_cles_actuels[$k] = $v['id_mot_cle'];
}
}
 
// changements
$ids_mots_cles_ajoutes = array_diff($ids_mots_cles, $ids_mots_cles_actuels);
$ids_mots_cles_supprimes = array_diff($ids_mots_cles_actuels, $ids_mots_cles);
 
// insérer
if (count($ids_mots_cles_ajoutes) > 0) {
$combinaisons = array();
foreach ($ids_mots_cles_ajoutes as $id_mot_cle) {
$idMotCleP = Cel::db()->proteger($id_mot_cle);
$combinaisons[] = "($idElementLieP, $idMotCleP)";
}
$valeursGroupees = implode(', ', $combinaisons);
$requete = "INSERT INTO {$this->table_liaison} (id_element_lie, id_mot_cle) ".
"VALUES $valeursGroupees ".
"ON DUPLICATE KEY UPDATE id_element_lie = id_element_lie ". // normalement pas nécessaire
' -- '.__FILE__.':'.__LINE__;
$resultat = Cel::db()->executer($requete);
$reussi = ($reussi && $resultat);
}
 
// supprimer
if (count($ids_mots_cles_supprimes) > 0) {
$clauses = array();
foreach ($ids_mots_cles_supprimes as $id_mot_cle) {
$idMotCleP = Cel::db()->proteger($id_mot_cle);
$clauses[] = "(id_element_lie = $idElementLieP AND id_mot_cle = $idMotCleP)";
}
$clause = implode(' OR ', $clauses);
$requete = "DELETE FROM {$this->table_liaison} WHERE $clause" .
' -- '.__FILE__.':'.__LINE__;
$resultat = Cel::db()->executer($requete);
$reussi = ($reussi && $resultat);
}
}
 
return $reussi;
}
 
public function supprimerLiaisonsMotsCles($ids_mots_cles, $ids_elements_lies, $id_utilisateur) {
$combinaisons = array();
foreach ($ids_mots_cles as $id_mot_cle) {