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) { |