/** * Get all media objects linked in map areas of this media object */ function getLinkedMediaObjects($a_ignore = "") { $linked = array(); if (!is_array($a_ignore)) { $a_ignore = array(); } // get linked media objects (map areas) $med_items = $this->getMediaItems(); foreach ($med_items as $med_item) { $int_links = ilMapArea::_getIntLinks($med_item->getId()); foreach ($int_links as $k => $int_link) { if ($int_link["Type"] == "MediaObject") { include_once "./Services/COPage/classes/class.ilInternalLink.php"; $l_id = ilInternalLink::_extractObjIdOfTarget($int_link["Target"]); if (ilObject::_exists($l_id)) { if (!in_array($l_id, $linked) && !in_array($l_id, $a_ignore)) { $linked[] = $l_id; } } } } } //var_dump($linked); return $linked; }
/** * get all internal links of map areas of a mob * * @param int $a_mob_id media object id */ function _getMapAreasIntLinks($a_mob_id) { global $ilDB; // read media_items records $query = "SELECT * FROM media_item WHERE mob_id = " . $ilDB->quote($a_mob_id, "integer") . " ORDER BY nr"; $item_set = $ilDB->query($query); $links = array(); while ($item_rec = $ilDB->fetchAssoc($item_set)) { $map_links = ilMapArea::_getIntLinks($item_rec["id"]); foreach ($map_links as $key => $map_link) { $links[$key] = $map_link; } } return $links; }