*/
use Friendica\App;
-use Friendica\Content\Feature;
use Friendica\Content\ForumManager;
use Friendica\Content\Text\BBCode;
-use Friendica\Core\Addon;
use Friendica\Core\Cache;
use Friendica\Core\Config;
+use Friendica\Core\Hook;
use Friendica\Core\L10n;
use Friendica\Core\PConfig;
use Friendica\Core\System;
use Friendica\Util\Proxy as ProxyUtils;
use Friendica\Util\XML;
-require_once 'include/enotify.php';
-
/**
* @brief Outputs the counts and the lists of various notifications
*
*
* Expected JSON structure:
* {
- * "result": {
- * "intro": 0,
- * "mail": 0,
- * "net": 0,
- * "home": 0,
- * "register": 0,
- * "all-events": 0,
- * "all-events-today": 0,
- * "events": 0,
- * "events-today": 0,
- * "birthdays": 0,
- * "birthdays-today": 0,
- * "groups": [ ],
- * "forums": [ ],
- * "notify": 0,
- * "notifications": [ ],
- * "sysmsgs": {
- * "notice": [ ],
- * "info": [ ]
- * }
- * }
- * }
+ * "result": {
+ * "intro": 0,
+ * "mail": 0,
+ * "net": 0,
+ * "home": 0,
+ * "register": 0,
+ * "all-events": 0,
+ * "all-events-today": 0,
+ * "events": 0,
+ * "events-today": 0,
+ * "birthdays": 0,
+ * "birthdays-today": 0,
+ * "groups": [ ],
+ * "forums": [ ],
+ * "notify": 0,
+ * "notifications": [ ],
+ * "sysmsgs": {
+ * "notice": [ ],
+ * "info": [ ]
+ * }
+ * }
+ * }
*
* @param App $a The Friendica App instance
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
function ping_init(App $a)
{
$format = 'json';
}
- $tags = [];
- $comments = [];
- $likes = [];
- $dislikes = [];
- $friends = [];
- $posts = [];
$regs = [];
- $mails = [];
$notifications = [];
$intro_count = 0;
header("Content-type: text/xml");
echo XML::fromArray($data, $xml);
}
- killme();
+ exit();
}
$notifs = ping_get_notifications(local_user());
$condition = ["`unseen` AND `uid` = ? AND `contact-id` != ?", local_user(), local_user()];
$fields = ['id', 'parent', 'verb', 'author-name', 'unseen', 'author-link', 'author-avatar', 'contact-avatar',
'network', 'created', 'object', 'parent-author-name', 'parent-author-link', 'parent-guid', 'wall'];
- $params = ['order' => ['created' => true]];
+ $params = ['order' => ['received' => true]];
$items = Item::selectForUser(local_user(), $fields, $condition, $params);
if (DBA::isResult($items)) {
$items_unseen = Item::inArray($items);
$arr = ['items' => $items_unseen];
- Addon::callHooks('network_ping', $arr);
+ Hook::callAll('network_ping', $arr);
foreach ($items_unseen as $item) {
if ($item['wall']) {
}
if ($network_count) {
- if (intval(Feature::isEnabled(local_user(), 'groups'))) {
- // Find out how unseen network posts are spread across groups
- $group_counts = Group::countUnseen();
- if (DBA::isResult($group_counts)) {
- foreach ($group_counts as $group_count) {
- if ($group_count['count'] > 0) {
- $groups_unseen[] = $group_count;
- }
+ // Find out how unseen network posts are spread across groups
+ $group_counts = Group::countUnseen();
+ if (DBA::isResult($group_counts)) {
+ foreach ($group_counts as $group_count) {
+ if ($group_count['count'] > 0) {
+ $groups_unseen[] = $group_count;
}
}
}
- if (intval(Feature::isEnabled(local_user(), 'forumlist_widget'))) {
- $forum_counts = ForumManager::countUnseenItems();
- if (DBA::isResult($forum_counts)) {
- foreach ($forum_counts as $forum_count) {
- if ($forum_count['count'] > 0) {
- $forums_unseen[] = $forum_count;
- }
+ $forum_counts = ForumManager::countUnseenItems();
+ if (DBA::isResult($forum_counts)) {
+ foreach ($forum_counts as $forum_count) {
+ if ($forum_count['count'] > 0) {
+ $forums_unseen[] = $forum_count;
}
}
}
$intro_count = count($intros1) + count($intros2);
$intros = $intros1 + $intros2;
- $myurl = System::baseUrl() . '/profile/' . $a->user['nickname'] ;
+ $myurl = System::baseUrl() . '/profile/' . $a->user['nickname'];
$mails = q(
"SELECT `id`, `from-name`, `from-url`, `from-photo`, `created` FROM `mail`
WHERE `uid` = %d AND `seen` = 0 AND `from-url` != '%s' ",
);
$mail_count = count($mails);
- if (intval(Config::get('config', 'register_policy')) === REGISTER_APPROVE && is_site_admin()) {
- $regs = q(
- "SELECT `contact`.`name`, `contact`.`url`, `contact`.`micro`, `register`.`created`
- FROM `contact` RIGHT JOIN `register` ON `register`.`uid` = `contact`.`uid`
- WHERE `contact`.`self` = 1"
- );
+ if (intval(Config::get('config', 'register_policy')) === \Friendica\Module\Register::APPROVE && is_site_admin()) {
+ $regs = Friendica\Model\Register::getPending();
if (DBA::isResult($regs)) {
$register_count = count($regs);
DBA::escape(DateTimeFormat::utcNow())
);
if (DBA::isResult($ev)) {
- Cache::set($cachekey, $ev, CACHE_HOUR);
+ Cache::set($cachekey, $ev, Cache::HOUR);
}
}
}
}
- if (DBA::isResult($mails)) {
- foreach ($mails as $mail) {
- $notif = [
- 'id' => 0,
- 'href' => System::baseUrl() . '/message/' . $mail['id'],
- 'name' => $mail['from-name'],
- 'url' => $mail['from-url'],
- 'photo' => $mail['from-photo'],
- 'date' => $mail['created'],
- 'seen' => false,
- 'message' => L10n::t('{0} sent you a message'),
- ];
- $notifs[] = $notif;
- }
- }
-
if (DBA::isResult($regs)) {
foreach ($regs as $reg) {
$notif = [
usort($notifs, $sort_function);
if (DBA::isResult($notifs)) {
- // Are the nofications called from the regular process or via the friendica app?
- $regularnotifications = (!empty($_GET['uid']) && !empty($_GET['_']));
-
foreach ($notifs as $notif) {
- if ($a->is_friendica_app() || !$regularnotifications) {
- $notif['message'] = str_replace("{0}", $notif['name'], $notif['message']);
- }
-
$contact = Contact::getDetailsByURL($notif['url']);
if (isset($contact['micro'])) {
$notif['photo'] = ProxyUtils::proxifyUrl($contact['micro'], false, ProxyUtils::SIZE_MICRO);
$sysmsgs = [];
$sysmsgs_info = [];
- if (x($_SESSION, 'sysmsg')) {
+ if (!empty($_SESSION['sysmsg'])) {
$sysmsgs = $_SESSION['sysmsg'];
unset($_SESSION['sysmsg']);
}
- if (x($_SESSION, 'sysmsg_info')) {
+ if (!empty($_SESSION['sysmsg_info'])) {
$sysmsgs_info = $_SESSION['sysmsg_info'];
unset($_SESSION['sysmsg_info']);
}
if ($format == 'json') {
$data['groups'] = $groups_unseen;
$data['forums'] = $forums_unseen;
- $data['notify'] = $sysnotify_count + $intro_count + $mail_count + $register_count;
+ $data['notify'] = $sysnotify_count + $intro_count + $register_count;
$data['notifications'] = $notifications;
$data['sysmsgs'] = [
'notice' => $sysmsgs,
echo XML::fromArray(["result" => $data], $xml);
}
- killme();
+ exit();
}
/**
*
* @param int $uid User id
* @return array Associative array of notifications
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
function ping_get_notifications($uid)
{
$order = "DESC";
$quit = false;
- $a = get_app();
-
do {
$r = q(
"SELECT `notify`.*, `item`.`visible`, `item`.`deleted`
if ($notification["visible"]
&& !$notification["deleted"]
- && !(x($result, $notification["parent"]) && !empty($result[$notification["parent"]]))
+ && empty($result[$notification["parent"]])
) {
// Should we condense the notifications or show them all?
if (PConfig::get(local_user(), 'system', 'detailed_notif')) {
* @param array $notifs Complete list of notification
* @param array $sysmsgs List of system notice messages
* @param array $sysmsgs_info List of system info messages
- * @param int $groups_unseen Number of unseen group items
- * @param int $forums_unseen Number of unseen forum items
+ * @param array $groups_unseen List of unseen group items
+ * @param array $forums_unseen List of unseen forum items
*
* @return array XML-transform ready data array
*/