/** 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.'); }
/** 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.')); }