/** * Associer un mot a des objets listes sous forme * array($objet=>$id_objets,...) * $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type * * on peut passer optionnellement une qualification du (des) lien(s) qui sera * alors appliquee dans la foulee. * En cas de lot de liens, c'est la meme qualification qui est appliquee a tous * * Exemples: * mot_associer(3, array('auteur'=>2)); * mot_associer(3, array('auteur'=>2), array('vu'=>'oui)); // ne fonctionnera pas ici car pas de champ 'vu' sur spip_mots_liens * * @param int $id_mot * @param array $objets * @param array $qualif * @return string */ function mot_associer($id_mot, $objets, $qualif = null) { include_spip('action/editer_liens'); // si il s'agit d'un groupe avec 'unseul', alors supprimer d'abord les autres // mots de ce groupe associe a ces objets $id_groupe = sql_getfetsel('id_groupe', 'spip_mots', 'id_mot=' . intval($id_mot)); if (un_seul_mot_dans_groupe($id_groupe)) { $mots_groupe = sql_allfetsel("id_mot", "spip_mots", "id_groupe=" . intval($id_groupe)); $mots_groupe = array_map('reset', $mots_groupe); objet_dissocier(array('mot' => $mots_groupe), $objets); } return objet_associer(array('mot' => $id_mot), $objets, $qualif); }
function ajouter_nouveau_mot($id_groupe, $table, $table_id, $id_mot, $id) { if (un_seul_mot_dans_groupe($id_groupe)) { sql_delete("spip_mots_$table", "$table_id=$id AND " . sql_in_select("id_mot", "id_mot", "spip_mots", "id_groupe = $id_groupe")); } sql_insertq("spip_mots_$table", array("id_mot" => $id_mot, $table_id => $id)); }