commit 53f29f83815ff1ea1aa69b3c496a6088a0aa3a9c
parent 8fe2e65259c5fbbe7d772ecd9d2690a18c63ca4a
Author: Felicitus <felicitus@felicitus.org>
Date: Mon, 11 Jul 2011 18:52:27 +0200
Added basic RSS feed which lists the 40 most recent parts added
Diffstat:
3 files changed, 83 insertions(+), 0 deletions(-)
diff --git a/cronjobs/CreateRSSFeed.php b/cronjobs/CreateRSSFeed.php
@@ -0,0 +1,60 @@
+<?php
+namespace de\RaumZeitLabor\PartKeepr\Cronjobs;
+
+declare(encoding = 'UTF-8');
+
+include(__DIR__."/../src/de/RaumZeitLabor/PartKeepr/PartKeepr.php");
+
+use de\RaumZeitLabor\PartKeepr\PartKeepr;
+use de\RaumZeitLabor\PartKeepr\Util\Configuration;
+
+PartKeepr::initialize();
+
+$dql = PartKeepr::getEM()->createQuery("SELECT p FROM de\RaumZeitLabor\PartKeepr\Part\Part p ORDER BY p.createDate DESC");
+$dql->setMaxResults(40);
+
+$parts = $dql->getResult();
+
+$rssDOM = new \DOMDocument("1.0", "UTF-8");
+$rssElement = $rssDOM->createElement("rss");
+$rssElement->setAttribute("version", "2.0");
+$rssDOM->appendChild($rssElement);
+
+$channel = $rssDOM->createElement("channel");
+
+$rssElement->appendChild($channel);
+$pTitle = $rssDOM->createElement('title', 'PartKeepr RSS Feed');
+$pLink = $rssDOM->createElement('link', 'http://www.partkeepr.org');
+$pDescription = $rssDOM->createElement('description', 'PartKeepr new part feed');
+$pLang = $rssDOM->createElement('language', 'en');
+
+// Here we simply append all the nodes we just created to the channel node
+$channel->appendChild($pTitle);
+$channel->appendChild($pDescription);
+$channel->appendChild($pLink);
+$channel->appendChild($pLang);
+
+foreach ($parts as $part) {
+ $item = $rssDOM->createElement("item");
+
+ $title = $rssDOM->createElement("title");
+
+ $titleContent = $rssDOM->createTextNode($part->getName());
+ $title->appendChild($titleContent);
+
+ $description = $rssDOM->createElement("description");
+ $descriptionContent = $rssDOM->createTextNode($part->getCategoryPath());
+ $description->appendChild($descriptionContent);
+
+ $pubDate = $rssDOM->createElement("pubDate", $part->getCreateDate()->format(DATE_RFC822));
+
+ $item->appendChild($title);
+ $item->appendChild($description);
+ $item->appendChild($pubDate);
+
+ $channel->appendChild($item);
+
+}
+
+$rssDOM->save(Configuration::getOption("partkeepr.files.path")."/feed.rss");
+
diff --git a/frontend/rss.php b/frontend/rss.php
@@ -0,0 +1,14 @@
+<?php
+namespace de\RaumZeitLabor\PartKeepr\Frontend;
+declare(encoding = 'UTF-8');
+
+use de\RaumZeitLabor\PartKeepr\PartKeepr,
+ de\RaumZeitLabor\PartKeepr\Util\Configuration;
+
+include("../src/de/RaumZeitLabor/PartKeepr/PartKeepr.php");
+
+header("Content-Type: text/xml; charset=UTF-8");
+
+PartKeepr::initialize("");
+
+echo file_get_contents(Configuration::getOption("partkeepr.files.path")."/feed.rss");+
\ No newline at end of file
diff --git a/src/de/RaumZeitLabor/PartKeepr/Part/Part.php b/src/de/RaumZeitLabor/PartKeepr/Part/Part.php
@@ -283,6 +283,14 @@ class Part extends BaseEntity implements Serializable, Deserializable {
}
/**
+ * Returns the category path
+ * @return string
+ */
+ public function getCategoryPath () {
+ return $this->categoryPath;
+ }
+
+ /**
* Sets the storage location for this part
* @param \de\RaumZeitLabor\PartKeepr\StorageLocation\StorageLocation $storageLocation The storage location
*/