19 declare(strict_types=0);
42 $all_page_ids = self::getLMPages($a_obj_id);
43 foreach (self::getVisitedPages(
46 if (!(
bool)
sizeof(array_diff($all_page_ids, $user_page_ids))) {
59 $status = self::LP_STATUS_NOT_ATTEMPTED_NUM;
63 $status = self::LP_STATUS_IN_PROGRESS_NUM;
65 if (self::hasVisitedAllPages($a_obj_id, $a_usr_id)) {
66 $status = self::LP_STATUS_COMPLETED_NUM;
80 $all_page_ids =
sizeof(self::getLMPages($a_obj_id));
84 $user_page_ids =
sizeof(self::getVisitedPages($a_obj_id, $a_usr_id));
85 return (
int) floor($user_page_ids / $all_page_ids * 100);
92 $all_page_ids = self::getLMPages($a_obj_id);
93 if (!
sizeof($all_page_ids)) {
96 $user_page_ids = self::getVisitedPages($a_obj_id, $a_user_id);
97 return !(bool) array_diff($all_page_ids, $user_page_ids);
104 $ilDB = $DIC[
'ilDB'];
109 "SELECT lm_data.obj_id" .
111 " JOIN lm_tree ON (lm_tree.child = lm_data.obj_id)" .
112 " WHERE lm_tree.lm_id = " .
$ilDB->quote($a_obj_id,
"integer") .
113 " AND lm_data.type = " .
$ilDB->quote(
"pg",
"text")
115 while ($row =
$ilDB->fetchAssoc($set)) {
126 ?
int $a_user_id =
null 130 $ilDB = $DIC[
'ilDB'];
134 $all_page_ids = self::getLMPages($a_obj_id);
135 if (!
sizeof($all_page_ids)) {
139 $sql =
"SELECT obj_id, usr_id" .
140 " FROM lm_read_event" .
141 " WHERE " .
$ilDB->in(
"obj_id", $all_page_ids,
"",
"integer");
144 $sql .=
" AND usr_id = " .
$ilDB->quote($a_user_id,
"integer");
147 $set =
$ilDB->query($sql);
148 while ($row =
$ilDB->fetchAssoc($set)) {
149 $res[(
int) $row[
"usr_id"]][] = (
int) $row[
"obj_id"];
static _lookupActive(int $a_id, string $a_parent_type, bool $a_check_scheduled_activation=false, string $a_lang="-")
lookup activation status
static getLMPages(int $a_obj_id)
static _getCompleted(int $a_obj_id)
Static function to read the users who have the status 'completed'.
determineStatus(int $a_obj_id, int $a_usr_id, ?object $a_obj=null)
static hasAccessed(int $a_obj_id, int $a_usr_id)
Has accessed.
static getVisitedPages(int $a_obj_id, ?int $a_user_id=null)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static lookupUsersInProgress(int $a_obj_id)
static _getCompleted(int $a_obj_id)
static hasVisitedAllPages(int $a_obj_id, int $a_user_id)
determinePercentage(int $a_obj_id, int $a_usr_id, ?object $a_obj=null)
static _getInProgress(int $a_obj_id)
static _lookupType(int $id, bool $reference=false)