Class ilObjSCORMTracking. More...
Public Member Functions | |
ilObjSCORMTracking () | |
Constructor public. | |
extractData () | |
store ($obj_id=0, $sahs_id=0, $extractData=1) | |
_insertTrackData ($a_sahs_id, $a_lval, $a_rval, $a_obj_id) | |
_getInProgress ($scorm_item_id, $a_obj_id) | |
_getCompleted ($scorm_item_id, $a_obj_id) | |
_getFailed ($scorm_item_id, $a_obj_id) | |
_getCountCompletedPerUser ($a_scorm_item_ids, $a_obj_id) | |
_getProgressInfo ($sco_item_ids, $a_obj_id) |
Class ilObjSCORMTracking.
Definition at line 30 of file class.ilObjSCORMTracking.php.
ilObjSCORMTracking::_getCompleted | ( | $ | scorm_item_id, | |
$ | a_obj_id | |||
) |
Definition at line 201 of file class.ilObjSCORMTracking.php.
References $query, $res, and $row.
{ global $ilDB; if(is_array($scorm_item_id)) { $where = "WHERE sco_id IN('".implode("','",$scorm_item_id)."') "; } else { $where = "sco_id = '".$scorm_item_id."' "; } $query = "SELECT DISTINCT(user_id) FROM scorm_tracking ". $where. "AND obj_id = '".$a_obj_id."' ". "AND lvalue = 'cmi.core.lesson_status' ". "AND ( rvalue = 'completed' ". "OR rvalue = 'passed')"; $res = $ilDB->query($query); while($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) { $user_ids[] = $row->user_id; } return $user_ids ? $user_ids : array(); }
ilObjSCORMTracking::_getCountCompletedPerUser | ( | $ | a_scorm_item_ids, | |
$ | a_obj_id | |||
) |
Definition at line 254 of file class.ilObjSCORMTracking.php.
References $query, $res, $row, and $users.
Referenced by ilLPStatusSCORM::_getStatusInfo().
{ global $ilDB; $where = "WHERE sco_id IN('"; $where .= implode("','",$a_scorm_item_ids); $where .= "') "; $where .= ("AND obj_id = '".$a_obj_id."'"); $query = "SELECT user_id, COUNT(user_id) as completed FROM scorm_tracking ". $where. "AND lvalue = 'cmi.core.lesson_status' ". "AND (rvalue = 'completed' OR ". "rvalue = 'passed') ". "GROUP BY user_id"; $res = $ilDB->query($query); while($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) { $users[$row->user_id] = $row->completed; } return $users ? $users : array(); }
ilObjSCORMTracking::_getFailed | ( | $ | scorm_item_id, | |
$ | a_obj_id | |||
) |
Definition at line 228 of file class.ilObjSCORMTracking.php.
References $query, $res, and $row.
{ global $ilDB; if(is_array($scorm_item_id)) { $where = "WHERE sco_id IN('".implode("','",$scorm_item_id)."') "; } else { $where = "sco_id = '".$scorm_item_id."' "; } $query = "SELECT DISTINCT(user_id) FROM scorm_tracking ". $where. "AND obj_id = '".$a_obj_id."' ". "AND lvalue = 'cmi.core.lesson_status' ". "AND rvalue = 'failed'"; $res = $ilDB->query($query); while($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) { $user_ids[] = $row->user_id; } return $user_ids ? $user_ids : array(); }
ilObjSCORMTracking::_getInProgress | ( | $ | scorm_item_id, | |
$ | a_obj_id | |||
) |
Definition at line 169 of file class.ilObjSCORMTracking.php.
References $query, $res, and $row.
Referenced by _getProgressInfo().
{ global $ilDB; if(is_array($scorm_item_id)) { $where = "WHERE sco_id IN('"; $where .= implode("','",$scorm_item_id); $where .= "') "; $where .= ("AND obj_id = '".$a_obj_id."' "); } else { $where = "WHERE sco_id = '".$scorm_item_id."' "; $where .= ("AND obj_id = '".$a_obj_id."' "); } $query = "SELECT user_id,sco_id FROM scorm_tracking ". $where. "GROUP BY user_id, sco_id"; $res = $ilDB->query($query); while($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) { $in_progress[$row->sco_id][] = $row->user_id; } return is_array($in_progress) ? $in_progress : array(); }
ilObjSCORMTracking::_getProgressInfo | ( | $ | sco_item_ids, | |
$ | a_obj_id | |||
) |
Definition at line 280 of file class.ilObjSCORMTracking.php.
References $query, $res, $row, and _getInProgress().
Referenced by ilLPStatusSCORM::_getStatusInfo().
{ global $ilDB; $query = "SELECT * FROM scorm_tracking ". "WHERE sco_id IN('".implode("','",$sco_item_ids)."') ". "AND obj_id = '".$a_obj_id."' ". "AND lvalue = 'cmi.core.lesson_status'"; $res = $ilDB->query($query); $info['completed'] = array(); $info['failed'] = array(); while($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) { switch($row->rvalue) { case 'completed': case 'passed': $info['completed'][$row->sco_id][] = $row->user_id; break; case 'failed': $info['failed'][$row->sco_id][] = $row->user_id; break; } } $info['in_progress'] = ilObjSCORMTracking::_getInProgress($sco_item_ids,$a_obj_id); return $info; }
ilObjSCORMTracking::_insertTrackData | ( | $ | a_sahs_id, | |
$ | a_lval, | |||
$ | a_rval, | |||
$ | a_obj_id | |||
) |
Definition at line 156 of file class.ilObjSCORMTracking.php.
References $q.
Referenced by ilSCORMItem::insertTrackData(), ilAICCUnit::insertTrackData(), and ilAICCCourse::insertTrackData().
{ global $ilDB, $ilUser; $q = "INSERT INTO scorm_tracking (user_id, sco_id, lvalue, rvalue, obj_id) ". " VALUES (".$ilDB->quote($ilUser->getId()).",".$ilDB->quote($a_sahs_id). ",".$ilDB->quote($a_lval).",".$ilDB->quote($a_rval). ",".$ilDB->quote($a_obj_id).")"; $ilDB->query($q); }
ilObjSCORMTracking::extractData | ( | ) |
Definition at line 42 of file class.ilObjSCORMTracking.php.
References $_GET, $_POST, and $key.
Referenced by store().
{ $this->insert = array(); if (is_array($_GET["iL"])) { foreach($_GET["iL"] as $key => $value) { $this->insert[] = array("left" => $value, "right" => $_GET["iR"][$key]); } } if (is_array($_POST["iL"])) { foreach($_POST["iL"] as $key => $value) { $this->insert[] = array("left" => $value, "right" => $_POST["iR"][$key]); } } $this->update = array(); if (is_array($_GET["uL"])) { foreach($_GET["uL"] as $key => $value) { $this->update[] = array("left" => $value, "right" => $_GET["uR"][$key]); } } if (is_array($_POST["uL"])) { foreach($_POST["uL"] as $key => $value) { $this->update[] = array("left" => $value, "right" => $_POST["uR"][$key]); } } }
ilObjSCORMTracking::ilObjSCORMTracking | ( | ) |
Constructor public.
Definition at line 36 of file class.ilObjSCORMTracking.php.
References $ilias.
{ global $ilias; }
ilObjSCORMTracking::store | ( | $ | obj_id = 0 , |
|
$ | sahs_id = 0 , |
|||
$ | extractData = 1 | |||
) |
Definition at line 77 of file class.ilObjSCORMTracking.php.
References $_GET, $_POST, $obj_id, $q, $set, $user_id, _lookupObjId(), and extractData().
Referenced by ilObjHACPTracking::putparam().
{ global $ilDB, $ilUser; if (empty($obj_id)) { $obj_id = ilObject::_lookupObjId($_GET["ref_id"]); } if (empty($sahs_id)) $sahs_id = ($_GET["sahs_id"] != "") ? $_GET["sahs_id"] : $_POST["sahs_id"]; if ($extractData==1) $this->extractData(); if (is_object($ilUser)) { $user_id = $ilUser->getId(); } // writing to scorm test log $f = fopen("content/scorm.log", "a"); fwrite($f, "\nCALLING SCORM store()\n"); if ($obj_id <= 1) { fwrite($f, "Error: No obj_id given.\n"); } else { foreach($this->insert as $insert) { $q = "SELECT * FROM scorm_tracking WHERE ". " user_id = ".$ilDB->quote($user_id). " AND sco_id = ".$ilDB->quote($sahs_id). " AND lvalue = ".$ilDB->quote($insert["left"]); $set = $ilDB->query($q); if ($rec = $set->fetchRow(DB_FETCHMODE_ASSOC)) { fwrite($f, "Error Insert, left value already exists. L:".$insert["left"].",R:". $insert["right"].",sahs_id:".$sahs_id.",user_id:".$user_id."\n"); } else { $q = "INSERT INTO scorm_tracking (user_id, sco_id, obj_id, lvalue, rvalue) VALUES ". "(".$ilDB->quote($user_id).",".$ilDB->quote($sahs_id).",". $ilDB->quote($obj_id).",". $ilDB->quote($insert["left"]).",".$ilDB->quote($insert["right"]).")"; $ilDB->query($q); fwrite($f, "Insert - L:".$insert["left"].",R:". $insert["right"].",sahs_id:".$sahs_id.",user_id:".$user_id."\n"); } } foreach($this->update as $update) { $q = "SELECT * FROM scorm_tracking WHERE ". " user_id = ".$ilDB->quote($user_id). " AND sco_id = ".$ilDB->quote($sahs_id). " AND lvalue = ".$ilDB->quote($update["left"]); $set = $ilDB->query($q); if ($rec = $set->fetchRow(DB_FETCHMODE_ASSOC)) { $q = "REPLACE INTO scorm_tracking (user_id, sco_id, obj_id, lvalue, rvalue) VALUES ". "(".$ilDB->quote($user_id).",".$ilDB->quote($sahs_id).",". $ilDB->quote($obj_id).",". $ilDB->quote($update["left"]).",".$ilDB->quote($update["right"]).")"; $ilDB->query($q); fwrite($f, "Update - L:".$update["left"].",R:". $update["right"].",sahs_id:".$sahs_id.",user_id:".$user_id."\n"); } else { fwrite($f, "ERROR Update, left value does not exist. L:".$update["left"].",R:". $update["right"].",sahs_id:".$sahs_id.",user_id:".$user_id."\n"); } } } fclose($f); }