Seite 1 von 1
ATOM Feed für phpBB
Verfasst: 06.01.2006 17:44
von ne-r-o
Hi,
ich suche einen MOD für die aktuelle Version von phpBB, mit dem ich die Beiträge im ATOM (am liebsten 1.0) ausgeben kann. Für das RSS Format hab ich so was in der art gefunden, aber RSS möchte ich nicht so gerne verwenden, da alle anderen Feeds der Seite auch ATOM sind. Wo bekomme ich einen solchen MOD her?
Verfasst: 20.04.2006 12:45
von Czarnowski
Du meinst sicher so etwas
http://f.byethost33.com/atom.php
Das aber ist kein Mod sondern nur ein kleines Script erzeigt aber valides Atom 1.0 und funzt als RSS Feeed z.B. über Thunderbird gut.
Verfasst: 20.04.2006 20:42
von Harki
Oder hier:
http://naklon.info/rss/about.htm
Sehr schönes MOD, finde ich. Erzeugt allerdings Atom 0.3
Und wie ist es mit Email Clients ?
Verfasst: 21.04.2006 12:13
von Czarnowski
Ich habe vergeblich versucht diverse RSS - Feed auf Basis Atom 0.3 unter Thunderbird als RSS Feed einzubinden.
Auch dieser MOD wird nicht akzeptiert.
Aber was soll's ich habe ja meine Lösung und die ist nur 83 Zeilen lang.
Verfasst: 21.04.2006 17:16
von Czarnowski
Habe das Script ein wenig umgestellt, so dass andere es problemlos nutzen können.
Script als atom.php in die root von phpbb kopieren - das ist dann auch schon alles.
Code: Alles auswählen
<?php
$starttime = microtime();
require_once('config.php');
// Dieser Wert ist anzupassen
// 86400 = Sekunden eines Tages
// Hier werden alle Postings einer Woche gezeigt
// Beim zweiten Besuch über einen Email-Client wie Thunderbird werden nur noch neue oder geänderte gezeigt.
$diff = 86400*7;
// encoding einstellen - das ist abhängig von dem Webserver und der PHPBB - Einstellung
$encoding="iso-8859-1";
// Ab hier normalerweise keine Änderungen notwendig
$now=time() - $diff;
$db = mysql_connect($dbhost,$dbuser,$dbpasswd) or die("Keine Verbindung zum Datenbanksystem gelungen: " . mysql_error());
mysql_select_db($dbname) or die("Auswahl der Datenbank".$dbname." fehlgeschlagen");
$confsql="SELECT config_name, config_value FROM `".$table_prefix."config` WHERE `config_name` ='sitename' OR `config_name` ='site_desc' OR `config_name` ='board_email' OR `config_name` ='server_name'";
$conf = mysql_query($confsql);
while ($row = mysql_fetch_assoc($conf))
{
if ($row['config_name'] =='sitename')
{
$titel=$row['config_value'];
}
elseif ($row['config_name'] =='server_name')
{
$root_url="http://".$row['config_value'] ;
$feedurl=$root_url."/atom.php";
$homepage =$root_url;
}
elseif ($row['config_name'] =='site_desc')
{
$untertitel= $row['config_value'];
}
elseif ($row['config_name'] =='board_email')
{
$email= $row['config_value'];
}
}
// Copyright bitte belassen
$copyright="Atom 1.0 für PHPBB by Jan Czarnowski(c)2006";
$sql="SELECT p.topic_id,p.post_id, p.post_time,p.post_edit_time,pt.post_id,pt.post_subject,pt.post_text,t.topic_id,t.topic_title FROM `".$table_prefix."posts` p ,`".$table_prefix."posts_text` pt,`".$table_prefix."topics` t WHERE (p.post_id=pt.post_id AND p.topic_id = t.topic_id AND p.post_time > $now ) ORDER BY `post_time` DESC ";
$result = mysql_query($sql);
$out='<?xml version="1.0" encoding="'.$encoding.'"?><feed xmlns="http://www.w3.org/2005/Atom">';
$out .='<title type="text">'.$titel.'</title><subtitle type="text">'.$untertitel.'</subtitle>';
$first=true;
if ($result)
{
$dbr = mysql_fetch_assoc($result) ;
while ($dbr)
{
if ($dbr['post_edit_time']==0) $dbr['post_edit_time']=$dbr['post_time']+1;
$d_a=date("Y-m-d H:m:s", $dbr['post_edit_time']);
$d_b=date("Y-m-d H:m:s", $dbr['post_time']);
$d = explode(" ", $d_a);
$date = $d[0];
$time = $d[1];
$datetime = implode("T",$d);
$d2 = explode(" ", $d_b);
$date2 = $d2[0];
$time2 = $d2[1];
$datetime2 = implode("T",$d2);
if ($first)
{
$first=false;
$out .="<updated>".$datetime."Z</updated>";
$out .="<id>$feedurl</id>";
$out .='<link rel="alternate" type="text/html" href="'.$homepage.'"/>';
$out .='<link rel="self" type="application/atom+xml" href="'.$feedurl.'"/>';
$out .='<rights>'.$copyright.'</rights>';
$out .='<generator uri="'.$feedurl.'" version="1.0">'.$copyright.'</generator>';
}
$topic=$dbr['topic_id'] ;
$pid=$dbr['post_id'];
$betr=trim($dbr['post_subject']);
if (strlen($betr) == 0) $titel1 = $dbr['topic_title']; else $titel1= $betr;
$out .='<entry><title type="text">'.$titel1.'</title>';
$out .='<link type="text/html" href="'.$root_url.'/viewtopic.php?t='.$topic.'"/>';
// thisid ist die post_id, wird nur zur Validierung benötigt, da keine gleichen id's verwendet werden dürfen
$out .='<id>'.$root_url.'/viewtopic.php?t='.$topic.'&thisid='.$pid.'</id>';
$out .='<published>'.$datetime2.'Z</published>';
$out .='<updated>'.$datetime.'Z</updated>';
$out .='<author><name>'.$titel.'</name><uri>'.$homepage.'</uri> <email>'.$email.'</email> </author>';
$neu=$dbr['post_text'];
$kurz = substr($neu,0,90).' ....';
$out .='<summary type="html">'.$kurz.'</summary>';
$out .= '<content type="html" xml:lang="de">'.$neu.'</content></entry>';
$dbr = mysql_fetch_assoc($result);
}
}
$out .="</feed>";
$endtime = microtime();
list($a_dec, $a_sec) = explode(" ", $starttime);
list($b_dec, $b_sec) = explode(" ", $endtime);
$verbrauch = $b_sec - $a_sec + $b_dec - $a_dec;
$out .="<!--PHPBB Atom benötigte $verbrauch Sekunden und ".(function_exists('memory_get_usage')?memory_get_usage():'n/a')." Bytes an RAM --><!-- PHPBB ATOM Version 1.0 (c) Jan Czarnowski - http://piratos.byethost33.com -->";
header("Content-Type: application/xml");
echo $out;
?>
Mir erleichtert das Script die Arbeit mit dem Forum sehr - ich hoffe es nützt auch anderen etwas.
Moinsen Pabba
Verfasst: 26.04.2006 16:18
von marcel czarnowski
moin pabba hab dich hier uaf dieser site ma gefunden deine site geht grad irgendwie net

egal kann mir ja ma schreiben ok ciao
marcel
Verfasst: 24.05.2006 19:58
von andreas888
Hallo,
hat zufällig jemand den obigen rss feed schon so umgeschrieben, daß der Code für die Smileys, Bilder, Zitate, und URLs nicht mit-rausgeht ?
ansonsten ist er aber ok, wird zumindest im Internet Explorer 7 gut dargestellt.
Grüße von Anderas