]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/atom10feed.php
Misses this file to merge. I like the comments.
[quix0rs-gnu-social.git] / lib / atom10feed.php
index 5e17b20d3ab8816507ea4ebe96fb99786a97e6f3..2bba6d0a91474bf5ac7271c3cc35aa83b2574e2c 100644 (file)
@@ -49,6 +49,8 @@ class Atom10FeedException extends Exception
 class Atom10Feed extends XMLStringer
 {
     public  $xw;
+
+    // @fixme most of these should probably be read-only properties
     private $namespaces;
     private $authors;
     private $subject;
@@ -57,10 +59,12 @@ class Atom10Feed extends XMLStringer
     private $generator;
     private $icon;
     private $links;
-    private $logo;
+    private $selfLink;
+    private $selfLinkType;
+    public $logo;
     private $rights;
-    private $subtitle;
-    private $title;
+    public $subtitle;
+    public $title;
     private $published;
     private $updated;
     private $entries;
@@ -105,15 +109,16 @@ class Atom10Feed extends XMLStringer
             $xs->element('name', null, $name);
         } else {
             throw new Atom10FeedException(
-                'author element must contain a name element.'
+                // TRANS: Atom feed exception thrown when an author element does not contain a name element.
+                _('Author element must contain a name element.')
             );
         }
 
-        if (!is_null($uri)) {
+        if (isset($uri)) {
             $xs->element('uri', null, $uri);
         }
 
-        if (!is_null(email)) {
+        if (isset($email)) {
             $xs->element('email', null, $email);
         }
 
@@ -141,18 +146,6 @@ class Atom10Feed extends XMLStringer
         }
     }
 
-    /**
-     * Add a activity feed subject via raw XML string
-     *
-     * @param string $xmlSubject An XML string representation of the subject
-     *
-     * @return void
-     */
-    function setActivitySubject($xmlSubject)
-    {
-        $this->subject = $xmlSubject;
-    }
-
     function getNamespaces()
     {
         return $this->namespaces;
@@ -160,7 +153,7 @@ class Atom10Feed extends XMLStringer
 
     function initFeed()
     {
-        $this->xw->startDocument('1.0', 'UTF-8');
+        $this->startXML();
         $commonAttrs = array('xml:lang' => 'en-US');
         foreach ($this->namespaces as $prefix => $uri) {
             if ($prefix == '') {
@@ -172,6 +165,14 @@ class Atom10Feed extends XMLStringer
         }
         $this->elementStart('feed', $commonAttrs);
 
+        $this->element(
+            'generator', array(
+                'uri'     => 'https://gnu.io/social',
+                'version' => GNUSOCIAL_VERSION
+            ),
+            'GNU social'
+        );
+
         $this->element('id', null, $this->id);
         $this->element('title', null, $this->title);
         $this->element('subtitle', null, $this->subtitle);
@@ -184,6 +185,10 @@ class Atom10Feed extends XMLStringer
 
         $this->renderAuthors();
 
+        if ($this->selfLink) {
+            $this->addLink($this->selfLink, array('rel' => 'self',
+                                                  'type' => $this->selfLinkType));
+        }
         $this->renderLinks();
     }
 
@@ -253,6 +258,12 @@ class Atom10Feed extends XMLStringer
         $this->id = $id;
     }
 
+    function setSelfLink($url, $type='application/atom+xml')
+    {
+        $this->selfLink = $url;
+        $this->selfLinkType = $type;
+    }
+
     function setTitle($title)
     {
         $this->title = $title;
@@ -301,5 +312,4 @@ class Atom10Feed extends XMLStringer
 
         array_push($this->links, $attrs);
     }
-
 }