19 declare(strict_types=1);
41 if ($this->dic->user()->getId() === 0 || $this->dic->user()->isAnonymous()) {
45 $has_internal_mail_access = $this->dic->rbac()->system()->checkAccess(
49 if (!$has_internal_mail_access) {
53 $left_interval_timestamp = $this->dic->user()->getPref(self::MUTED_UNTIL_PREFERENCE_KEY);
56 is_numeric($left_interval_timestamp) ? (
int) $left_interval_timestamp : 0
59 $number_of_new_messages = $new_mail_data[
'count'];
60 if ($number_of_new_messages === 0) {
64 $this->dic->language()->loadLanguageModule(
'mail');
66 $factory = $this->
globalScreen()->notifications()->factory();
68 $mail_url =
'ilias.php?baseClass=' . \ilMailGUI::class;
70 if ($number_of_new_messages === 1) {
71 $link_text = $this->dic->language()->txt(
'nc_mail_unread_messages_number_s');
73 $link_text = \sprintf(
74 $this->dic->language()->txt(
'nc_mail_unread_messages_number_p'),
75 $number_of_new_messages
80 $this->dic->language()->txt(
'nc_mail_unread_messages'),
81 $this->dic->ui()->renderer()->render(
82 $this->dic->ui()->factory()
84 ->standard($link_text, $mail_url)
88 $icon = $this->dic->ui()->factory()->symbol()->icon()->standard(Standard::MAIL,
'mail');
89 $title = $this->dic->ui()->factory()->link()->standard(
90 $this->dic->language()->txt(
'nc_mail_noti_item_title'),
95 $notification_item = $this->dic->ui()->factory()
97 ->notification($title, $icon)
98 ->withDescription($body);
101 $date_time = DateTimeImmutable::createFromFormat(
'Y-m-d H:i:s', $new_mail_data[
'max_time']);
102 $notification_item = $notification_item->withProperties([
110 $group = $factory->standardGroup(
$id(
'mail_bucket_group'))
111 ->withTitle($this->dic->language()->txt(
'mail'))
113 $factory->standard($id(
'mail_bucket'))
114 ->withNotificationItem($notification_item)
115 ->withClosedCallable(
117 $this->dic->user()->writePref(self::MUTED_UNTIL_PREFERENCE_KEY, (
string) time());
Interface AbstractNotificationProvider.
Interface IdentificationInterface.
final const string MUTED_UNTIL_PREFERENCE_KEY
static getNewMailsData(ilObjUser $user, int $left_interval=0)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
static getMailObjectRefId()