friendica/src/Module/Notifications/Notifications.php

119 lines
3.8 KiB
PHP
Raw Normal View History

<?php
namespace Friendica\Module\Notifications;
use Friendica\Content\Nav;
use Friendica\Content\Pager;
use Friendica\Core\Renderer;
use Friendica\DI;
use Friendica\Module\BaseNotifications;
2020-01-22 23:31:00 +01:00
/**
* Prints all notification types except introduction:
* - Network
* - System
* - Personal
* - Home
*/
class Notifications extends BaseNotifications
{
/**
* {@inheritDoc}
*/
public static function getNotifies()
{
$nm = DI::notify();
$notif_header = '';
// Get the network notifications
if ((DI::args()->get(1) == 'network')) {
$notif_header = DI::l10n()->t('Network Notifications');
2020-01-22 23:37:23 +01:00
$notifs = $nm->getNetworkList(self::$showAll, self::$firstItemNum, self::ITEMS_PER_PAGE);
// Get the system notifications
} elseif ((DI::args()->get(1) == 'system')) {
$notif_header = DI::l10n()->t('System Notifications');
2020-01-22 23:37:23 +01:00
$notifs = $nm->getSystemList(self::$showAll, self::$firstItemNum, self::ITEMS_PER_PAGE);
// Get the personal notifications
} elseif ((DI::args()->get(1) == 'personal')) {
$notif_header = DI::l10n()->t('Personal Notifications');
2020-01-22 23:37:23 +01:00
$notifs = $nm->getPersonalList(self::$showAll, self::$firstItemNum, self::ITEMS_PER_PAGE);
// Get the home notifications
} elseif ((DI::args()->get(1) == 'home')) {
$notif_header = DI::l10n()->t('Home Notifications');
2020-01-22 23:37:23 +01:00
$notifs = $nm->getHomeList(self::$showAll, self::$firstItemNum, self::ITEMS_PER_PAGE);
// fallback - redirect to main page
} else {
DI::baseUrl()->redirect('notifications');
}
// Set the pager
2020-01-22 23:37:23 +01:00
$pager = new Pager(DI::args()->getQueryString(), self::ITEMS_PER_PAGE);
// Add additional informations (needed for json output)
$notifs['items_page'] = $pager->getItemsPerPage();
$notifs['page'] = $pager->getPage();
return [
'header' => $notif_header,
'notifs' => $notifs,
];
}
public static function content(array $parameters = [])
{
Nav::setSelected('notifications');
$notif_content = [];
$notif_nocontent = '';
$notif_result = self::getNotifies();
$notifs = $notif_result['notifs'] ?? [];
$notif_header = $notif_result['header'] ?? '';
if (!empty($notifs['notifications'])) {
// Loop trough ever notification This creates an array with the output html for each
// notification and apply the correct template according to the notificationtype (label).
foreach ($notifs['notifications'] as $notif) {
$notification_templates = [
'like' => 'notifications/likes_item.tpl',
'dislike' => 'notifications/dislikes_item.tpl',
'attend' => 'notifications/attend_item.tpl',
'attendno' => 'notifications/attend_item.tpl',
'attendmaybe' => 'notifications/attend_item.tpl',
'friend' => 'notifications/friends_item.tpl',
'comment' => 'notifications/comments_item.tpl',
'post' => 'notifications/posts_item.tpl',
'notify' => 'notifications/notify.tpl',
];
$tpl_notif = Renderer::getMarkupTemplate($notification_templates[$notif['label']]);
$notif_content[] = Renderer::replaceMacros($tpl_notif, [
'$item_label' => $notif['label'],
'$item_link' => $notif['link'],
'$item_image' => $notif['image'],
'$item_url' => $notif['url'],
'$item_text' => $notif['text'],
'$item_when' => $notif['when'],
'$item_ago' => $notif['ago'],
'$item_seen' => $notif['seen'],
]);
}
} else {
$notif_nocontent = DI::l10n()->t('No more %s notifications.', $notifs['ident']);
}
$notif_show_lnk = [
2020-01-22 23:37:23 +01:00
'href' => (self::$showAll ? 'notifications/' . $notifs['ident'] : 'notifications/' . $notifs['ident'] . '?show=all'),
'text' => (self::$showAll ? DI::l10n()->t('Show unread') : DI::l10n()->t('Show all')),
];
return self::printContent($notif_header, $notif_content, $notif_nocontent, $notif_show_lnk);
}
}