<?php
/**
 * pragmaMx - Web Content Management System
 * Pinwand Module
 * Copyright by pragmaMx Developer Team - http://www.pragmamx.org
 *
 * pragmaMx 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 3 of the License, or
 * (at your option) any later version.
 *
 * $Revision: 1.6 $
 * $Author: tora60 $
 * $Date: 2009/12/19 07:56:33 $
 *
 * this file based on: Pinwand Modul V.2.0
 * by H. Grunert (http://www.marx-city.de)
 * which based on Pinwand 1.0 by ~ http://www.designer-ag.com
 * Copyright (c) 2004 by ~ designer-ag.com
 */

defined('mxMainFileLoaded') or die('access denied');

$week = (60 * 60 * 24 * 7);

$defaults = array(
    'name' => 'Name..',
    'text' => 'Text..',
    'email' => 'eMail..',
    );

switch ($action) {
    case 'addsave' :

        $captchamessage = '';
        if ($captcha_object = pinwand_usecaptcha()) {
            $captcha_object->set_active(true);
            if (isset($_POST['posted']) && $captcha_object->posted($_POST)) {
                $post = unserialize(base64_decode($_POST['posted']));
                unset($_POST['posted']);
                $_POST = array_merge($post, $_POST);
                if (!$captcha_object->check($_POST)) {
                    $captchamessage = _CAPTCHAWRONG;
                }
            }
        }

        $_POST['ipnumber'] = MX_REMOTE_ADDR;

        switch (true) {
            case isset($_POST['cancel']):
                mxRedirect('modules.php?name=' . $module_name);

            case !MX_IS_ADMIN && !($werdarfposten == 'alle') && !($werdarfposten == 'user' && MX_IS_USER):
            case !isset($_POST['submit']):
                mxRedirect('modules.php?name=' . $module_name, _PW_ERRNOTALLOWED, 5);
            case MX_IS_USER:
                $userdata = mxGetUserData();
                $_POST['name1'] = $userdata['uname'];
                $uid = $userdata['uid'];
                $errortext = _PW_ERRNODATA_1;
                break;
            default:
                $uid = 0;
                $errortext = _PW_ERRNODATA_2;
        }
        switch (true) {
            case empty($_POST['name1']):
            case $_POST['name1'] == $defaults['name']:
            case empty($_POST['text']):
            case $_POST['text'] == $defaults['text']:
                mxSessionSetVar('pinw_name', $_POST['name1']);
                mxSessionSetVar('pinw_text', $_POST['text']);
                mxRedirect('modules.php?name=' . $module_name . '', $errortext, 5);
                break;
        }
        switch (true) {
            case MX_IS_USER:
            case empty($_POST['email']):
            case !mxCheckEmail($_POST['email']);
            case $_POST['email'] == $defaults['email']:
                $_POST['email'] = '';
                break;
        }
        switch (true) {
            case empty($_POST['pinnr']):
            case intval($_POST['pinnr']) < 1:
            case intval($_POST['pinnr']) > 12:
                $_POST['pinnr'] = intval($standard_pin);
        }
        switch (true) {
            case empty($_POST['colnr']):
            case intval($_POST['colnr']) < 1:
            case intval($_POST['colnr']) > 12:
                $_POST['colnr'] = intval($standard_col);
        }

        switch (true) {
            case $checktime && !isset($_POST['vorlauf']):
                $vorlauf = time() + $week; // eine Woche
                break;
            case !$checktime:
            case empty($_POST['vorlauf']) && MX_IS_ADMIN:
                $vorlauf = 0;
                break;
            case $_POST['vorlauf'] == 4:
            case $_POST['vorlauf'] == 3:
            case $_POST['vorlauf'] == 2:
            case $_POST['vorlauf'] == 1:
                $vorlauf = time() + ($_POST['vorlauf'] * $week);
                break;
            default:
                $vorlauf = time() + $week; // eine Woche
        }

        if ($captcha_object && (!$captcha_object->posted($_POST) || $captchamessage)) {
            // Captcha-Formular zeigen
            $post = base64_encode(serialize($_POST));
            pmxHeader::add_style("modules/$module_name/style/style.css");
            pmxHeader::add_style("modules/$module_name/style/style_ie.css" , '', 'IE');
            include("header.php");
            OpenTable();

            ?>
            <form name="pwform" id="pwform" action="modules.php?name=<?php echo $module_name ?>&amp;action=addsave" method="post">
            <img src="modules/<?php echo $module_name ?>/images/pin<?php echo $_POST['pinnr'] ?>.gif" style="left:<?php echo ($position_x + 270) ?>px;top:<?php echo ($position_y + 135) ?>px;" class="pin" alt="" />
            <div class="titel" style="left:<?php echo ($position_x + 100) ?>px;top:<?php echo ($position_y + 30) ?>px;color:#<?php echo $titelfarbe ?>"><?php echo $titeltext ?></div>
            <div style="left:<?php echo ($position_x + 70) ?>px;top:<?php echo ($position_y + 150) ?>px;" class="pwform-sub">
                <?php if ($captchamessage): ?>
                <div class="warning"><?php echo $captchamessage ?></div>
                <?php endif; ?>
                <?php echo $captcha_object->complete(array('class' => 'box pcaptcha captcha-area', 'style' => 'left:' . ($position_x + 100) . 'px;top:' . ($position_y + 160) . 'px;')) ?>
                <div class="buttons">
                    <input type="submit" name="submit" value=" <?php echo _PWSUBMIT ?> " />
                    <input type="button" name="cancel" id="pwcancel" value=" <?php echo _PWCANCEL ?> " />
                    <input type="hidden" name="posted" value="<?php echo $post ?>" />
                </div>
            </div>
            </form><?php
            CloseTable();
            include("footer.php");
            return;
        }

        $sql = "INSERT INTO ${prefix}_pinwand
                    (pin, col, uid, name, email, text, datum, vorlauf, ipnumber)
                    VALUES (
                        " . intval($_POST['pinnr']) . ",
                        " . intval($_POST['colnr']) . ",
                        " . intval($uid) . ",
                        '" . mxAddSlashesForSQL($_POST['name1']) . "',
                        '" . mxAddSlashesForSQL($_POST['email']) . "',
                        '" . mxAddSlashesForSQL($_POST['text']) . "',
                        " . time() . ",
                        " . intval($vorlauf) . ",
                        '" . mxAddSlashesForSQL($_POST['ipnumber']) . "')";
        $result = sql_query($sql);
        if ($result && sql_affected_rows()) {
            $id = sql_insert_id();
            mxRedirect('modules.php?name=' . $module_name . '&id=' . $id . '#pw' . $id);
        } else {
            mxRedirect('modules.php?name=' . $module_name . '', _ERRNOSAVED, 5);
        }
        break;

    case 'del' :

        switch (true) {
            case empty($_GET['id']):
            case intval($_GET['id']) < 1:
                mxRedirect('modules.php?name=' . $module_name, _ID_ERROR, 5);

            case !MX_IS_USER && !MX_IS_ADMIN:
            case MX_IS_USER && !$postercandelete && !MX_IS_ADMIN:
                mxRedirect('modules.php?name=' . $module_name, _PW_ERRDEL, 5);

            case MX_IS_USER && !MX_IS_ADMIN:
                $userdata = mxGetUserData();
                $uid = $userdata['uid'];
        }

        $result = sql_query("SELECT id, uid FROM ${prefix}_pinwand WHERE id=" . intval($_GET['id']));
        $row = sql_fetch_assoc($result);

        /* wenn garnicht gefunden, auch ok... */
        if (empty($row['id'])) {
            mxRedirect('admin.php?op=mx_pinwand', _DELETEAREOK . ' ;-)');
        }

        if (!MX_IS_ADMIN && !(MX_IS_USER && $uid == $row['uid'])) {
            mxRedirect('modules.php?name=' . $module_name, _PW_ERRDEL, 5);
        }

        $result = sql_query("DELETE FROM ${prefix}_pinwand WHERE `id`=" . intval($_GET['id']));
        if ($result && sql_affected_rows()) {
            mxRedirect('modules.php?name=' . $module_name, _DELETEAREOK);
        } else {
            mxRedirect('modules.php?name=' . $module_name, _DELETENOTOK, 5);
        }
        break;

    case 'editsave' :

        $id = (empty($_POST['id'])) ? 0 : intval($_POST['id']);

        $qry = "SELECT id, uid FROM ${prefix}_pinwand WHERE id=" . intval($id);
        list ($id, $uid) = sql_fetch_row(sql_query($qry));

        switch (true) {
            case !$id:
                mxRedirect('modules.php?name=' . $module_name, _PW_ERRNOID);

            case isset($_POST['cancel']):
                mxRedirect('modules.php?name=' . $module_name . '&id=' . $id . '#pw' . $id);

            case !MX_IS_USER && !MX_IS_ADMIN:
            case MX_IS_USER && !$darfpostereditieren && !MX_IS_ADMIN:
                mxRedirect('modules.php?name=' . $module_name, _PW_ERREDIT);

            case MX_IS_USER && !MX_IS_ADMIN:
                $userdata = mxGetUserData();
                if ($uid != $userdata['uid']) {
                    mxRedirect('modules.php?name=' . $module_name, _PW_ERREDIT);
                }
        }

        switch (true) {
            case empty($_POST['text']):
            case $_POST['text'] == $defaults['text']:
                $errortext = (MX_IS_USER) ? _PW_ERRNODATA_1 : _PW_ERRNODATA_2;
                mxRedirect('modules.php?name=' . $module_name . '&action=edit&id=' . $id, $errortext, 5);
        }

        switch (true) {
            case empty($_POST['pinnr']):
            case intval($_POST['pinnr']) < 1:
            case intval($_POST['pinnr']) > 12:
                $_POST['pinnr'] = intval($standard_pin);
        }
        switch (true) {
            case empty($_POST['colnr']):
            case intval($_POST['colnr']) < 1:
            case intval($_POST['colnr']) > 12:
                $_POST['colnr'] = intval($standard_col);
        }

        $sql = "UPDATE ${prefix}_pinwand SET
                    pin=" . intval($_POST['pinnr']) . ",
                    col=" . intval($_POST['colnr']) . ",
                    text='" . mxAddSlashesForSQL($_POST['text']) . "'
                WHERE id=" . intval($id);

        $result = sql_query($sql);
        if ($result) {
            mxRedirect('modules.php?name=' . $module_name . '&id=' . $id . '#pw' . $id, _CHANGESAREOK, 2);
        } else {
            mxRedirect('modules.php?name=' . $module_name . '&action=edit&id=' . $id, _CHANGESNOTOK, 5);
        }

        break;

    case 'edit' :

        $id = (empty($_GET['id'])) ? 0 : intval($_GET['id']);

        $qry = "SELECT id, pin, col, uid, name, email, text FROM ${prefix}_pinwand WHERE id=" . intval($id);
        list ($id, $pinnr, $colnr, $uid, $name, $email, $text) = sql_fetch_row(sql_query($qry));

        switch (true) {
            case !$id:
                mxRedirect('modules.php?name=' . $module_name, _PW_ERRNOID);

            case !MX_IS_USER && !MX_IS_ADMIN:
            case MX_IS_USER && !$darfpostereditieren && !MX_IS_ADMIN:
                mxRedirect('modules.php?name=' . $module_name, _PW_ERREDIT);

            case MX_IS_USER && !MX_IS_ADMIN:
                $userdata = mxGetUserData();
                if ($uid != $userdata['uid']) {
                    mxRedirect('modules.php?name=' . $module_name, _PW_ERREDIT);
                }
        }

        $pins = '';
        for ($i = 1; $i <= 12; $i++) {
            $pins .= '<div onclick="setcol(' . $i . ')" title="' . _PW_ZETTELFARBE . '" style="left:' . ($position_x + 38 + $i * 32) . 'px;top:' . ($position_y + 88) . 'px;" class="pick-back area' . $i . '"></div>';
            $pins .= '<img onclick="setpin(' . $i . ')" onmouseover="document.pin' . $i . '.src=\'modules/' . $module_name . '/images/pin0.gif\'" onmouseout="document.pin' . $i . '.src=\'modules/' . $module_name . '/images/pin' . $i . '.gif\'" name="pin' . $i . '" id="pin' . $i . '" alt="pin' . $i . '" title="' . _PW_PINAUSWAHL . '" src="modules/' . $module_name . '/images/pin' . $i . '.gif" border="0" style="left:' . ($position_x + 33 + $i * 32) . 'px;top:' . ($position_y + 110) . 'px;" class="pick" />' . "\n";
        }

        pmxHeader::add_style("modules/$module_name/style/style.css");
        pmxHeader::add_style("modules/$module_name/style/style_ie.css" , '', 'IE');
        include("header.php");
        OpenTable();

        ?>
        <form name="pwform" id="pwform" action="modules.php?name=<?php echo $module_name ?>&amp;action=editsave" method="post" onsubmit="return validate();">
        <div class="titel" style="left:<?php echo ($position_x + 100) ?>px;top:<?php echo ($position_y + 30) ?>px;color:#<?php echo $titelfarbe ?>"><?php echo $titeltext ?></div>
        <?php echo $pins ?>
        <img id="col" src="modules/<?php echo $module_name ?>/images/pin0.gif" alt="<?php echo _PW_ZETTELFARBE ?>" title="<?php echo _PW_ZETTELFARBE ?>" style="left:<?php echo ($position_x + 135) ?>px;top:<?php echo ($position_y + 73) ?>px;">
        <div style="left:<?php echo ($position_x + 70) ?>px;top:<?php echo ($position_y + 150) ?>px;" class="pwform-sub">
        <textarea name="text" id="text"><?php echo $text ?></textarea>
        <div class="smiler">
        <?php echo pinwand_get_smilies() ?>
        </div>
        <div class="buttons">
        <input type="submit" value="<?php echo _PWSAVE ?> " />
        <input type="submit" name="cancel" id="pwcancel" value=" <?php echo _PWCANCEL ?> " />
        <input type="hidden" name="pinnr" value="<?php echo $pinnr ?>" />
        <input type="hidden" name="colnr" value="<?php echo $colnr ?>" />
        <input type="hidden" name="id" value="<?php echo $id ?>" />
        </div>
        </div>
        </form>
        <?php
        pinwand_javascript($pinnr, $colnr, $position_y, $position_x);
        CloseTable();
        include("footer.php");
        break;

    case 'add' :

        switch (true) {
            case !MX_IS_ADMIN && !($werdarfposten == 'alle') && !($werdarfposten == 'user' && MX_IS_USER):
                mxRedirect('modules.php?name=' . $module_name, _PW_ERRNOTALLOWED, 5);
                break;

            case MX_IS_USER:
                $fieldtype = ' type="hidden" readonly="readonly"';
                break;

            default:
                $fieldtype = ' type="text"';
        }

        $name = (mxSessionGetVar('pinw_name')) ? mxSessionGetVar('pinw_name') : ''; #$defaults['name'];
        $email = (mxSessionGetVar('pinw_email')) ? mxSessionGetVar('pinw_email') : ''; #$defaults['email'];
        $text = (mxSessionGetVar('pinw_text')) ? mxSessionGetVar('pinw_text') : ''; #$defaults['text'];
        mxSessionDelVar('pinw_name');
        mxSessionDelVar('pinw_email');
        mxSessionDelVar('pinw_text');

        $pinnr = intval($standard_pin);
        $colnr = intval($standard_col);
        $pins = '';
        for ($i = 1; $i <= 12; $i++) {
            $pins .= '<div onclick="setcol(' . $i . ')" title="' . _PW_ZETTELFARBE . '" style="left:' . ($position_x + 38 + $i * 32) . 'px;top:' . ($position_y + 88) . 'px;" class="pick-back area' . $i . '"></div>';
            $pins .= '<img onclick="setpin(' . $i . ')" onmouseover="document.pin' . $i . '.src=\'modules/' . $module_name . '/images/pin0.gif\'" onmouseout="document.pin' . $i . '.src=\'modules/' . $module_name . '/images/pin' . $i . '.gif\'" name="pin' . $i . '" id="pin' . $i . '" alt="pin' . $i . '" title="' . _PW_PINAUSWAHL . '" src="modules/' . $module_name . '/images/pin' . $i . '.gif" border="0" style="left:' . ($position_x + 33 + $i * 32) . 'px;top:' . ($position_y + 110) . 'px;" class="pick" />' . "\n";
        }

        pmxHeader::add_style("modules/$module_name/style/style.css");
        pmxHeader::add_style("modules/$module_name/style/style_ie.css" , '', 'IE');
        include("header.php");
        OpenTable();

        ?>
        <form name="pwform" id="pwform" action="modules.php?name=<?php echo $module_name ?>&amp;action=addsave" method="post" onsubmit="return validate();">
        <div class="titel" style="left:<?php echo ($position_x + 100) ?>px;top:<?php echo ($position_y + 30) ?>px;color:#<?php echo $titelfarbe ?>"><?php echo $titeltext ?></div>
        <?php echo $pins ?>
        <img id="col" src="modules/<?php echo $module_name ?>/images/pin0.gif" alt="<?php echo _PW_ZETTELFARBE ?>" title="<?php echo _PW_ZETTELFARBE ?>" style="left:<?php echo ($position_x + 135) ?>px;top:<?php echo ($position_y + 73) ?>px;">
        <div style="left:<?php echo ($position_x + 70) ?>px;top:<?php echo ($position_y + 150) ?>px;" class="pwform-sub">
        <textarea title="<?php echo $defaults['text'] ?>" name="text" id="text"><?php echo $text ?></textarea>
        <div class="smiler">
        <?php echo pinwand_get_smilies() ?>
        </div>
        <input title="<?php echo $defaults['name'] ?>" name="name1" <?php echo $fieldtype ?> maxlength="40" value="<?php echo $name ?>" />
        <input title="<?php echo $defaults['email'] ?>" name="email" <?php echo $fieldtype ?> maxlength="150" value="<?php echo $email ?>" />
        <?php if ($checktime): ?>
            <select name="vorlauf">
            <option value="1"><?php echo _PWONEWEEK ?></option>
            <option value="2"><?php echo _PWTWOWEEK ?></option>
            <option value="3"><?php echo _PWTHREEWEEK ?></option>
            <option value="4" selected="selected"><?php echo _PWFOURWEEK ?></option>
            <?php if (MX_IS_ADMIN): ?>
            <option value="0"><?php echo _PWWITHOUT ?></option>
            <?php endif ?>
            </select>
        <?php endif ?>
        <div class="buttons">
        <input type="submit" name="submit" value=" <?php echo _PWSUBMIT ?> ">
        <input type="submit" name="cancel" id="pwcancel" value=" <?php echo _PWCANCEL ?> ">
        <input type="hidden" name="pinnr" value="<?php echo $pinnr ?>">
        <input type="hidden" name="colnr" value="<?php echo $colnr ?>">
        </div>
        </div>
        </form>
        <?php
                CloseTable();
            pinwand_javascript($pinnr, $colnr, $position_y, $position_x);
            include("footer.php");
            break;
        }

        function pinwand_javascript($pinnr, $colnr, $position_y, $position_x)
        {
            global $module_name, $defaults, $standard_pin, $standard_col;
            if (method_exists('pmxHeader', 'add_jquery')) {
                pmxHeader::add_jquery('jquery.formnotifier.js');
            } else {
                pmxHeader::add_script(PMX_JAVASCRIPT_PATH . 'jquery/jquery.js');
                pmxHeader::add_script("modules/$module_name/js/jquery.formnotifier-min.js");
            }

            pmxHeader::add_script("modules/$module_name/js/insert_text.js");

            ?>
<script type="text/javascript">
//<![CDATA[
var pin   = <?php echo intval(($pinnr > 0) ? $pinnr : $standard_pin) ?>;
var col   = <?php echo intval(($colnr > 0) ? $colnr : $standard_col) ?>;
var skipvalid = false;

$(document).ready(function() {
 setpin(pin);
 setcol(col);
 $("#pwform input, #pwform textarea").formNotifier();
});

$("#pwform #pwcancel").click(function() {
 skipvalid = true;
});

function setpin(a) {
 $("#pwform #pin" + pin).css("top", "<?php echo ($position_y + 110) ?>px");
 $("#pwform #pin" + a).css("top", "<?php echo ($position_y + 130) ?>px");
 $("#pwform input[name='pinnr']").val(a);
 pin = a;
}

function setcol(a) {
<?php for ($i = 1; $i <= 12; $i++) : ?>
 $("#pwform #text").removeClass('area<?php echo $i ?>');
<?php endfor ?>
 $("#pwform #text").addClass('area' + a);
 $("#pwform #col").css("left", <?php echo $position_x ?> + 28 + (a * 32) + "px");
 $("#pwform input[name='colnr']").val(a);
 col = a;
}

function validate()
{
 if (skipvalid) {
  return true;
 }

 if ($("#pwform #text").val() == "" || $("#pwform #text").val() == "<?php echo $defaults['text'] ?>") {
  alert("<?php echo _PW_ERRNODATA_1 ?>");
  $("#pwform #text").focus();
  return false;
 }

 <?php if (!MX_IS_USER): ?>
 if ($("#pwform input[name='name1']").val() == "" || $("#pwform input[name='name1']").val() == "<?php echo $defaults['name'] ?>") {
  alert("<?php echo _PW_ERRNODATA_2 ?>");
  $("#pwform input[name='name1']").focus();
  return false;
 }
 <?php endif; ?>

 return true;
}

//]]>
</script>
<?php
        }

        ?>