ILIAS  release_8 Revision v8.24
ilUserCertificateTableProvider Class Reference
+ Collaboration diagram for ilUserCertificateTableProvider:

Public Member Functions

 __construct (ilDBInterface $database, ilLogger $logger, string $defaultTitle)
 
 fetchDataSet (int $userId, array $params, array $filter)
 

Protected Member Functions

 getOrderByPart (array $params, array $filter)
 

Private Attributes

ilDBInterface $database
 
ilLogger $logger
 
string $defaultTitle
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilUserCertificateTableProvider::__construct ( ilDBInterface  $database,
ilLogger  $logger,
string  $defaultTitle 
)

Member Function Documentation

◆ fetchDataSet()

ilUserCertificateTableProvider::fetchDataSet ( int  $userId,
array  $params,
array  $filter 
)
Parameters
int$userId
array<string,mixed>$params
array<string,mixed>$filter
Returns
array{cnt: int, items: array<int, array>}

Definition at line 46 of file class.ilUserCertificateTableProvider.php.

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

References $data, $params, $query, getOrderByPart(), ILIAS\Repository\int(), and ILIAS\Repository\logger().

+ Here is the call graph for this function:

◆ getOrderByPart()

ilUserCertificateTableProvider::getOrderByPart ( array  $params,
array  $filter 
)
protected

Definition at line 144 of file class.ilUserCertificateTableProvider.php.

144 : string
145 {
146 if (isset($params['order_field'])) {
147 if (!is_string($params['order_field'])) {
148 throw new InvalidArgumentException('Please provide a valid order field.');
149 }
150
151 if (!in_array($params['order_field'], ['date', 'id', 'title'])) {
152 throw new InvalidArgumentException('Please provide a valid order field.');
153 }
154
155 if ($params['order_field'] === 'date') {
156 $params['order_field'] = 'acquired_timestamp';
157 }
158
159 if (!isset($params['order_direction'])) {
160 $params['order_direction'] = 'ASC';
161 } elseif (!in_array(strtolower($params['order_direction']), ['asc', 'desc'])) {
162 throw new InvalidArgumentException('Please provide a valid order direction.');
163 }
164
165 return ' ORDER BY ' . $params['order_field'] . ' ' . $params['order_direction'];
166 }
167
168 return '';
169 }

References $params.

Referenced by fetchDataSet().

+ Here is the caller graph for this function:

Field Documentation

◆ $database

ilDBInterface ilUserCertificateTableProvider::$database
private

Definition at line 26 of file class.ilUserCertificateTableProvider.php.

Referenced by __construct().

◆ $defaultTitle

string ilUserCertificateTableProvider::$defaultTitle
private

Definition at line 28 of file class.ilUserCertificateTableProvider.php.

Referenced by __construct().

◆ $logger

ilLogger ilUserCertificateTableProvider::$logger
private

Definition at line 27 of file class.ilUserCertificateTableProvider.php.

Referenced by __construct().


The documentation for this class was generated from the following file: