<?php
/**********************************
Easy News Updater
Copyright (C) 2001 Andreas Geißner
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*********************************/
//In dieser Datei muss nichts verändert werden
//Wer aber will darf das natürlich machen
//Einbinden der Config
include('config.php');
//Funktion zum Ersetzen des Smilies durch einen imagetag
function smiliehtml($text)
{
$text=str_replace(':)', '<img src="smilies/smile.gif" border="0">', $text);
$text=str_replace(':(', '<img src="smilies/sad.gif" border="0">', $text);
$text=str_replace(';-)', '<img src="smilies/wink.gif" border="0">', $text);
$text=str_replace(':cool:', '<img src="smilies/cool.gif" border="0">', $text);
$text=str_replace(':mad:', '<img src="smilies/mad.gif" border="0">', $text);
$text=str_replace(':D', '<img src="smilies/biggrin.gif" border="0">', $text);
$text=str_replace(':rolleyes:', '<img src="smilies/rolleyes.gif" border="0">', $text);
return $text;
}
//Function für den UBB Code
function codehtml($text)
{
$text=eregi_replace("\[B\]([^\[]+)\[/B\]", "<b>\\1</b>", $text);
$text=eregi_replace("\[I\]([^[]+)\[/I\]", "<i>\\1</i>", $text);
$text=eregi_replace("\[URL\]www.([^\[]+)\[/URL\]", "<a href=\"http://www.\\1\" target=\"_blank\">www.\\1</a>", $text);
$text=eregi_replace("\[URL\]([^[]+)\[/URL\]", "<a href=\"\\1\" target=\"_blank\">\\1</a>", $text);
$text=eregi_replace("\[MAIL\]([^[]+)\[/MAIL\]", "<a href=\"mailto:\\1\">\\1</a>", $text);
$text=eregi_replace("\[URL=([^[]+)\]([^[]+)\[/URL\]", "<a href=\"\\1\" target=\"_blank\">\\2</a>", $text);
return $text;
}
//Anzahl der Feedbackposts auslesen
function getfeedbackzahl($newsid)
{
if(!@$array=explode('|||||', implode('|||', file("feedback/$newsid.dat")))) return '0';
else return count($array)-1;
}
//Funtion zum Anzeigen der News
function shownews()
{
global $start, $news_maxpage, $news_ubbc, $news_smilies;
if(!$start) $start='0';
$inhalt=explode('|||||', implode('', file('data.dat')));
$end=$start+$news_maxpage;
$temp1=implode('',file('templates/news.php'));
$templates1=explode('<!--Beginn des Codes für einen Newseintrag - diese Zeile darf nicht entfernt oder verändert werden-->', $temp1);
$templates2=explode('<!--Beginn des Fusses der News - diese Zeile darf nicht entfernt oder verändert werden-->', $templates1[1]);
$html=$templates1[0];
for($i=$start; $i<$end && $inhalt[$i]; $i++)
{
$details=explode('|||', $inhalt[$i]);
if($details[1]=='0') $details[1]='';
$news=str_replace('<!--Autor-->', $details[0], $templates2[0]);
$news=str_replace('<!--Email-->', $details[1], $news);
$news=str_replace('<!--Datum-->', $details[2], $news);
$news=str_replace('<!--Betreff-->', $details[4], $news);
if($news_smilies=='1')$details[5]=smiliehtml($details[5]);
if($news_ubbc=='1') $details[5]=codehtml($details[5]);
$news=str_replace('<!--News-->', $details[5], $news);
$feedbacklink='news.php?action=feedback&newsid='.$details[3].'&news='.$i;
$news=str_replace('<!--Feedbacklink-->', $feedbacklink, $news);
$news=str_replace('<!--Feedbackzahl-->', getfeedbackzahl(trim($details[3])), $news);
$html.=$news;
}
if($start!=0)
{
$back=$start-$news_maxpage;
$menuehtml='<a href="news.php?start='.$back.'"><<-Zurück</a> |';
}
else
$menuehtml='<<-Zurück |';
$menuehtml.=' <a href="news.php">Start</a> ';
if($inhalt[$end]) $menuehtml.='| <a href="news.php?start='.$end.'">Weiter->></a>';
else $menuehtml.='| Weiter->';
$html.=str_replace('<!--Menue-->', $menuehtml, $templates2[1]);
echo $html;
}
//Funktion zum Anzeigen des Feedbacks
function showfeedback($newsid, $news)
{
global $news_smilies, $news_ubbc;
if(getfeedbackzahl($newsid)==0)
{
$template=implode('', file('templates/nofeedback.html'));
$inhalt=explode('|||||', implode('', file('data.dat')));
$details=explode('|||', $inhalt[$news]);
if($details[1]=='0') $details[1]='';
$template=str_replace('<!--Autor-->', $details[0], $template);
$template=str_replace('<!--Email-->', $details[1], $template);
$template=str_replace('<!--Datum-->', $details[2], $template);
$template=str_replace('<!--Betreff-->', $details[4], $template);
if($news_smilies==1) $details[5]=smiliehtml($details[5]);
if($news_ubbc==1) $details[5]=codehtml($details[5]);
$template = str_replace('<!--News-->', $details[5], $template);
echo str_replace('<!--Newsid-->', $newsid, $template);
}
else
{
$temp1=implode('', file('templates/feedback.html'));
$template1=explode('<!--Beginn des Codes für einen Feedbackposts - diese Zeile darf nicht entfernt oder verändert werden-->', $temp1);
$template2=explode('<!--Beginn des Fusses der Seite - diese Zeile darf nicht entfernt oder verändert werden-->', $template1[1]);
$inhalt=explode('|||||', implode('', file('data.dat')));
$details=explode('|||', $inhalt[$news]);
if($details[1]=='0') $details[1]='';
$template1[0]=str_replace('<!--Autor-->', $details[0], $template1[0]);
$template1[0]=str_replace('<!--Email-->', $details[1], $template1[0]);
$template1[0]=str_replace('<!--Datum-->', $details[2], $template1[0]);
$template1[0]=str_replace('<!--Betreff-->', $details[4], $template1[0]);
if($news_smilies==1) $details[5]=smiliehtml($details[5]);
if($news_ubbc==1) $details[5]=codehtml($details[5]);
$html=str_replace('<!--News-->', $details[5], $template1[0]);
$inhalt=explode('|||||', implode('', file("feedback/$newsid.dat"))) or die('Fehler');
for($i='0'; $inhalt[$i]; $i++)
{
$details=explode('|||', $inhalt[$i]);
$fb=str_replace('<!--Autor-->', $details[0], $template2[0]);
$fb=str_replace('<!--Email-->', $details[1], $fb);
if($news_smilies==1) $details[2]=smiliehtml($details[2]);
# echo smiliehtml($details[2]);
if($news_ubbc==1) $details[2]=codehtml($details[2]);
$html.=str_replace('<!--Eintrag-->', $details[2], $fb);
}
echo $html.str_replace('<!--Newsid-->', $newsid, $template2[1]);
}
}
//Funktion zum Schreiben des Feedbacks in die Datenbank
function writefeedback($newsid, $name, $email, $comment)
{
if(!$name||!$email||!$comment)
{
$template=implode('', file('templates/fberror.html'));
die(str_replace('<!--Fehler-->', 'Es wurden nicht alle Felder ausgefuellt!', $template));
}
if(strpos($name.$email.$comment, '||'))
{
$template=implode('', file('templates/fberror.html'));
die(str_replace('<!--Fehler-->', 'Die Zeichenkette "||" darf keinem Feld vorhanden sein, bzw. Anfang und Ende zweier Felder zusammen dürfen die Zeichenkette ebenfalls nicht ergeben.', $template));
}
if(!@$datei=fopen("feedback/$newsid.dat", 'a'))
{
if(!@$datei=fopen("feedback/$newsid.dat", 'w'))
{
$template=implode('', file('templates/fberror.html'));
die(str_replace('<!--Fehler-->', 'Fehler: Konnte Feedbackdatei nocht oeffnen: Evtl unzureichende Dateirechte (CHMODS)!', $template));
}
}
$name=htmlentities($name);
$email=htmlentities($email);
$comment=str_replace("\n", '<br>', htmlentities($comment));
fputs($datei, "$name|||$email|||$comment|||||");
fclose($datei);
echo implode('', file('templates/fbwritten.html'));
}
//Newsletterformular
function nlstart()
{
global $news_nletter;
if($news_nletter=='1')
echo '<html>
<head>
<title>Newsletter</title>
</head>
<body>
<form action="news.php" method="POST">
<input type="hidden" name="action" value="nlsend">
<p align="center">
<input type="text" name="email" value="name@home.page"><br>
<input type="radio" name="do" value="eintragen" CHECKED>Eintragen | Austragen <input type="radio" name="do" value="austragen"><br>
<input type="submit" name="submit" value="Absenden"></p></form>
</body>
</html>';
else echo '<html>
<head>
<title>Newsletter</title>
</head>
<body>
<p align="center"> Newsletter nicht aktiviert!</p>
</body>
</html>';
}
//Newsletter eintragen/austragen
function nlwrite($email, $do)
{
global $news_nletter;
if($news_nletter=='0')
echo '<html>
<head>
<title>Newsletter</title>
</head>
<body>
<p align="center"> Newsletter nicht aktiviert!</p>
</body>
</html>';
if($do=='eintragen')
{
$datei=fopen('newsletterdata.php', 'a');
fputs($datei, "\n$email");
fclose($datei);
echo '<html>
<head>
<title>Eintrag erfolgreich</title>
</head>
<body>
<p align="center">Die E-Mailadresse wurde erfolgreich eingetragen!</p>
</body>
</html>';
}
else
{
$inhalt=file('newsletterdata.php', 'a');
$writetext='<?php';
for($i='1'; $inhalt[$i]; $i++)
{
$inhalt[$i]=trim($inhalt[$i]);
if($inhalt[$i]==$email) $found='1';
else $writetext.="\n$inhalt[$i]";
}
if(!$found) echo '<html>
<head>
<title>Nicht gefunden</title>
</head>
<body>
<p align="center">Diese E-Mailadresse wurde in der Datenbank nicht gefunden!</p>
</body></html>';
else
{
$datei=fopen('newsletterdata.php', 'w');
fputs($datei, $writetext);
fclose($datei);
echo '<html>
<head>
<title>Eintrag entfernt</title>
</head>
<body>
<p align="center">Die angegebene E-Mailadresse wurde aus der Datenbank entfernt!</p>
</body></html>';
}
}
}
switch($action)
{
case 'feedback':
showfeedback($newsid, $news);
break;
case 'fbwrite':
writefeedback($newsid, $name, $email, $comment);
break;
case 'newsletter':
nlstart();
break;
case 'nlsend':
nlwrite($email, $do);
break;
default:
shownews();
}