|
|
<?php
|
|
|
|
|
|
require_once('../LocalSettings.php');
|
|
|
|
|
|
/* Get the database working */
|
|
|
$link = mysqli_connect(DB_SERVER, DB_READ_USER, DB_READ_PASS, DB_NAME)
|
|
|
or trigger_error('Problem connecting to the SQL database server: ' . mysqli_error($link), E_USER_ERROR);
|
|
|
|
|
|
function numeric_entities($string)
|
|
|
{
|
|
|
$mapping = array();
|
|
|
foreach (get_html_translation_table(HTML_ENTITIES, ENT_QUOTES) as $char => $entity)
|
|
|
{
|
|
|
$mapping[$entity] = '&#' . ord($char) . ';';
|
|
|
}
|
|
|
return str_replace(array_keys($mapping), $mapping, $string);
|
|
|
}
|
|
|
|
|
|
function Excerpt($excerpt)
|
|
|
{
|
|
|
$excerpt = strip_tags($excerpt);
|
|
|
if (strlen($excerpt) > 455)
|
|
|
{
|
|
|
$excerpt = substr($excerpt, 0, 452) . '...';
|
|
|
}
|
|
|
return $excerpt;
|
|
|
}
|
|
|
|
|
|
function datesort($a, $b)
|
|
|
{
|
|
|
if ($a->udate == $b->udate)
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
return ($a->udate > $b->udate) ? -1 : 1;
|
|
|
}
|
|
|
|
|
|
function utfentities($string)
|
|
|
{
|
|
|
return htmlentities($string, ENT_COMPAT | ENT_XML1);
|
|
|
}
|
|
|
|
|
|
function _query($s, $byid = false)
|
|
|
{
|
|
|
global $link;
|
|
|
$r = mysqli_query($link, $s) or die(mysqli_error($link));
|
|
|
$ret = array();
|
|
|
$i = 0;
|
|
|
|
|
|
if ($byid)
|
|
|
{
|
|
|
while ($row = mysqli_fetch_object($r))
|
|
|
{
|
|
|
$ret[$row->id] = $row;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
while ($row = mysqli_fetch_object($r))
|
|
|
{
|
|
|
$ret[$i++] = $row;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return $ret;
|
|
|
}
|
|
|
|
|
|
@$f_title = $type = $_GET['type'];
|
|
|
|
|
|
$f_items = array();
|
|
|
$f_desc = 'News and Comics from Megatokyo.';
|
|
|
|
|
|
/*if( $type == 'status' or $type == '') {
|
|
|
// Status Box Updates
|
|
|
$f_title = 'Megatokyo Status Updates';
|
|
|
$s = _query( "SELECT MAX(id)+1 as m FROM strip" ); // Permalinks to strips?
|
|
|
|
|
|
$s = _query( "SELECT DISTINCT SUBTIME( published, eta ) as dd, UNIX_TIMESTAMP(published) as udate, text, UNIX_TIMESTAMP(eta) as eta, percentage
|
|
|
FROM status s
|
|
|
ORDER BY udate DESC
|
|
|
LIMIT 5");
|
|
|
foreach( $s as $k=>$v ) {
|
|
|
$s[$k]->link = 'http://www.megatokyo.com/';
|
|
|
$s[$k]->title = "Update: $v->percentage%: " . htmlentities($v->text, ENT_COMPAT, ini_get('default_charset'));
|
|
|
|
|
|
$d = date( 'l F jS, H:i', $v->eta );
|
|
|
$dd = (int) (( $v->eta - $v->udate )/3600);
|
|
|
|
|
|
$s[$k]->desc = "<![CDATA[Status Update.
|
|
|
<br/>$v->percentage% complete.
|
|
|
<br/>Next comic should be posted at: $d. ($dd hours)]]>";
|
|
|
$s[$k]->date = date( DATE_RFC822, $v->udate );
|
|
|
$s[$k]->guid = $s[$k]->link;
|
|
|
}
|
|
|
$f_items = array_merge( $f_items, $s );
|
|
|
}*/
|
|
|
|
|
|
if ($type == 'strips' or $type == '')
|
|
|
{
|
|
|
$f_title = 'Megatokyo Comics';
|
|
|
|
|
|
$comic_query = 'SELECT s.id, UNIX_TIMESTAMP(s.published) as udate, t.description as chapdesc, t.name as chapname, s.title
|
|
|
FROM strip s JOIN strip_t t ON s.type = t.id
|
|
|
WHERE s.published <= NOW()
|
|
|
ORDER BY s.id DESC LIMIT 5';
|
|
|
|
|
|
$s = _query($comic_query) or die(mysqli_error($link));
|
|
|
|
|
|
foreach($s as $k => $v)
|
|
|
{
|
|
|
$s[$k]->link = SITE_HOST . SITE_PATH . "/strip/$v->id";
|
|
|
$s[$k]->title = "Comic [$v->id] \"" . utfentities($v->title) . '"';
|
|
|
$s[$k]->desc = "<![CDATA[$v->chapdesc comic $v->id
|
|
|
<br />[<a href=\"https://megatokyo.com/\">read...</a>]
|
|
|
<br />[<a href=\"" . $s[$k]->link . "\">permalink</a>]
|
|
|
]]>";
|
|
|
$s[$k]->date = date(DATE_RSS, $v->udate);
|
|
|
$s[$k]->guid = $s[$k]->link;
|
|
|
$s[$k]->perm = 'true';
|
|
|
}
|
|
|
|
|
|
$f_items = array_merge($f_items, $s);
|
|
|
}
|
|
|
|
|
|
if ($type == 'rants' or $type == '')
|
|
|
{
|
|
|
$f_title = 'Megatokyo Rants';
|
|
|
|
|
|
$rant_query = 'SELECT r.id, r.body, UNIX_TIMESTAMP(r.published) as udate, c.name, r.title
|
|
|
FROM rant r JOIN contributor c ON r.author = c.id
|
|
|
WHERE r.published <= NOW() AND r.status = "published"
|
|
|
ORDER BY r.published DESC LIMIT 5';
|
|
|
|
|
|
$s = _query($rant_query) or die(mysqli_error($link));
|
|
|
|
|
|
foreach($s as $k => $v)
|
|
|
{
|
|
|
$s[$k]->link = SITE_HOST . SITE_PATH . "/rant/$v->id";
|
|
|
$s[$k]->author = utfentities($v->name);
|
|
|
$s[$k]->title = "Rant [$v->id] \"" . utfentities($v->title) . '"';
|
|
|
$s[$k]->desc = "<![CDATA[" . Excerpt($v->body) . "<p>[<a href=\"" . $s[$k]->link . "\">permalink</a>]</p>]]>";
|
|
|
$s[$k]->date = date(DATE_RSS, $v->udate);
|
|
|
$s[$k]->guid = $s[$k]->link;
|
|
|
$s[$k]->perm = 'true';
|
|
|
}
|
|
|
|
|
|
$f_items = array_merge($f_items, $s);
|
|
|
}
|
|
|
|
|
|
if ($type == '')
|
|
|
{
|
|
|
$f_title = 'Megatokyo Comics and News';
|
|
|
|
|
|
/*
|
|
|
$s = _query("SELECT UNIX_TIMESTAMP(published) as udate, body, url FROM rss_comment ORDER BY published DESC LIMIT 5");
|
|
|
|
|
|
foreach($s as $k => $v)
|
|
|
{
|
|
|
$s[$k]->link = $v->url;
|
|
|
$s[$k]->title = $v->body;
|
|
|
$s[$k]->date = date( DATE_RSS, $v->udate );
|
|
|
$s[$k]->guid = date( DATE_W3C, $s[$k]->udate);
|
|
|
$s[$k]->desc = '';
|
|
|
$s[$k]->perm = 'false';
|
|
|
}
|
|
|
|
|
|
$f_items = array_merge( $f_items, $s );
|
|
|
*/
|
|
|
}
|
|
|
|
|
|
usort($f_items, 'datesort');
|
|
|
|
|
|
$f_date = $f_items[0]->date;
|
|
|
|
|
|
$rfc1123_date = gmdate('D, d M Y H:i:s T', $f_items[0]->udate);
|
|
|
$etag = md5($rfc1123_date);
|
|
|
|
|
|
/* Conditional Get */
|
|
|
header("Last-Modified: $rfc1123_date");
|
|
|
header("ETag: \"$etag\"");
|
|
|
|
|
|
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $_SERVER['HTTP_IF_MODIFIED_SINCE'] == $rfc1123_date)
|
|
|
{
|
|
|
header('HTTP/1.0 304 Not Modified');
|
|
|
exit;
|
|
|
}
|
|
|
|
|
|
if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $etag)
|
|
|
{
|
|
|
header('HTTP/1.0 304 Not Modified');
|
|
|
exit;
|
|
|
}
|
|
|
|
|
|
header("XX-Powered-By: Nikuman");
|
|
|
header("Content-Type: application/rss+xml; charset=utf-8");
|
|
|
|
|
|
echo '<?xml version="1.0" encoding="utf-8"?>', "\n";
|
|
|
?>
|
|
|
<rss version="2.0">
|
|
|
<channel>
|
|
|
<title><?php echo $f_title; ?></title>
|
|
|
<link>https://megatokyo.com</link>
|
|
|
<description><?php echo $f_desc; ?></description>
|
|
|
<language>en-US</language>
|
|
|
<copyright>Fred Gallagher</copyright>
|
|
|
<managingEditor>piro@megatokyo.com (Fred Gallagher)</managingEditor>
|
|
|
<docs>http://cyber.harvard.edu/rss/rss.html</docs>
|
|
|
<pubDate><?php echo $f_date; ?></pubDate>
|
|
|
<lastBuildDate><?php echo $f_date; ?></lastBuildDate>
|
|
|
<ttl>15</ttl>
|
|
|
|
|
|
<?php foreach ($f_items as $v) { ?>
|
|
|
<item>
|
|
|
<title><?php echo $v->title; ?></title>
|
|
|
<link><?php echo $v->link; ?></link>
|
|
|
<description><?php echo $v->desc; ?></description>
|
|
|
<guid isPermaLink="<?php echo $v->perm; ?>"><?php echo $v->guid; ?></guid>
|
|
|
<pubDate><?php echo $v->date; ?></pubDate>
|
|
|
</item>
|
|
|
<?php } ?>
|
|
|
</channel>
|
|
|
</rss>
|
|
|
|