Code: Alles auswählen
<?php
/******************************************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : vpComment-Alpha 0.1
* Basierend auf : vpGuestbook 1.9
* Author : Ingo van Peeren
* Copyright : Ingo van Peeren (ingo@van-peeren.de)
* Created : 2005-03-14
* Modified : 2006-01-31 by Thomas Thut
* Detail : Der OUTPUT-Teil von Ausgabe und Eingabe
* von vpGuestbook zusammengelegt in
* ein Modul
******************************************************************/
// CMS_VARs initialisieren aus ausgabe output
$spez_client = "CMS_VALUE[1]";
$spez_lang = "CMS_VALUE[2]";
$tpl_datei_ausgabe = "CMS_VALUE[3]";
$tpl_art = "CMS_VALUE[4]";
//$bilderpfad = "CMS_VALUE[5]"; // wird unten definiert
$eintraege_pro_seite = "CMS_VALUE[6]";
$seitennav_art = "CMS_VALUE[7]";
$dateformat1 = "CMS_VALUE[8]";
$dateformat2 = "CMS_VALUE[9]";
$locale = "CMS_VALUE[10]";
$wrap_length = "CMS_VALUE[11]";
$link_vor = "CMS_VALUE[12]";
$link_zurueck = "CMS_VALUE[13]";
$max_seiten = "CMS_VALUE[14]";
// CMS_VARs initialisieren Ende
// CMS_VARs initialisieren aus eingabe output
//$ausgabe_cat = "CMS_VALUE[1]"; // wozu?
//$ausgabe_cont = "CMS_VALUE[2]"; // wozu?
$tpl_datei_eingabe = "CMS_VALUE[15]";
//$tpl_art = "CMS_VALUE[4]"; // schon definiert
$smilies_aktiv = "CMS_VALUE[16]";
$smiliespfad = "CMS_VALUE[17]"."/"; // den slash braucht es offenbar noch
$bbcode_aktiv = "CMS_VALUE[20]";
$userfeld1 = "CMS_VALUE[21]";
$userfeld2 = "CMS_VALUE[22]";
$userfeld3 = "CMS_VALUE[23]";
$email_benachrichtigung = "CMS_VALUE[24]";
$emails_an = "CMS_VALUE[25]";
$cookie_aktiv = "CMS_VALUE[26]";
$cookie_dauer = "CMS_VALUE[27]";
$direkt_sichtbar = "CMS_VALUE[28]";
if ($direkt_sichtbar != 1) $direkt_sichtbar = 0;
$xhtml = "CMS_VALUE[29]";
$bilderpfad = "CMS_VALUE[19]";
$avatare_aktiv = "CMS_VALUE[18]";
// CMS_VARs initialisieren Ende
// Mailer-Klasse einbinden
cInclude('classes', 'class.phpmailer.php');
// eXtended-Template-Klasse (von swelpot) einbinden
// zur Verwendung siehe:
// http://www.contenido.org/forum/viewtopic.php?t=5851
if ($tpl_art == "extended") cInclude('classes', 'class.ExtendedTemplate.php');
else cInclude('classes', 'class.template.php');
$edit_url = "front_content.php?changeview=edit&client=$client&lang=$lang&action=con_editart&idartlang=$idartlang&idart=$idart&idcat=$idcat&contenido=" . $sess->id;
// locale auf ausgewählten Wert setzen
setlocale (LC_ALL, $locale);
// DB-Verbindung konfigurieren
$cfg["tab"]["vpguestbook"] = $cfg['sql']['sqlprefix']."_vpguestbook";
$db = new DB_Contenido;
// Funktionen
function htmlwrap($str, $width = 60, $break = "\n", $nobreak = "", $nobr = "pre", $utf = false) {
// Split HTML content into an array delimited by < and >
// The flags save the delimeters and remove empty variables
$content = preg_split("/([<>])/", $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
// Transform protected element lists into arrays
$nobreak = explode(" ", $nobreak);
$nobr = explode(" ", $nobr);
// Variable setup
$intag = false;
$innbk = array();
$innbr = array();
$drain = "";
$utf = ($utf) ? "u" : "";
// List of characters it is "safe" to insert line-breaks at
// Do not add ampersand (&) as it will mess up HTML Entities
// It is not necessary to add < and >
$lbrks = "/?!%)-}]\\\"':;";
// We use \r for adding <br /> in the right spots so just switch to \n
if ($break == "\r") $break = "\n";
while (list(, $value) = each($content)) {
switch ($value) {
// If a < is encountered, set the "in-tag" flag
case "<": $intag = true; break;
// If a > is encountered, remove the flag
case ">": $intag = false; break;
default:
// If we are currently within a tag...
if ($intag) {
// If the first character is not a / then this is an opening tag
if ($value{0} != "/") {
// Collect the tag name
preg_match("/^(.*?)(\s|$)/$utf", $value, $t);
// If this is a protected element, activate the associated protection flag
if ((!count($innbk) && in_array($t[1], $nobreak)) || in_array($t[1], $innbk)) $innbk[] = $t[1];
if ((!count($innbr) && in_array($t[1], $nobr)) || in_array($t[1], $innbr)) $innbr[] = $t[1];
// Otherwise this is a closing tag
} else {
// If this is a closing tag for a protected element, unset the flag
if (in_array(substr($value, 1), $innbk)) unset($innbk[count($innbk)]);
if (in_array(substr($value, 1), $innbr)) unset($innbr[count($innbr)]);
}
// Else if we're outside any tags...
} else if ($value) {
// If unprotected, remove all existing \r, replace all existing \n with \r
if (!count($innbr)) $value = str_replace("\n", "\r", str_replace("\r", "", $value));
// If unprotected, enter the line-break loop
if (!count($innbk)) {
do {
$store = $value;
// Find the first stretch of characters over the $width limit
if (preg_match("/^(.*?\s|^)(([^\s&]|&(\w{2,5}|#\d{2,4});){".$width."})(?!(".preg_quote($break, "/")."|\s))(.*)$/s$utf", $value, $match)) {
// Determine the last "safe line-break" character within this match
for ($x = 0, $ledge = 0; $x < strlen($lbrks); $x++) $ledge = max($ledge, strrpos($match[2], $lbrks{$x}));
if (!$ledge) $ledge = strlen($match[2]) - 1;
// Insert the modified string
$value = $match[1].substr($match[2], 0, $ledge + 1).$break.substr($match[2], $ledge + 1).$match[6];
}
// Loop while overlimit strings are still being found
} while ($store != $value);
}
// If unprotected, replace all \r with <br />\n to finish
if (!count($innbr)) $value = str_replace("\r", "<br />\n", $value);
}
}
// Send the modified segment down the drain
$drain .= $value;
}
// Return contents of the drain
return $drain;
}
function toggle_active ($entry) {
global $db, $cfg;
$sql = "UPDATE ".$cfg["tab"]["vpguestbook"]." SET active = '1' WHERE id='$entry'";
$db->query($sql);
}
function toggle_inactive ($entry) {
global $db, $cfg;
$sql = "UPDATE ".$cfg["tab"]["vpguestbook"]." SET active = '0' WHERE id='$entry'";
$db->query($sql);
}
function eintrag_loeschen ($entry) {
global $db, $cfg;
$sql = "DELETE FROM ".$cfg["tab"]["vpguestbook"]." WHERE id='$entry'";
$db->query($sql);
}
function eintraege_zaehlen () {
global $db, $cfg, $client, $lang, $idart;
// orig code
// $sql = "SELECT COUNT(*) as anzahl FROM ".$cfg["tab"]["vpguestbook"]." WHERE client=$client AND active=1";
$sql = "SELECT COUNT(*) as anzahl FROM ".$cfg["tab"]["vpguestbook"]." WHERE client=$client AND lang=$lang AND active=1 AND art=$idart";
$db->query($sql);
$db->next_record();
return $db->f("anzahl");
}
function eintraege_auslesen ($start, $anzahl) {
global $db, $cfg, $client, $lang, $idart, $spez_client, $spez_lang, $edit;
if ($edit && empty($_GET['edit'])) $where = "WHERE 1";
else $where = "WHERE active=1";
if ($spez_client) $where .= " AND client=$client";
if ($spez_lang) $where .= " AND lang=$lang";
// where-zusatz: soll ja nicht mehr nach kategorien sondern auf artikeln basieren
$where .= " AND art=$idart";
// originalcode
// $sql = "SELECT id, active, name, email, url, entry, image, comment, iphost, user1, user2, user3, UNIX_TIMESTAMP(date) as datum FROM ".$cfg["tab"]["vpguestbook"]." $where ORDER BY date DESC LIMIT $start, $anzahl";
$sql = "SELECT id, active, name, email, url, entry, image, comment, iphost, user1, user2, user3, UNIX_TIMESTAMP(date) as datum FROM ".$cfg["tab"]["vpguestbook"]." $where ORDER BY date LIMIT $start, $anzahl";
$db->query($sql);
$eintraege = array();
$i = 0;
while ($db->next_record()) {
$eintraege[$i]['id'] = $db->f("id");
$eintraege[$i]['active'] = $db->f("active");
$eintraege[$i]['name'] = $db->f("name");
$eintraege[$i]['email'] = $db->f("email");
$eintraege[$i]['url'] = $db->f("url");
$eintraege[$i]['entry'] = $db->f("entry");
$eintraege[$i]['image'] = $db->f("image");
$eintraege[$i]['comment'] = $db->f("comment");
$eintraege[$i]['iphost'] = $db->f("iphost");
$eintraege[$i]['user1'] = $db->f("user1");
$eintraege[$i]['user2'] = $db->f("user2");
$eintraege[$i]['user3'] = $db->f("user3");
$eintraege[$i]['date'] = $db->f("datum");
$i++;
}
return $eintraege;
}
function vpgb_navigation ($start, $eintraege_pro_seite, $anzahl_eintraege, $navi_art = 1) {
global $link_vor, $link_zurueck, $idcat, $idcatart, $idart, $max_seiten;
// originalcode
// $hier = "front_content.php?idcatart=" . $idcatart;
// navigation innerhalb artikel und nicht kategorie
$hier = "front_content.php?idart=" . $idart;
$vpgb_nav = "";
if ($start > 0) {
$vpgb_nav .= "<a href=\"" . $hier . "&start=" . ($start - $eintraege_pro_seite) . "\">" . $link_zurueck . "</a>";
}
if ($anzahl_eintraege > $eintraege_pro_seite) {
$anzahl_seiten = ceil($anzahl_eintraege / $eintraege_pro_seite);
if (($max_seiten == "") || ($max_seiten > $anzahl_seiten)) {
for ($h = 1; $h <= $anzahl_seiten; $h++) {
$hstart = ($h - 1) * $eintraege_pro_seite;
if ($navi_art == 1) {
if ($h == $anzahl_seiten) {
if ($anzahl_eintraege > ($hstart + 1)) $htext = ($hstart + 1) . "-" . $anzahl_eintraege;
else $htext = $anzahl_eintraege;
}
else $htext = ($hstart + 1) . "-" . ($hstart + $eintraege_pro_seite);
}
else $htext = $h;
if ($hstart == $start) $vpgb_nav .= " <a class=\"vpgb_aktiv\" href=\"" . $hier . "&start=" . $hstart . "\">" . $htext . "</a>";
else $vpgb_nav .= " <a href=\"" . $hier . "&start=" . $hstart . "\">" . $htext . "</a>";
}
}
else {
for ($h = 1; $h <= $anzahl_seiten; $h++) {
$hstart = ($h - 1) * $eintraege_pro_seite;
if ($navi_art == 1) {
if ($h == $anzahl_seiten) {
if ($anzahl_eintraege > ($hstart + 1)) $htext = ($hstart + 1) . "-" . $anzahl_eintraege;
else $htext = $anzahl_eintraege;
}
else $htext = ($hstart + 1) . "-" . ($hstart + $eintraege_pro_seite);
}
else $htext = $h;
if (($hstart < $eintraege_pro_seite * 2) || ($hstart > (($anzahl_seiten - 3) * $eintraege_pro_seite)) || (($hstart > ($start - ($eintraege_pro_seite * 2))) && ($hstart < ($start + ($eintraege_pro_seite * 2))))) {
if ($hstart == $start) $vpgb_nav .= " <a class=\"vpgb_aktiv\" href=\"" . $hier . "&start=" . $hstart . "\">" . $htext . "</a>";
else $vpgb_nav .= " <a href=\"" . $hier . "&start=" . $hstart . "\">" . $htext . "</a>";
}
else $vpgb_nav .= "###";
}
}
}
if (($start + $eintraege_pro_seite) < $anzahl_eintraege) {
$vpgb_nav .= " <a href=\"" . $hier . "&start=" . ($start + $eintraege_pro_seite) . "\">" . $link_vor . "</a>";
}
$vpgb_nav = preg_replace("/(\#+)/", " <span class=\"vpgb_punkte\">…</span>", $vpgb_nav);
return $vpgb_nav;
}
function edit_comment ($entry_id, $new_entry, $type) {
global $db, $cfg, $client;
if ($type == "delete") {
$sql = "UPDATE ".$cfg["tab"]["vpguestbook"]." SET comment = '' WHERE id='$entry_id'";
$db->query($sql);
}
else {
$sql = "UPDATE ".$cfg["tab"]["vpguestbook"]." SET comment = '$new_entry' WHERE id='$entry_id'";
$db->query($sql);
}
}
// Funktionen für die Ausgabe Ende
// Funktionen für die Eingabe
function testURL($url) {
if(eregi("http://", $url)) {
$url = str_replace ("http://", "", $url);
}
if ($url != "") {
$url = "http://".$url;
}
return $url;
}
function cookie_setzen ($dauer) {
global $sess, $vpgblastentry;
$vpgblastentry = time()+$dauer*60;
if ($sess->is_registered("vpgblastentry")) $sess->unregister("vpgblastentry");
$sess->register("vpgblastentry");
}
function vpgb_js () {
$js = "
<script type=\"text/javascript\">
function storeCaret ()
{
if (document.getElementById('vpgb_eintrag').entry.createTextRange) document.getElementById('vpgb_eintrag').entry.caretPos = document.selection.createRange().duplicate();
}
function insertAtCaret (icon1, icon2)
{
if (document.getElementById('vpgb_eintrag').entry.createTextRange && document.getElementById('vpgb_eintrag').entry.caretPos)
{
var caretPos = document.getElementById('vpgb_eintrag').entry.caretPos;
selectedtext = caretPos.text;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == '' ? ' '+icon1 + ' ' : ' '+icon1+' ';
caretPos.text = caretPos.text + selectedtext + icon2;
}
else document.getElementById('vpgb_eintrag').entry.value = document.getElementById('vpgb_eintrag').entry.value + ' '+icon1 + ' ' + icon2+' '
document.getElementById('vpgb_eintrag').entry.focus();
}
function DoPrompt(action) {
var revisedMessage;
var post = document.getElementById(\"vpgb_eintrag\");
var currentMessage = post.entry.value;
if (action == \"url\") {
var thisURL = prompt(\"URL der gewünschten Seite angeben\", \"http://\");
var thisTitle = prompt(\"Titel der Seite angeben\", \"Seitentitel\");
var urlBBCode = \"[URL=\"+thisURL+\"]\"+thisTitle+\"[/URL]\";
revisedMessage = currentMessage+urlBBCode;
post.entry.value=revisedMessage;
post.entry.focus();
return;
}
if (action == \"email\") {
var thisEmail = prompt(\"gewünschte E-Mail-Adresse angeben\", \"\");
var emailBBCode = \"[EMAIL]\"+thisEmail+\"[/EMAIL]\";
revisedMessage = currentMessage+emailBBCode;
post.entry.value=revisedMessage;
post.entry.focus();
return;
}
if (action == \"bold\") {
var thisBold = prompt(\"den fetten Text angeben\", \"\");
var boldBBCode = \"[b]\"+thisBold+\"[/b]\";
revisedMessage = currentMessage+boldBBCode;
post.entry.value=revisedMessage;
post.entry.focus();
return;
}
if (action == \"italic\") {
var thisItal = prompt(\"den kursiven Text angeben\", \"\");
var italBBCode = \"[i]\"+thisItal+\"[/i]\";
revisedMessage = currentMessage+italBBCode;
post.entry.value=revisedMessage;
post.entry.focus();
return;
}
if (action == \"underline\") {
var thisUL = prompt(\"den unterstrichenenen Text angeben\", \"\");
var ulBBCode = \"[u]\"+thisUL+\"[/u]\";
revisedMessage = currentMessage+ulBBCode;
post.entry.value=revisedMessage;
post.entry.focus();
return;
}
}
</script>
";
return $js;
}
function smilies_preg_quote($str, $delimiter)
{
$text = preg_quote($str);
$text = str_replace($delimiter, '\\' . $delimiter, $text);
return $text;
}
function smilies_auslesen () {
global $cfgClient, $client, $smiliespfad;
$fcontents = file($cfgClient[$client]['path']['frontend'] . $cfgClient[$client]['upload'] . $smiliespfad . 'smiles.pak');
if (is_array($fcontents)) {
$i = 0;
foreach($fcontents as $zeile)
{
$smilies_daten = explode("=+:", trim(addslashes($zeile)));
$smilies[$i]['icon'] = $smilies_daten[0];
$smilies[$i]['erklaerung'] = $smilies_daten[1];
$smilies[$i]['ersetzung'] = $smilies_daten[2];
$i++;
}
}
return $smilies;
}
function smilies_ersetzen ($entry) {
global $smilies, $cfgClient, $client, $smiliespfad;
if (is_array($smilies)) {
foreach ($smilies as $row) {
$ers = "/(?<=.\W|\W.|^\W)" . smilies_preg_quote($row['ersetzung'], "/") . "(?=.\W|\W.|\W$)/";
$entry = preg_replace($ers, '<img src="' . $cfgClient[$client]['upload'] . $smiliespfad. $row['icon'].'" alt="' . $row['erklaerung'] . '" />',$entry);
}
}
return $entry;
}
function smilies_ausgeben ($smilies) {
global $cfgClient, $client, $smiliespfad, $einzeltag;
$code = "";
if (is_array($smilies)) {
foreach($smilies as $smilie)
{
if ($smilie['icon'] != $h) $code .= "<a class=\"smilie\" href=\"javascript:insertAtCaret('" . htmlspecialchars($smilie['ersetzung']) . "','')\"><img src=\"" . $cfgClient[$client]['path']['htmlpath'] . $cfgClient[$client]['upload'] . $smiliespfad . $smilie['icon'] . "\" alt=\"" . htmlspecialchars($smilie['erklaerung']) . "\"".$einzeltag."></a>";
$h = $smilie['icon'];
}
}
return $code;
}
function bbcode_link ($type) {
$link = "javascript:DoPrompt('".$type."')";
return $link;
}
function bbcode_ersetzen ($text) {
global $xhtml;
if ($xhtml) {
$text = str_ireplace("[b]", "<strong>", $text);
$text = str_ireplace("[/b]", "</strong>", $text);
$text = str_ireplace("[i]", "<em>", $text);
$text = str_ireplace("[/i]", "</em>", $text);
$text = str_ireplace("[u]", "<u>", $text);
$text = str_ireplace("[/u]", "</u>", $text);
}
else {
$text = str_ireplace("[b]", "<b>", $text);
$text = str_ireplace("[/b]", "</b>", $text);
$text = str_ireplace("[i]", "<i>", $text);
$text = str_ireplace("[/i]", "</i>", $text);
$text = str_ireplace("[u]", "<u>", $text);
$text = str_ireplace("[/u]", "</u>", $text);
}
$patterns = array();
$replacements = array();
$patterns[0] = "/\[url\]www.([^\[]*)\[\/url\]/i";
$replacements[0] = "<a href=\"http://www.\\1\" target=_blank>\\1</a>";
$patterns[1] = "/\[url\]([^\[]*)\[\/url\]/i";
$replacements[1] = "<a href=\"\\1\" target=_blank>\\1</a>";
$patterns[2] = "/\[url=([^\[]*)\]([^\[]*)\[\/url\]/i";
$replacements[2] = "<a href=\"\\1\" target=_blank>\\2</a>";
$patterns[3] = "/\[email\]([^\[]*)\[\/email\]/i";
$replacements[3] = "<a href=\"mailto:\\1\">\\1</a>";
$patterns[4] = "/\[email=([^\[]*)\]([^\[]*)\[\/email\]/i";
$replacements[4] = "<a href=\"mailto:\\1\">\\2</a>";
$text = preg_replace($patterns, $replacements, $text);
return $text;
}
function bilder_liste () {
global $cfgClient, $client, $bilderpfad;
$basedir = getcwd();
chdir($cfgClient[$client]['path']['frontend'] . $cfgClient[$client]['upload'] . $bilderpfad);
$handle = opendir(".");
while ($file = readdir($handle)) {
if (is_dir($file)) $dirlist[] = $file;
if (is_file($file)) $filelist[] = $file;
}
closedir($handle);
$wdir2 = $basedir . "/";
chdir($wdir2);
if ($filelist) {
asort($filelist);
}
$i = 0;
if (is_array($filelist)) {
while (list ($key, $file) = each ($filelist)) {
$bilder[$i] = $file;
$i++;
}
}
return $bilder;
}
function bilder_radio ($bilder) {
global $cfgClient, $client, $bilderpfad, $einzeltag;
$code = "";
if (is_array($bilder)) {
foreach ($bilder as $bild) {
$code .= "<div style=\"float: left;\"><img src=\"" . $cfgClient[$client]['path']['htmlpath'] . $cfgClient[$client]['upload'] . $bilderpfad . $bild . "\" alt=\"$bild\" ".$einzeltag."><br".$einzeltag."><input type=\"radio\" name=\"test\" value=\"$bild\"".$einzeltag."></div>\n";
}
$code .= "<br style=\"clear: all;\"".$einzeltag.">";
}
return $code;
}
function bilder_select ($bilder) {
global $cfgClient, $client, $bilderpfad, $einzeltag;
$code = "";
if (is_array($bilder)) {
$code .= "<select size=\"1\" name=\"image\" id=\"image\" onchange=\"document.getElementById('vpgb_image').src= '" . $cfgClient[$client]['path']['htmlpath'] . $cfgClient[$client]['upload'] . $bilderpfad . "' + document.getElementById('vpgb_eintrag').image.options[document.getElementById('vpgb_eintrag').image.selectedIndex].value
\">\n";
$h = 0;
foreach ($bilder as $bild) {
$code .= "<option value=\"$bild\">$bild</option>\n";
if ($h == 0) {
$erstes = $bild;
$h = 1;
}
}
$code .= "</select>\n";
$code .= "<img src=\"" . $cfgClient[$client]['path']['htmlpath'] . $cfgClient[$client]['upload'] . $bilderpfad . $erstes . "\" id=\"vpgb_image\" alt=\"\"".$einzeltag.">\n";
}
return $code;
}
function benachrichtigung ($name, $email, $url, $entry, $iphost, $user1, $user2, $user3, $image) {
global $emails_an, $userfeld1, $userfeld2, $userfeld3;
$mailtext = "Es gibt einen neuen Kommentar:
Name: ".html_entity_decode($name)."
E-Mail: $email
Homepage: $url
IP/Hostname: $iphost
$userfeld1: ".html_entity_decode($user1)."
$userfeld2: ".html_entity_decode($user2)."
$userfeld3: ".html_entity_decode($user3)."
Bild: $image
Eintrag:
".html_entity_decode($entry)."
";
$mail = new phpmailer();
$mail->AddAddress($emails_an);
$mail->From = $emails_an;
$mail->FromName = "vpComment";
$mail->Subject = "Neuer Kommentar";
$mail->Body = $mailtext;
if(!$mail->Send()){
$notsend .= $lngNews["mailcouldnotbesend1"].$to.$lngNews["mailcouldnotbesend2"] . "<br>";
}
}
function eintragen () {
global $db, $cfg, $client, $lang, $idart, $direkt_sichtbar, $email_benachrichtigung, $smilies_aktiv, $bbcode_aktiv, $bilder, $xhtml;
// Initialisieren der Variablen
$error = "";
// Name überprüfen
if ($_POST['name'] == "") {
$error = "Bitte geben Sie Ihren Namen an!";
}
else {
$name = htmlentities(strip_tags($_POST['name']));
}
// Email überprüfen
$email_pattern = '/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i';
if (($_POST['email'] == "") || (preg_match($email_pattern, $_POST['email']))) {
$email = $_POST['email'];
}
else {
$error = "Bitte geben Sie eine gültige Email-Adresse an!";
}
// URL überprüfen
if ($_POST['url'] != "") {
$url = htmlentities(strip_tags($_POST['url']));
$url = testURL($url);
}
// Eintrag überprüfen
if ($_POST['entry'] == "") {
$error = "Bitte schreiben Sie einen Eintrag!";
}
else {
$hentry = strip_tags(htmlentities($_POST['entry']));
$entry = $hentry;
if ($smilies_aktiv) $entry = smilies_ersetzen($entry);
if ($bbcode_aktiv) $entry = bbcode_ersetzen($entry);
}
// Bilder prüfen
if (($_POST['image'] == "") || (in_array ($_POST['image'], $bilder))) {
$image = $_POST['image'];
}
// Uservariablen überprüfen
$user1 = htmlentities(strip_tags($_POST['user1']));
$user2 = htmlentities(strip_tags($_POST['user2']));
$user3 = htmlentities(strip_tags($_POST['user3']));
// IP und Hostname speichern
$iphost = $_SERVER["REMOTE_ADDR"];
$host = @gethostbyaddr($_SERVER["REMOTE_ADDR"]);
if ($host) $iphost .= " / " . $host;
// der eigentliche Eintrag in die Datenbank
if ($error == "") {
$sql = "INSERT INTO ".$cfg["tab"]["vpguestbook"]." (name, email, url, entry, image, iphost, user1, user2, user3, active, client, lang, art, date) VALUES ('$name', '$email', '$url', '$entry', '$image', '$iphost', '$user1', '$user2', '$user3', $direkt_sichtbar, $client, $lang, $idart, NOW())";
if (! $db->query($sql)) $error = $db->$Error;
elseif ($email_benachrichtigung) benachrichtigung ($name, $email, $url, $hentry, $iphost, $user1, $user2, $user3, $image);
}
return $error;
}
// funktion, um das pseudo des fronten-users aus der tabelle der frontendusers zu holen
// ACHTUNG -> die tabelle "con_frontendusers" muss um das Feld "pseudonym" erweitert werden.
// sql_1: ALTER TABLE con_frontendusers ADD pseudonym varchar(60) NOT NULL default '';
function get_user_pseudo() {
global $cfg, $client, $auth, $cgf, $db3;
$db3 = new DB_Contenido;
$sql = "SELECT
pseudonym
FROM
".$cfg["tab"]["frontendusers"]."
WHERE
idclient = '".$client."' AND
idfrontenduser = '".$auth->auth["uid"]."'
";
if (! $db3->query($sql)) $error = $db3->$Error;
$db3->next_record();
return $db3->f("pseudonym");
}
function update_user_pseudo() {
global $cfg, $client, $auth, $cgf, $db4;
$neues_pseudo = htmlentities(strip_tags($_POST['name']));
$db4 = new DB_Contenido;
// gibt es dieses pseudonym schon?
$sql = "SELECT pseudonym FROM
".$cfg["tab"]["frontendusers"]."
WHERE
idfrontenduser = '".$auth->auth["uid"]."'
";
if (! $db4->query($sql)) $error = $db4->$Error;
$db4->next_record();
$pseudo_in_db = $db4->f("pseudonym");
// falls angegebenes pseudo NICHT mit db-pseudo der user-id übereinSTIMMT?
if ($pseudo_in_db!=$neues_pseudo) {
// gibt es dieses pseudonym schon?
$sql = "SELECT COUNT(*) as anzahl FROM
".$cfg["tab"]["frontendusers"]."
WHERE
pseudonym = '".$neues_pseudo."'
";
if (! $db4->query($sql)) $error = $db4->$Error;
$db4->next_record();
$anz_pseudos = $db4->f("anzahl");
// wenn noch nicht vorhanden
if ($anz_pseudos==0) {
// pseudonym in die db eintragen
$sql = "UPDATE ".$cfg["tab"]["frontendusers"]."
SET
pseudonym = '".$neues_pseudo."'
WHERE
idfrontenduser = '".$auth->auth["uid"]."'
";
if (! $db4->query($sql)) $error = $db4->$Error;
}
// sonst einen fehler ausgeben
else {
// falls neues pseudo nicht mit der uid übereinstimmt
$error = "Pseudonym ist bereits vorhanden! Bitte wählen Sie ein anderes Pseudonym";
}
}
return $error;
}
// Funktionen für die Eingabe Ende
// Code für das Bearbeiten des Eingabeformulares
// muss vor der Ausgabe sein, damit der soeben eingegebene Kommentar auch
// bereits wieder ausgelesen werden kann
$formular_anzeigen = TRUE;
// als erstes html oder xhtml?
if ($xhtml) $einzeltag = " /";
else $einzeltag = "";
// smilies-array bereitstellen
if ($smilies_aktiv) {
// Smilies-Array füllen
$smilies = smilies_auslesen();
}
// originalcode
//if ($_POST) {
// ist zu ungenau - ich melde mich ja auch via formular an, womit dies bereits erfüllt wäre - darum
// test auf hidden feld vpcomment, um zu sehen, ob dieses formular gesendet wurde
if ($_POST['vpcomment']) {
if ($sess->is_registered("vpgblastentry")) {
$lastentry = $GLOBALS["vpgblastentry"];
}
if (($lastentry >= time()) && ($cookie_aktiv)) $fehler = "Bitte nicht mehrmals hintereinander eintragen!";
else {
// neues pseudo prüfen und eintragen
$fehler = update_user_pseudo();
// falls o.k. dann kommentar eintragen
if ($fehler == "") {$fehler = eintragen();}
}
if ($fehler != "") {
$formular_anzeigen = TRUE;
echo "Fehler: " . $fehler;
}
elseif ($direkt_sichtbar) {
echo "Vielen Dank für Ihren Kommentar!";
$formular_anzeigen = TRUE;
if ($cookie_aktiv) cookie_setzen ($cookie_dauer);
}
else {
echo "Vielen Dank für Ihren Kommentar! Dieser wird nach Prüfung freigeschaltet.";
$formular_anzeigen = TRUE;
if ($cookie_aktiv) cookie_setzen ($cookie_dauer);
}
}
// Ende Code für das Bearbeiten des Eingabeformulares
// Code für das Ausgeben der Einträge
if ($edit && empty($_GET['edit'])) {
if ($_GET['toggle_active'] == "yes") toggle_active($_GET['entry']);
if ($_GET['toggle_inactive'] == "yes") toggle_inactive($_GET['entry']);
if ($_GET['delete'] == "yes") eintrag_loeschen($_GET['entry']);
if ($_POST['edit_comment']) edit_comment($_GET['entry'], $_POST['kommentar'], "edit");
if ($_POST['delete_comment']) edit_comment($_GET['entry'], $_POST['kommentar'], "delete");
}
if (! $_GET['start']) $start = 0;
else $start = $_GET['start'];
$anzahl_eintraege = eintraege_zaehlen();
if ($edit && empty($_GET['edit'])) {
$eintraege = eintraege_auslesen(0, 10000);
$seitennavigation = "";
}
else {
$eintraege = eintraege_auslesen($start, $eintraege_pro_seite);
if ($seitennav_art == 1) $seitennavigation = vpgb_navigation($start, $eintraege_pro_seite, $anzahl_eintraege, 1);
else $seitennavigation = vpgb_navigation($start, $eintraege_pro_seite, $anzahl_eintraege, 0);
}
if ($tpl_art == "extended") $tpl = new ExtendedTemplate();
else $tpl = new Template;
$tpl->reset();
$tpl->set('s', 'EINTRAEGE', $anzahl_eintraege);
$tpl->set('s', 'SEITENNAVIGATION', $seitennavigation);
foreach ($eintraege as $eintrag) {
if ($edit && empty($_GET['edit'])) {
$tpl->set('d', 'EDIT', "1");
if ($eintrag['active']) $adminlinks = "<a href=\"" . $edit_url . "&toggle_inactive=yes&entry=" . $eintrag['id'] . "\"><img src=\"" . $cfg['path']['contenido_fullhtml'] . "images/online.gif\" width=\"11\" height=\"12\" border=\"0\" title=\"Offline schalten\" alt=\"Offline schalten\"></a>";
else $adminlinks = "<a href=\"" . $edit_url . "&toggle_active=yes&entry=" . $eintrag['id'] . "\"><img src=\"" . $cfg['path']['contenido_fullhtml'] . "images/offline.gif\" width=\"11\" height=\"12\" border=\"0\" title=\"Online schalten\" alt=\"Online schalten\"></a>";
$adminlinks .= '<a title="Modul löschen" href="' . $edit_url . '&delete=yes&entry=' . $eintrag['id'] . '" onClick="return confirm(\'Wollen Sie den Gästebucheintrag von ' . $eintrag['name'] . ' wirklich löschen?\')" ><img src="' . $cfg['path']['contenido_fullhtml'] . 'images/delete.gif" border="0" title="Eintrag löschen" alt="Eintrag löschen"></a>';
$comment = "<form action=\"" . $edit_url . "&entry=" . $eintrag['id'] . "\" method=\"post\">";
$comment .= "<textarea name=\"kommentar\">" . $eintrag['comment'] . "</textarea><input type=\"submit\" name=\"edit_comment\" value=\"ändern\"> <input type=\"submit\" name=\"delete_comment\" value=\"löschen\">";
$comment .= "</form>";
}
else {
$comment = htmlwrap($eintrag['comment'], $wrap_length, " ");
}
$tpl->set('d', 'NAME', $eintrag['name']);
$tpl->set('d', 'EMAIL', $eintrag['email']);
$tpl->set('d', 'URL', $eintrag['url']);
$tpl->set('d', 'ENTRY', htmlwrap($eintrag['entry'], $wrap_length, " "));
$tpl->set('d', 'COMMENT', $comment);
$tpl->set('d', 'USER1', $eintrag['user1']);
$tpl->set('d', 'USER2', $eintrag['user2']);
$tpl->set('d', 'USER3', $eintrag['user3']);
$tpl->set('d', 'IPHOST', $eintrag['iphost']);
$tpl->set('d', 'IMAGE', $cfgClient[$client]['upload'].$bilderpfad.$eintrag['image']);
$tpl->set('d', 'DATE1', strftime($dateformat1, $eintrag['date']));
$tpl->set('d', 'DATE2', strftime($dateformat2, $eintrag['date']));
$tpl->set('d', 'ADMINLINKS', $adminlinks);
$tpl->next();
}
$tpl->generate('templates/' . $tpl_datei_ausgabe);
// Ende Code für die Kommentar-Ausgabe
// Code zum Generieren des Eingabeformulars
// eingeloggt?
if ($auth->auth["uid"] == "nobody"){
// hier kommt rein, was getan werden muss, wenn user nicht eingeloggt ist
echo "bitte einloggen";
} else {
// ansonsten Eingabeformular für Kommentare ausgeben
$bilder = bilder_liste();
if ($formular_anzeigen) {
if ($smilies_aktiv) {
// Smilies HTML-Ausgabe
$smiliesform = smilies_ausgeben($smilies);
}
if ($smilies_aktiv || $bbcode_aktiv) echo vpgb_js();
if ($avatare_aktiv) {
$imageselect = bilder_select($bilder);
$imageradio = bilder_radio($bilder);
}
// Formularfelder generieren
// div. vars bereitstellen
$user_pseudo = get_user_pseudo();
// formular nach einem fehler wieder mit abgesendeten daten befüllen, damit user nicht zweimal eingeben muss
if ($fehler != '') {
$name = htmlentities(strip_tags($_POST['name']));
$email = htmlentities(strip_tags($_POST['email']));
$url = htmlentities(strip_tags($_POST['url']));
$user1 = htmlentities(strip_tags($_POST['user1']));
$user2 = htmlentities(strip_tags($_POST['user2']));
$user3 = htmlentities(strip_tags($_POST['user3']));
$entry = htmlentities(strip_tags($_POST['entry']));
}
if ($user_pseudo == '') {$nameform = "<input value=\"".$name."\" id=\"name\" type=\"text\" name=\"name\" size=\"18\"".$einzeltag.">";}
else {$nameform = "<input value=\"".$user_pseudo."\" id=\"name\" type=\"hidden\" name=\"name\" size=\"18\"".$einzeltag.">".$user_pseudo;}
$emailform = "<input value=\"".$email."\" id=\"email\" type=\"text\" name=\"email\" size=\"18\"".$einzeltag.">";
$urlform = "<input value=\"".$url."\" id=\"url\" type=\"text\" name=\"url\" size=\"18\"".$einzeltag.">";
if ($userfeld1 != "") {$user1form = "<input value=\"".$user1."\" id=\"user1\" type=\"text\" name=\"user1\" size=\"18\"".$einzeltag.">";}
if ($userfeld2 != "") {$user2form = "<input value=\"".$user2."\" id=\"user2\" type=\"text\" name=\"user2\" size=\"18\"".$einzeltag.">";}
if ($userfeld3 != "") {$user3form = "<input value=\"".$user3."\" id=\"user3\" type=\"text\" name=\"user3\" size=\"18\"".$einzeltag.">";}
if ($user_pseudo == '') {$entryform = "<textarea id=\"entry\" name=\"entry\" cols=\"30\" rows=\"10\" onselect=\"storeCaret(this);\" onclick=\"storeCaret(this);\" onkeyup=\"storeCaret(this);\">".$entry."</textarea>";}
else {$entryform = "<textarea id=\"entry\" name=\"entry\" cols=\"30\" rows=\"10\" onselect=\"storeCaret(this);\" onclick=\"storeCaret(this);\" onkeyup=\"storeCaret(this);\"></textarea>";}
$submitform = "<input type=\"submit\" class=\"submit\" name=\"vpgb_submit\" value=\"eintragen\"".$einzeltag.">";
// Ende Formularfelder generieren
$tpl->reset();
$tpl->set('s', 'NAMEFORM', $nameform);
$tpl->set('s', 'EMAILFORM', $emailform);
$tpl->set('s', 'URLFORM', $urlform);
$tpl->set('s', 'USER1FORM', $user1form);
$tpl->set('s', 'USER2FORM', $user2form);
$tpl->set('s', 'USER3FORM', $user3form);
$tpl->set('s', 'IMAGERADIO', $imageradio);
$tpl->set('s', 'IMAGESELECT', $imageselect);
$tpl->set('s', 'SMILIESFORM', $smiliesform);
$tpl->set('s', 'ENTRYFORM', $entryform);
$tpl->set('s', 'SUBMITFORM', $submitform);
$tpl->set('s', 'BBFETT', bbcode_link("bold"));
$tpl->set('s', 'BBKURSIV', bbcode_link("italic"));
$tpl->set('s', 'BBUNTERSTRICH', bbcode_link("underline"));
$tpl->set('s', 'BBURL', bbcode_link("url"));
$tpl->set('s', 'BBEMAIL', bbcode_link("email"));
?>
<script type="text/javascript">
function submitForm (s) {
s.disabled = true;
s.value = "Vielen Dank!";
return true;
}
</script>
<?php
// berechnen, welche Seite geladen werden muss, nachdem formular ausgefüllt abgesendet wurde
// dies, damit bei submit auch gleich an das Ende aller Kommentare gesprungen wird.
if ($anzahl_eintraege > $eintraege_pro_seite) {$start = floor($anzahl_eintraege/$eintraege_pro_seite) * $eintraege_pro_seite;}
else {$start = 0;}
echo "<form action=\"front_content.php?idart=$idart&start=$start\" method=\"post\" id=\"vpgb_eintrag\" onSubmit=\"return submitForm(this.vpgb_submit)\">";
echo "<input value=\"vpcomment\" id=\"vpcomment\" type=\"hidden\" name=\"vpcomment\"".$einzeltag.">";
$tpl->generate('templates/' . $tpl_datei_eingabe);
echo "</form>";
}
// Ende Code für Eingabeformular
}
// und jetzt auch das if-eingeloggt wieder zu
?>