<?php
/**
 * This file is part of
 * pragmaMx - Web Content Management System.
 * 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.25 $
 * $Author: tora60 $
 * $Date: 2010/06/24 06:24:44 $
 */

defined('mxMainFileLoaded') or die('access denied');
defined('mxYALoaded') or die('access denied');

function pass_lost()
{
    if (MX_IS_USER) {
        main();
        return;
    }
    $userconfig = load_class('Userconfig');

    if ($userconfig->passlost_codeoption && isset($_GET['dat'])) {
        /* Übergabeparameter aufdröseln */
        list($uname, $code) = explode('|', base64_decode($_GET['dat']));
    } else {
        $uname = (isset($_GET['uname'])) ? $_GET['uname'] : '';
        $code = '';
    }

    if ($userconfig->passlost_codeoption) {
        $noproblem = _NOPROBLEM;
        $sendpassword = _SENDPASSWORD;
        $fieldname = 'code';
        $fieldcaption = _CONFIRMATIONCODE;
    } else {
        $noproblem = _NOPROBLEM_2;
        $sendpassword = _SENDPASSWORD_2;
        $fieldcaption = _EMAIL;
    }
    include('header.php');
    title(_USERREGLOGIN);
    userNavigation('passlost');

    ?>
  <div class="tabs-panel">
    <?php echo $noproblem ?>
    <br /><br />
    <form action="modules.php?name=Your_Account" method="post">
      <table>
        <tr>
          <td><?php echo $fieldcaption ?>:</td>
          <td><input type="text" name="email" size="30" value="<?php echo mxPrepareToDisplay($code) ?>" /></td>
        </tr>
      </table><br />
      <input type="hidden" name="name" value="Your_Account" />
      <input type="hidden" name="op" value="mailpasswd" />
      <input type="submit" value="<?php echo $sendpassword ?>" />
    </form>
  </div>
  <?php
    include('footer.php');
}

