Example #1
0
 function Finish($idUser, $idReference, $idscorm_item, $environment = 'course_lo')
 {
     soap__dbgOut("+Finish({$idUser}, {$idReference}, {$idscorm_item} )");
     $status = "success";
     $error = "";
     $errorString = "";
     $lesson_status = "";
     $scormVersion = getScormVersion('idscorm_item', $idscorm_item);
     require_once dirname(__FILE__) . '/scorm-' . $scormVersion . '.php';
     $dbconn = $GLOBALS['dbConn'];
     $itemtrack = new Scorm_ItemsTrack($dbconn, $GLOBALS['prefix_lms']);
     $rs = $itemtrack->getItemTrack($idUser, $idReference, $idscorm_item);
     $arrItemTrackData = mysql_fetch_assoc($rs);
     $trackobj = new Scorm_Tracking(NULL, NULL, $arrItemTrackData['idscorm_tracking'], NULL, $dbconn, FALSE, FALSE);
     if ($trackobj->getErrorCode() != 0) {
         soap__dbgOut("Finish error: " . $trackobj->getErrorText());
     }
     /* if it's not for credit don't evaluate lesson_staus/completion_status */
     if ($trackobj->getParam(SCORM_RTE_CREDIT, false) == 'credit') {
         soap__dbgOut("Finish: evaluate " . SCORM_RTE_COMPLETIONSTATUS);
         $itemobj = new Scorm_Item(NULL, FALSE, NULL, $dbconn, false, $arrItemTrackData['idscorm_item']);
         if ($itemobj) {
             /* remember in 1.3 masteryscore = completionthreshold */
             if (strlen($itemobj->adlcp_masteryscore) > 0) {
                 $lesson_status = computeCompletionStatus($trackobj, $itemobj->adlcp_masteryscore);
             } else {
                 $lesson_status = $trackobj->getParam(SCORM_RTE_LESSONSTATUS, false);
                 if ($scormVersion == '1.3') {
                     $success_status = $trackobj->getParam(SCORM_RTE_SUCCESSSTATUS, false);
                     if ($success_status == 'failed') {
                         $lesson_status = 'failed';
                     }
                 }
                 if ($lesson_status == 'passed' || $lesson_status == 'completed') {
                     $trackobj->setParam(SCORM_RTE_CREDIT, 'no-credit', false, true);
                 }
             }
         }
         $itemtrack->setStatus($idUser, $idReference, $idscorm_item, $lesson_status, $environment);
     }
     soap__dbgOut("Finish: evaluate " . SCORM_RTE_ENTRY);
     $exitVal = $trackobj->getParam(SCORM_RTE_EXIT, false);
     /* logout is only in 1.3 scorm version */
     if ($exitVal == "suspend" || $exitVal == "logout") {
         $trackobj->setParam(SCORM_RTE_ENTRY, 'resume', false, true);
     } else {
         $trackobj->setParam(SCORM_RTE_ENTRY, '', false, true);
     }
     soap__dbgOut("Finish: evaluate " . SCORM_RTE_TOTALTIME);
     $sessTime = $trackobj->getParam(SCORM_RTE_SESSIONTIME, false);
     $totTime = $trackobj->getParam(SCORM_RTE_TOTALTIME, false);
     if (strlen($sessTime) > 0) {
         $totTime = sumScormTime($sessTime, $totTime);
         $trackobj->setParam(SCORM_RTE_TOTALTIME, $totTime, false, true);
     }
     //update history
     if ($arr = $trackobj->getTrackData($trackobj->idtrack)) {
         if (!$trackobj->saveHistory($trackobj->idtrack, $arr['score_raw'], $arr['score_max'], $sessTime, $arr['lesson_status'])) {
         }
         // if is a game we update the score result
     }
     if ($environment == 'games' && $arr['score_raw'] !== false && $arr['score_raw'] !== NULL) {
         require_once _lms_ . '/class.module/track.scorm.php';
         Track_ScormOrg::setEnvGamesData($idUser, $idReference, $arr['score_raw'], 'scormorg');
     }
     //end update
     soap__dbgOut("Finish return status = {$status}");
     return $this->makeResponse($status, $error, $errorString);
 }
