Remove 'support' box
Remove 'support' box

File last commit:

3591f6718171
906b3a18cede
Show More
rss.php
223 lines | 5.8 KiB | text/x-php | PhpLexer
Add scripts to generate RSS feeds.
r7 <?php
require_once('../LocalSettings.php');
/* Get the database working */
Clean up code style.
r50 $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);
Add scripts to generate RSS feeds.
r7
Clean up code style.
r50 function numeric_entities($string)
{
Add scripts to generate RSS feeds.
r7 $mapping = array();
Clean up code style.
r50 foreach (get_html_translation_table(HTML_ENTITIES, ENT_QUOTES) as $char => $entity)
{
Add scripts to generate RSS feeds.
r7 $mapping[$entity] = '&#' . ord($char) . ';';
}
return str_replace(array_keys($mapping), $mapping, $string);
}
Clean up code style.
r50 function Excerpt($excerpt)
{
$excerpt = strip_tags($excerpt);
if (strlen($excerpt) > 455)
{
$excerpt = substr($excerpt, 0, 452) . '...';
Add scripts to generate RSS feeds.
r7 }
return $excerpt;
}
Miscellaneous tweaks for readability and correctness.
r53 function datesort($a, $b)
Clean up code style.
r50 {
if ($a->udate == $b->udate)
{
return 0;
}
return ($a->udate > $b->udate) ? -1 : 1;
Add scripts to generate RSS feeds.
r7 }
function utfentities($string)
{
Miscellaneous tweaks for readability and correctness.
r53 return htmlentities($string, ENT_COMPAT | ENT_XML1);
Add scripts to generate RSS feeds.
r7 }
Clean up code style.
r50 function _query($s, $byid = false)
{
Add scripts to generate RSS feeds.
r7 global $link;
Clean up code style.
r50 $r = mysqli_query($link, $s) or die(mysqli_error($link));
$ret = array();
$i = 0;
Remove EOL spaces from RSS generators.
r37
Clean up code style.
r50 if ($byid)
{
while ($row = mysqli_fetch_object($r))
{
Add scripts to generate RSS feeds.
r7 $ret[$row->id] = $row;
Clean up code style.
r50 }
}
else
{
while ($row = mysqli_fetch_object($r))
{
Add scripts to generate RSS feeds.
r7 $ret[$i++] = $row;
Clean up code style.
r50 }
Add scripts to generate RSS feeds.
r7 }
Clean up code style.
r50
Add scripts to generate RSS feeds.
r7 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'));
Remove EOL spaces from RSS generators.
r37
Add scripts to generate RSS feeds.
r7 $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 );
}*/
Clean up code style.
r50 if ($type == 'strips' or $type == '')
{
Add scripts to generate RSS feeds.
r7 $f_title = 'Megatokyo Comics';
Clean up code style.
r50
$comic_query = 'SELECT s.id, UNIX_TIMESTAMP(s.published) as udate, t.description as chapdesc, t.name as chapname, s.title
Fix a SQL query and a couple of validation issues.
r55 FROM strip s JOIN strip_t t ON s.type = t.id
Clean up code style.
r50 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)
{
Add scripts to generate RSS feeds.
r7 $s[$k]->link = SITE_HOST . SITE_PATH . "/strip/$v->id";
Miscellaneous tweaks for readability and correctness.
r53 $s[$k]->title = "Comic [$v->id] \"" . utfentities($v->title) . '"';
Add scripts to generate RSS feeds.
r7 $s[$k]->desc = "<![CDATA[$v->chapdesc comic $v->id
Fix a SQL query and a couple of validation issues.
r55 <br />[<a href=\"https://megatokyo.com/\">read...</a>]
Miscellaneous tweaks for readability and correctness.
r53 <br />[<a href=\"" . $s[$k]->link . "\">permalink</a>]
Add scripts to generate RSS feeds.
r7 ]]>";
Clean up code style.
r50 $s[$k]->date = date(DATE_RSS, $v->udate);
Add scripts to generate RSS feeds.
r7 $s[$k]->guid = $s[$k]->link;
$s[$k]->perm = 'true';
}
Clean up code style.
r50
$f_items = array_merge($f_items, $s);
Add scripts to generate RSS feeds.
r7 }
Clean up code style.
r50 if ($type == 'rants' or $type == '')
{
Add scripts to generate RSS feeds.
r7 $f_title = 'Megatokyo Rants';
Clean up code style.
r50
$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"
Miscellaneous tweaks for readability and correctness.
r53 ORDER BY r.published DESC LIMIT 5';
Clean up code style.
r50
$s = _query($rant_query) or die(mysqli_error($link));
foreach($s as $k => $v)
{
Add scripts to generate RSS feeds.
r7 $s[$k]->link = SITE_HOST . SITE_PATH . "/rant/$v->id";
Clean up code style.
r50 $s[$k]->author = utfentities($v->name);
$s[$k]->title = "Rant [$v->id] \"" . utfentities($v->title) . '"';
Add scripts to generate RSS feeds.
r7 $s[$k]->desc = "<![CDATA[" . Excerpt($v->body) . "<p>[<a href=\"" . $s[$k]->link . "\">permalink</a>]</p>]]>";
Clean up code style.
r50 $s[$k]->date = date(DATE_RSS, $v->udate);
Add scripts to generate RSS feeds.
r7 $s[$k]->guid = $s[$k]->link;
$s[$k]->perm = 'true';
}
Clean up code style.
r50
$f_items = array_merge($f_items, $s);
Add scripts to generate RSS feeds.
r7 }
Clean up code style.
r50 if ($type == '')
Add scripts to generate RSS feeds.
r7 {
$f_title = 'Megatokyo Comics and News';
Clean up code style.
r50
/*
Add scripts to generate RSS feeds.
r7 $s = _query("SELECT UNIX_TIMESTAMP(published) as udate, body, url FROM rss_comment ORDER BY published DESC LIMIT 5");
Remove EOL spaces from RSS generators.
r37
Clean up code style.
r50 foreach($s as $k => $v)
Add scripts to generate RSS feeds.
r7 {
$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';
}
Clean up code style.
r50
Add scripts to generate RSS feeds.
r7 $f_items = array_merge( $f_items, $s );
Clean up code style.
r50 */
Add scripts to generate RSS feeds.
r7 }
Clean up code style.
r50 usort($f_items, 'datesort');
Add scripts to generate RSS feeds.
r7
$f_date = $f_items[0]->date;
Fix a SQL query and a couple of validation issues.
r55 $rfc1123_date = gmdate('D, d M Y H:i:s T', $f_items[0]->udate);
Clean up code style.
r50 $etag = md5($rfc1123_date);
Add scripts to generate RSS feeds.
r7
/* Conditional Get */
Clean up code style.
r50 header("Last-Modified: $rfc1123_date");
header("ETag: \"$etag\"");
Add scripts to generate RSS feeds.
r7
Clean up code style.
r50 if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $_SERVER['HTTP_IF_MODIFIED_SINCE'] == $rfc1123_date)
{
Add scripts to generate RSS feeds.
r7 header('HTTP/1.0 304 Not Modified');
exit;
}
Clean up code style.
r50
if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $etag)
{
Add scripts to generate RSS feeds.
r7 header('HTTP/1.0 304 Not Modified');
exit;
}
header("XX-Powered-By: Nikuman");
Clean up code style.
r50 header("Content-Type: application/rss+xml; charset=utf-8");
Add scripts to generate RSS feeds.
r7
echo '<?xml version="1.0" encoding="utf-8"?>', "\n";
?>
Remove Atom link that does not exist in RSS 2.0 spec.
r51 <rss version="2.0">
Add scripts to generate RSS feeds.
r7 <channel>
<title><?php echo $f_title; ?></title>
Add <docs> element to <channel> element.
r52 <link>https://megatokyo.com</link>
Add scripts to generate RSS feeds.
r7 <description><?php echo $f_desc; ?></description>
Miscellaneous tweaks for readability and correctness.
r53 <language>en-US</language>
Add scripts to generate RSS feeds.
r7 <copyright>Fred Gallagher</copyright>
<managingEditor>piro@megatokyo.com (Fred Gallagher)</managingEditor>
Add <docs> element to <channel> element.
r52 <docs>http://cyber.harvard.edu/rss/rss.html</docs>
Add scripts to generate RSS feeds.
r7 <pubDate><?php echo $f_date; ?></pubDate>
<lastBuildDate><?php echo $f_date; ?></lastBuildDate>
<ttl>15</ttl>
Remove EOL spaces from RSS generators.
r37
Miscellaneous tweaks for readability and correctness.
r53 <?php foreach ($f_items as $v) { ?>
Add scripts to generate RSS feeds.
r7 <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>
Add <docs> element to <channel> element.
r52 <?php } ?>
Add scripts to generate RSS feeds.
r7 </channel>
Remove EOL spaces from RSS generators.
r37 </rss>