Class ilObjSCORMTracking. More...
Inheritance diagram for ilObjSCORMTracking: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 31 of file class.ilObjSCORMTracking.php.
| ilObjSCORMTracking::_getCompleted | ( | $ | scorm_item_id, | |
| $ | a_obj_id | |||
| ) |
Definition at line 204 of file class.ilObjSCORMTracking.php.
References $res, and ilUtil::quoteArray().
{
global $ilDB;
if(is_array($scorm_item_id))
{
$where = "WHERE sco_id IN(".implode(",",ilUtil::quoteArray($scorm_item_id)).") ";
}
else
{
$where = "sco_id = ".$ilDB->quote($scorm_item_id)." ";
}
$query = "SELECT DISTINCT(user_id) FROM scorm_tracking ".
$where.
"AND obj_id = ".$ilDB->quote($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();
}
Here is the call graph for this function:| ilObjSCORMTracking::_getCountCompletedPerUser | ( | $ | a_scorm_item_ids, | |
| $ | a_obj_id | |||
| ) |
Definition at line 257 of file class.ilObjSCORMTracking.php.
References $res, and ilUtil::quoteArray().
Referenced by ilLPStatusSCORM::_getStatusInfo().
{
global $ilDB;
$where = "WHERE sco_id IN(";
$where .= implode(",",ilUtil::quoteArray($a_scorm_item_ids));
$where .= ") ";
$where .= ("AND obj_id = ".$ilDB->quote($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();
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilObjSCORMTracking::_getFailed | ( | $ | scorm_item_id, | |
| $ | a_obj_id | |||
| ) |
Definition at line 231 of file class.ilObjSCORMTracking.php.
References $res.
{
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 172 of file class.ilObjSCORMTracking.php.
References $res, and ilUtil::quoteArray().
Referenced by _getProgressInfo().
{
global $ilDB;
if(is_array($scorm_item_id))
{
$where = "WHERE sco_id IN(";
$where .= implode(",",ilUtil::quoteArray($scorm_item_id));
$where .= ") ";
$where .= ("AND obj_id = ".$ilDB->quote($a_obj_id)." ");
}
else
{
$where = "WHERE sco_id = ".$ilDB->quote($scorm_item_id)." ";
$where .= ("AND obj_id = ".$ilDB->quote($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();
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilObjSCORMTracking::_getProgressInfo | ( | $ | sco_item_ids, | |
| $ | a_obj_id | |||
| ) |
Definition at line 283 of file class.ilObjSCORMTracking.php.
References $res, _getInProgress(), and ilUtil::quoteArray().
Referenced by ilLPStatusSCORM::_getStatusInfo().
{
global $ilDB;
$query = "SELECT * FROM scorm_tracking ".
"WHERE sco_id IN(".implode(",",ilUtil::quoteArray($sco_item_ids)).") ".
"AND obj_id = ".$ilDB->quote($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;
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilObjSCORMTracking::_insertTrackData | ( | $ | a_sahs_id, | |
| $ | a_lval, | |||
| $ | a_rval, | |||
| $ | a_obj_id | |||
| ) |
Definition at line 159 of file class.ilObjSCORMTracking.php.
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);
}
Here is the caller graph for this function:| ilObjSCORMTracking::extractData | ( | ) |
Definition at line 43 of file class.ilObjSCORMTracking.php.
References $_GET.
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]);
}
}
}
Here is the caller graph for this function:| ilObjSCORMTracking::ilObjSCORMTracking | ( | ) |
Constructor public.
Definition at line 37 of file class.ilObjSCORMTracking.php.
References $ilias.
{
global $ilias;
}
| ilObjSCORMTracking::store | ( | $ | obj_id = 0, |
|
| $ | sahs_id = 0, |
|||
| $ | extractData = 1 | |||
| ) |
Definition at line 78 of file class.ilObjSCORMTracking.php.
References $_GET, ilObject::_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("./Modules/ScormAicc/log/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"]).
" AND obj_id = ".$ilDB->quote($obj_id);
$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"]).
" AND obj_id = ".$ilDB->quote($obj_id);
$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);
}
Here is the call graph for this function:
Here is the caller graph for this function:
1.7.1