X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fping.php;h=6b3b015ac80e32bcc09839dad0d5e534ea826061;hb=04c95a5045136cb18d09f0ae6f9cb46975dace13;hp=2783b83ddba63bd84843b5383c7596e6e0f2608f;hpb=5abc22f6c536b4fea7a5becd53561959ba0e7512;p=friendica.git diff --git a/mod/ping.php b/mod/ping.php index 2783b83ddb..6b3b015ac8 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -1,29 +1,44 @@ . + * */ 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\L10n; -use Friendica\Core\PConfig; -use Friendica\Core\System; +use Friendica\Core\Cache\Duration; +use Friendica\Core\Hook; use Friendica\Database\DBA; +use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Group; use Friendica\Model\Item; +use Friendica\Model\Notify\Type; +use Friendica\Model\Verb; +use Friendica\Protocol\Activity; use Friendica\Util\DateTimeFormat; use Friendica\Util\Temporal; use Friendica\Util\Proxy as ProxyUtils; use Friendica\Util\XML; /** - * @brief Outputs the counts and the lists of various notifications + * Outputs the counts and the lists of various notifications * * The output format can be controlled via the GET parameter 'format'. It can be * - xml (deprecated legacy default) @@ -31,30 +46,31 @@ use Friendica\Util\XML; * * 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": [ ], + * "notification": 0, + * "notifications": [ ], + * "sysmsgs": { + * "notice": [ ], + * "info": [ ] + * } + * } + * } * * @param App $a The Friendica App instance + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function ping_init(App $a) { @@ -115,21 +131,22 @@ function ping_init(App $a) 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()]; + $condition = ["`unseen` AND `uid` = ? AND `contact-id` != ? AND (`vid` != ? OR `vid` IS NULL)", + local_user(), local_user(), Verb::getID(Activity::FOLLOW)]; $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]]; + 'network', 'created', 'object', 'parent-author-name', 'parent-author-link', 'parent-guid', 'wall', 'activity']; + $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']) { @@ -179,7 +196,7 @@ function ping_init(App $a) $intro_count = count($intros1) + count($intros2); $intros = $intros1 + $intros2; - $myurl = System::baseUrl() . '/profile/' . $a->user['nickname']; + $myurl = DI::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' ", @@ -188,7 +205,7 @@ function ping_init(App $a) ); $mail_count = count($mails); - if (intval(Config::get('config', 'register_policy')) === REGISTER_APPROVE && is_site_admin()) { + if (intval(DI::config()->get('config', 'register_policy')) === \Friendica\Module\Register::APPROVE && is_site_admin()) { $regs = Friendica\Model\Register::getPending(); if (DBA::isResult($regs)) { @@ -197,7 +214,7 @@ function ping_init(App $a) } $cachekey = "ping_init:".local_user(); - $ev = Cache::get($cachekey); + $ev = DI::cache()->get($cachekey); if (is_null($ev)) { $ev = q( "SELECT type, start, adjust FROM `event` @@ -208,7 +225,7 @@ function ping_init(App $a) DBA::escape(DateTimeFormat::utcNow()) ); if (DBA::isResult($ev)) { - Cache::set($cachekey, $ev, Cache::HOUR); + DI::cache()->set($cachekey, $ev, Duration::HOUR); } } @@ -263,29 +280,13 @@ function ping_init(App $a) foreach ($intros as $intro) { $notif = [ 'id' => 0, - 'href' => System::baseUrl() . '/notifications/intros/' . $intro['id'], + 'href' => DI::baseUrl() . '/notifications/intros/' . $intro['id'], 'name' => $intro['name'], 'url' => $intro['url'], 'photo' => $intro['photo'], 'date' => $intro['datetime'], 'seen' => false, - 'message' => L10n::t('{0} wants to be your friend'), - ]; - $notifs[] = $notif; - } - } - - 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'), + 'message' => DI::l10n()->t('{0} wants to be your friend'), ]; $notifs[] = $notif; } @@ -295,13 +296,13 @@ function ping_init(App $a) foreach ($regs as $reg) { $notif = [ 'id' => 0, - 'href' => System::baseUrl() . '/admin/users/', + 'href' => DI::baseUrl() . '/admin/users/', 'name' => $reg['name'], 'url' => $reg['url'], 'photo' => $reg['micro'], 'date' => $reg['created'], 'seen' => false, - 'message' => L10n::t('{0} requested registration'), + 'message' => DI::l10n()->t('{0} requested registration'), ]; $notifs[] = $notif; } @@ -329,14 +330,7 @@ function ping_init(App $a) 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->isFriendicaApp() || !$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); @@ -377,7 +371,7 @@ function ping_init(App $a) if ($format == 'json') { $data['groups'] = $groups_unseen; $data['forums'] = $forums_unseen; - $data['notify'] = $sysnotify_count + $intro_count + $mail_count + $register_count; + $data['notification'] = $sysnotify_count + $intro_count + $register_count; $data['notifications'] = $notifications; $data['sysmsgs'] = [ 'notice' => $sysmsgs, @@ -402,14 +396,15 @@ function ping_init(App $a) echo XML::fromArray(["result" => $data], $xml); } - killme(); + exit(); } /** - * @brief Retrieves the notifications array for the given user ID + * Retrieves the notifications array for the given user ID * * @param int $uid User id * @return array Associative array of notifications + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ function ping_get_notifications($uid) { @@ -428,8 +423,8 @@ function ping_get_notifications($uid) AND NOT (`notify`.`type` IN (%d, %d)) AND $seensql `notify`.`seen` ORDER BY `notify`.`date` $order LIMIT %d, 50", intval($uid), - intval(NOTIFY_INTRO), - intval(NOTIFY_MAIL), + intval(Type::INTRO), + intval(Type::MAIL), intval($offset) ); @@ -458,7 +453,7 @@ function ping_get_notifications($uid) $notification["message"] = $notification["msg_cache"]; } else { $notification["name"] = strip_tags(BBCode::convert($notification["name"])); - $notification["message"] = format_notification_message($notification["name"], strip_tags(BBCode::convert($notification["msg"]))); + $notification["message"] = Friendica\Model\Notify::formatMessage($notification["name"], strip_tags(BBCode::convert($notification["msg"]))); q( "UPDATE `notify` SET `name_cache` = '%s', `msg_cache` = '%s' WHERE `id` = %d", @@ -468,17 +463,17 @@ function ping_get_notifications($uid) ); } - $notification["href"] = System::baseUrl() . "/notify/view/" . $notification["id"]; + $notification["href"] = DI::baseUrl() . "/notification/" . $notification["id"]; if ($notification["visible"] && !$notification["deleted"] - && 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')) { + if (DI::pConfig()->get(local_user(), 'system', 'detailed_notif')) { $result[$notification["id"]] = $notification; } else { - $result[$notification["parent"]] = $notification; + $result[$notification['parent']] = $notification; } } } @@ -488,7 +483,7 @@ function ping_get_notifications($uid) } /** - * @brief Backward-compatible XML formatting for ping.php output + * Backward-compatible XML formatting for ping.php output * @deprecated * * @param array $data The initial ping data array @@ -496,8 +491,8 @@ function ping_get_notifications($uid) * @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 array $groups_unseen List of unseen group messages - * @param array $forums_unseen List of unseen forum messages + * @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 */