mirror of
https://github.com/slawkens/myaac.git
synced 2025-12-16 05:49:47 +01:00
Compare commits
7 Commits
feature/ge
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c5d3d3a25f | ||
|
|
9ed06782e6 | ||
|
|
18a1178e4b | ||
|
|
c86257e6da | ||
|
|
fd74f01291 | ||
|
|
3011b969a4 | ||
|
|
8e6749c599 |
2
.github/workflows/cypress.yml
vendored
2
.github/workflows/cypress.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: [ '8.1', '8.2', '8.3', '8.4' ]
|
php-versions: [ '8.1', '8.2', '8.3', '8.4', '8.5' ]
|
||||||
ots: ['tfs-1.4', 'canary-3.1.2'] # TODO: add 'tfs-master' (actually doesn't work cause AAC doesn't support reading .env configuration)
|
ots: ['tfs-1.4', 'canary-3.1.2'] # TODO: add 'tfs-master' (actually doesn't work cause AAC doesn't support reading .env configuration)
|
||||||
name: Cypress (PHP ${{ matrix.php-versions }}, ${{ matrix.ots }})
|
name: Cypress (PHP ${{ matrix.php-versions }}, ${{ matrix.ots }})
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
13
common.php
13
common.php
@@ -148,16 +148,17 @@ if(!IS_CLI) {
|
|||||||
|
|
||||||
/** @var array $config */
|
/** @var array $config */
|
||||||
ini_set('log_errors', 1);
|
ini_set('log_errors', 1);
|
||||||
if(@$config['env'] === 'dev' || defined('MYAAC_INSTALL')) {
|
if(isset($config['env']) && $config['env'] !== 'dev' && !defined('MYAAC_INSTALL')) {
|
||||||
ini_set('display_errors', 1);
|
|
||||||
ini_set('display_startup_errors', 1);
|
|
||||||
error_reporting(E_ALL);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
ini_set('display_errors', 0);
|
ini_set('display_errors', 0);
|
||||||
ini_set('display_startup_errors', 0);
|
ini_set('display_startup_errors', 0);
|
||||||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
|
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
ini_set('html_errors', 0);
|
||||||
|
ini_set('display_errors', 1);
|
||||||
|
ini_set('display_startup_errors', 1);
|
||||||
|
error_reporting(E_ALL);
|
||||||
|
}
|
||||||
|
|
||||||
$autoloadFile = VENDOR . 'autoload.php';
|
$autoloadFile = VENDOR . 'autoload.php';
|
||||||
if (!is_file($autoloadFile)) {
|
if (!is_file($autoloadFile)) {
|
||||||
|
|||||||
@@ -17,8 +17,6 @@ use MyAAC\Models\Guild;
|
|||||||
use MyAAC\Models\House;
|
use MyAAC\Models\House;
|
||||||
use MyAAC\Models\Pages;
|
use MyAAC\Models\Pages;
|
||||||
use MyAAC\Models\Player;
|
use MyAAC\Models\Player;
|
||||||
use MyAAC\Models\PlayerDeath;
|
|
||||||
use MyAAC\Models\PlayerKillers;
|
|
||||||
use MyAAC\News;
|
use MyAAC\News;
|
||||||
use MyAAC\Plugins;
|
use MyAAC\Plugins;
|
||||||
use MyAAC\Settings;
|
use MyAAC\Settings;
|
||||||
@@ -1137,29 +1135,11 @@ function csrfProtect(): void
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTopPlayers($limit = 5, $skill = POT::SKILL_LEVEL)
|
function getTopPlayers($limit = 5, $skill = 'level') {
|
||||||
{
|
|
||||||
global $db;
|
global $db;
|
||||||
|
|
||||||
$skillOriginal = $skill;
|
if ($skill === 'level') {
|
||||||
|
$skill = 'experience';
|
||||||
if (is_string($skill)) {
|
|
||||||
$skills = [
|
|
||||||
'level' => POT::SKILL_LEVEL,
|
|
||||||
'experience' => POT::SKILL_LEVEL,
|
|
||||||
|
|
||||||
'magic' => POT::SKILL_MAGIC,
|
|
||||||
'maglevel' => POT::SKILL_MAGIC,
|
|
||||||
|
|
||||||
'balance' => SKILL_BALANCE,
|
|
||||||
'frags' => SKILL_FRAGS,
|
|
||||||
];
|
|
||||||
|
|
||||||
$skill = $skills[$skill] ?? null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_numeric($skill)) {
|
|
||||||
throw new RuntimeException("getTopPlayers: Invalid skill: $skillOriginal");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Cache::remember("top_{$limit}_{$skill}", 2 * 60, function () use ($db, $limit, $skill) {
|
return Cache::remember("top_{$limit}_{$skill}", 2 * 60, function () use ($db, $limit, $skill) {
|
||||||
@@ -1180,64 +1160,15 @@ function getTopPlayers($limit = 5, $skill = POT::SKILL_LEVEL)
|
|||||||
$columns[] = 'lookmount';
|
$columns[] = 'lookmount';
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = Player::query()
|
return Player::query()
|
||||||
->select($columns)
|
->select($columns)
|
||||||
->withOnlineStatus()
|
->withOnlineStatus()
|
||||||
->notDeleted()
|
->notDeleted()
|
||||||
->where('group_id', '<', setting('core.highscores_groups_hidden'))
|
->where('group_id', '<', setting('core.highscores_groups_hidden'))
|
||||||
->whereNotIn('id', setting('core.highscores_ids_hidden'))
|
->whereNotIn('id', setting('core.highscores_ids_hidden'))
|
||||||
->where('account_id', '!=', 1)
|
->where('account_id', '!=', 1)
|
||||||
->orderByDesc('value');
|
->orderByDesc($skill)
|
||||||
|
->limit($limit)
|
||||||
if ($limit > 0) {
|
|
||||||
$query->limit($limit);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($skill >= POT::SKILL_FIRST && $skill <= POT::SKILL_LAST) { // skills
|
|
||||||
if ($db->hasColumn('players', 'skill_fist')) {// tfs 1.0
|
|
||||||
$skill_ids = array(
|
|
||||||
POT::SKILL_FIST => 'skill_fist',
|
|
||||||
POT::SKILL_CLUB => 'skill_club',
|
|
||||||
POT::SKILL_SWORD => 'skill_sword',
|
|
||||||
POT::SKILL_AXE => 'skill_axe',
|
|
||||||
POT::SKILL_DIST => 'skill_dist',
|
|
||||||
POT::SKILL_SHIELD => 'skill_shielding',
|
|
||||||
POT::SKILL_FISH => 'skill_fishing',
|
|
||||||
);
|
|
||||||
|
|
||||||
$query
|
|
||||||
->addSelect($skill_ids[$skill] . ' as value')
|
|
||||||
->orderByDesc($skill_ids[$skill] . '_tries');
|
|
||||||
} else {
|
|
||||||
$query
|
|
||||||
->join('player_skills', 'player_skills.player_id', '=', 'players.id')
|
|
||||||
->where('skillid', $skill)
|
|
||||||
->addSelect('player_skills.value as value');
|
|
||||||
}
|
|
||||||
} else if ($skill == SKILL_FRAGS) // frags
|
|
||||||
{
|
|
||||||
if ($db->hasTable('player_killers')) {
|
|
||||||
$query->addSelect(['value' => PlayerKillers::whereColumn('player_killers.player_id', 'players.id')->selectRaw('COUNT(*)')]);
|
|
||||||
} else {
|
|
||||||
$query->addSelect(['value' => PlayerDeath::unjustified()->whereColumn('player_deaths.killed_by', 'players.name')->selectRaw('COUNT(*)')]);
|
|
||||||
}
|
|
||||||
} else if ($skill == SKILL_BALANCE) // balance
|
|
||||||
{
|
|
||||||
$query
|
|
||||||
->addSelect('players.balance as value');
|
|
||||||
} else {
|
|
||||||
if ($skill == POT::SKILL_MAGIC) {
|
|
||||||
$query
|
|
||||||
->addSelect('players.maglevel as value', 'players.maglevel')
|
|
||||||
->orderByDesc('manaspent');
|
|
||||||
} else { // level
|
|
||||||
$query
|
|
||||||
->addSelect('players.level as value', 'players.experience')
|
|
||||||
->orderByDesc('experience');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $query
|
|
||||||
->get()
|
->get()
|
||||||
->map(function ($e, $i) {
|
->map(function ($e, $i) {
|
||||||
$row = $e->toArray();
|
$row = $e->toArray();
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ $up = function () use ($db) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$up = function () use ($db) {
|
$down = function () use ($db) {
|
||||||
if (!$db->hasColumn(TABLE_PREFIX . 'screenshots', 'name')) {
|
if (!$db->hasColumn(TABLE_PREFIX . 'screenshots', 'name')) {
|
||||||
$db->addColumn(TABLE_PREFIX . 'screenshots', 'name', 'VARCHAR(30) NOT NULL');
|
$db->addColumn(TABLE_PREFIX . 'screenshots', 'name', 'VARCHAR(30) NOT NULL');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Example of using getTopPlayers() function
|
|
||||||
* to display the best players for each skill
|
|
||||||
*/
|
|
||||||
defined('MYAAC') or die('Direct access not allowed!');
|
|
||||||
|
|
||||||
$skills = [
|
|
||||||
'magic', 'level',
|
|
||||||
'balance', 'frags',
|
|
||||||
POT::SKILL_FIST, POT::SKILL_CLUB,
|
|
||||||
POT::SKILL_SWORD, POT::SKILL_AXE,
|
|
||||||
POT::SKILL_DISTANCE, POT::SKILL_SHIELD,
|
|
||||||
POT::SKILL_FISH
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($skills as $skill) {?>
|
|
||||||
<ul>
|
|
||||||
<?php
|
|
||||||
echo '<strong>' . ucwords(is_string($skill) ? $skill : getSkillName($skill)) . '</strong>';
|
|
||||||
foreach (getTopPlayers(5, $skill) as $player) {?>
|
|
||||||
<li><?= $player['rank'] . '. ' . $player['name'] . ' - ' . $player['value']; ?></li>
|
|
||||||
<?php
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</ul>
|
|
||||||
<?php
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -176,7 +176,9 @@ if (empty($highscores)) {
|
|||||||
POT::SKILL_FISH => 'skill_fishing',
|
POT::SKILL_FISH => 'skill_fishing',
|
||||||
);
|
);
|
||||||
|
|
||||||
$query->addSelect($skill_ids[$skill] . ' as value');
|
$query
|
||||||
|
->addSelect($skill_ids[$skill] . ' as value')
|
||||||
|
->orderByDesc($skill_ids[$skill] . '_tries');
|
||||||
} else {
|
} else {
|
||||||
$query
|
$query
|
||||||
->join('player_skills', 'player_skills.player_id', '=', 'players.id')
|
->join('player_skills', 'player_skills.player_id', '=', 'players.id')
|
||||||
@@ -198,11 +200,11 @@ if (empty($highscores)) {
|
|||||||
if ($skill == POT::SKILL__MAGLEVEL) {
|
if ($skill == POT::SKILL__MAGLEVEL) {
|
||||||
$query
|
$query
|
||||||
->addSelect('players.maglevel as value', 'players.maglevel')
|
->addSelect('players.maglevel as value', 'players.maglevel')
|
||||||
->orderBy('manaspent');
|
->orderByDesc('manaspent');
|
||||||
} else { // level
|
} else { // level
|
||||||
$query
|
$query
|
||||||
->addSelect('players.level as value', 'players.experience')
|
->addSelect('players.level as value', 'players.experience')
|
||||||
->orderBy('experience');
|
->orderByDesc('experience');
|
||||||
$list = 'experience';
|
$list = 'experience';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -342,6 +342,16 @@ class Validator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
global $hooks;
|
||||||
|
|
||||||
|
$params = ['name' => $name, 'error' => ''];
|
||||||
|
$hooks->triggerFilter(HOOK_FILTER_VALIDATE_CHARACTER_NEW_NAME, $params);
|
||||||
|
|
||||||
|
if (!empty($params['error'])) {
|
||||||
|
self::$lastError = $params['error'];
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ define('HOOK_FILTER_ROUTES', ++$i);
|
|||||||
define('HOOK_FILTER_TWIG_DISPLAY', ++$i);
|
define('HOOK_FILTER_TWIG_DISPLAY', ++$i);
|
||||||
define('HOOK_FILTER_TWIG_RENDER', ++$i);
|
define('HOOK_FILTER_TWIG_RENDER', ++$i);
|
||||||
define('HOOK_FILTER_THEME_FOOTER', ++$i);
|
define('HOOK_FILTER_THEME_FOOTER', ++$i);
|
||||||
|
define('HOOK_FILTER_VALIDATE_CHARACTER_NEW_NAME', ++$i);
|
||||||
|
|
||||||
const HOOK_FIRST = HOOK_INIT;
|
const HOOK_FIRST = HOOK_INIT;
|
||||||
define('HOOK_LAST', $i);
|
define('HOOK_LAST', $i);
|
||||||
|
|||||||
Reference in New Issue
Block a user