Merge branch 'master' into xhtml.
Merge branch 'master' into xhtml.

File last commit:

702fbbaf27eb
9d9a130be0a8 merge
Show More
rss.old.php
183 lines | 5.8 KiB | text/x-php | PhpLexer
/ rss / rss.old.php
<?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, 'UTF-8');
}
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';
$s = _query("SELECT DISTINCT s.id, UNIX_TIMESTAMP(s.published) as udate, t.description as chapdesc, t.name as chapname, s.title
FROM media_t media, strip s, strip_t t
WHERE s.media = media.id AND s.published < NOW()
AND s.type = t.id
ORDER BY s.id DESC LIMIT 5") 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, ENT_COMPAT, ini_get('default_charset')) . '"';
$s[$k]->title = "Comic [$v->id] \"" . numeric_entities(utfentities($v->title)) . '"';
$s[$k]->desc = "<![CDATA[$v->chapdesc comic $v->id
<br/>[<a href=\"http://www.megatokyo.com/\">read...</a>]
<br/>[<a href=\"" . $s[$k]->link . "\">permalink</a>]
]]>";
$s[$k]->date = date( DATE_RFC822, $v->udate );
$s[$k]->guid = $s[$k]->link;
}
$f_items = array_merge( $f_items, $s );
}
if( $type == 'rants' or $type == '' ) {
$f_title = 'Megatokyo Rants';
$contributers = _query("SELECT * FROM contributor", true);
$s = _query("SELECT r.id, r.body as body, UNIX_TIMESTAMP(r.published) as udate, r.author as authorno, r.title
FROM rant r
WHERE r.published < NOW()
AND r.status = 'published'
ORDER BY udate DESC LIMIT 5");
foreach($s as $k=>$v) {
$s[$k]->link = SITE_HOST . SITE_PATH . "/rant/$v->id";
$s[$k]->author = utfentities( $contributers[$v->authorno]->name, ENT_COMPAT, ini_get('default_charset') );
$s[$k]->title = "Rant [$v->id] \"" . utfentities($v->title, ENT_COMPAT, ini_get('default_charset')) . '"';
$s[$k]->desc = "<![CDATA[" . Excerpt($v->body) . "<p>[<a href=\"" . $s[$k]->link . "\">permalink</a>]</p>]]>";
$s[$k]->date = date( DATE_RFC822, $v->udate );
$s[$k]->guid = $s[$k]->link;
}
$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_RFC822, $v->udate );
$s[$k]->guid = $s[$k]->date;
$s[$k]->desc = '';
}
$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 ', $f_items[0]->udate ) . 'GMT';
$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>http://www.megatokyo.com</link>
<description><?php echo $f_desc; ?></description>
<language>en-us</language>
<copyright>Fred Gallagher</copyright>
<managingEditor>piro@megatokyo.com</managingEditor>
<pubDate><?php echo $f_date; ?></pubDate>
<lastBuildDate><?php echo $f_date; ?></lastBuildDate>
<ttl>15</ttl>
<?php if( count( $f_items )) 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><?php echo $v->guid; ?></guid>
<pubDate><?php echo $v->date; ?></pubDate>
</item>
<?php endforeach; ?>
</channel>
</rss>