4 digit year, add guid, remove 5 article limit
This commit is contained in:
parent
3e443d4875
commit
200dd2d8c6
83
web/rss.php
83
web/rss.php
|
@ -1,102 +1,101 @@
|
||||||
<?php
|
<?php
|
||||||
define('DS', DIRECTORY_SEPARATOR);
|
define('DS', DIRECTORY_SEPARATOR);
|
||||||
define('ROOT', dirname(__FILE__));
|
define('ROOT', dirname(__FILE__));
|
||||||
define('DOMAIN',$_SERVER['HTTP_HOST']);
|
define('DOMAIN', $_SERVER['HTTP_HOST']);
|
||||||
|
|
||||||
error_reporting(E_ALL || ~E_NOTICE);
|
error_reporting(E_ALL || ~E_NOTICE);
|
||||||
ini_set('display_errors', 1);
|
ini_set('display_errors', 1);
|
||||||
|
|
||||||
include_once(ROOT.DS.'inc'.DS.'core.php');
|
include_once(ROOT . DS . 'inc' . DS . 'core.php');
|
||||||
|
|
||||||
header("Content-Type: application/rss+xml; charset=UTF8");
|
header("Content-Type: application/rss+xml; charset=UTF8");
|
||||||
|
|
||||||
if (PHP_SAPI === 'cli-server')
|
if (PHP_SAPI === 'cli-server')
|
||||||
$_SERVER['SCRIPT_NAME'] = pathinfo(__FILE__, PATHINFO_BASENAME);
|
$_SERVER['SCRIPT_NAME'] = pathinfo(__FILE__, PATHINFO_BASENAME);
|
||||||
|
|
||||||
if($_GET['url'])
|
if ($_GET['url'])
|
||||||
$url = explode('/',ltrim(parse_url($_GET['url'], PHP_URL_PATH),'/'));
|
$url = explode('/', ltrim(parse_url($_GET['url'], PHP_URL_PATH), '/'));
|
||||||
else $url = array_filter(explode('/',ltrim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH),'/')));
|
else $url = array_filter(explode('/', ltrim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/')));
|
||||||
|
|
||||||
array_shift($url);
|
array_shift($url);
|
||||||
|
|
||||||
$email = $url[0];
|
$email = $url[0];
|
||||||
if(!$email)
|
if (!$email) {
|
||||||
{
|
|
||||||
http_response_code(404);
|
http_response_code(404);
|
||||||
exit('Error: Email not found');
|
exit('Error: Email not found');
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) exit();
|
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) exit();
|
||||||
|
|
||||||
$rss = '<?xml version="1.0" ?>
|
$rss = '<?xml version="1.0" ?>
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
<channel>
|
<channel>
|
||||||
<atom:link href="https://'.DOMAIN.'/rss.php" rel="self" type="application/rss+xml" />
|
<atom:link href="https://' . DOMAIN . '/rss.php" rel="self" type="application/rss+xml" />
|
||||||
<title>RSS for '.$email.'</title>
|
<title>RSS for ' . $email . '</title>
|
||||||
<link>https://'.DOMAIN.'/#'.$email.'</link>
|
<link>https://' . DOMAIN . '/#' . $email . '</link>
|
||||||
<description>RSS Feed for email address '.$email.'</description>
|
<description>RSS Feed for email address ' . $email . '</description>
|
||||||
<lastBuildDate>'.date(DATE_RFC822,time()).'</lastBuildDate>
|
<lastBuildDate>' . date(DateTime::RFC2822, time()) . '</lastBuildDate>
|
||||||
<image>
|
<image>
|
||||||
<title>RSS for '.$email.'</title>
|
<title>RSS for ' . $email . '</title>
|
||||||
<url>https://raw.githubusercontent.com/HaschekSolutions/opentrashmail/master/web/imgs/logo_300.png</url>
|
<url>https://raw.githubusercontent.com/HaschekSolutions/opentrashmail/master/web/imgs/logo_300.png</url>
|
||||||
<link>https://github.com/HaschekSolutions/opentrashmail</link>
|
<link>https://github.com/HaschekSolutions/opentrashmail</link>
|
||||||
</image>';
|
</image>';
|
||||||
|
|
||||||
$emaildata = getEmailsOfEmail($email);
|
$emaildata = getEmailsOfEmail($email);
|
||||||
foreach($emaildata as $id=>$d)
|
foreach ($emaildata as $id => $d) {
|
||||||
{
|
$data = getEmail($email, $id);
|
||||||
$data = getEmail($email,$id);
|
|
||||||
//var_dump($data);
|
//var_dump($data);
|
||||||
$time = substr($id,0,-3);
|
$time = substr($id, 0, -3);
|
||||||
$date = date("Y-m-d H:i",$time);
|
$date = date("Y-m-d H:i", $time);
|
||||||
$att_text = array();
|
$att_text = array();
|
||||||
$encl = array();
|
$encl = array();
|
||||||
if(is_array($data['parsed']['attachments']))
|
if (is_array($data['parsed']['attachments']))
|
||||||
foreach($data['parsed']['attachments'] as $filename)
|
foreach ($data['parsed']['attachments'] as $filename) {
|
||||||
{
|
$filepath = ROOT . DS . '..' . DS . 'data' . DS . $email . DS . 'attachments' . DS . $filename;
|
||||||
$filepath = ROOT.DS.'..'.DS.'data'.DS.$email.DS.'attachments'.DS.$filename;
|
$parts = explode('-', $filename);
|
||||||
$parts = explode('-',$filename);
|
|
||||||
$fid = $parts[0];
|
$fid = $parts[0];
|
||||||
$fn = $parts[1];
|
$fn = $parts[1];
|
||||||
$url = 'https://'.DOMAIN.'/api.php?a=attachment&email='.$email.'&id='.$fid.'&filename='.$fn;
|
$url = 'https://' . DOMAIN . '/api.php?a=attachment&email=' . $email . '&id=' . $fid . '&filename=' . $fn;
|
||||||
//$encl[] = '<enclosure url="'.rawurlencode($url).'" length="'.filesize($filepath).'" type="'.mime_content_type($filepath).'" />';
|
//$encl[] = '<enclosure url="'.rawurlencode($url).'" length="'.filesize($filepath).'" type="'.mime_content_type($filepath).'" />';
|
||||||
$att_text[] = "<a href='$url' target='_blank'>$fn</a>";
|
$att_text[] = "<a href='$url' target='_blank'>$fn</a>";
|
||||||
}
|
}
|
||||||
$rss.='
|
$rss .= '
|
||||||
<item>
|
<item>
|
||||||
<title><![CDATA['.$data['parsed']['subject'].']]></title>
|
<title><![CDATA[' . $data['parsed']['subject'] . ']]></title>
|
||||||
<pubDate>'.date(DATE_RFC822,$time).'</pubDate>
|
<pubDate>' . date(DateTime::RFC2822, $time) . '</pubDate>
|
||||||
<link>https://'.DOMAIN.'/#'.$email.'</link>
|
<link>https://' . DOMAIN . '/#' . $email . '</link>
|
||||||
|
<guid>https://' . DOMAIN . '/api.php?a=load&email=' . $email . '&id=' . $id . '&raw=true</guid>
|
||||||
<description>
|
<description>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
Email from: '.htmlentities($data['from']).'<br/>
|
Email from: ' . htmlentities($data['from']) . '<br/>
|
||||||
Email to: '.(is_array($data['rcpts'])?htmlentities(implode(',',$data['rcpts'])):htmlentities($email)).'<br/>
|
Email to: ' . (is_array($data['rcpts']) ? htmlentities(implode(',', $data['rcpts'])) : htmlentities($email)) . '<br/>
|
||||||
'.((count($att_text)>0)?'Attachments:<br/>'.array2ul($att_text).'<br/>':'').'
|
' . ((count($att_text) > 0) ? 'Attachments:<br/>' . array2ul($att_text) . '<br/>' : '') . '
|
||||||
<a href="https://'.DOMAIN.'/api.php?a=load&email='.$email.'&id='.$id.'&raw=true">View raw email</a> <br/>
|
<a href="https://' . DOMAIN . '/api.php?a=load&email=' . $email . '&id=' . $id . '&raw=true">View raw email</a> <br/>
|
||||||
<br/>---------<br/><br/>
|
<br/>---------<br/><br/>
|
||||||
'.($data['parsed']['htmlbody']?$data['parsed']['htmlbody']:nl2br(htmlentities($data['parsed']['body']))).'
|
' . ($data['parsed']['htmlbody'] ? $data['parsed']['htmlbody'] : nl2br(htmlentities($data['parsed']['body']))) . '
|
||||||
]]>
|
]]>
|
||||||
</description>
|
</description>
|
||||||
'./*((count($encl)>0)?implode('<br/>',$encl):'').*/'
|
' ./*((count($encl)>0)?implode('<br/>',$encl):'').*/ '
|
||||||
</item>';
|
</item>';
|
||||||
|
|
||||||
if(++$i>5) break;
|
//if (++$i > 5) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$rss.='</channel>
|
$rss .= '</channel>
|
||||||
</rss> ';
|
</rss> ';
|
||||||
|
|
||||||
echo $rss;
|
echo $rss;
|
||||||
|
|
||||||
|
|
||||||
function array2ul($array) {
|
function array2ul($array)
|
||||||
|
{
|
||||||
$out = "<ul>";
|
$out = "<ul>";
|
||||||
foreach($array as $key => $elem){
|
foreach ($array as $key => $elem) {
|
||||||
$out .= "<li>$elem</li>";
|
$out .= "<li>$elem</li>";
|
||||||
}
|
}
|
||||||
$out .= "</ul>";
|
$out .= "</ul>";
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue