| webmaster@0 | 1 <?php | 
| webmaster@0 | 2 | 
| webmaster@0 | 3 include("classes.php"); | 
| webmaster@0 | 4 | 
| webmaster@0 | 5  function utf8_ensure($str) { | 
| webmaster@0 | 6   return seems_utf8($str)?$str:utf8_encode($str); | 
| webmaster@0 | 7  } | 
| webmaster@0 | 8 | 
| webmaster@0 | 9  function seems_utf8($Str) { | 
| webmaster@0 | 10   for ($i=0; $i<strlen($Str) && $i<150; $i++) { | 
| webmaster@0 | 11    if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb | 
| webmaster@0 | 12    elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb | 
| webmaster@0 | 13    elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb | 
| webmaster@0 | 14    elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n=3; # 11110bbb | 
| webmaster@0 | 15    elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n=4; # 111110bb | 
| webmaster@0 | 16    elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n=5; # 1111110b | 
| webmaster@0 | 17    else return false; # Does not match any model | 
| webmaster@0 | 18    for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ? | 
| webmaster@0 | 19     if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80)) | 
| webmaster@0 | 20     return false; | 
| webmaster@0 | 21    } | 
| webmaster@0 | 22   } | 
| webmaster@0 | 23   return true; | 
| webmaster@0 | 24  } | 
| webmaster@0 | 25 | 
| webmaster@0 | 26  if(stristr($_SERVER['HTTP_ACCEPT'], "application/rss+xml")) | 
| webmaster@0 | 27 	header("Content-Type: application/rss+xml; charset=utf-8"); | 
| webmaster@0 | 28  else | 
| webmaster@0 | 29 	header("Content-Type: text/xml; charset=utf-8"); | 
| webmaster@0 | 30  echo("<?xml version='1.0' encoding='utf-8'?>\n"); | 
| webmaster@0 | 31 ?> | 
| webmaster@0 | 32 <rss version='2.0'> | 
| webmaster@0 | 33  <channel> | 
| webmaster@0 | 34   <title>Dual Blog</title> | 
| webmaster@0 | 35   <link>http://www.defr.org/blog/</link> | 
| webmaster@0 | 36   <description>Le blog de DeFr, parlant de tout et de rien ^^;</description> | 
| webmaster@0 | 37   <language>fr-fr</language> | 
| webmaster@0 | 38   <?php | 
| webmaster@0 | 39   $Data = new DataAccess(); | 
| webmaster@0 | 40   $Data->Connect(); | 
| webmaster@0 | 41   $Data->Query("SELECT * FROM Mess ORDER BY num_mess DESC LIMIT 0, 20"); | 
| webmaster@0 | 42   while($val=$Data->GetRow()) { | 
| webmaster@0 | 43    $utf8_Mess=utf8_ensure($val['Message']); | 
| webmaster@0 | 44    $utf8_Titre=utf8_ensure($val['Titre']); | 
| webmaster@0 | 45    $dateRFC=gmdate("r", strtotime($val['DatePost'])); | 
| webmaster@0 | 46   echo(" | 
| webmaster@0 | 47   <item> | 
| webmaster@0 | 48    <title>{$utf8_Titre}</title> | 
| webmaster@0 | 49    <description><![CDATA[{$utf8_Mess}]]></description> | 
| webmaster@0 | 50    <pubDate>{$dateRFC}</pubDate> | 
| webmaster@0 | 51    <link>http://www.defr.org/blog/posts/{$val['num_mess']}</link> | 
| webmaster@0 | 52   </item> | 
| webmaster@0 | 53   "); | 
| webmaster@0 | 54   } | 
| webmaster@0 | 55   $Data->Close(); | 
| webmaster@0 | 56   ?> | 
| webmaster@0 | 57  </channel> | 
| webmaster@0 | 58 </rss> |