summaryrefslogtreecommitdiff
path: root/platform/www/vendor/openpsa/universalfeedcreator/lib/UniversalFeedCreator.php
diff options
context:
space:
mode:
Diffstat (limited to 'platform/www/vendor/openpsa/universalfeedcreator/lib/UniversalFeedCreator.php')
-rw-r--r--platform/www/vendor/openpsa/universalfeedcreator/lib/UniversalFeedCreator.php160
1 files changed, 160 insertions, 0 deletions
diff --git a/platform/www/vendor/openpsa/universalfeedcreator/lib/UniversalFeedCreator.php b/platform/www/vendor/openpsa/universalfeedcreator/lib/UniversalFeedCreator.php
new file mode 100644
index 0000000..4b7afe6
--- /dev/null
+++ b/platform/www/vendor/openpsa/universalfeedcreator/lib/UniversalFeedCreator.php
@@ -0,0 +1,160 @@
+<?php
+/**
+ * UniversalFeedCreator lets you choose during runtime which
+ * format to build.
+ * For general usage of a feed class, see the FeedCreator class
+ * below or the example above.
+ *
+ * @since 1.3
+ * @author Kai Blankenhorn <kaib@bitfolge.de>
+ */
+class UniversalFeedCreator extends FeedCreator
+{
+ /** @var FeedCreator */
+ protected $_feed;
+
+ /**
+ * @param string $format
+ */
+ protected function _setFormat($format)
+ {
+ switch (strtoupper($format)) {
+
+ case "BASE":
+ $this->format = $format;
+ case "2.0":
+ // fall through
+ case "RSS2.0":
+ $this->_feed = new RSSCreator20();
+ break;
+
+ case "GEOPHOTORSS":
+ case "PHOTORSS":
+ case "GEORSS":
+ $this->format = $format;
+ case "1.0":
+ // fall through
+ case "RSS1.0":
+ $this->_feed = new RSSCreator10();
+ break;
+
+ case "0.91":
+ // fall through
+ case "RSS0.91":
+ $this->_feed = new RSSCreator091();
+ break;
+
+ case "PIE0.1":
+ $this->_feed = new PIECreator01();
+ break;
+
+ case "MBOX":
+ $this->_feed = new MBOXCreator();
+ break;
+
+ case "OPML":
+ $this->_feed = new OPMLCreator();
+ break;
+
+ case "TOOLBAR":
+ $this->format = $format;
+
+ case "ATOM":
+ // fall through: always the latest ATOM version
+ case "ATOM1.0":
+ $this->_feed = new AtomCreator10();
+ break;
+
+ case "ATOM0.3":
+ $this->_feed = new AtomCreator03();
+ break;
+
+ case "HTML":
+ $this->_feed = new HTMLCreator();
+ break;
+
+ case "PHP":
+ $this->_feed = new PHPCreator();
+ break;
+ case "GPX":
+ $this->_feed = new GPXCreator();
+ break;
+ case "KML":
+ $this->_feed = new KMLCreator();
+ break;
+ case "JS":
+ // fall through
+ case "JAVASCRIPT":
+ $this->_feed = new JSCreator();
+ break;
+
+ default:
+ $this->_feed = new RSSCreator091();
+ break;
+ }
+
+ $vars = get_object_vars($this);
+ foreach ($vars as $key => $value) {
+ // prevent overwriting of properties "contentType", "encoding"; do not copy "_feed" itself
+ if (!in_array($key, array("_feed", "contentType", "encoding"))) {
+ $this->_feed->{$key} = $this->{$key};
+ }
+ }
+ }
+
+ /**
+ * Creates a syndication feed based on the items previously added.
+ *
+ * @see FeedCreator::addItem()
+ * @param string $format format the feed should comply to. Valid values are:
+ * "PIE0.1", "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3", "HTML", "JS"
+ * @return string the contents of the feed.
+ */
+ public function createFeed($format = "RSS0.91")
+ {
+ $this->_setFormat($format);
+
+ return $this->_feed->createFeed();
+ }
+
+ /**
+ * Saves this feed as a file on the local disk. After the file is saved, an HTTP redirect
+ * header may be sent to redirect the use to the newly created file.
+ *
+ * @since 1.4
+ * @param string $format format the feed should comply to. Valid values are:
+ * "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM",
+ * "ATOM0.3", "HTML", "JS"
+ * @param string $filename optional the filename where a recent version of the feed is saved. If not
+ * specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to
+ * .xml (see _generateFilename()).
+ * @param boolean $displayContents optional send the content of the file or not. If true, the file will be sent
+ * in the body of the response.
+ */
+ public function saveFeed($format = "RSS0.91", $filename = "", $displayContents = true)
+ {
+ $this->_setFormat($format);
+ $this->_feed->saveFeed($filename, $displayContents);
+ }
+
+ /**
+ * Turns on caching and checks if there is a recent version of this feed in the cache.
+ * If there is, an HTTP redirect header is sent.
+ * To effectively use caching, you should create the FeedCreator object and call this method
+ * before anything else, especially before you do the time consuming task to build the feed
+ * (web fetching, for example).
+ *
+ * @param string $format format the feed should comply to. Valid values are:
+ * "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3".
+ * @param string $filename optional the filename where a recent version of the feed is saved. If not specified, the
+ * filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see
+ * _generateFilename()).
+ * @param int $timeout optional the timeout in seconds before a cached version is refreshed (defaults to 3600 =
+ * 1 hour)
+ */
+ public function useCached($format = "RSS0.91", $filename = "", $timeout = 3600)
+ {
+ $this->_setFormat($format);
+ $this->_feed->useCached($filename, $timeout);
+ }
+}