RSS 直した。

調子が悪かった P_blog のRSS。
mixi が厳密な RSS を求めてたらしく、ダメでした。

mixi の Help を見たら、FEED Validator (英語サイト)に準拠せよと…。


feed validator error


確かにエラーが…。


feed validator help


help を見たら、時間の表記がダメっぽい。

で、なおした。
RSS 1.0 を直したら RSS 2.0 がダメになったりして…。

最終的な diff をさらしてみます。(p_blog の rss 以下)
RSS 1.0 はエラーなし、 RSS 2.0 は 最低限のやつはクリアしたはず。


diff -uNr rss_org/include/P_BLOG_RSS.class.php rss/include/P_BLOG_RSS.class.php
--- rss_org/include/P_BLOG_RSS.class.php    2008-01-05 20:35:38.000000000 +0900
+++ rss/include/P_BLOG_RSS.class.php    2008-01-04 17:45:17.000000000 +0900
@@ -31,7 +31,7 @@
         return '<item>
 <title>'. $title.'</title>
 <link>'. $link .'</link>
-<pubDate>'.date('D, d M Y H:i:s ', strtotime($row['date'])).tz().'</pubDate>
+<pubDate>'.date('D, d M Y H:i:s ', strtotime($row['date'])).tz2().'</pubDate>
 <description>' . $description . '</description>'.$enclosures.'
 <content:encoded>
 <![CDATA['. $row['comment'] . ']]>
@@ -158,7 +158,7 @@
     {
         global $cfg, $id, $tid, $row, $row2, $items, $item,
                $tz, $log_table, $f_index, $forum_table;
-
+        $tz = tz2();
         if (isset($tid)) {
             $link = 'http://' . $_SERVER['HTTP_HOST'] . $cfg['root_path'] .
                     'forum/topic.php?tid=' . $tid . '&amp;p=0';
diff -uNr rss_org/include/fnc_rss.inc.php rss/include/fnc_rss.inc.php
--- rss_org/include/fnc_rss.inc.php 2008-01-05 20:35:38.000000000 +0900
+++ rss/include/fnc_rss.inc.php 2008-01-05 20:43:09.000000000 +0900
@@ -9,6 +9,88 @@
     global $cfg;
     switch($cfg['tz']) {
         case '-12':
+            $tz = '-12:00';
+            break;
+        case '-11':
+            $tz = '-11:00';
+            break;
+        case '-10':
+            $tz = '-10:00';
+            break;
+        case '-9':
+            $tz = '-09:00';
+            break;
+        case '-8':
+            $tz = '-08:00';
+            break;
+        case '-7':
+            $tz = '-07:00';
+            break;
+        case '-6':
+            $tz = '-06:00';
+            break;
+        case '-5':
+            $tz = '-05:00';
+            break;
+        case '-4':
+            $tz = '-04:00';
+            break;
+        case '-3':
+            $tz = '-03:00';
+            break;
+        case '-2':
+            $tz = '-02:00';
+            break;
+        case '-1':
+            $tz = '+01:00';
+            break;    
+        case '12':
+            $tz = '+12:00';
+            break;
+        case '11':
+            $tz = '+11:00';
+            break;
+        case '10':
+            $tz = '+10:00';
+            break;
+        case '9':
+            $tz = '+09:00';
+            break;
+        case '8':
+            $tz = '+08:00';
+            break;
+        case '7':
+            $tz = '+07:00';
+            break;
+        case '6':
+            $tz = '+06:00';
+            break;
+        case '5':
+            $tz = '+05:00';
+            break;
+        case '4':
+            $tz = '+04:00';
+            break;
+        case '3':
+            $tz = '+03:00';
+            break;
+        case '2':
+            $tz = '+02:00';
+            break;
+        case '1':
+            $tz = '+01:00';
+            break;
+        default:
+            $tz = '+00:00';
+            break;
+    }
+    return $tz;
+}
+
+function tz2() {
+    global $cfg;
+    switch($cfg['tz']) {
+        case '-12':
             $tz = '-1200';
             break;
         case '-11':
@@ -43,7 +125,7 @@
             break;
         case '-1':
             $tz = '+0100';
-            break;    
+            break;
         case '12':
             $tz = '+1200';
             break;


RSS の時間なんかおかしい。

サブルーチンを足して、定義されてない変数を定義。
オープンソース万歳。

記事はも少し足すかも。→足しました。(07/01/06)
http://www.gimmix.org/max/article.php?id=452