示例#1
0
/** This function sets the changed data specified by the user.
 */
function profile_update($db_login)
{
    global $params, $db;
    $playerID = $params->SESSION->player->playerID;
    $data = $params->POST->data;
    $password = $params->POST->password;
    // list of fields, that should be inserted into the player record
    $fields = array("origin", "icq", "avatar", "description", "template", "language", "gfxpath", "email2");
    // validate language code
    $uaLanguageNames = LanguageNames::getLanguageNames();
    if (!array_key_exists($data['language'], $uaLanguageNames)) {
        unset($data['language']);
    }
    // recode description
    $data['description'] = nl2br($data['description']);
    if ($set = db_makeSetStatementSecure($data, $fields)) {
        $query = sprintf('UPDATE Player SET %s WHERE playerID = %d', $set, $playerID);
        if (!$db->query($query)) {
            return _('Die Daten konnten gar nicht oder zumindest nicht vollständig aktualisiert werden.');
        }
    }
    // ***** now update the password, if it is set **** **************************
    if (strlen($password['password1'])) {
        // typo?
        if (strcmp($password['password1'], $password['password2']) != 0) {
            return _('Das Paßwort stimmt nicht mit der Wiederholung überein.');
        }
        // password too short?
        if (!preg_match('/^\\w{6,}$/', unhtmlentities($password['password1']))) {
            return _('Das Passwort muss mindestens 6 Zeichen lang sein!');
        }
        // set password
        $query = sprintf("UPDATE Login SET password = '******' WHERE LoginID = %d", $password['password1'], $playerID);
        if (!$db_login->query($query)) {
            return _('Die Daten konnten gar nicht oder zumindest nicht vollständig aktualisiert werden.');
        }
    }
    return _('Die Daten wurden erfolgreich aktualisiert.');
}
示例#2
0
/** This function sets the changed data specified by the user.
 */
function profile_update($db_login)
{
    global $db;
    $playerID = $_SESSION['player']->playerID;
    $data = array('avatar' => Request::getVar('inputPlayerAvatar', ''), 'description' => Request::getVar('inputPlayerDescription', '', true), 'email2' => Request::getVar('inputPlayerEmail2', ''), 'gfxpath' => Request::getVar('inputPlayerGFX', ''), 'icq' => Request::getVar('inputPlayerICQ', ''), 'language' => Request::getVar('inputPlayerLang', ''), 'origin' => Request::getVar('inputPlayerOrigin', ''), 'template' => Request::getVar('inputPlayerTemplate', ''), 'passwordNew' => Request::getVar('inputPlayerPasswordNew', ''), 'passwordRe' => Request::getVar('inputPlayerPasswordRe', ''), 'jabberPwdNew' => Request::getVar('inputJabberPasswordNew', ''), 'jabberPwdRe' => Request::getVar('inputJabberPasswordRe', ''));
    // validate language code
    $uaLanguageNames = LanguageNames::getLanguageNames();
    if (!isset($uaLanguageNames[$data['language']])) {
        unset($data['language']);
    }
    // check if avatar is a image
    if (isset($data['avatar']) && !empty($data['avatar'])) {
        $avatarInfo = checkAvatar($data['avatar']);
        if (!$avatarInfo) {
            return array('type' => 'error', 'message' => 'Ungültiges Bild oder URL beim Avatar! Wird zurückgesetzt!');
        } else {
            $data['avatar'] = $avatarInfo;
        }
    } else {
        $data['avatar'] = '';
    }
    if (filter_var($data['email2'], FILTER_VALIDATE_EMAIL) === false) {
        return array('type' => 'error', 'message' => 'Ungültiges E-Mail Adresse. Bitte nimm deine Eingaben erneut vor!');
    }
    if (strcmp($data['jabberPwdNew'], $data['jabberPwdRe']) != 0) {
        return array('type' => 'error', 'message' => _('Das Jabber Passwort stimmt nicht mit der Wiederholung überein.'));
    }
    // password too short?
    if (empty($data['jabberPwdNew'])) {
        $data['jabberPwdNew'] = null;
    } else {
        if (!preg_match('/^\\w{6,}$/', unhtmlentities($data['jabberPwdNew']))) {
            return array('type' => 'error', 'message' => _('Das Jabber Passwort muss mindestens 6 Zeichen lang sein!'));
        }
    }
    $sql = $db->prepare("UPDATE " . PLAYER_TABLE . "\n                       SET origin = :origin,\n                         icq = :icq,\n                         avatar = :avatar,\n                         description = :description,\n                         template = :template,\n                         language = :language,\n                         gfxpath = :gfxpath,\n                         email2 = :email2,\n                         avatar = :avatar,\n                         jabberPassword = :jabberPassword\n                       WHERE playerID = :playerID");
    $sql->bindValue('origin', $data['origin'], PDO::PARAM_STR);
    $sql->bindValue('icq', $data['icq'], PDO::PARAM_INT);
    $sql->bindValue('description', $data['description'], PDO::PARAM_STR);
    $sql->bindValue('template', $data['template'], PDO::PARAM_INT);
    $sql->bindValue('language', $data['language'], PDO::PARAM_STR);
    $sql->bindValue('gfxpath', $data['gfxpath'], PDO::PARAM_STR);
    $sql->bindValue('email2', $data['email2'], PDO::PARAM_STR);
    $sql->bindValue('avatar', $data['avatar'], PDO::PARAM_STR);
    $sql->bindValue('jabberPassword', $data['jabberPwdNew'], PDO::PARAM_STR);
    $sql->bindValue('playerID', $playerID, PDO::PARAM_INT);
    if (!$sql->execute()) {
        return array('type' => 'error', 'message' => _('Die Daten konnten gar nicht oder zumindest nicht vollständig aktualisiert werden.'));
    }
    // ***** now update the password, if it is set **** **************************
    if (strlen($data['passwordNew'])) {
        // typo?
        if (strcmp($data['passwordNew'], $data['passwordRe']) != 0) {
            return array('type' => 'error', 'message' => _('Das Spiel Passwort stimmt nicht mit der Wiederholung überein.'));
        }
        // password too short?
        if (!preg_match('/^\\w{6,}$/', unhtmlentities($data['passwordNew']))) {
            return array('type' => 'error', 'message' => _('Das Spiel Passwort muss mindestens 6 Zeichen lang sein!'));
        }
        // set password
        $sql = $db_login->prepare("UPDATE Login SET password = :password WHERE LoginID = :loginID");
        $sql->bindValue('password', $data['passwordNew'], PDO::PARAM_STR);
        $sql->bindValue('loginID', $playerID, PDO::PARAM_INT);
        if (!$sql->execute() || $sql->rowCount() == 0) {
            return array('type' => 'error', 'message' => _('Die Daten konnten gar nicht oder zumindest nicht vollständig aktualisiert werden.'));
        }
    }
    return array('type' => 'success', 'message' => _('Die Daten wurden erfolgreich aktualisiert.'));
}