<?php
/*
    CREATIVE COMMONS - Attribution-No Derivative Works 3.0 Germany:
    - You may not alter, transform, or build upon this work.
    - Dieses Werk darf nicht bearbeitet oder in anderer Weise verändert werden.
*/
  function isGuestbookEntryPresent ( $Code )
  {
    global $db;
    global $prefix;

    $result = @mysqli_query($db, "SELECT CODE FROM ".$prefix."guestbook WHERE CODE = ".$Code);
    $result = mysqli_num_rows($result);
    if ($result == true) return true;
    else return false;
  }

  function writeSpamLog ( $Name, $Ort, $Email, $EchteURL, $URL, $ICQ, $Nachricht, $IP, $Identifier, $Form )
  {
    global $SetupWriteGuestbookSpamLog;
    if ( $SetupWriteGuestbookSpamLog )
    {
      global $GigKalenderPath;
      global $GigKalenderVersion;
      $path = str_replace("\\","/",dirname(__FILE__));
      $datei = $path."/spam.log";
      $fp=fopen($datei,"a");
$String = '### '.convertTimestampToISO8601(date('U')).' ###
[ GigKalender-Version ]
'.$GigKalenderVersion.'
[ Form ]
'.$Form.'
[ Reason ]
'.$Identifier.'
[ Name ]
'.$Name.'
[ Location ]
'.$Ort.'
[ eMail ]
'.$Email.'
[ URL ]
'.$EchteURL.'
[ HiddenURL ]
'.$URL.'
[ ICQ ]
'.$ICQ.'
[ Message ]
'.$Nachricht.'
[ IP ]
'.$IP.'


';
      fwrite($fp,$String);
    }
  }

  function isFormReload ( $gb_name, $gb_text, $gb_ip )
  {
    global $db;
    global $prefix;

    $sql = "SELECT count(*) as zahl  FROM ".$prefix."guestbook WHERE Name='".$gb_name."' AND Nachricht='".$gb_text."' AND IP='".$gb_ip."'";
    $result = mysqli_query($db, $sql);
    $row = mysqli_fetch_array($result);
    if ($row['zahl']) return true;
    else return false;
  }
  function DatumUndUhrzeitAusTimestamp ($Timestamp)
  { 
    $Tag = date('d', $Timestamp);
    $Monat = date('m', $Timestamp);
    $Jahr = date('Y', $Timestamp);
    $Stunde = date('H', $Timestamp);
    $Minute = date('i', $Timestamp);
    return $Tag.".".$Monat.".".$Jahr." - ".$Stunde.":".$Minute." Uhr";
  }

  function sendMail ($Datum, $Name, $Ort, $Email, $URL, $ICQ, $Nachricht, $IP, $Code)
  {
    global $L_114;
    global $L_115;
    global $L_116;
    global $L_118;
    global $L_134;
    global $L_119;
    global $L_135;
    global $L_136;
    global $L_137;
    global $L_GuestbookLocation;
    global $L_ERROR_eMail_could_not_be_sent;
    global $GigKalenderPath;
    
    // Alle Quotes entfernen
      $Name = stripslashes($Name);
      $Ort = stripslashes($Ort);
      $Nachricht = stripslashes($Nachricht);
    
    $Path = $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    $Path = str_replace('\\','/', $Path);
    $Path = str_replace('guestbook_add.php', '', $Path);

    $Datum = DatumUndUhrzeitAusTimestamp ($Datum);

    $MailMessage = "Datum: ".$Datum;
    $MailMessage = $MailMessage."\n".$L_114.": ".$Name;
    $MailMessage = $MailMessage."\n".$L_GuestbookLocation.": ".$Ort;
    $MailMessage = $MailMessage."\n".$L_115.": ".$Email;
    $MailMessage = $MailMessage."\n".$L_116.": ".$URL;
    $MailMessage = $MailMessage."\n".$L_118.": ".$ICQ;
    $MailMessage = $MailMessage."\n".$L_134.": ".$IP;
    $MailMessage = $MailMessage."\n---";
    $MailMessage = $MailMessage."\n\n".$L_119.": ".$Nachricht;
    $MailMessage = $MailMessage."\n\n---";
    $MailMessage = $MailMessage."\n".$L_136.":\n".$GigKalenderPath."guestbook/guestbook_edit.php?code=".$Code;
    $MailMessage = $MailMessage."\n\n".$L_137.":\n".$GigKalenderPath."guestbook/guestbook_delete.php?code=".$Code;

    // Mail mit Header definieren
      $optheader[] = "From: ".$Name."< ".$Email." >";
      $optheader[] = "Content-Type: text/plain; Charset=utf-8";
      $Header = implode("\n", $optheader);

    // Mail versenden
      if ( !mail(getSetup('SetupGuestbookMail'), $L_135, $MailMessage, $Header) )
      { echo '<span class="ErrorMessage">'.$L_ERROR_eMail_could_not_be_sent.'</span><br /><br />';}
  }

  function testDoppelte ($Timestamp)
  {
    global $db;
    global $prefix;    
    
    $sql = 'SELECT * FROM ' .$prefix. "guestbook";
    $result = mysqli_query($db, $sql);
    $doppelteVorhanden = false;
    while($row = mysqli_fetch_row($result))
    {
      if (strtolower($row[1]) == $Timestamp) { $doppelteVorhanden = true; }
    }
    if ($doppelteVorhanden) return true;
    else return false;
}

  function AltenEintragHinzufuegen ($Tag, $Monat, $Jahr, $Stunde, $Minute, $Sekunde, $Name, $Email, $URL, $ICQ, $Nachricht, $Kommentar, $IP, $Code, $Ort)
  {
    global $prefix;
    global $db;

    $Datum = mktime($Stunde, $Minute, $Sekunde, $Monat, $Tag , $Jahr);
    if ( $URL=='http://' ) { $URL=''; }
    // HTML & PHP-Tags entfernen
      $Name = strip_tags($Name);
      $Email = strip_tags($Email);
      $ICQ = strip_tags($ICQ);
      $Nachricht = strip_tags($Nachricht);
      $Kommentar = strip_tags($Kommentar);
    // Maskieren spezieller Zeichen für die Verwendung in einer SQL-Anweisung
      $Name = mysqli_real_escape_string($db, $Name);
      $Email = mysqli_real_escape_string($db, $Email);
      $URL = mysqli_real_escape_string($db, $URL);
      $ICQ = mysqli_real_escape_string($db, $ICQ);
      $Nachricht = mysqli_real_escape_string($db, $Nachricht);
      $Kommentar = mysqli_real_escape_string($db, $Kommentar);
      $Ort = mysqli_real_escape_string($db, $Ort);
    // Leere numerische Variablen als NULL definieren
      if ( $Datum=='' ) $Datum="NULL";
      if ( $ICQ=='' ) $ICQ="NULL";
      if ( $Code=='' ) $Code="NULL";

    if (!testDoppelte($Datum))
    {   
      $SQL_Befehl = "INSERT INTO ".$prefix."guestbook (Datum,Name,Email,URL,ICQ,Nachricht,Kommentar,IP,Code,Ort)
      VALUES ($Datum, '$Name', '$Email', '$URL', $ICQ, '$Nachricht', '$Kommentar', '$IP', $Code, '$Ort')";
      $resultat = mysqli_query($db, $SQL_Befehl);
      if ($resultat) { return true; }
      else {return false;}
    }
    else { echo 'Error: Eintrag schon vorhanden.<br />';}
  }

