/**
 * Guestbook Addon 
 * @author staab[at]public-4u[dot]de Markus Staab
 * @author <a href="http://www.public-4u.de">www.public-4u.de</a>
 * @package redaxo3
 * @version $Id: module.form.inc.php,v 1.1 2007/06/11 11:54:26 kills Exp $
 */
function gbook_form_output($article_id)
{
    global $REX;
    if (($errorfields = validFields()) === true) {
        $author = $_POST['name'];
        $message = $_POST['text'];
        $url = $_POST['url'];
        $email = $_POST['email'];
        $qry = 'INSERT INTO ' . TBL_GBOOK . ' SET  author = "' . $author . '", message = "' . $message . '", url ="' . $url . '", email="' . $email . '", created = UNIX_TIMESTAMP()';
        $sql = new sql();
        $sql->query($qry);
        // Formular wegen CSS
        ?>

<form name="gbook" class="gbook" action="index.php" method="post">
 <div class="error">Danke für Ihren Eintrag!</div>
</form>

<?php 
    } else {
        $error = '';
        $name = '';
        $email = '';
        $url = '';
        $text = '';
        if (!empty($_POST['gbook_save'])) {
            // var_dump($_POST);
            // Felder mit Werten füllen
            $name = $_POST['name'];
            $email = $_POST['email'];
            $url = $_POST['url'];
            $text = $_POST['text'];
            $error .= '<div class="error">';
            foreach ($errorfields as $fieldname) {
                $error .= 'Pflichtfeld "' . ucwords($fieldname) . '" bitte korrekt ausf&uuml;llen!<br/>';
            }
            $error .= '</div>';
        }
        ?>

<form class="gbook" action="index.php" method="post">
 <div><input type="hidden" name="article_id" value="<?php 
        echo $article_id;
        ?>
" /></div>
 <?php 
        echo $error;
        ?>
 <div>
 <div class="label"><label for="gbook_name">Name*</label></div>
 <input type="text" id="gbook_name" name="name" value="<?php 
        echo $name;
        ?>
" maxlength="255" />
 </div>
 <div>
 <div class="label"><label for="gbook_email">Email*</label></div>
 <input type="text" id="gbook_email" name="email" value="<?php 
        echo $email;
        ?>
" maxlength="255" />
 </div>
 <div>
 <div class="label"><label for="gbook_url">Homepage</label></div>
 <input type="text" id="gbook_url" name="url" value="<?php 
        echo $url;
        ?>
" maxlength="255" />
 </div>
 <div>
 <div class="label"><label for="gbook_text">Text*</label></div>
 <textarea id="gbook_text" name="text" cols="0" rows="0"><?php 
        echo $text;
        ?>
</textarea>
 </div>
 <div class="buttons">
 <input class="button" type="submit" name="gbook_save"value="eintragen" />
 <input class="button" type="reset" value="zur&uuml;cksetzen" />
 </div>
 <div class="info">
 * Pflichtfelder
 </div>
</form>

<?php 
    }
}
<?php 
include_once 'model/session_manager.php';
include_once 'model/signup_logic.php';
$validFields = validFields();
function validFields()
{
    global $username_err, $password_err;
    global $username, $password;
    $valid = true;
    if (!array_key_exists('username', $_POST) | $_POST['username'] === "") {
        $username_err = "*Please enter username";
        $valid = false;
    }
    if (username_is_free($username)) {
        $username_err = $username_err . " *Username not in the system";
        $valid = false;
    }
    if (!array_key_exists('password', $_POST) | $_POST['password'] === "") {
        $password_err = "*Please enter password";
        $valid = false;
    }
    return $valid;
}
if ($validFields) {
    $login_success = session_login($username, $password);
    if (!$login_success) {
        $password_err = " *Incorrect password";
    }
}
/**
 * gbook_form_output
 *
 * @param Admin-EMail
 * @param Danke-Text
 * @param DebugLevel  Verschiedene Stufen zur Debugausgabe (vorerst nur per EMail)
 *
 */
