Part of #6: atom feed for new pastes
authorChristian Weiske <cweiske@cweiske.de>
Wed, 24 Oct 2012 21:16:11 +0000 (23:16 +0200)
committerChristian Weiske <cweiske@cweiske.de>
Wed, 24 Oct 2012 21:16:11 +0000 (23:16 +0200)
README.rst
data/templates/feed-new.htm [new file with mode: 0644]
data/templates/list.htm
www/.htaccess
www/feed-new.php [new file with mode: 0644]

index f805e7767e65d2521af6a5b03db07b0291dc4ee4..255de2a7e3cbdd196fa4bc65f7f9d9693c39582e 100644 (file)
@@ -283,6 +283,7 @@ If you use nginx, place the following lines into your ``server`` block:
     rewrite ^/([0-9]+)/tool/([^/]+)/(.+)$ /tool.php?id=$1&tool=$2&file=$3;
 
     rewrite ^/new$ /new.php;
+    rewrite ^/feed/new$ /feed-new.php;
     rewrite ^/list$ /list.php;
     rewrite ^/list/([0-9]+)$ /list.php?page=$1;
 
diff --git a/data/templates/feed-new.htm b/data/templates/feed-new.htm
new file mode 100644 (file)
index 0000000..c0d5fa5
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+ <title>{{title}}: New pastes</title>
+ <link href="{{url}}"/>
+ <link rel="self" href="{{feedurl}}"/>
+ <id>{{url}}</id>
+{% set repo = pastes.repos.0 %}
+ <updated>{{repo.crdate|date('c')}}</updated>
+
+{% for repo in pastes.repos %}
+ <entry>
+  <id>{{repo.getLink('display', null, true)}}</id>
+  <title>{{repo.getTitle}}</title>
+  <updated>{{repo.crdate|date('c')}}</updated>
+  <link rel="alternate" type="text/html" href="{{repo.getLink('display', null, true)}}" />
+  <author>
+   {% set owner=repo.getOwner() %}
+   <name>{{owner.name}}</name>
+   <email>{{owner.email}}</email>
+  </author>
+ </entry>
+{% endfor %}
+</feed>
\ No newline at end of file
index 0315119eed48e7603090b158c27b847f4ef5ddfb..ac3d664ee15902f645c2c102f51082686d65a07e 100644 (file)
@@ -1,6 +1,10 @@
 {% extends "base.htm" %}
 {% block title %}List of all pastes{% endblock %}
 
+{% block meta %}
+ <link rel="alternate" type="application/atom+xml" title="New pastes" href="feed/new" />
+{% endblock %}
+
 {% block content %}
 <div style="height: 1em"></div>
 <ul class="nav nav-pills nav-stacked">
index 03bbf60fc5d26d5231538b3d36355584643c9f37..d18aa3496b2107cd31626dc0a4cbfa39bf37f31e 100644 (file)
@@ -16,6 +16,8 @@ RewriteRule ^([0-9]+)/tool/([^/]+)/(.+)$ /tool.php?id=$1&tool=$2&file=$3
 RewriteRule ^fork-remote$ /fork-remote.php
 RewriteRule ^new$ /new.php
 
+RewriteRule ^feed/new$ /feed-new.php
+
 RewriteRule ^list$ /list.php
 RewriteRule ^list/([0-9]+)$ /list.php?page=$1
 
diff --git a/www/feed-new.php b/www/feed-new.php
new file mode 100644 (file)
index 0000000..a462808
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+/**
+ * Generate an atom feed with the 10 most recently created pastes
+ */
+namespace phorkie;
+$reqWritePermissions = false;
+require_once 'www-header.php';
+
+$db = new Database();
+header('Content-Type: application/atom+xml');
+render(
+    'feed-new',
+    array(
+        'pastes'  => $db->getSearch()->listAll(0, 10, 'crdate', 'desc'),
+        'url'     => Tools::fullUrl('/'),
+        'feedurl' => Tools::fullUrl('/feed/new'),
+    )
+);
+?>