ILIAS  release_8 Revision v8.24
Subscriber.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
24use ilObjUser;
25use ilUserUtil;
28
34{
35 protected ilDBInterface $db;
36 protected ilObjUser $user;
37
39 {
40 $this->db = $db;
41 $this->user = $user;
42 }
43
47 public function getInitialUserProfileData(): array
48 {
49 $conversationIds = [];
50
51 $res = $this->db->queryF(
52 'SELECT DISTINCT(conversation_id) FROM osc_activity WHERE user_id = %s',
53 ['integer'],
54 [$this->user->getId()]
55 );
56 while ($row = $this->db->fetchAssoc($res)) {
57 $conversationIds[$row['conversation_id']] = $row['conversation_id'];
58 }
59
60 $res = $this->db->queryF(
61 'SELECT DISTINCT(conversation_id) FROM osc_messages WHERE user_id = %s',
62 ['integer'],
63 [$this->user->getId()]
64 );
65 while ($row = $this->db->fetchAssoc($res)) {
66 $conversationIds[$row['conversation_id']] = $row['conversation_id'];
67 }
68
69 if (0 === count($conversationIds)) {
70 return [];
71 }
72
73 $usrIds = [];
74
75 $in = $this->db->in('id', $conversationIds, false, 'text');
76 $res = $this->db->query('SELECT DISTINCT(participants) FROM osc_conversation WHERE ' . $in);
77 while ($row = $this->db->fetchAssoc($res)) {
78 $participants = json_decode($row['participants'], true, 512, JSON_THROW_ON_ERROR);
79
80 if (is_array($participants)) {
81 $usrIds = array_unique(array_merge($usrIds, array_filter(array_map(static function ($user): int {
82 if (is_array($user) && isset($user['id'])) {
83 return (int) $user['id'];
84 }
85
86 return 0;
87 }, $participants))));
88 }
89 }
90
91 return $this->getDataByUserIds($usrIds);
92 }
93
98 public function getDataByUserIds(array $usrIds): array
99 {
100 $usrIds = array_filter(array_map('intval', array_map('trim', $usrIds)));
101
104
105 $publicData = ilUserUtil::getNamePresentation($usrIds, true, false, '', false, true, false, true);
106
107 $data = [];
108
109 foreach ($usrIds as $usr_id) {
110 $publicImage = $publicData[$usr_id]['img'] ?? '';
111 $publicName = '';
112
113 if (isset($publicData[$usr_id])) {
114 $login = '';
115 if (isset($publicData[$usr_id]['login'])) {
116 $publicName = $login = $publicData[$usr_id]['login'];
117 }
118
119 if (isset($publicData[$usr_id]['public_profile']) && $publicData[$usr_id]['public_profile']) {
120 $publicName = implode(' ', array_filter(array_map('trim', [
121 (string) ($publicData[$usr_id]['firstname'] ?? ''),
122 (string) ($publicData[$usr_id]['lastname'] ?? ''),
123 ])));
124
125 if ($publicName === '') {
126 $publicName = $login;
127 }
128 }
129 }
130
131 $data[$usr_id] = [
132 'public_name' => $publicName,
133 'profile_image' => $publicImage
134 ];
135 }
136
138
139 return $data;
140 }
141}
__construct(ilDBInterface $db, ilObjUser $user)
Definition: Subscriber.php:38
User class.
Class ilUserUtil.
static getNamePresentation( $a_user_id, bool $a_user_image=false, bool $a_profile_link=false, string $a_profile_back_link="", bool $a_force_first_lastname=false, bool $a_omit_login=false, bool $a_sortable=true, bool $a_return_data_array=false, $a_ctrl_path="ilpublicuserprofilegui")
Default behaviour is:
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilWACSignedPath.
static setTokenMaxLifetimeInSeconds(int $token_max_lifetime_in_seconds)
static getTokenMaxLifetimeInSeconds()
Interface ilDBInterface.
$res
Definition: ltiservices.php:69