]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/NotificationsManager.php
Changing Friendica\App\Mode from static methods to public methods
[friendica.git] / src / Core / NotificationsManager.php
index 55effc14a4a044f55f67ffc10493660ebbb22b80..f8c4ee3f86dc9798fe2eac29867229f6292ec44c 100644 (file)
@@ -9,6 +9,7 @@ namespace Friendica\Core;
 use Friendica\BaseObject;
 use Friendica\Content\Text\BBCode;
 use Friendica\Content\Text\HTML;
+use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
 use Friendica\Model\Item;
@@ -164,39 +165,41 @@ class NotificationsManager extends BaseObject
         */
        public function getTabs()
        {
+               $selected = defaults(self::getApp()->argv, 1, '');
+
                $tabs = [
                        [
                                'label' => L10n::t('System'),
                                'url'   => 'notifications/system',
-                               'sel'   => ((self::getApp()->argv[1] == 'system') ? 'active' : ''),
+                               'sel'   => (($selected == 'system') ? 'active' : ''),
                                'id'    => 'system-tab',
                                'accesskey' => 'y',
                        ],
                        [
                                'label' => L10n::t('Network'),
                                'url'   => 'notifications/network',
-                               'sel'   => ((self::getApp()->argv[1] == 'network') ? 'active' : ''),
+                               'sel'   => (($selected == 'network') ? 'active' : ''),
                                'id'    => 'network-tab',
                                'accesskey' => 'w',
                        ],
                        [
                                'label' => L10n::t('Personal'),
                                'url'   => 'notifications/personal',
-                               'sel'   => ((self::getApp()->argv[1] == 'personal') ? 'active' : ''),
+                               'sel'   => (($selected == 'personal') ? 'active' : ''),
                                'id'    => 'personal-tab',
                                'accesskey' => 'r',
                        ],
                        [
                                'label' => L10n::t('Home'),
                                'url'   => 'notifications/home',
-                               'sel'   => ((self::getApp()->argv[1] == 'home') ? 'active' : ''),
+                               'sel'   => (($selected == 'home') ? 'active' : ''),
                                'id'    => 'home-tab',
                                'accesskey' => 'h',
                        ],
                        [
                                'label' => L10n::t('Introductions'),
                                'url'   => 'notifications/intros',
-                               'sel'   => ((self::getApp()->argv[1] == 'intros') ? 'active' : ''),
+                               'sel'   => (($selected == 'intros') ? 'active' : ''),
                                'id'    => 'intro-tab',
                                'accesskey' => 'i',
                        ],
@@ -235,7 +238,7 @@ class NotificationsManager extends BaseObject
                                }
 
                                // For feed items we use the user's contact, since the avatar is mostly self choosen.
-                               if (!empty($it['network']) && $it['network'] == NETWORK_FEED) {
+                               if (!empty($it['network']) && $it['network'] == Protocol::FEED) {
                                        $it['author-avatar'] = $it['contact-avatar'];
                                }
 
@@ -341,6 +344,22 @@ class NotificationsManager extends BaseObject
                                                break;
 
                                        case ACTIVITY_FRIEND:
+                                               if (!isset($it['object'])) {
+                                                       $notif = [
+                                                               'label' => 'friend',
+                                                               'link' => $default_item_link,
+                                                               'image' => $default_item_image,
+                                                               'url' => $default_item_url,
+                                                               'text' => $default_item_text,
+                                                               'when' => $default_item_when,
+                                                               'ago' => $default_item_ago,
+                                                               'seen' => $it['seen']
+                                                       ];
+                                                       break;
+                                               }
+                                               /// @todo Check if this part here is used at all
+                                               logger('Complete data: ' . json_encode($it) . ' - ' . System::callstack(20), LOGGER_DEBUG);
+
                                                $xmlhead = "<" . "?xml version='1.0' encoding='UTF-8' ?" . ">";
                                                $obj = XML::parseString($xmlhead . $it['object']);
                                                $it['fname'] = $obj->title;
@@ -638,15 +657,19 @@ class NotificationsManager extends BaseObject
                        } else {
                                $it = $this->getMissingIntroData($it);
 
+                               if (empty($it['url'])) {
+                                       continue;
+                               }
+
                                // Don't show these data until you are connected. Diaspora is doing the same.
-                               if ($it['gnetwork'] === NETWORK_DIASPORA) {
+                               if ($it['gnetwork'] === Protocol::DIASPORA) {
                                        $it['glocation'] = "";
                                        $it['gabout'] = "";
                                        $it['ggender'] = "";
                                }
                                $intro = [
-                                       'label' => (($it['network'] !== NETWORK_OSTATUS) ? 'friend_request' : 'follower'),
-                                       'notify_type' => (($it['network'] !== NETWORK_OSTATUS) ? L10n::t('Friend/Connect Request') : L10n::t('New Follower')),
+                                       'label' => (($it['network'] !== Protocol::OSTATUS) ? 'friend_request' : 'follower'),
+                                       'notify_type' => (($it['network'] !== Protocol::OSTATUS) ? L10n::t('Friend/Connect Request') : L10n::t('New Follower')),
                                        'dfrn_id' => $it['issued-id'],
                                        'uid' => $_SESSION['uid'],
                                        'intro_id' => $it['intro_id'],
@@ -686,22 +709,22 @@ class NotificationsManager extends BaseObject
        {
                // If the network and the addr isn't available from the gcontact
                // table entry, take the one of the contact table entry
-               if ($arr['gnetwork'] == "") {
+               if (empty($arr['gnetwork']) && !empty($arr['network'])) {
                        $arr['gnetwork'] = $arr['network'];
                }
-               if ($arr['gaddr'] == "") {
+               if (empty($arr['gaddr']) && !empty($arr['addr'])) {
                        $arr['gaddr'] = $arr['addr'];
                }
 
                // If the network and addr is still not available
                // get the missing data data from other sources
-               if ($arr['gnetwork'] == "" || $arr['gaddr'] == "") {
+               if (empty($arr['gnetwork']) || empty($arr['gaddr'])) {
                        $ret = Contact::getDetailsByURL($arr['url']);
 
-                       if ($arr['gnetwork'] == "" && $ret['network'] != "") {
+                       if (empty($arr['gnetwork']) && !empty($ret['network'])) {
                                $arr['gnetwork'] = $ret['network'];
                        }
-                       if ($arr['gaddr'] == "" && $ret['addr'] != "") {
+                       if (empty($arr['gaddr']) && !empty($ret['addr'])) {
                                $arr['gaddr'] = $ret['addr'];
                        }
                }