summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2013-03-20 22:56:17 +0100
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2013-03-20 22:56:17 +0100
commitbf24aa601f96d184f9635fa72377d7521b324b4f (patch)
tree647e17c2a22c0e861c5dbe8f4efef1ea86bf8084 /app
parent80d4f5cf3d2d48fb095d0a2c7013dc3d99ae0065 (diff)
Ajout controller Rss pour export au format RSS (très très basique) #34 + ajout lib text pour gérer le bbcode
Diffstat (limited to 'app')
-rw-r--r--app/App_FrontController.php1
-rwxr-xr-xapp/controllers/rssController.php35
-rwxr-xr-xapp/views/rss/public.phtml31
3 files changed, 67 insertions, 0 deletions
diff --git a/app/App_FrontController.php b/app/App_FrontController.php
index 55bcfc167..0ff7bf182 100644
--- a/app/App_FrontController.php
+++ b/app/App_FrontController.php
@@ -20,6 +20,7 @@ class App_FrontController extends FrontController {
require (LIB_PATH . '/lib_phpQuery.php');
require (LIB_PATH . '/lib_rss.php');
require (LIB_PATH . '/lib_simplepie.php');
+ require (LIB_PATH . '/lib_text.php');
}
private function loadModels () {
diff --git a/app/controllers/rssController.php b/app/controllers/rssController.php
new file mode 100755
index 000000000..1f66f4517
--- /dev/null
+++ b/app/controllers/rssController.php
@@ -0,0 +1,35 @@
+<?php
+
+class rssController extends ActionController {
+ public function firstAction() {
+ header('Content-Type: text/xml');
+ header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
+ header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+ header('Pragma: public');
+
+ $this->view->_useLayout (false);
+ }
+
+ public function publicAction () {
+ $entryDAO = new EntryDAO ();
+ $entryDAO->_nbItemsPerPage (-1);
+
+ $items = $entryDAO->listPublic ('low_to_high');
+
+ try {
+ $page = Request::param('page', 1);
+ $nb = Request::param('nb', 15);
+ $this->view->itemPaginator = new Paginator($items);
+ $this->view->itemPaginator->_nbItemsPerPage($nb);
+ $this->view->itemPaginator->_currentPage($page);
+ } catch(CurrentPagePaginationException $e) {
+ Error::error(
+ 404,
+ array('error' => array('La page que vous cherchez n\'existe pas'))
+ );
+ }
+ }
+
+ public function getNbNotReadAction() {
+ }
+}
diff --git a/app/views/rss/public.phtml b/app/views/rss/public.phtml
new file mode 100755
index 000000000..04a035699
--- /dev/null
+++ b/app/views/rss/public.phtml
@@ -0,0 +1,31 @@
+<?php echo '<?xml version="1.0" encoding="UTF-8" ?>'; ?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <channel>
+ <title><?php echo View::title(); ?></title>
+ <link><?php echo Url::display(); ?></link>
+ <description>Flux public de <?php echo View::title(); ?></description>
+ <language>fr</language>
+ <pubDate><?php echo date('D, d M Y H:i:s O'); ?></pubDate>
+ <lastBuildDate><?php echo gmdate('D, d M Y H:i:s'); ?> GMT</lastBuildDate>
+ <atom:link href="<?php echo Url::display(array('a' => 'rss')); ?>" rel="self" type="application/rss+xml" />
+<?php
+$items = $this->itemPaginator->items ();
+foreach ($items as $item) {
+?>
+ <item>
+ <title><?php echo htmlspecialchars(html_entity_decode($item->title ())); ?></title>
+ <link><?php echo $item->link (); ?></link>
+ <?php $author = $item->author (); ?>
+ <?php if ($author != '') { ?>
+ <dc:creator><?php echo $author; ?></dc:creator>
+ <?php } ?>
+ <description><![CDATA[<?php
+ echo html_entity_decode($item->notes (false, false));
+?>]]></description>
+ <pubDate><?php echo date('D, d M Y H:i:s O', $item->date (true)); ?></pubDate>
+ <guid><?php echo $item->guid (); ?></guid>
+ </item>
+<?php } ?>
+
+ </channel>
+</rss>