40 : array
41 {
42 $this->
logger->debug(sprintf(
'START - Fetching all active certificates for user: "%s"', $userId));
43 $additional_select = '';
44
45 $sql = 'SELECT
46 ' . self::TABLE_NAME . '.id,
47 ' . self::TABLE_NAME . '.obj_type,
48 ' . self::TABLE_NAME . '.acquired_timestamp,
49 ' . self::TABLE_NAME . '.tile_image_ident,
50 ' . $additional_select . ' usr_data.firstname,
51 usr_data.lastname,
52 ' . self::TABLE_NAME . '.obj_id,
53 (CASE
54 WHEN (trans.title IS NOT NULL AND LENGTH(trans.title) > 0) THEN trans.title
55 WHEN (object_data.title IS NOT NULL AND LENGTH(object_data.title) > 0) THEN object_data.title
56 WHEN (object_data_del.title IS NOT NULL AND LENGTH(object_data_del.title) > 0) THEN object_data_del.title
57 ELSE ' . $this->
database->quote($this->defaultTitle,
'text') .
'
58 END
59 ) as title,
60 (CASE
61 WHEN (trans.description IS NOT NULL AND LENGTH(trans.description) > 0) THEN trans.description
62 WHEN (object_data.description IS NOT NULL AND LENGTH(object_data.description) > 0) THEN object_data.description
63 WHEN (object_data_del.description IS NOT NULL AND LENGTH(object_data_del.description) > 0) THEN object_data_del.description
64 ELSE ""
65 END
66 ) as description
67FROM ' . self::TABLE_NAME . '
68LEFT JOIN object_data ON object_data.obj_id = ' . self::TABLE_NAME . '.obj_id
69LEFT JOIN object_translation trans ON trans.obj_id = object_data.obj_id
70AND trans.lang_code = ' . $this->
database->quote(
$params[
'language'],
'text') .
'
71LEFT JOIN object_data_del ON object_data_del.obj_id = ' . self::TABLE_NAME . '.obj_id
72LEFT JOIN usr_data ON usr_data.usr_id = ' . self::TABLE_NAME . '.usr_id
73WHERE ' . self::TABLE_NAME .
'.usr_id = ' . $this->
database->quote($userId,
'integer') .
' AND currently_active = 1';
74
77 }
78
80 if (!is_numeric(
$params[
'limit'])) {
81 throw new InvalidArgumentException('Please provide a valid numerical limit.');
82 }
83
84 if (!isset(
$params[
'offset'])) {
86 } elseif (!is_numeric(
$params[
'offset'])) {
87 throw new InvalidArgumentException('Please provide a valid numerical offset.');
88 }
89
91 }
92
93 $query = $this->
database->query($sql);
94
96 'items' => [],
97 ];
98
99 while ($row = $this->
database->fetchAssoc($query)) {
100 $title = $row['title'];
101
103 'id' => (
int) $row[
'id'],
104 'title' => $title,
105 'obj_id' => (int) $row['obj_id'],
106 'obj_type' => $row['obj_type'],
107 'date' => (
int) $row[
'acquired_timestamp'],
108 'tile_image_ident' => $row['tile_image_ident'],
109 'description' => $row['description'],
110 'firstname' => $row['firstname'],
111 'lastname' => $row['lastname'],
112 ];
113 }
114
116 $cnt_sql = '
117 SELECT COUNT(*) cnt
118 FROM ' . self::TABLE_NAME . '
119 WHERE usr_id = ' . $this->
database->quote($userId,
'integer') .
' AND currently_active = 1';
120
122
123 $data[
'cnt'] = (
int) $row_cnt[
'cnt'];
124
126 sprintf(
127 'All active certificates for user: "%s" total: "%s"',
128 $userId,
130 )
131 );
132 } else {
134 }
135
136 $this->
logger->debug(sprintf(
'END - Actual results: "%s"', json_encode(
$data, JSON_THROW_ON_ERROR)));
137
139 }
getOrderByPart(array $params, array $filter)
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params