19 declare(strict_types=1);
45 ?
string $defaultTitle =
null 47 if (
null === $defaultTitle) {
49 $defaultTitle = $DIC->language()->txt(
'certificate_no_object_title');
61 cert.pattern_certificate_id, 65 cert.acquired_timestamp, 66 cert.currently_active, 78 $query = $this->database->query($sql);
80 if ([] !== $ilCtrlStack) {
81 $ilCtrlStack[] = ilUserCertificateApiGUI::class;
85 while ($row = $this->database->fetchAssoc($query)) {
88 if (isset($result[
$id])) {
89 $result[
$id]->addRefId((
int) $row[
'ref_id']);
94 if ([] !== $ilCtrlStack) {
95 $this->
ctrl->setParameterByClass(ilUserCertificateApiGUI::class,
'certificate_id', $id);
97 $this->
ctrl->clearParametersByClass(ilUserCertificateApiGUI::class);
102 $row[
'title'] ?? $this->defaultTitle,
103 (
int) $row[
'obj_id'],
104 (
int) $row[
'acquired_timestamp'],
105 (
int) $row[
'usr_id'],
109 (
string) $row[
'email'],
110 (
string) $row[
'second_email'],
111 [(
int) $row[
'ref_id']],
115 $result[
$id] = $dataObject;
132 $query = $this->database->query($sql);
134 return (
int) $this->database->fetchAssoc($query)[
"count"];
141 il_cert_user_cert.pattern_certificate_id, 142 il_cert_user_cert.obj_id, 143 il_cert_user_cert.usr_id, 144 il_cert_user_cert.user_name, 145 il_cert_user_cert.acquired_timestamp, 146 il_cert_user_cert.currently_active, 147 il_cert_user_cert.id, 149 object_reference.ref_id 150 FROM il_cert_user_cert 151 INNER JOIN object_data ON object_data.obj_id = il_cert_user_cert.obj_id 152 INNER JOIN object_reference ON object_reference.obj_id = il_cert_user_cert.obj_id';
158 il_cert_user_cert.pattern_certificate_id, 159 il_cert_user_cert.obj_id, 160 il_cert_user_cert.usr_id, 161 il_cert_user_cert.user_name, 162 il_cert_user_cert.acquired_timestamp, 163 il_cert_user_cert.currently_active, 164 il_cert_user_cert.id, 165 object_data_del.title, 167 FROM il_cert_user_cert 168 INNER JOIN object_data_del ON object_data_del.obj_id = il_cert_user_cert.obj_id';
171 WHERE object_reference.deleted IS NULL';
176 INNER JOIN usr_data ON usr_data.usr_id = cert.usr_id 177 INNER JOIN il_orgu_ua ON il_orgu_ua.user_id = cert.usr_id 180 if (!$max_count_only) {
197 foreach ($sorts as [$key, $direction]) {
202 $orders[] =
'usr_data.login' . $direction;
206 $orders[] =
'usr_data.firstname' . $direction;
210 $orders[] =
'usr_data.lastname' . $direction;
214 $orders[] =
'cert.title' . $direction;
218 $orders[] =
'cert.acquired_timestamp' . $direction;
222 $orders[] =
'usr_data.email' . $direction;
230 return ' ORDER BY ' . implode(
', ', $orders);
241 if (!empty($userIds)) {
246 if (!empty($objIds)) {
251 if (!empty($firstName)) {
252 $wheres[] = $this->database->like(
'usr_data.firstname',
ilDBConstants::T_TEXT,
'%' . $firstName .
'%');
256 if (!empty($lastName)) {
257 $wheres[] = $this->database->like(
'usr_data.lastname',
ilDBConstants::T_TEXT,
'%' . $lastName .
'%');
261 if (!empty($login)) {
266 if (!empty($userEmail)) {
267 $wheres[] =
'(' . $this->database->like(
'usr_data.email',
ilDBConstants::T_TEXT,
'%' . $userEmail .
'%')
268 .
' OR ' . $this->database->like(
'usr_data.second_email',
ilDBConstants::T_TEXT,
'%' . $userEmail .
'%')
273 if (!empty($userIdentification)) {
274 $wheres[] =
'(' . $this->database->like(
'usr_data.login',
ilDBConstants::T_TEXT,
'%' . $userIdentification .
'%')
275 .
' OR ' . $this->database->like(
'usr_data.firstname',
ilDBConstants::T_TEXT,
'%' . $userIdentification .
'%')
276 .
' OR ' . $this->database->like(
'usr_data.lastname',
ilDBConstants::T_TEXT,
'%' . $userIdentification .
'%')
277 .
' OR ' . $this->database->like(
'usr_data.email',
ilDBConstants::T_TEXT,
'%' . $userIdentification .
'%')
278 .
' OR ' . $this->database->like(
'usr_data.second_email',
ilDBConstants::T_TEXT,
'%' . $userIdentification .
'%')
283 if ($issuedBeforeTimestamp !==
null) {
284 $wheres[] =
'cert.acquired_timestamp < ' . $this->database->quote(
285 $issuedBeforeTimestamp,
291 if ($issuedAfterTimestamp !==
null) {
292 $wheres[] =
'cert.acquired_timestamp > ' . $this->database->quote(
293 $issuedAfterTimestamp,
299 if (!empty($title)) {
304 if ($onlyCertActive) {
313 if (empty($wheres)) {
317 return 'WHERE ' . implode(
' AND ', $wheres);
createOrderByClause(UserDataFilter $filter)
final const SORT_DIRECTION_DESC
__construct(private readonly ilDBInterface $database, private readonly ilCtrlInterface $ctrl, ?string $defaultTitle=null)
getUserCertificateDataMaxCount(UserDataFilter $filter)
getIssuedAfterTimestamp()
final const SORT_FIELD_USR_LASTNAME
getQuery(UserDataFilter $filter, bool $max_count_only=false)
readonly string $defaultTitle
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
createWhereCondition(UserDataFilter $filter)
Creating the additional where condition based on the filter object.
final const SORT_FIELD_USR_EMAIL
getIssuedBeforeTimestamp()
final const SORT_FIELD_ISSUE_TIMESTAMP
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
final const SORT_FIELD_OBJ_TITLE
final const SORT_FIELD_USR_LOGIN
final const SORT_FIELD_USR_FIRSTNAME
shouldIncludeDeletedObjects()
getUserData(UserDataFilter $filter, array $ilCtrlStack)