function gbook_form_output($notificationEmail, $danke_text, $debuglevel, $formular_an_aus)
{
    global $REX;
    // vordefinieren einiger Variablen
    $error = '';
    $name = '';
    $email = '';
    $url = 'http://';
    $city = '';
    $text = '';
    if (!isset($danke_text)) {
        $danke_text = '';
    }
    /**
     * Um Spameinträge zu erschweren wurden die Feldnamen 'email' und 'url'
     * im Formular untereinander getauscht. Diese müssen nun zurückgetauscht werden.
     * Der normale Benutzer sollte davon nichts bemerken.
     */
    if (isset($_POST['email']) and $_POST['email'] != '') {
        $url_temp = $_POST['email'];
    } else {
        $url_temp = '';
    }
    if (isset($_POST['url']) and $_POST['url'] != '') {
        $email_temp = $_POST['url'];
    } else {
        $email_temp = '';
    }
    // gib den POST-Variablen die richtigen Werte
    $_POST['url'] = $url_temp;
    $_POST['email'] = $email_temp;
    // Wird true, wenn eine Eintrag erfolgreich geschrieben wurde
    $Eintrag_geschrieben = false;
    if (!isset($_POST['name'])) {
        $_POST['name'] = '';
    }
    if (!isset($_POST['text'])) {
        $_POST['text'] = '';
    }
    if (!isset($_POST['url'])) {
        $_POST['url'] = '';
    }
    if (!isset($_POST['email'])) {
        $_POST['email'] = '';
    }
    if (!isset($_POST['city'])) {
        $_POST['city'] = '';
    }
    // gbook_formularPostCheck($postvars, $domainname = false)
    if (($errorfields = validFields()) === true and gbook_formularPostCheck(array($_POST['name'], $_POST['text'], $_POST['url'], $_POST['email'], $_POST['city']))) {
        $author_value = checkPostVarForMySQL($_POST['name']);
        $message_value = checkPostVarForMySQL($_POST['text']);
        // wurde keine URL angegeben, entferne die "HTTP://"-Vorgabe
        if ($_POST['url'] == 'http://') {
            $_POST['url'] = '';
        }
        $url_value = checkPostVarForMySQL($_POST['url'], 'NULL');
        $email_value = checkPostVarForMySQL($_POST['email'], 'NULL');
        $city_value = checkPostVarForMySQL($_POST['city'], 'NULL');
        // Thema Sicherheit:
        // $status ist endweder 1, 0 oder false
        // die Funktion gbook_readStatusFromFile() läßt keine andere Rückgabe zu
        $status = gbook_readStatusFromFile();
        if ($status === false) {
            echo 'Fehler bei Statusermittlung des Eintrages aufgetreten. Setze Defaultwert 0. ';
            $status_db = 'status = "0",';
        } else {
            $status_db = 'status = "' . $status . '",';
        }
        //$qry = 'INSERT INTO '.TBL_GBOOK.' SET  author = "'.$author.'", message = "'.$message.'", url ="'.$url.'", email="'.$email.'", city="'.$city.'", created = UNIX_TIMESTAMP()';
        $qry = 'INSERT INTO ' . TBL_GBOOK . ' SET ' . $status_db . ' author = ' . $author_value . ', message = ' . $message_value . ',
            url = ' . $url_value . ', email = ' . $email_value . ', city = ' . $city_value . ',
            created = UNIX_TIMESTAMP()';
        $sql = new rex_sql();
        //$sql->debugsql = true;
        $sql->setQuery($qry);
        $Eintrag_geschrieben = true;
        // EMail an Admin
        if ($notificationEmail != '') {
            // DEBUG-Informationen zusammenstellen
            $debug_inhalt = '';
            if ($debuglevel == 1) {
                $debug_inhalt = "\r\n\r\n ==== DEBUG-INFORMATIONEN ==== \r\n";
                if (isset($_POST) and count($_POST) != 0) {
                    $debug_inhalt .= "\n === POST ===\n";
                    foreach ($_POST as $key => $wert) {
                        $debug_inhalt .= $key . ': ' . $wert . "\n";
                    }
                }
                if (isset($_GET) and count($_GET) != 0) {
                    $debug_inhalt .= "\n === GET ===\n";
                    foreach ($_GET as $key => $wert) {
                        $debug_inhalt .= $key . ': ' . $wert . "\n";
                    }
                }
                if (isset($_SERVER) and count($_SERVER) != 0) {
                    $debug_inhalt .= "\n === SERVER ===\n";
                    foreach ($_SERVER as $key => $wert) {
                        $debug_inhalt .= $key . ': ' . $wert . "\n";
                    }
                }
            }
            // if ($debuglevel == 1)
            $mail_host = !strstr($REX['SERVER'], 'http://') && !strstr($REX['SERVER'], 'https://') ? 'http://' . $REX['SERVER'] : $REX['SERVER'];
            if ($mail_host[strlen($mail_host) - 1] != '/') {
                $mail_host .= '/';
            }
            $mail_server = $mail_host . '/redaxo';
            /*      $mail_author = htmlspecialchars(rex_post('name', 'string'));
                  $mail_message = htmlspecialchars(rex_post('text', 'string'));
                  $mail_url = htmlspecialchars(rex_post('url', 'string'));
                  $mail_email = htmlspecialchars(rex_post('email', 'string'));
                  $mail_city = htmlspecialchars(rex_post('city', 'string'));
            */
            $mail_author = strip_tags(rex_post('name', 'string'));
            $mail_message = strip_tags(rex_post('text', 'string'));
            $mail_url = strip_tags(rex_post('url', 'string'));
            $mail_email = strip_tags(rex_post('email', 'string'));
            $mail_city = strip_tags(rex_post('city', 'string'));
            $mail_betreff = 'Neuer Gästebucheintrag für ' . $mail_host;
            $mail_nachricht = 'Im Gästebuch für die Webseite "' . $mail_host . '" wurde ein neuer Eintrag erstellt.' . "\r\n\r\n";
            $mail_nachricht .= 'Name: ' . $mail_author . "\r\n";
            $mail_nachricht .= 'Homepage: ' . $mail_url . "\r\n";
            $mail_nachricht .= 'eMail: ' . $mail_email . "\r\n";
            $mail_nachricht .= 'Wohnort: ' . $mail_city . "\r\n\r\n";
            $mail_nachricht .= 'Nachricht: ' . $mail_message . "\r\n\r\n\r\n";
            //$nachricht .= 'Hinweis: Dieser Eintrag wurde bei der Einstellung "Ver�ffentlichung nach Freigabe" deaktiviert gespeichert und erscheint erst dann in Ihren G�stebuch, wenn Sie den Eintrag aktiviert haben. Zum Log-In Bereich geht es unter '.$server."\r\n";
            // DebugInfo anhängen, falls gewünscht
            $mail_nachricht .= $debug_inhalt;
            $header = 'MIME-Version: 1.0' . "\r\n";
            //$header .= 'Content-type: text/plain; charset=iso-8859-1'."\r\n";
            $header .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
            $header .= 'Content-Transfer-Encoding: 8bit' . "\r\n";
            $header .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
            $header .= 'From: ' . $notificationEmail . "\r\n";
            //      $header .= 'Bcc: foo@david.koala'."\r\n";
            if (class_exists('rex_mailer')) {
                $mail = new rex_mailer();
                $mail->AddAddress($notificationEmail);
                $mail->Sender = $notificationEmail;
                $mail->From = $notificationEmail;
                //$mail->FromName = "REX_VALUE[8] |".$REX['SERVERNAME'];
                $mail->Subject = $mail_betreff;
                $mail->Body = $mail_nachricht;
                $mail->Send();
                // Versenden
            } else {
                // Fallback
                mail($notificationEmail, $mail_betreff, $mail_nachricht, $header);
            }
        }
    } else {
        // if (($errorfields = validFields()) === true)
        // der Danke-Text erscheint nur nach dem erfolgreichen absenden des Formulares
        $danke_text = '';
        // Wurde eine falsche Eingabe festgestellt, fülle die Eingabefelder wieder
        // mit den ursprünglichen Werten und gibt eine Fehlernachricht aus.
        if (!empty($_POST['gbook_save'])) {
            // var_dump($_POST);
            // Felder mit Werten füllen
            $name = $_POST['name'];
            $email = $_POST['email'];
            $url = $_POST['url'];
            $city = $_POST['city'];
            $text = $_POST['text'];
            $error = '<ul class="error">';
            foreach ($errorfields as $fieldname) {
                $error .= '<li>Pflichtfeld "' . ucwords($fieldname) . '" bitte korrekt ausf&uuml;llen!</li>';
            }
            $error .= '</ul>';
        }
        // if (!empty ($_POST['gbook_save']))
    }
    // else { // if (($errorfields = validFields()) === true)
    // AUSGABE der Seite
    // wenn Template-Klasse noch nicht eingebunden, dann hole sie jetzt rein
    if (!class_exists('Template')) {
        include_once $REX['INCLUDE_PATH'] . '/addons/guestbook/classes/template.inc.php';
    }
    //$_ROOT['template'] = $REX['INCLUDE_PATH'].'/addons/guestbook/templates/';
    /* create Template instance called $t */
    $t = new Template(GBOOK_TEMPLATEPATH, "remove");
    //$t->debug = 7;
    $danketext_templ = 'gb_frontend_danketext.html';
    $formular_templ = 'gb_frontend_form.html';
    $frontend_templ = 'gb_frontend.html';
    /* lese Template-Datei */
    $t->set_file(array('danketext' => $danketext_templ, 'formular' => $formular_templ, 'start' => $frontend_templ));
    // Danketext
    $t->set_var(array("DANKE_TEXT_VALUE" => $danke_text));
    // Formular
    //$adresse = rex_geturl($GLOBALS['article_id']);
    $adresse = rex_geturl(&$REX['ARTICLE_ID']);
    $t->set_var(array("FEHLERMELDUNG_VALUE" => $error, "ADRESSE_VALUE" => $adresse, "NAME_VALUE" => $name, "EMAIL_VALUE" => $email, "URL_VALUE" => $url, "WOHNORT_VALUE" => $city, "TEXT_VALUE" => $text));
    // Teilseite zusammensetzen
    if (trim($danke_text) != '') {
        $danke_text_value = $t->parse("output", "danketext");
    } else {
        $danke_text_value = '';
    }
    // soll nur der Danke-Text ausgegeben werden, erstelle keine Formularseite
    if ($formular_an_aus == 0 and $Eintrag_geschrieben) {
        $formular_value = '';
    } else {
        // Teilseite zusammensetzen
        $formular_value = $t->parse("output", 'formular');
    }
    // Seite zusammensetzen
    $t->set_var(array("DANKE_TEXT" => $danke_text_value, 'FORMULAR' => $formular_value));
    /* create Template instance called $t */
    //    $t = new Template(GBOOK_TEMPLATEPATH, "remove");
    //$t->debug = 7;
    //    $start_dir = 'gb_frontend_form.html';
    /* lese Template-Datei */
    /*    $t->set_file(array("start" => $start_dir));
    
        $t->set_var(array("DANKE_TEXT_VALUE" => $danke_text,
                          "FEHLERMELDUNG_VALUE" => $error,
                          "ARTICLE_ID_VALUE" => $GLOBALS['article_id'],
                          "CLANG_VALUE" => $GLOBALS['clang'],
                          "NAME_VALUE" => $name,
                          "EMAIL_VALUE" => $email,
                          "URL_VALUE" => $url,
                          "WOHNORT_VALUE" => $city,
                          "TEXT_VALUE" => $text
                      ));
    */
    // komplette Seite ausgeben
    $t->pparse("output", "start");
}