19declare(strict_types=1);
59 if (
null === $defaultTitle) {
74 cert.pattern_certificate_id,
78 cert.acquired_timestamp,
79 cert.currently_active,
91 $query = $this->database->query($sql);
93 if ([] !== $ilCtrlStack) {
94 $ilCtrlStack[] = ilUserCertificateApiGUI::class;
98 while ($row = $this->database->fetchAssoc(
$query)) {
101 if (isset($result[
$id])) {
102 $result[
$id]->addRefId((
int) $row[
'ref_id']);
107 if ([] !== $ilCtrlStack) {
108 $this->
ctrl->setParameterByClass(ilUserCertificateApiGUI::class,
'certificate_id',
$id);
110 $this->
ctrl->clearParametersByClass(ilUserCertificateApiGUI::class);
115 $row[
'title'] ?? $this->defaultTitle,
116 (
int) $row[
'obj_id'],
117 (
int) $row[
'acquired_timestamp'],
118 (
int) $row[
'usr_id'],
122 (
string) $row[
'email'],
123 (
string) $row[
'second_email'],
124 [(
int) $row[
'ref_id']],
128 $result[
$id] = $dataObject;
145 $query = $this->database->query($sql);
147 return (
int) $this->database->fetchAssoc(
$query)[
"count"];
159 il_cert_user_cert.pattern_certificate_id,
160 il_cert_user_cert.obj_id,
161 il_cert_user_cert.usr_id,
162 il_cert_user_cert.user_name,
163 il_cert_user_cert.acquired_timestamp,
164 il_cert_user_cert.currently_active,
165 il_cert_user_cert.id,
167 object_reference.ref_id
168FROM il_cert_user_cert
169INNER JOIN object_data ON object_data.obj_id = il_cert_user_cert.obj_id
170INNER JOIN object_reference ON object_reference.obj_id = il_cert_user_cert.obj_id';
176 il_cert_user_cert.pattern_certificate_id,
177 il_cert_user_cert.obj_id,
178 il_cert_user_cert.usr_id,
179 il_cert_user_cert.user_name,
180 il_cert_user_cert.acquired_timestamp,
181 il_cert_user_cert.currently_active,
182 il_cert_user_cert.id,
183 object_data_del.title,
185FROM il_cert_user_cert
186INNER JOIN object_data_del ON object_data_del.obj_id = il_cert_user_cert.obj_id';
189WHERE object_reference.deleted IS NULL';
194INNER JOIN usr_data ON usr_data.usr_id = cert.usr_id
195INNER JOIN il_orgu_ua ON il_orgu_ua.user_id = cert.usr_id
198 if (!$max_count_only) {
215 foreach ($sorts as [
$key, $direction]) {
220 $orders[] =
'usr_data.login' . $direction;
224 $orders[] =
'usr_data.firstname' . $direction;
228 $orders[] =
'usr_data.lastname' . $direction;
232 $orders[] =
'cert.title' . $direction;
236 $orders[] =
'cert.acquired_timestamp' . $direction;
240 $orders[] =
'usr_data.email' . $direction;
248 return ' ORDER BY ' . implode(
', ', $orders);
261 if (!empty($userIds)) {
266 if (!empty($objIds)) {
271 if (!empty($firstName)) {
272 $wheres[] = $this->database->like(
'usr_data.firstname',
ilDBConstants::T_TEXT,
'%' . $firstName .
'%');
276 if (!empty($lastName)) {
277 $wheres[] = $this->database->like(
'usr_data.lastname',
ilDBConstants::T_TEXT,
'%' . $lastName .
'%');
281 if (!empty($login)) {
286 if (!empty($userEmail)) {
287 $wheres[] =
'(' . $this->database->like(
'usr_data.email',
ilDBConstants::T_TEXT,
'%' . $userEmail .
'%')
288 .
' OR ' . $this->database->like(
'usr_data.second_email',
ilDBConstants::T_TEXT,
'%' . $userEmail .
'%')
293 if (!empty($userIdentification)) {
294 $wheres[] =
'(' . $this->database->like(
'usr_data.login',
ilDBConstants::T_TEXT,
'%' . $userIdentification .
'%')
295 .
' OR ' . $this->database->like(
'usr_data.firstname',
ilDBConstants::T_TEXT,
'%' . $userIdentification .
'%')
296 .
' OR ' . $this->database->like(
'usr_data.lastname',
ilDBConstants::T_TEXT,
'%' . $userIdentification .
'%')
297 .
' OR ' . $this->database->like(
'usr_data.email',
ilDBConstants::T_TEXT,
'%' . $userIdentification .
'%')
298 .
' OR ' . $this->database->like(
'usr_data.second_email',
ilDBConstants::T_TEXT,
'%' . $userIdentification .
'%')
303 if ($issuedBeforeTimestamp !==
null) {
304 $wheres[] =
'cert.acquired_timestamp < ' . $this->database->quote(
305 $issuedBeforeTimestamp,
311 if ($issuedAfterTimestamp !==
null) {
312 $wheres[] =
'cert.acquired_timestamp > ' . $this->database->quote(
313 $issuedAfterTimestamp,
319 if (!empty($title)) {
324 if ($onlyCertActive ===
true) {
333 if (empty($wheres)) {
337 return 'WHERE ' . implode(
' AND ', $wheres);
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
getIssuedBeforeTimestamp()
const SORT_FIELD_USR_LASTNAME
shouldIncludeDeletedObjects()
const SORT_DIRECTION_DESC
const SORT_FIELD_USR_EMAIL
getIssuedAfterTimestamp()
const SORT_FIELD_OBJ_TITLE
const SORT_FIELD_USR_LOGIN
const SORT_FIELD_ISSUE_TIMESTAMP
const SORT_FIELD_USR_FIRSTNAME
getUserCertificateDataMaxCount(UserDataFilter $filter)
getUserData(UserDataFilter $filter, array $ilCtrlStack)
__construct(ilDBInterface $database, ilLogger $logger, ilCtrlInterface $ctrl, ?string $defaultTitle=null)
getQuery(UserDataFilter $filter, bool $max_count_only=false)
createOrderByClause(UserDataFilter $filter)
createWhereCondition(UserDataFilter $filter)
Creating the additional where condition based on the filter object.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Component logger with individual log levels by component id.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...