/** * Handle an event in a listener. * * @param string $a_component component, e.g. "Modules/Forum" or "Services/User" * @param string $a_event event e.g. "createUser", "updateUser", "deleteUser", ... * @param array $a_parameter parameter array (assoc), array("name" => ..., "phone_office" => ...) */ static function handleEvent($a_component, $a_event, $a_parameter) { include_once "./Services/Tagging/classes/class.ilTagging.php"; switch ($a_component) { case "Services/Object": switch ($a_event) { case "toTrash": if (!ilObject::_hasUntrashedReference($a_parameter["obj_id"])) { ilTagging::setTagsOfObjectOffline($a_parameter["obj_id"], ilObject::_lookupType($a_parameter["obj_id"]), 0, ""); } break; case "undelete": ilTagging::setTagsOfObjectOffline($a_parameter["obj_id"], ilObject::_lookupType($a_parameter["obj_id"]), 0, "", false); break; case "delete": $ref_ids = ilObject::_getAllReferences($a_parameter["obj_id"]); if (count($ref_ids) == 0) { ilTagging::deleteTagsOfObject($a_parameter["obj_id"], $a_parameter["type"], 0, ""); } break; } break; } }
/** * Get objects for tag and user * * @param int $a_user_id User ID */ static function getObjectsForTagAndUser($a_user_id, $a_tag) { global $ilDB; $q = "SELECT * FROM il_tag WHERE " . "user_id = " . $ilDB->quote($a_user_id, "integer") . " AND tag = " . $ilDB->quote($a_tag, "text"); $set = $ilDB->query($q); $objects = array(); while ($rec = $ilDB->fetchAssoc($set)) { if (ilObject::_exists($rec["obj_id"])) { if ($rec["sub_obj_type"] == "-") { $rec["sub_obj_type"] = ""; } $objects[] = $rec; } else { ilTagging::deleteTagsOfObject($rec["obj_id"], $rec["obj_type"], $rec["sub_obj_id"], $rec["sub_obj_type"]); } } return $objects; }