rss.old.php
183 lines
| 5.8 KiB
| text/x-php
|
PhpLexer
/ rss / rss.old.php
| r7 | <?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> | ||||