function messageIsSpam ( $Nachricht, $IP, $EchteURL, $VersteckteURL )
{
  // Test auf versteckte URL
  if ( $VersteckteURL!='' )
    return 'hidden-url';
  // Test auf verdächtige IPs
  $BlockedIPs = explode(", ", getSetup('SetupGuestbookSpamIPs'));
  for( $i=0; $i<count($BlockedIPs); $i++ )
  {
    if ($IP == trim ($BlockedIPs[$i]))
      return 'blocked-ip';
  }
  // Test auf gesperrte Wörter
  $Nachricht = str_replace("\r\n", " ", $Nachricht);
  $Nachricht = str_replace(".", " ", $Nachricht);
  $Nachricht = str_replace(",", " ", $Nachricht);
  $Nachricht = str_replace(":", " ", $Nachricht);
  $Nachricht = str_replace(";", " ", $Nachricht);
  $BlockedWords = explode(", ", getSetup('SetupGuestbookSpamWords'));
  for( $i=0; $i<count($BlockedWords); $i++ )
  {
    $Wort = trim ($BlockedWords[$i]);
    if ( stristr($Nachricht, $Wort.' ' ) AND stristr($Nachricht, ' '.$Wort ) )
      return 'blocked-word: '.$BlockedWords[$i];
  }
  // Test auf verdächtige Domain
  $BlockedDomains = explode(", ", getSetup('SetupGuestbookSpamDomains'));
  for( $i=0; $i<count($BlockedDomains); $i++ )
  {
    if (stristr($EchteURL, trim ($BlockedDomains[$i])))
      return 'blocked-domain';
  }
  // Test auf unzulässige Zeichen
  if ( preg_match( '|&#|', $Nachricht )   )
    return 'blocked-character';
}

