summaryrefslogtreecommitdiff
path: root/program/steps/mail/rss.inc
blob: 667a3487df62c3f2c8579bfbc2c2e221107af974 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php

/*
 +-----------------------------------------------------------------------+
 | program/steps/mail/rss.inc                                            |
 |                                                                       |
 | This file is part of the RoundCube Webmail client                     |
 | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland                 |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Send mailboxcontents as RSS feed                                    |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Sjon Hortensius <sjon@hortensius.net>                         |
 +-----------------------------------------------------------------------+

 $Id$

*/


function rss_encode($string){
	$string = rep_specialchars_output($string, 'xml');
	return $string;
}


$REMOTE_REQUEST = TRUE;
$OUTPUT_TYPE = 'rss';

$webmail_url = 'http';
if (strstr('HTTPS', $_SERVER['SERVER_PROTOCOL'] )!== FALSE)
  $webmail_url .= 's';
$webmail_url .= '://'.$_SERVER['SERVER_NAME'];
if ($_SERVER['SERVER_PORT'] != '80')
	$webmail_url .= ':'.$_SERVER['SERVER_PORT'];
$webmail_url .= '/';
if (dirname($_SERVER['SCRIPT_NAME']) != '/')
	$webmail_url .= dirname($_SERVER['SCRIPT_NAME']).'/';

$webmail_url .= '?_task=mail';

$messagecount_unread = $IMAP->messagecount('INBOX', 'UNSEEN', TRUE);
$messagecount = $IMAP->messagecount();

$sort_col = 'date';
$sort_order = 'DESC';

// Send global XML output
header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="'.RCMAIL_CHARSET.'"?>
	<rss version="2.0"
	 xmlns:dc="http://purl.org/dc/elements/1.1/"
	 xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	 xmlns:admin="http://webns.net/mvcb/"
	 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	 xmlns:content="http://purl.org/rss/1.0/modules/content/">';

// Send channel-specific output
echo '
	<channel>
		<pubDate>'.date('r').'</pubDate>
		<lastBuildDate>'.date('r').'</lastBuildDate>
		<ttl>5</ttl>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<description>INBOX contains '.$messagecount.' messages, of which '.$messagecount_unread.' unread</description>
		<link>'.rss_encode($webmail_url, 'xml') .'</link>
		<title>webmail for '.rss_encode($_SESSION['username'].' @ '.$_SESSION['imap_host']).'</title>
		<generator>'.rss_encode($CONFIG['useragent'], 'xml').' (RSS extension by Sjon Hortensius)</generator>
		<image>
			<link>http://www.roundcube.net/</link>
			<title>'.rss_encode($CONFIG['product_name']).' logo</title>
			<url>'.rss_encode($webmail_url.'skins/default/images/roundcube_logo.png').'</url>
		</image>';

// Check if the user wants to override the default sortingmethode
if (isset($_GET['_sort']))
  list($sort_col, $sort_order) = explode('_', get_input_value('_sort', RCUBE_INPUT_GET));

// Add message to output
if ($messagecount > 0)
  {
  $items = $IMAP->list_headers('INBOX', null, $sort_col, $sort_order);
  foreach ($items as $item)
    {

    // Convert '"name" <email>' to 'email (name)'
    if (strstr($item->from, '<'))
      $item->from = preg_replace('~"?([^"]*)"? <([^>]*)>~', '\2 (\1)', $item->from);

    $item->link = $webmail_url.'&_task=mail&_action=show&_uid='.$item->uid.'&_mbox=INBOX';

    $item->body = $IMAP->get_body($item->uid);

    // Print the actual messages
    echo '
			<item>
				<title>'.rss_encode($item->subject).'</title>
				<link>'.rss_encode($item->link).'</link>
				<description><![CDATA['."\n".nl2br(rss_encode($item->body))."\n".']]></description>
				<author>'.rss_encode($item->from).'</author>
				<category></category>
				<guid>'.rss_encode($item->link).'</guid>
				<pubDate>'.date('r', $item->timestamp).'</pubDate>
			</item>';
    }
  }

echo '</channel>
</rss>';

exit;
?>