Erzeugt einen Atom Version 1.0 Feed, und ist einwandfrei z.B. mit Thunderbird zu verbinden.
Script in den ersten Zeilen anpassen ,unter dem Namen atom.php in die CMSMS root kopieren und das wars - erzeugt einen validen Feed.
Bitte die Coprights drin lassen.
Das Script ist sehr fix und verbrät gerade mal 2 Mysql Abfragen, wobei eine eigentlich nur für die aktuelle 013.1 erforderlich ist, woraus ihr sehen könnt, dass diese Version damit schon abgesegnet ist.
Code: Select all
<?php
$starttime = microtime();
require_once('config.php');
// Hier anpassen wenn erforderlich
$websitetitel='NoName'; // wird nur verwendet, wenn es keine sitreprefs gibt cmsms version < 13.1
$untertitel='NewsFeed';
$email ='noreply@'.$_SERVER['HTTP_HOST'];
$kategorien='Softwaretest,General'; // sind keine durch Komma getrennte angegeben,werden alle verwendet
// auf exakte gleiche Schreibweise achten
// Ende der Anpassung
$linkteil='?module=News&id=cntnt01&cntnt01action=detail&cntnt01articleid=';
function tstamp($s)
{
if ($s =='') return '';
$t=explode(' ',$s);
$j=explode('-',$t[0]);
$u=explode(':',$t[1]);
$ts= mktime ($u[0],$u[1],$u[2],$j[1],$j[2],$j[0]);
return $ts;
}
$dbhost=$config['db_hostname'];
$dbuser=$config['db_username'];
$dbpasswd=$config['db_password'];
$dbname=$config['db_name'];
$root_url=$config['root_url'];
$feedurl=$root_url.'/atom.php';
$homepage=$root_url;
$table_prefix=$config['db_prefix'];
if (!$config['default_encoding'] == '')
$encoding=$config['default_encoding'] ;
else
$encoding =$config['admin_encoding'];
$now=time();
$nownull=$now-1;
if ($kategorien !='')
{
$kats=explode(",",$kategorien);
}
$sql= "SELECT k.news_category_id, k.news_category_name, n.news_id,n.news_category_id,n.news_title,n.news_data,n.summary,n.end_time,n.status,n.create_date,n.modified_date FROM `".$table_prefix."module_news_categories` k,`".$table_prefix."module_news` n WHERE n.status = 'published' AND IFNULL(n.end_time,$nownull)<$now ";
$ext='';
if ($kats !=null)
{ $c=count($kats);
$i=0;
$ext=" AND k.news_category_id = n.news_category_id AND (";
foreach($kats as $one)
{
$ext .=" k.news_category_name = '$one' ";
$i++;
if ($i < $c) $ext .="OR ";
}
$ext .=")";
}
$sql .=$ext;
$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");
//echo $sql;
$result=mysql_query($sql);
$pref=mysql_query("SELECT sitepref_value FROM `".$table_prefix."siteprefs` WHERE `sitepref_name` = 'sitename'");
if ($pref) {
$row = mysql_fetch_assoc($pref);
$titel =$row['sitepref_value'];
}
else
{
$titel=$websitetitel;
}
// Copyright bitte belassen
$copyright="CMSMS Atom 1.0 by Jan Czarnowski(c)2006";
$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['create_date']==null) $dbr['create_date']= $nownull; else $dbr['create_date']=tstamp($dbr['create_date']);
if ($dbr['modified_date']==null) $dbr['modified_date']= $now;else $dbr['modified_date']=tstamp($dbr['modified_date']);
if ($dbr['create_date']== $dbr['modified_date']) $dbr['modified_date']=$dbr['modified_date']+1;
$d_a=date("Y-m-d H:m:s", $dbr['modified_date']);
$d_b=date("Y-m-d H:m:s", $dbr['create_date']);
$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>';
}
$pid=$dbr['news_id'];
$betr=trim($dbr['news_title']);
if (strlen($betr) == 0) $titel1 = 'Kein Titel'; else $titel1= $betr;
$out .='<entry><title type="text">'.$titel1.'</title>';
$out .='<link type="text/html" href="'.$root_url.'/index.php'.$linkteil.$pid.'"/>';
$out .='<id>'.$pid.'</id>';
$out .='<published>'.$datetime2.'Z</published>';
$out .='<updated>'.$datetime.'Z</updated>';
$out .='<author><name>'.htmlspecialchars($titel).'</name><uri>'.$homepage.'</uri> <email>'.$email.'</email> </author>';
$neu=$dbr['news_data'];
if (strlen($dbr['summary'])==0) $kurz = substr($neu,0,90).' ....';else $kurz=$dbr['summary'];
$out .='<summary type="html">'.htmlspecialchars($kurz).'</summary>';
$out .= '<content type="html" xml:lang="de">'.htmlspecialchars($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 .="<!--CMSMS Atom-Feed needs $verbrauch Seconds and ".(function_exists('memory_get_usage')?memory_get_usage():'n/a')." Bytes of Memory RAM --><!-- CMSMS ATOM Version 1.0 (c) Jan Czarnowski - http://piratos.byethost33.com -->";
header("Content-Type: application/xml");
echo $out;
?>