function EintragHinzufuegen ($Name, $Email, $URL, $ICQ, $Nachricht, $IP, $Ort)
  {
    global $prefix;
    global $db;

    // Zufällige Zahl erzeugen
      mt_srand((double)microtime() * 1000000);
      $Code = mt_rand();

    $Name = strip_tags($Name);
    $Email = strip_tags($Email);
    $ICQ = strip_tags($ICQ);
    $Nachricht = strip_tags($Nachricht);
    
    if ( $URL=='http://' ) { $URL=''; }

    $Datum = date("U");
    // Maskieren spezieller Zeichen für die Verwendung in einer SQL-Anweisung
      $Name = mysqli_real_escape_string($db, $Name);
      $Email = mysqli_real_escape_string($db, $Email);
      $URL = mysqli_real_escape_string($db, $URL);
      $ICQ = mysqli_real_escape_string($db, $ICQ);
      $Nachricht = mysqli_real_escape_string($db, $Nachricht);
      $Ort = mysqli_real_escape_string($db, $Ort);

    // Leere numerische Variablen als NULL definieren
      if ( $Datum=='' ) $Datum="NULL";
      if ( $ICQ=='' ) $ICQ="NULL";
      if ( $Code=='' ) $Code="NULL";

    $sql = "INSERT INTO ".$prefix."guestbook (Datum,Name,Email,URL,ICQ,Nachricht,IP,Code,Ort)
      VALUES ($Datum, '$Name', '$Email', '$URL', $ICQ, '$Nachricht', '$IP', $Code, '$Ort')";
    $resultat = mysqli_query($db, $sql);

    sendMail ($Datum, $Name, $Ort, $Email, $URL, $ICQ, $Nachricht, $IP, $Code);

    if ($resultat) { return true; }
    else {return false;}
  }

  function GuestbookBackendNavigation ()
  {
    global $AnzahlSeiten;
    if ( $AnzahlSeiten>'1' )
    {
      global $aktuelleSeite;
      global $L_111;

      $temp = '<div class="GigNavigation">'.$L_111.': ';
      $i = '1';
      while ($i <= $AnzahlSeiten)
      {
        if ($aktuelleSeite == $i) { $temp = $temp.'<b>'.$i.'</b> '; }
        else { $temp = $temp.'<a href="index.php?submenue=guestbook&amp;inhalt=backend_showAllGuestbookEntries&amp;page='.$i.'">'.$i.'</a> '; }
        $i++;
      }
     $temp = $temp.'</div>';
    }
    else $temp = '';
    return $temp;
  }

  function GuestbookNavigation ( $Locator )
  {
    global $AnzahlSeiten;
    global $aktuelleSeite;
    global $L_111;
    global $L_112;
    global $SetupGuestbookURL;
    global $SetupGuestbookFormURL;

    // Eintragen-Link
      // URL bestimmen
        if ( $SetupGuestbookFormURL=='' )
        {
          if (isset($_SERVER['REDIRECT_URL'])) $REDIRECT_URL = $_SERVER['REDIRECT_URL'];
            else $REDIRECT_URL = '';
          $URL = $REDIRECT_URL.'?page=add';
        }
        else $URL = $SetupGuestbookFormURL;
        $URL = str_replace("&","&amp;",$URL);

    $temp = '<div class="GuestbookNavigation">
            <div class="GuestbookLinkForAddingEntries">[
              <form style="display:inline" id="form'.$Locator.'" method="post" action="'.$URL.'" accept-charset="UTF-8">
                <p style="display:inline">
                <input type="hidden" name="page" value="add" />
                  <a href="'.$URL.'" onclick="javascript:document.forms[\'form'.$Locator.'\'].submit()"><img src="'.PATH.'frontend/images/guestbook_add.png" alt="" /></a>
                  <a href="'.$URL.'" onclick="javascript:document.forms[\'form'.$Locator.'\'].submit()">'.$L_112.'</a>
                </p>
              </form> ]
            </div>';
    if ($AnzahlSeiten>1)
    {
      $temp = $temp.$L_111.': ';
      // Seitenzahlen
      $Seitenzahl = $AnzahlSeiten;
      // URL bestimmen
        if (isset($_SERVER['REDIRECT_URL'])) $REDIRECT_URL = $_SERVER['REDIRECT_URL'];
          else $REDIRECT_URL = '';
        if ( $SetupGuestbookURL=='' ) $URL = $REDIRECT_URL;
          else $URL = $SetupGuestbookURL;
        $URL = str_replace("&","&amp;",$URL);
        if ( preg_match ( '|\?|', $URL ) ) $URL = $URL.'&amp;';
          else $URL = $URL.'?';
      while ($Seitenzahl >= 1)
      {
        $FormActionURL = $URL.'page='.$Seitenzahl;
        if ($aktuelleSeite == $Seitenzahl) { $temp = $temp.'<b>'.$Seitenzahl.'</b> '; }
        else { $temp = $temp.'<form style="display:inline" id="Page'.$Seitenzahl.$Locator.'" method="post" action="'.$FormActionURL.'" accept-charset="UTF-8">
                                <p style="display:inline">
                                  <input type="hidden" name="page" value="'.$Seitenzahl.'" />
                                  <a href="'.$FormActionURL.'" onclick="javascript:document.forms[\'Page'.$Seitenzahl.$Locator.'\'].submit()">'.$Seitenzahl.'</a>
                                </p>
                              </form>&nbsp;'; }
        $Seitenzahl--;
      }
    }
    else $temp = $temp.'&nbsp;';
    $temp = $temp.'</div>';
    $temp = preg_replace('/(\r\n|\n|\r)/', '', $temp);
    $temp = str_replace("  ", "", $temp);
    return $temp;
  }

  function AnzahlEintraege ()
  {
    global $prefix;
    global $db;

    $sql = "SELECT count(*) as zahl  FROM ".$prefix."guestbook";
    $result = mysqli_query($db, $sql);
    $row = mysqli_fetch_array($result);
    return $row['zahl'];
  }
?>