]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/apiatomservice.php
Merge remote-tracking branch 'upstream/master' into social-master
[quix0rs-gnu-social.git] / actions / apiatomservice.php
index fb9d6aee82aeee3e689ceee27c7e8b538a3beda0..6ee3eba5957766b01a78ef2986bfa50ab6265b68 100644 (file)
@@ -27,7 +27,9 @@
  * @link      http://status.net/
  */
 
-require_once INSTALLDIR.'/lib/apibareauth.php';
+if (!defined('STATUSNET')) {
+    exit(1);
+}
 
 /**
  * Shows an AtomPub service document for a user
@@ -39,7 +41,6 @@ require_once INSTALLDIR.'/lib/apibareauth.php';
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
  * @link      http://status.net/
  */
-
 class ApiAtomServiceAction extends ApiBareAuthAction
 {
     /**
@@ -50,15 +51,14 @@ class ApiAtomServiceAction extends ApiBareAuthAction
      * @return boolean success flag
      *
      */
-
-    function prepare($args)
+    function prepare(array $args=array())
     {
         parent::prepare($args);
         $this->user = $this->getTargetUser($this->arg('id'));
 
         if (empty($this->user)) {
-            $this->clientError(_('No such user.'), 404, $this->format);
-            return;
+            // TRANS: Client error displayed when making an Atom API request for an unknown user.
+            $this->clientError(_('No such user.'), 404);
         }
 
         return true;
@@ -71,8 +71,7 @@ class ApiAtomServiceAction extends ApiBareAuthAction
      *
      * @return void
      */
-
-    function handle($args)
+    function handle(array $args=array())
     {
         parent::handle($args);
 
@@ -80,18 +79,55 @@ class ApiAtomServiceAction extends ApiBareAuthAction
 
         $this->startXML();
         $this->elementStart('service', array('xmlns' => 'http://www.w3.org/2007/app',
-                                             'xmlns:atom' => 'http://www.w3.org/2005/Atom'));
+                                             'xmlns:atom' => 'http://www.w3.org/2005/Atom',
+                                             'xmlns:activity' => 'http://activitystrea.ms/spec/1.0/'));
         $this->elementStart('workspace');
-        $this->element('atom:title', null, _('Main'));
+        // TRANS: Title for Atom feed.
+        $this->element('atom:title', null, _m('ATOM','Main'));
         $this->elementStart('collection',
                             array('href' => common_local_url('ApiTimelineUser',
                                                              array('id' => $this->user->id,
                                                                    'format' => 'atom'))));
         $this->element('atom:title',
                        null,
+                       // TRANS: Title for Atom feed. %s is a user nickname.
                        sprintf(_("%s timeline"),
                                $this->user->nickname));
         $this->element('accept', null, 'application/atom+xml;type=entry');
+        $this->element('activity:verb', null, ActivityVerb::POST);
+        $this->elementEnd('collection');
+        $this->elementStart('collection',
+                            array('href' => common_local_url('AtomPubSubscriptionFeed',
+                                                             array('subscriber' => $this->user->id))));
+        $this->element('atom:title',
+                       null,
+                       // TRANS: Title for Atom feed with a user's subscriptions. %s is a user nickname.
+                       sprintf(_("%s subscriptions"),
+                               $this->user->nickname));
+        $this->element('accept', null, 'application/atom+xml;type=entry');
+        $this->element('activity:verb', null, ActivityVerb::FOLLOW);
+        $this->elementEnd('collection');
+        $this->elementStart('collection',
+                            array('href' => common_local_url('AtomPubFavoriteFeed',
+                                                             array('profile' => $this->user->id))));
+        $this->element('atom:title',
+                       null,
+                       // TRANS: Title for Atom feed with a user's favorite notices. %s is a user nickname.
+                       sprintf(_("%s favorites"),
+                               $this->user->nickname));
+        $this->element('accept', null, 'application/atom+xml;type=entry');
+        $this->element('activity:verb', null, ActivityVerb::FAVORITE);
+        $this->elementEnd('collection');
+        $this->elementStart('collection',
+                            array('href' => common_local_url('AtomPubMembershipFeed',
+                                                             array('profile' => $this->user->id))));
+        $this->element('atom:title',
+                       null,
+                       // TRANS: Title for Atom feed with a user's memberships. %s is a user nickname.
+                       sprintf(_("%s memberships"),
+                               $this->user->nickname));
+        $this->element('accept', null, 'application/atom+xml;type=entry');
+        $this->element('activity:verb', null, ActivityVerb::JOIN);
         $this->elementEnd('collection');
         $this->elementEnd('workspace');
         $this->elementEnd('service');