/** * get all tracking items of scorm object * @access static */ function _getTrackingItems($a_obj_id) { include_once "./Modules/ScormAicc/classes/SCORM/class.ilSCORMTree.php"; $tree = new ilSCORMTree($a_obj_id); $root_id = $tree->readRootId(); $items = array(); $childs = $tree->getSubTree($tree->getNodeData($root_id)); foreach ($childs as $child) { if ($child["c_type"] == "sit") { include_once "./Modules/ScormAicc/classes/SCORM/class.ilSCORMItem.php"; $sc_item =& new ilSCORMItem($child["obj_id"]); if ($sc_item->getIdentifierRef() != "") { $items[count($items)] =& $sc_item; } } } return $items; }
/** * delete SCORM learning module and all related data * * this method has been tested on may 9th 2004 * meta data, scorm lm data, scorm tree, scorm objects (organization(s), * manifest, resources and items), tracking data and data directory * have been deleted correctly as desired * * @access public * @return boolean true if all object data were removed; false if only a references were removed */ function delete() { global $ilDB, $ilLog; // always call parent delete function first!! if (!parent::delete()) { return false; } // delete meta data of scorm content object /* $nested = new ilNestedSetXML(); $nested->init($this->getId(), $this->getType()); $nested->deleteAllDBData(); */ $this->deleteMetaData(); // delete data directory ilUtil::delDir($this->getDataDirectory()); // delete scorm learning module record $ilDB->manipulateF('DELETE FROM sahs_lm WHERE id = %s', array('integer'), array($this->getId())); $ilLog->write("SAHS Delete(SAHSLM), Subtype: " . $this->getSubType()); if ($this->getSubType() == "scorm") { // remove all scorm objects and scorm tree include_once "./Modules/ScormAicc/classes/SCORM/class.ilSCORMTree.php"; include_once "./Modules/ScormAicc/classes/SCORM/class.ilSCORMObject.php"; $sc_tree = new ilSCORMTree($this->getId()); $r_id = $sc_tree->readRootId(); if ($r_id > 0) { $items = $sc_tree->getSubTree($sc_tree->getNodeData($r_id)); foreach ($items as $item) { $sc_object =& ilSCORMObject::_getInstance($item["obj_id"], $this->getId()); if (is_object($sc_object)) { $sc_object->delete(); } } $sc_tree->removeTree($sc_tree->getTreeId()); } } if ($this->getSubType() != "scorm") { // delete aicc data $res = $ilDB->queryF(' SELECT aicc_object.obj_id FROM aicc_object, aicc_units WHERE aicc_object.obj_id = aicc_units.obj_id AND aicc_object.slm_id = %s', array('integer'), array($this->getId())); while ($row = $ilDB->fetchAssoc($res)) { $obj_id = $row['obj_id']; $ilDB->manipulateF(' DELETE FROM aicc_units WHERE obj_id = %s', array('integer'), array($obj_id)); } $res = $ilDB->queryF(' SELECT aicc_object.obj_id FROM aicc_object, aicc_course WHERE aicc_object.obj_id = aicc_course.obj_id AND aicc_object.slm_id = %s', array('integer'), array($this->getId())); while ($row = $ilDB->fetchAssoc($res)) { $obj_id = $row['obj_id']; $ilDB->manipulateF(' DELETE FROM aicc_course WHERE obj_id = %s', array('integer'), array($obj_id)); } $ilDB->manipulateF(' DELETE FROM aicc_object WHERE slm_id = %s', array('integer'), array($this->getId())); } $q_log = "DELETE FROM scorm_tracking WHERE obj_id = " . $ilDB->quote($this->getId()); $ilLog->write("SAHS Delete(SAHSLM): " . $q_log); $ilDB->manipulateF('DELETE FROM scorm_tracking WHERE obj_id = %s', array('integer'), array($this->getId())); $q_log = "DELETE FROM sahs_user WHERE obj_id = " . $ilDB->quote($this->getId()); $ilLog->write("SAHS Delete(SAHSLM): " . $q_log); $ilDB->manipulateF('DELETE FROM sahs_user WHERE obj_id = %s', array('integer'), array($this->getId())); // always call parent delete function at the end!! return true; }