alecpl
2008-05-21 2b962c1074c45695da0376f830ec63923743c39e
commit | author | age
88375f 1 <?php
T 2
3 /*
4  +-----------------------------------------------------------------------+
5  | program/steps/mail/rss.inc                                            |
6  |                                                                       |
7  | This file is part of the RoundCube Webmail client                     |
5349b7 8  | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland                 |
88375f 9  | Licensed under the GNU GPL                                            |
T 10  |                                                                       |
11  | PURPOSE:                                                              |
12  |   Send mailboxcontents as RSS feed                                    |
13  |                                                                       |
14  +-----------------------------------------------------------------------+
15  | Author: Sjon Hortensius <sjon@hortensius.net>                         |
16  +-----------------------------------------------------------------------+
17
18  $Id$
19
20 */
21
22 require_once('Mail/mimeDecode.php');
23
24
25 function rss_encode($string){
26     $string = rep_specialchars_output($string, 'xml');
27     return $string;
28 }
29
30
31
32 $REMOTE_REQUEST = TRUE;
33 $OUTPUT_TYPE = 'rss';
34
35 $webmail_url = 'http';
36 if (strstr('HTTPS', $_SERVER['SERVER_PROTOCOL'] )!== FALSE)
37   $webmail_url .= 's';
38 $webmail_url .= '://'.$_SERVER['SERVER_NAME'];
39 if ($_SERVER['SERVER_PORT'] != '80')
40     $webmail_url .= ':'.$_SERVER['SERVER_PORT'];
41 $webmail_url .= '/';
42 if (dirname($_SERVER['SCRIPT_NAME']) != '/')
43     $webmail_url .= dirname($_SERVER['SCRIPT_NAME']).'/';
44
8d4bcd 45 $webmail_url .= '?_task=mail';
88375f 46
T 47 $messagecount_unread = $IMAP->messagecount('INBOX', 'UNSEEN', TRUE);
48 $messagecount = $IMAP->messagecount();
49
50 $sort_col = 'date';
51 $sort_order = 'DESC';
52
53 // Send global XML output
54 header('Content-type: text/xml');
55 echo '<?xml version="1.0" encoding="UTF-8"?>
56     <rss version="2.0"
57      xmlns:dc="http://purl.org/dc/elements/1.1/"
58      xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
59      xmlns:admin="http://webns.net/mvcb/"
60      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
61      xmlns:content="http://purl.org/rss/1.0/modules/content/">';
62
63 // Send channel-specific output
64 echo '
65     <channel>
66         <pubDate>'.date('r').'</pubDate>
67         <lastBuildDate>'.date('r').'</lastBuildDate>
68         <ttl>5</ttl>
69         <docs>http://blogs.law.harvard.edu/tech/rss</docs>
70         <description>INBOX contains '.$messagecount.' messages, of which '.$messagecount_unread.' unread</description>
8d4bcd 71         <link>'.rss_encode($webmail_url, 'xml') .'</link>
88375f 72         <title>webmail for '.rss_encode($_SESSION['username'].' @ '.$_SESSION['imap_host']).'</title>
T 73         <generator>'.rss_encode($CONFIG['useragent'], 'xml').' (RSS extension by Sjon Hortensius)</generator>
74         <image>
75             <link>http://www.roundcube.net/</link>
76             <title>'.rss_encode($CONFIG['product_name']).' logo</title>
77             <url>'.rss_encode($webmail_url.'skins/default/images/roundcube_logo.png').'</url>
78         </image>';
79
80 // Check if the user wants to override the default sortingmethode
81 if (isset($_GET['_sort']))
d5342a 82   list($sort_col, $sort_order) = explode('_', get_input_value('_sort', RCUBE_INPUT_GET));
88375f 83
T 84 // Add message to output
85 if ($messagecount > 0)
86   {
87   $items = $IMAP->list_headers('INBOX', null, $sort_col, $sort_order);
88   foreach ($items as $item)
89     {
90
91     // Convert '"name" <email>' to 'email (name)'
92     if (strstr($item->from, '<'))
93       $item->from = preg_replace('~"?([^"]*)"? <([^>]*)>~', '\2 (\1)', $item->from);
94
8d4bcd 95     $item->link = $webmail_url.'&_task=mail&_action=show&_uid='.$item->uid.'&_mbox=INBOX';
88375f 96
T 97     $item->body = $IMAP->get_body($item->uid);
98
99     // Print the actual messages
100     echo '
101             <item>
102                 <title>'.rss_encode($item->subject).'</title>
103                 <link>'.rss_encode($item->link).'</link>
104                 <description><![CDATA['."\n".nl2br(rss_encode($item->body))."\n".']]></description>
105                 <author>'.rss_encode($item->from).'</author>
106                 <category></category>
107                 <guid>'.rss_encode($item->link).'</guid>
108                 <pubDate>'.date('r', $item->timestamp).'</pubDate>
109             </item>';
110     }
111   }
112
113 echo '</channel>
114 </rss>';
115
116 exit;
5349b7 117 ?>