]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Atom output - Reinstate activity:actor and activity:subject
authorZach Copley <zach@status.net>
Thu, 10 Feb 2011 07:18:14 +0000 (23:18 -0800)
committerZach Copley <zach@status.net>
Thu, 10 Feb 2011 07:18:14 +0000 (23:18 -0800)
w/deprecation warnings. Also add statusnet:profile_info back into
author/actor.

classes/Profile.php
lib/activity.php
lib/atomgroupnoticefeed.php
lib/atomusernoticefeed.php

index adad0c6157d5d25c7574e70bebce712417257860..03f930096257854eb6c7b636c22133cc150f083b 100644 (file)
@@ -918,6 +918,31 @@ class Profile extends Memcached_DataObject
         return $xs->getString();
     }
 
+    /**
+     * Extra profile info for atom entries
+     *
+     * Clients use some extra profile info in the atom stream.
+     * This gives it to them.
+     *
+     * @param User $cur Current user
+     *
+     * @return array representation of <statusnet:profile_info> element
+     */
+
+    function profileInfo($cur)
+    {
+        $profileInfoAttr = array();
+
+        if ($cur != null) {
+            // Whether the current user is a subscribed to this profile
+            $profileInfoAttr['following'] = $cur->isSubscribed($this) ? 'true' : 'false';
+            // Whether the current user is has blocked this profile
+            $profileInfoAttr['blocking']  = $cur->hasBlocked($this) ? 'true' : 'false';
+        }
+
+        return array('statusnet:profile_info', $profileInfoAttr, null);
+    }
+
     /**
      * Returns an XML string fragment with profile information as an
      * Activity Streams <activity:actor> element.
index 585a25de2e195686ca025345ab7e5ddd182df256..6c21c0bcc990ce397f6e4d7a76eb00a175a06584 100644 (file)
@@ -392,6 +392,18 @@ class Activity
 
         if ($author) {
             $this->actor->outputTo($xs, 'author');
+
+            // XXX: Remove <activity:actor> ASAP! Author information
+            // has been moved to the author element in the Activity
+            // Streams spec. We're outputting actor only for backward
+            // compatibility with clients that can only parse
+            // activities based on older versions of the spec.
+
+            $depMsg = 'Deprecation warning: activity:actor is present '
+                . 'only for backward compatibility. It will be '
+                . 'removed in the next version of StatusNet.';
+            $xs->comment($depMsg);
+            $this->actor->outputTo($xs, 'activity:actor');
         }
 
         if ($this->verb != ActivityVerb::POST || count($this->objects) != 1) {
index 4e7f992662d53657fa6677018a902fdbe0dbb71d..817191b64aecee4cfffd40392fa778340688e89b 100644 (file)
@@ -91,8 +91,16 @@ class AtomGroupNoticeFeed extends AtomNoticeFeed
 
         $ao = ActivityObject::fromGroup($group);
 
-        $this->addAuthorRaw($ao->asString('author').
-                            $ao->asString('activity:subject'));
+        $this->addAuthorRaw($ao->asString('author'));
+
+        $depMsg = 'Deprecation warning: activity:subject is present '
+            . 'only for backward compatibility. It will be '
+            . 'removed in the next version of StatusNet.';
+
+        $this->addAuthorRaw(
+            "<!--$depMsg-->\n"
+            . $ao->asString('activity:subject')
+        );
 
         $this->addLink($group->homeUrl());
     }
index 5ca089b859a85d753f7af13903e598e9eb876d95..3398cc8b4d88e48af695b28c836010a47618f285 100644 (file)
@@ -59,9 +59,29 @@ class AtomUserNoticeFeed extends AtomNoticeFeed
         parent::__construct($cur, $indent);
         $this->user = $user;
         if (!empty($user)) {
+
             $profile = $user->getProfile();
+
             $ao = ActivityObject::fromProfile($profile);
+
+            $ao->extra[] = $profile->profileInfo($cur);
+
+            // XXX: For users, we generate an author _AND_ an <activity:subject>
+            // This is for backward compatibility with clients (especially
+            // StatusNet's clients) that assume the Atom will conform to an
+            // older version of the Activity Streams API. Subject should be
+            // removed in future versions of StatusNet.
+
             $this->addAuthorRaw($ao->asString('author'));
+
+            $depMsg = 'Deprecation warning: activity:subject is present '
+                . 'only for backward compatibility. It will be '
+                . 'removed in the next version of StatusNet.';
+
+            $this->addAuthorRaw(
+                "<!--$depMsg-->\n"
+                . $ao->asString('activity:subject')
+            );
         }
 
         // TRANS: Title in atom user notice feed. %s is a user name.