function mail_password()
{
    global $user_prefix;

    $userconfig = load_class('Userconfig');

    //~ if (empty($_POST['uname'])) {
        //~ $uname = '';
        //~ $areyou = rand();
    //~ } else {
   
	//~ wirdu.de
	$postEmail = $_POST['email'];
	$resultSQL = sql_query("Select uname FROM {$user_prefix}_users WHERE email = '" . $postEmail . "'");
	$row = sql_fetch_row($resultSQL);   
	$uname = $row[0];
	
        $userinfo = mxGetUserDataFromUsername($uname);
        $areyou = substr(md5($userinfo['pass']), 3, 10);
    //~ }

    switch (true) {
        case empty($uname):
            /* beide optionen, kein Username angegeben */
            mxRedirect('modules.php?name=Your_Account&op=pass_lost', _ERROR_NO_USERNAME);
            return;

        case empty($userinfo['uid']):
            /* beide optionen, Username nicht gefunden */
            mxRedirect('modules.php?name=Your_Account&op=pass_lost', sprintf(_ERROR_USERNAMENOTEXIST, $uname));
            return;

        case empty($userinfo['email']) || !mxCheckEmail($userinfo['email']):
            /* beide optionen, Emailadresse des Accounts ungültig oder nicht vorhanden */
            mxRedirect('modules.php?name=Your_Account&op=pass_lost', _ERROR_USERHASNOEMAIL);
            return;

        case !$userconfig->passlost_codeoption && empty($_POST['email']):
            /* ohne Codeoption, Emailadresse beim Senden nicht angegeben */
            mxRedirect('modules.php?name=Your_Account&op=pass_lost&uname=' . $userinfo['uname'], _ERROR_NO_USERNAME_EMAIL);
            return;

        case !$userconfig->passlost_codeoption && !mxCheckEmail($_POST['email']):
            /* ohne Codeoption, ungültige Emailadresse beim Senden angegeben */
            mxRedirect('modules.php?name=Your_Account&op=pass_lost&uname=' . $userinfo['uname'], _ERRORINVEMAIL);
            return;

        //~ case !$userconfig->passlost_codeoption && $_POST['email'] != $userinfo['email']:
            //~ /* ohne Codeoption, beim Senden angegebene Emailadresse passt nicht zum Usernamen */
            //~ mxRedirect('modules.php?name=Your_Account&op=pass_lost&uname=' . $userinfo['uname'], sprintf(_ERROR_USEREMAILNOTMATCH, $uname));
            //~ return;

        //~ case $userconfig->passlost_codeoption && !empty($_POST['code']) && $areyou != $_POST['code']:
            //~ /* mit Codeoption, kein Code, oder ungültiger Code beim Senden angegeben */
            //~ mxRedirect('modules.php?name=Your_Account&op=pass_lost&uname=' . $userinfo['uname'], _ERROR_FALSECODE);
            //~ return;

        //~ case $userconfig->passlost_codeoption && empty($_POST['code']):
            //~ /* mit Codeoption, erste Stufe, alles ok, Code senden */
            //~ $addlink = '&dat=' . base64_encode($userinfo['uname'] . '|' . $areyou);
            //~ $message = (_HELLO . " " . $userinfo['uname'] . ",\n\n" . _CODEREQUESTED . " [ip: " . MX_REMOTE_ADDR . "]\n\n" . _YOURCODEIS . " " . $areyou . "\n\n" . _HASTHISEMAIL . " \n" . PMX_HOME_URL . "/modules.php?name=Your_Account&op=pass_lost" . $addlink . "\n\n" . _IFYOUDIDNOTASK2);
            //~ $subject = (_CODEFOR . " " . $userinfo['uname'] . " (" . $GLOBALS['sitename'] . ")");
            //~ if (mxMail($userinfo['email'], $subject, $message)) {
                //~ $msg = _CODEFOR . " " . $userinfo['uname'] . " " . _MAILED;
            //~ } else {
                //~ $msg = _ERROR_CANNOTSENDMAIL;
            //~ }
            //~ mxRedirect('modules.php?name=Your_Account&op=pass_lost&uname=' . $userinfo['uname'], $msg, 10);
            //~ return;

        default:
            /* beide Optionen, alles ok, neues Passwort zusendenn */
            $newpass = makepass(); // neues Passwort generieren
            /* Datenbank aktualisieren */
            $query = "UPDATE {$user_prefix}_users SET pass='" . md5($newpass) . "' WHERE uid=" . intval($userinfo['uid']);
            if (sql_query($query)) {
                /* Wenn DB aktualisiert werden konnte, Passwort per Mail versenden */
                $message = (_HELLO . " " . $userinfo['uname'] . ",\n\n" . _HASREQUESTED . " [ip: " . MX_REMOTE_ADDR . "]\n\n" . _YOURNEWPASSWORD . " " . $newpass . "\n\n" . _YOUCANCHANGE . " \n" . PMX_HOME_URL . "/modules.php?name=Your_Account\n\n" . _IFYOUDIDNOTASK);
                $subject = (_USERPASSWORD4 . " " . $userinfo['uname'] . " (" . $GLOBALS['sitename'] . ")");
                if (mxMail($userinfo['email'], $subject, $message)) {
                    /* ok, mail konnte gesendet werden */
                    $msg = _PASSWORD4 . " " . $userinfo['uname'] . " " . _MAILED;
                    mxRedirect('modules.php?name=Your_Account', $msg);
                    return;
                } else {
                    /* mail konnte nicht gesendet werden, Passwort in DB wieder auf alten Wert zurücksetzen */
                    $query = "UPDATE {$user_prefix}_users SET pass='" . $userinfo['pass'] . "' WHERE uid=" . intval($userinfo['uid']);
                    sql_query($query);
                    $msg = _ERROR_CANNOTSENDMAIL;
                }

                /* Modulspezifische Passwortänderungen durchfuehren $uid muss vorhanden sein!! */
                $uid = $userinfo['uid'];
                $files = (array)glob(PMX_MODULES_DIR . DS . '*' . DS . 'core' . DS . 'user.passlost.php', GLOB_NOSORT);
                foreach ($files as $filename) {
                    if ($filename) {
                        include_once($filename);
                    }
                }
            } else {
                $msg = _UPDATEFAILED;
            }
            mxRedirect('modules.php?name=Your_Account&op=pass_lost', $msg, 5);
            return;
    }
}

?>