diff --git a/rss/.htaccess b/rss/.htaccess
new file mode 100644
index 0000000..9a2aeb1
--- /dev/null
+++ b/rss/.htaccess
@@ -0,0 +1,10 @@
+
+ RewriteEngine On
+ RewriteBase /rss/
+ RewriteRule ^index.php$ rss.php
+ RewriteRule ^megatokyo.xml$ rss.php
+ RewriteRule ^strips.xml$ rss.php?type=strips
+ RewriteRule ^rants.xml$ rss.php?type=rants
+ RewriteRule ^status.xml$ rss.php?type=status
+ Header set X-Powered-By Nikuman
+
diff --git a/rss/index.php b/rss/index.php
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/rss/index.php
diff --git a/rss/rss.old.php b/rss/rss.old.php
new file mode 100644
index 0000000..587991e
--- /dev/null
+++ b/rss/rss.old.php
@@ -0,0 +1,183 @@
+ $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 = "$v->percentage% complete.
+
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 = "chapdesc comic $v->id
+
[read...]
+
[link . "\">permalink]
+ ]]>";
+ $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 = "body) . "
[link . "\">permalink]
]]>";
+ $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 '', "\n";
+?>
+
+
+
+ http://www.megatokyo.com
+
+ en-us
+ Fred Gallagher
+ piro@megatokyo.com
+
+
+ 15
+
+
+ -
+ title; ?>
+ link; ?>
+ desc; ?>
+ guid; ?>
+ date; ?>
+
+
+
+
diff --git a/rss/rss.php b/rss/rss.php
new file mode 100644
index 0000000..1d58786
--- /dev/null
+++ b/rss/rss.php
@@ -0,0 +1,188 @@
+ $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 = "$v->percentage% complete.
+
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 = "chapdesc comic $v->id
+
[read...]
+
[link . "\">permalink]
+ ]]>";
+ $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';
+ $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 = "body) . "[link . "\">permalink]
]]>";
+ $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 ', $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 '', "\n";
+?>
+
+
+
+ http://www.megatokyo.com
+
+
+ en-us
+ Fred Gallagher
+ piro@megatokyo.com (Fred Gallagher)
+
+
+ 15
+
+
+ -
+ title; ?>
+ link; ?>
+ desc; ?>
+ guid; ?>
+ date; ?>
+
+
+
+
+
diff --git a/rss/xml.gif b/rss/xml.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ecb09575418861d80c63d143660290732b84678e
GIT binary patch
literal 429
zc${-lBS^j_f@V`j(!Sbf>FCRROWBHQ8`u60;56P^*
zzP!Ibujv2k;_nYGTqrVrzIWmO#~0^2GXH;e^=XUq|5lU#w+@~QWjUL!{QvF4=bIt1)p3eAnlx4IjZ9zUvd|2TX$mPx{oR&qjsoWl^^zDFf(reW
zxDELXdGt8ay5zN))0+%i+M@kb(;4;HjnV{4m{q1Vw?+jf8M4Xvrm-rdORSi&Dxlqu
zg_*fWYNH{ma*5vdnXCOZd->Bv79D2d&|}!nCatZl<-gk~c0RktI@wK3e%l)i)wulb
r8L?mWWzy3#`tscGs}a}Ne?N`xrAm6Z9_nu95Y~!0QSh)+fx#L8%kitR
literal 0
Hc$@