summaryrefslogtreecommitdiff
path: root/vendor/miniflux/picofeed/lib/PicoFeed/Syndication/FeedBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/miniflux/picofeed/lib/PicoFeed/Syndication/FeedBuilder.php')
-rw-r--r--vendor/miniflux/picofeed/lib/PicoFeed/Syndication/FeedBuilder.php185
1 files changed, 185 insertions, 0 deletions
diff --git a/vendor/miniflux/picofeed/lib/PicoFeed/Syndication/FeedBuilder.php b/vendor/miniflux/picofeed/lib/PicoFeed/Syndication/FeedBuilder.php
new file mode 100644
index 00000000..cf9d024e
--- /dev/null
+++ b/vendor/miniflux/picofeed/lib/PicoFeed/Syndication/FeedBuilder.php
@@ -0,0 +1,185 @@
+<?php
+
+namespace PicoFeed\Syndication;
+
+use DateTime;
+use DOMDocument;
+
+/**
+ * Class FeedBuilder
+ *
+ * @package PicoFeed\Syndication
+ * @author Frederic Guillot
+ */
+abstract class FeedBuilder
+{
+ /**
+ * @var DOMDocument
+ */
+ protected $document;
+
+ /**
+ * @var string
+ */
+ protected $feedTitle;
+
+ /**
+ * @var string
+ */
+ protected $feedUrl;
+
+ /**
+ * @var string
+ */
+ protected $siteUrl;
+
+ /**
+ * @var string
+ */
+ protected $authorName;
+
+ /**
+ * @var string
+ */
+ protected $authorEmail;
+
+ /**
+ * @var string
+ */
+ protected $authorUrl;
+
+ /**
+ * @var DateTime
+ */
+ protected $feedDate;
+
+ /**
+ * @var ItemBuilder[]
+ */
+ protected $items = array();
+
+ /**
+ * Constructor
+ *
+ * @access public
+ */
+ public function __construct()
+ {
+ $this->document = new DomDocument('1.0', 'UTF-8');
+ $this->document->formatOutput = true;
+ }
+
+ /**
+ * Get new object instance
+ *
+ * @access public
+ * @return static
+ */
+ public static function create()
+ {
+ return new static();
+ }
+
+ /**
+ * Add feed title
+ *
+ * @access public
+ * @param string $title
+ * @return $this
+ */
+ public function withTitle($title)
+ {
+ $this->feedTitle = $title;
+ return $this;
+ }
+
+ /**
+ * Add feed url
+ *
+ * @access public
+ * @param string $url
+ * @return $this
+ */
+ public function withFeedUrl($url)
+ {
+ $this->feedUrl = $url;
+ return $this;
+ }
+
+ /**
+ * Add website url
+ *
+ * @access public
+ * @param string $url
+ * @return $this
+ */
+ public function withSiteUrl($url)
+ {
+ $this->siteUrl = $url;
+ return $this;
+ }
+
+ /**
+ * Add feed date
+ *
+ * @access public
+ * @param DateTime $date
+ * @return $this
+ */
+ public function withDate(DateTime $date)
+ {
+ $this->feedDate = $date;
+ return $this;
+ }
+
+ /**
+ * Add feed author
+ *
+ * @access public
+ * @param string $name
+ * @param string $email
+ * @param string $url
+ * @return $this
+ */
+ public function withAuthor($name, $email = '', $url ='')
+ {
+ $this->authorName = $name;
+ $this->authorEmail = $email;
+ $this->authorUrl = $url;
+ return $this;
+ }
+
+ /**
+ * Add feed item
+ *
+ * @access public
+ * @param ItemBuilder $item
+ * @return $this
+ */
+ public function withItem(ItemBuilder $item)
+ {
+ $this->items[] = $item;
+ return $this;
+ }
+
+ /**
+ * Get DOM document
+ *
+ * @access public
+ * @return DOMDocument
+ */
+ public function getDocument()
+ {
+ return $this->document;
+ }
+
+ /**
+ * Build feed
+ *
+ * @abstract
+ * @access public
+ * @param string $filename
+ * @return string
+ */
+ abstract public function build($filename = '');
+}