mirror of
https://github.com/slawkens/myaac.git
synced 2025-11-27 21:56:50 +01:00
feat: replace POT Query Builder to Eloquent ORM (#230)
* wip * wip * wip * wip * wip * fix: reusing pdo connection from pot * wip * wip * wip * wip * move files In future, all classes will be in src/ folder * Replace namespace name, for future * Remove duplicated exception * Fix towns from db * Fix spells page * Add default FAQ question + FAQ model * feat: reset colors in menus * Add confirm + save button at the top (menus) * Do not insert duplicated FAQ on install * Refactor install menus * Fix changelogs showing * Fix menu update, only with specified template name * Fix account create -> missing compat * Fix bans_per_page * banned_by is player_id. type = 2 is namelock in tfs 0.3 * Add getPlayerNameById, fix getPlayerNameByAccount * Change link name * Order by lastlogin * fix: query optimize * wip * wip * wip * wip * wip * wip * wip * Refactor notepad.php, class was useless * This is showing error, if the updated rows = 0 * Fix success & error class (bootstrap) * Uncomment require migrate.php * Some distro have owner_id * Update Player.php --------- Co-authored-by: slawkens <slawkens@gmail.com>
This commit is contained in:
100
login.php
100
login.php
@@ -1,4 +1,8 @@
|
||||
<?php
|
||||
|
||||
use MyAAC\Models\BoostedCreature;
|
||||
use MyAAC\Models\PlayerOnline;
|
||||
|
||||
require_once 'common.php';
|
||||
require_once SYSTEM . 'functions.php';
|
||||
require_once SYSTEM . 'init.php';
|
||||
@@ -43,9 +47,9 @@ $action = $request->type ?? '';
|
||||
|
||||
switch ($action) {
|
||||
case 'cacheinfo':
|
||||
$playersonline = $db->query("select count(*) from `players_online`")->fetchAll();
|
||||
$playersonline = PlayerOnline::count();
|
||||
die(json_encode([
|
||||
'playersonline' => (intval($playersonline[0][0])),
|
||||
'playersonline' => $playersonline,
|
||||
'twitchstreams' => 0,
|
||||
'twitchviewer' => 0,
|
||||
'gamingyoutubestreams' => 0,
|
||||
@@ -79,13 +83,11 @@ switch ($action) {
|
||||
die(json_encode(['eventlist' => $eventlist, 'lastupdatetimestamp' => time()]));
|
||||
|
||||
case 'boostedcreature':
|
||||
$boostDB = $db->query("select * from " . $db->tableName('boosted_creature'))->fetchAll();
|
||||
foreach ($boostDB as $Tableboost) {
|
||||
$boostedCreature = BoostedCreature::latest();
|
||||
die(json_encode([
|
||||
'boostedcreature' => true,
|
||||
'raceid' => intval($Tableboost['raceid'])
|
||||
'raceid' => $boostedCreature->raceid
|
||||
]));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'login':
|
||||
@@ -112,29 +114,32 @@ switch ($action) {
|
||||
];
|
||||
|
||||
$characters = [];
|
||||
$account = new OTS_Account();
|
||||
|
||||
$inputEmail = $request->email ?? false;
|
||||
$inputAccountName = $request->accountname ?? false;
|
||||
$inputToken = $request->token ?? false;
|
||||
|
||||
$account = Account::query();
|
||||
if ($inputEmail != false) { // login by email
|
||||
$account->findByEmail($request->email);
|
||||
$account->where('email', $inputEmail);
|
||||
}
|
||||
else if($inputAccountName != false) { // login by account name
|
||||
$account->find($inputAccountName);
|
||||
$account->where('name', $inputAccountName);
|
||||
}
|
||||
|
||||
$current_password = encrypt((USE_ACCOUNT_SALT ? $account->getCustomField('salt') : '') . $request->password);
|
||||
|
||||
if (!$account->isLoaded() || $account->getPassword() != $current_password) {
|
||||
$account = $account->first();
|
||||
if (!$account) {
|
||||
sendError(($inputEmail != false ? 'Email' : 'Account name') . ' or password is not correct.');
|
||||
}
|
||||
|
||||
$current_password = encrypt((USE_ACCOUNT_SALT ? $account->salt : '') . $request->password);
|
||||
if (!$account || $account->password != $current_password) {
|
||||
sendError(($inputEmail != false ? 'Email' : 'Account name') . ' or password is not correct.');
|
||||
}
|
||||
|
||||
//log_append('test.log', var_export($account->getCustomField('secret'), true));
|
||||
$accountHasSecret = false;
|
||||
if (fieldExist('secret', 'accounts')) {
|
||||
$accountSecret = $account->getCustomField('secret');
|
||||
$accountSecret = $account->secret;
|
||||
if ($accountSecret != null && $accountSecret != '') {
|
||||
$accountHasSecret = true;
|
||||
if ($inputToken === false) {
|
||||
@@ -159,18 +164,9 @@ switch ($action) {
|
||||
$columns .= ', istutorial';
|
||||
}
|
||||
|
||||
$players = $db->query("select {$columns} from players where account_id = " . $account->getId() . " AND deletion = 0");
|
||||
if($players && $players->rowCount() > 0) {
|
||||
$players = $players->fetchAll();
|
||||
|
||||
$highestLevelId = 0;
|
||||
$highestLevel = 0;
|
||||
foreach ($players as $player) {
|
||||
if ($player['level'] >= $highestLevel) {
|
||||
$highestLevel = $player['level'];
|
||||
$highestLevelId = $player['id'];
|
||||
}
|
||||
}
|
||||
$players = Player::where('account_id', $account->id)->notDeleted()->selectRaw($columns)->get();
|
||||
if($players && $players->count()) {
|
||||
$highestLevelId = $players->sortByDesc('experience')->first()->getKey();
|
||||
|
||||
foreach ($players as $player) {
|
||||
$characters[] = create_char($player, $highestLevelId);
|
||||
@@ -180,15 +176,10 @@ switch ($action) {
|
||||
if (fieldExist('premdays', 'accounts') && fieldExist('lastday', 'accounts')) {
|
||||
$save = false;
|
||||
$timeNow = time();
|
||||
$query = $db->query("select `premdays`, `lastday` from `accounts` where `id` = " . $account->getId());
|
||||
if ($query->rowCount() > 0) {
|
||||
$query = $query->fetch();
|
||||
$premDays = (int)$query['premdays'];
|
||||
$lastDay = (int)$query['lastday'];
|
||||
$lastLogin = $lastDay;
|
||||
} else {
|
||||
sendError("Error while fetching your account data. Please contact admin.");
|
||||
}
|
||||
$premDays = $account->premdays;
|
||||
$lastDay = $account->lastday;
|
||||
$lastLogin = $lastDay;
|
||||
|
||||
if ($premDays != 0 && $premDays != PHP_INT_MAX) {
|
||||
if ($lastDay == 0) {
|
||||
$lastDay = $timeNow;
|
||||
@@ -213,7 +204,9 @@ switch ($action) {
|
||||
$save = true;
|
||||
}
|
||||
if ($save) {
|
||||
$db->query("update `accounts` set `premdays` = " . $premDays . ", `lastday` = " . $lastDay . " where `id` = " . $account->getId());
|
||||
$account->premdays = $premDays;
|
||||
$account->lastday = $lastDay;
|
||||
$account->save();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -235,13 +228,11 @@ switch ($action) {
|
||||
$sessionKey .= "\n".floor(time() / 30);
|
||||
}
|
||||
|
||||
//log_append('slaw.log', $sessionKey);
|
||||
|
||||
$session = [
|
||||
'sessionkey' => $sessionKey,
|
||||
'lastlogintime' => 0,
|
||||
'ispremium' => $config['lua']['freePremium'] || $account->isPremium(),
|
||||
'premiumuntil' => ($account->getPremDays()) > 0 ? (time() + ($account->getPremDays() * 86400)) : 0,
|
||||
'ispremium' => $account->is_premium,
|
||||
'premiumuntil' => ($account->premium_days) > 0 ? (time() + ($account->premium_days * 86400)) : 0,
|
||||
'status' => 'active', // active, frozen or suspended
|
||||
'returnernotification' => false,
|
||||
'showrewardnews' => true,
|
||||
@@ -259,24 +250,23 @@ switch ($action) {
|
||||
}
|
||||
|
||||
function create_char($player, $highestLevelId) {
|
||||
global $config;
|
||||
return [
|
||||
'worldid' => 0,
|
||||
'name' => $player['name'],
|
||||
'ismale' => intval($player['sex']) === 1,
|
||||
'tutorial' => isset($player['istutorial']) && $player['istutorial'],
|
||||
'level' => intval($player['level']),
|
||||
'vocation' => $config['vocations'][$player['vocation']],
|
||||
'outfitid' => intval($player['looktype']),
|
||||
'headcolor' => intval($player['lookhead']),
|
||||
'torsocolor' => intval($player['lookbody']),
|
||||
'legscolor' => intval($player['looklegs']),
|
||||
'detailcolor' => intval($player['lookfeet']),
|
||||
'addonsflags' => intval($player['lookaddons']),
|
||||
'ishidden' => isset($player['deletion']) && (int)$player['deletion'] === 1,
|
||||
'name' => $player->name,
|
||||
'ismale' => $player->sex === 1,
|
||||
'tutorial' => isset($player->istutorial) && $player->istutorial,
|
||||
'level' => $player->level,
|
||||
'vocation' => $player->vocation_name,
|
||||
'outfitid' => $player->looktype,
|
||||
'headcolor' => $player->lookhead,
|
||||
'torsocolor' => $player->lookbody,
|
||||
'legscolor' => $player->looklegs,
|
||||
'detailcolor' => $player->lookfeet,
|
||||
'addonsflags' => $player->lookaddons,
|
||||
'ishidden' => $player->is_deleted,
|
||||
'istournamentparticipant' => false,
|
||||
'ismaincharacter' => $highestLevelId == $player['id'],
|
||||
'dailyrewardstate' => isset($player['isreward']) ? intval($player['isreward']) : 0,
|
||||
'ismaincharacter' => $highestLevelId === $player->getKey(),
|
||||
'dailyrewardstate' => $player->isreward ?? 0,
|
||||
'remainingdailytournamentplaytime' => 0
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user