Example #2
0
 }
 if ($environment == false) {
     $environment = 'course_lo';
 }
 if ($playertemplate != '') {
     if (!file_exists(getPathTemplate() . 'player_scorm/' . $playertemplate . '/def_style.css')) {
         $playertemplate = 'default';
     }
 } else {
     $playertemplate = 'default';
 }
 $idscorm_organization = $idResource;
 $idUser = (int) getLogUserId();
 /*Start database connection***********************************************/
 /* get scorm version */
 $scormVersion = getScormVersion('idscorm_organization', $idscorm_organization);
 /* get object title */
 list($lo_title) = sql_fetch_row(sql_query("SELECT title" . " FROM " . $GLOBALS['prefix_lms'] . "_organization" . " WHERE idResource = '{$idResource}'" . "   AND objectType = 'scormorg'"));
 $itemtrack = new Scorm_ItemsTrack(null, $GLOBALS['prefix_lms']);
 $rsItemTrack = $itemtrack->getItemTrack($idUser, $idReference, NULL, $idscorm_organization);
 if ($rsItemTrack === FALSE) {
     // The first time for this user in this organization
     $itemtrack->createItemsTrack($idUser, $idReference, $idscorm_organization);
     // Now should be present
     $rsItemTrack = $itemtrack->getItemTrack($idUser, $idReference, NULL, $idscorm_organization);
 }
 $arrItemTrack = mysql_fetch_assoc($rsItemTrack);
 // with id_item_track of organization|user|reference create an entry in commontrack table
 require_once _lms_ . '/class.module/track.object.php';
 require_once _lms_ . '/class.module/track.scorm.php';
 $track_so = new Track_ScormOrg($arrItemTrack['idscorm_item_track'], false, false, NULL, $environment);
Example #3
0
 /**
  * Constructor of the Scorm_Tracking
  * @param $idUser
  * @param $idReference
  * @param $id if $idUser is null => $idscorm_tracking, 
  * 			  if $id_isitemid is true => $idscorm_item, and $idRefrence is needed
  * 			  else idsco from manifest
  * @param $idscorm_package
  * @param $connection
  * @param $createonfile
  */
 function Scorm_Tracking($idUser, $idRefernce, $id, $idscorm_package, $connection, $createonfail = true, $id_isitemid = false)
 {
     $this->idUser = $idUser;
     $this->idReference = $idRefernce;
     $this->idscorm_item = NULL;
     $this->idscorm_package = $idscorm_package;
     $this->dbconn = $connection;
     $this->xmldoc = null;
     $this->tracktable = $GLOBALS['prefix_lms'] . "_scorm_tracking";
     $this->historytable = $GLOBALS['prefix_lms'] . "_scorm_tracking_history";
     // Find the idtrack for this peer iditem, iduser
     if ($idUser === null) {
         // id is idscorm_tracking
         $query = "SELECT idUser, idscorm_item FROM " . $GLOBALS['prefix_lms'] . "_scorm_tracking WHERE idscorm_tracking='" . (int) $id . "'";
         $rs = sql_query($query, $this->dbconn);
         if ($rs == false || mysql_num_rows($rs) == 0) {
             return false;
         }
         list($this->idUser, $this->idscorm_item) = sql_fetch_row($rs);
         $this->idtrack = $id;
         $this->scormVersion = getScormVersion('idscorm_item', $this->idscorm_item);
         return true;
     }
     if ($id_isitemid) {
         $query = "SELECT tracking.idscorm_item, tracking.idscorm_tracking" . " FROM " . $GLOBALS['prefix_lms'] . "_scorm_tracking tracking" . " WHERE tracking.idscorm_item=" . $id . " AND tracking.idUser="******"Scorm_Tracking::Scorm_Tracking " . mysql_error($this->dbconn) . "[" . $query . "]");
         return false;
     }
     if (mysql_num_rows($rs) == 0) {
         if ($createonfail) {
             // not found => create new track record
             $query = "INSERT INTO {$this->tracktable} " . " (idUser, idReference, idscorm_item)" . " VALUES" . " ( {$this->idUser}, {$this->idReference}, {$id} )";
             if (sql_query($query, $this->dbconn)) {
                 if (mysql_affected_rows($this->dbconn) == 1) {
                     // get the id of the last insert = idscorm_tracking
                     $this->idtrack = mysql_insert_id($this->dbconn);
                     $this->scormVersion = getScormVersion('idscorm_item', $id);
                     //update history
                     //end update
                 } else {
                     $this->setError(1, "Scorm_Tracking::Scorm_Tracking " . mysql_error($this->dbconn) . "[" . $query . "]");
                     return false;
                 }
             } else {
                 $this->setError(1, "Scorm_Tracking::Scorm_Tracking " . mysql_error($this->dbconn) . "[" . $query . "]");
                 return false;
             }
         } else {
             $this->setError(1, "Scorm_Tracking::Scorm_Tracking " . mysql_error($this->dbconn) . "[" . $query . "]");
             return false;
         }
     } else {
         list($this->idscorm_item, $this->idtrack) = mysql_fetch_array($rs);
         $this->scormVersion = getScormVersion('idscorm_item', $this->idscorm_item);
         mysql_free_result($rs);
     }
     return true;
 }