ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
AwarenessToastProvider.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
23use ilDateTime;
28use ilSetting;
29use ilUserUtil;
30
35{
36 private const PROVIDER_KEY = 'awareness';
37
38 public const MAX_ONLINE_USER_COUNT = 20;
39
43 public function getToasts(): array
44 {
45 $this->dic->language()->loadLanguageModule('awrn');
46 $settings = new ilSetting('awrn');
47
48 $toasts = [];
49 if (
50 $settings->get('awrn_enabled', '0') !== '1' ||
51 $settings->get('use_osd', '0') !== '1' ||
52 0 === $this->dic->user()->getId() ||
53 $this->dic->user()->isAnonymous()
54 ) {
55 return $toasts;
56 }
57
59 unset($users[$this->dic->user()->getId()], $users[ANONYMOUS_USER_ID]);
60 $users = array_slice($users, 0, self::MAX_ONLINE_USER_COUNT, true);
61
62 $new_user_ids = [];
63 foreach ($users as $id => $user) {
64 $time = (new ilDateTime($user['last_login'], IL_CAL_DATETIME, $this->dic->user()->getTimeZone()))->getUnixTime();
65 if ($time >= (time() - ($this->dic->http()->request()->getQueryParams()['max_age'] ?? 0))) {
66 $new_user_ids[] = $id;
67 }
68 }
69
71 $new_user_ids,
72 true,
73 false,
74 "",
75 false,
76 false,
77 true,
78 true
79 );
80
81 if ($new_users !== []) {
82 $setting = new ilSetting('notifications');
83 $toast = $this->toast_factory
84 ->standard(
85 $this->if->identifier(self::PROVIDER_KEY . '_' . $this->dic->user()->getId()),
86 $this->dic->language()->txt('awareness_now_online')
87 )
88 ->withIcon($this->dic->ui()->factory()->symbol()->icon()->standard(Standard::USR, ''));
89 $links = [];
90 foreach ($new_users as $user) {
91 $uname = "[" . $user['login'] . "]";
92 if ($user['public_profile']) {
93 $uname = $user['lastname'] . ", " . $user['firstname'] . " " . $uname;
94 }
95
96 $toast = $toast->withAdditionToastAction(
97 $this->toast_factory->action(
98 self::PROVIDER_KEY . '_' . $user['id'],
99 $uname,
100 function () use ($user): void {
101 $this->dic->ctrl()->redirectToURL('/goto.php?target=usr_' . $user['id']);
102 }
103 )
104 );
105 }
106
107 $toasts = [$toast];
108 }
109
110 return $toasts;
111 }
112}
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
Collects users from all providers.
ilSetting $setting
Definition: class.ilias.php:68
const IL_CAL_DATETIME
@classDescription Date and time handling
ILIAS Setting 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=null)
Default behaviour is:
const ANONYMOUS_USER_ID
Definition: constants.php:27
if(!file_exists('../ilias.ini.php'))