/**
  * 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;
    }