public function getScoresForUserAndCP_Node_Id($item_id, $user_id)
 {
     include_once './Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php';
     switch (ilObjSAHSLearningModule::_lookupSubType($this->obj_id)) {
         case 'hacp':
         case 'aicc':
             include_once './Modules/ScormAicc/classes/class.ilObjAICCLearningModule.php';
             return ilObjAICCLearningModule::_getScoresForUser($item_id, $user_id);
         case 'scorm':
             include_once './Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php';
             //include_once './Modules/ScormAicc/classes/SCORM/class.ilSCORMItem.php';
             return ilObjSCORMLearningModule::_getScoresForUser($item_id, $user_id);
         case 'scorm2004':
             include_once './Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php';
             return ilObjSCORM2004LearningModule::_getScores2004ForUser($item_id, $user_id);
     }
     return array("raw" => null, "max" => null, "scaled" => null);
 }
 /**
  * Constructor
  * @access	public
  * @param	integer	reference_id or object_id
  * @param	boolean	treat the id as reference_id (true) or object_id (false)
  */
 function ilObjHACPLearningModule($a_id = 0, $a_call_by_reference = true)
 {
     $this->type = "sahs";
     parent::ilObject($a_id, $a_call_by_reference);
 }
 function _getStatusInfo($a_obj_id)
 {
     // Which sco's determine the status
     include_once './Services/Object/classes/class.ilObjectLP.php';
     $olp = ilObjectLP::getInstance($a_obj_id);
     $collection = $olp->getCollectionInstance();
     if ($collection) {
         $status_info['scos'] = $collection->getItems();
     } else {
         $status_info['scos'] = array();
     }
     $status_info['num_scos'] = count($status_info['scos']);
     // Get subtype
     include_once './Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php';
     $status_info['subtype'] = ilObjSAHSLearningModule::_lookupSubType($a_obj_id);
     switch ($status_info['subtype']) {
         case 'hacp':
         case 'aicc':
             include_once './Modules/ScormAicc/classes/SCORM/class.ilObjSCORMTracking.php';
             $status_info['num_completed'] = ilObjSCORMTracking::_getCountCompletedPerUser($status_info['scos'], $a_obj_id);
             include_once './Modules/ScormAicc/classes/class.ilObjAICCLearningModule.php';
             foreach (ilObjAICCLearningModule::_getTrackingItems($a_obj_id) as $item) {
                 if (in_array($item['obj_id'], $status_info['scos'])) {
                     $status_info['scos_title']["{$item['obj_id']}"] = $item['title'];
                 }
             }
             $info = ilObjSCORMTracking::_getProgressInfo($status_info['scos'], $a_obj_id);
             break;
         case 'scorm':
             include_once './Modules/ScormAicc/classes/SCORM/class.ilObjSCORMTracking.php';
             $status_info['num_completed'] = ilObjSCORMTracking::_getCountCompletedPerUser($status_info['scos'], $a_obj_id);
             include_once './Modules/ScormAicc/classes/SCORM/class.ilSCORMItem.php';
             foreach ($status_info['scos'] as $sco_id) {
                 $status_info['scos_title'][$sco_id] = ilSCORMItem::_lookupTitle($sco_id);
             }
             $info = ilObjSCORMTracking::_getProgressInfo($status_info['scos'], $a_obj_id);
             break;
         case "scorm2004":
             include_once './Modules/Scorm2004/classes/class.ilSCORM2004Tracking.php';
             $status_info['num_completed'] = ilSCORM2004Tracking::_getCountCompletedPerUser($status_info['scos'], $a_obj_id, true);
             include_once './Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php';
             foreach ($status_info['scos'] as $sco_id) {
                 $status_info['scos_title'][$sco_id] = ilObjSCORM2004LearningModule::_lookupItemTitle($sco_id);
             }
             $info = ilSCORM2004Tracking::_getItemProgressInfo($status_info['scos'], $a_obj_id, true);
             break;
     }
     $status_info['completed'] = array();
     $status_info['failed'] = array();
     $status_info['in_progress'] = array();
     foreach ($status_info['scos'] as $sco_id) {
         $status_info['completed'][$sco_id] = $info['completed'][$sco_id] ? $info['completed'][$sco_id] : array();
         $status_info['failed'][$sco_id] = $info['failed'][$sco_id] ? $info['failed'][$sco_id] : array();
         $status_info['in_progress'][$sco_id] = $info['in_progress'][$sco_id] ? $info['in_progress'][$sco_id] : array();
     }
     //var_dump($status_info["completed"]);
     return $status_info;
 }
 /**
  * Clone scorm object
  *
  * @param int target ref_id
  * @param int copy id
  */
 public function cloneObject($a_target_id, $a_copy_id = 0)
 {
     global $ilDB, $ilUser, $ilias;
     $new_obj = parent::cloneObject($a_target_id, $a_copy_id);
     $this->cloneMetaData($new_obj);
     // copy properties
     $new_obj->setTitle($this->getTitle());
     $new_obj->setDescription($this->getDescription());
     $new_obj->setSubType($this->getSubType());
     $new_obj->setAPIAdapterName($this->getAPIAdapterName());
     $new_obj->setAPIFunctionsPrefix($this->getAPIFunctionsPrefix());
     $new_obj->setAutoReviewChar($this->getAutoReviewChar());
     $new_obj->setDefaultLessonMode($this->getDefaultLessonMode());
     $new_obj->setEditable($this->getEditable());
     $new_obj->setMaxAttempt($this->getMaxAttempt());
     //		$new_obj->getModuleVersion($this->getModuleVersion());	??
     $new_obj->setModuleVersion(1);
     $new_obj->setCreditMode($this->getCreditMode());
     $new_obj->setAssignedGlossary($this->getAssignedGlossary());
     $new_obj->setTries($this->getTries());
     $new_obj->setSession($this->getSession());
     $new_obj->setNoMenu($this->getNoMenu());
     $new_obj->setHideNavig($this->getHideNavig());
     $new_obj->setSequencing($this->getSequencing());
     $new_obj->setInteractions($this->getInteractions());
     $new_obj->setObjectives($this->getObjectives());
     $new_obj->setComments($this->getComments());
     $new_obj->setTime_from_lms($this->getTime_from_lms());
     $new_obj->setDebug($this->getDebug());
     $new_obj->setLocalization($this->getLocalization());
     $new_obj->setSequencingExpertMode($this->getSequencingExpertMode());
     $new_obj->setDebugPw($this->getDebugPw());
     $new_obj->setOpenMode($this->getOpenMode());
     $new_obj->setWidth($this->getWidth());
     $new_obj->setHeight($this->getHeight());
     $new_obj->setAutoContinue($this->getAutoContinue());
     $new_obj->setAuto_last_visited($this->getAuto_last_visited());
     $new_obj->setCheck_values($this->getCheck_values());
     $new_obj->setOfflineMode($this->getOfflineMode());
     $new_obj->setAutoSuspend($this->getAutoSuspend());
     $new_obj->update();
     // set/copy stylesheet
     /*		include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
     		$style_id = $this->getStyleSheetId();
     		if ($style_id > 0 && !ilObjStyleSheet::_lookupStandard($style_id))
     		{
     			$style_obj = $ilias->obj_factory->getInstanceByObjId($style_id);
     			$new_id = $style_obj->ilClone();
     			$new_obj->setStyleSheetId($new_id);
     			$new_obj->update();
     		}*/
     // up to this point $new_obj is of type ilobjsahslearning module
     // create instance of correct subtype and call forward it to
     // cloneIntoNewObject method
     switch ($this->getSubType()) {
         case "scorm":
             include_once "./Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php";
             $source_obj = new ilObjSCORMLearningModule($this->getRefId());
             $new_obj = new ilObjSCORMLearningModule($new_obj->getRefId());
             break;
         case "scorm2004":
             include_once "./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php";
             $source_obj = new ilObjSCORM2004LearningModule($this->getRefId());
             $new_obj = new ilObjSCORM2004LearningModule($new_obj->getRefId());
             break;
         case "aicc":
             include_once "./Modules/ScormAicc/classes/class.ilObjAICCLearningModule.php";
             $source_obj = new ilObjAICCLearningModule($this->getRefId());
             $new_obj = new ilObjAICCLearningModule($new_obj->getRefId());
             break;
         case "hacp":
             include_once "./Modules/ScormAicc/classes/class.ilObjHACPLearningModule.php";
             $source_obj = new ilObjHACPLearningModule($this->getRefId());
             $new_obj = new ilObjHACPLearningModule($new_obj->getRefId());
             break;
     }
     // copy data directory
     $new_obj->populateByDirectoy($source_obj->getDataDirectory());
     // copy authored content ...
     if ($new_obj->getEditable()) {
         $source_obj->copyAuthoredContent($new_obj);
     } else {
         // ... or read manifest file
         $new_obj->readObject();
     }
     return $new_obj;
 }
 /**
  * get all tracking items of scorm object
  */
 function getTrackingItems()
 {
     return ilObjAICCLearningModule::_getTrackingItems($this->getId());
 }