/modules/ranking/character.php
PHP | 47 lines | 36 code | 11 blank | 0 comment | 8 complexity | c2547bb5bb41246826e527febe2a084c MD5 | raw file
Possible License(s): LGPL-2.1, LGPL-3.0, BSD-3-Clause
- <?php
- if (!defined('FLUX_ROOT')) exit;
- $title = 'Character Ranking';
- $classes = Flux::config('JobClasses')->toArray();
- $jobClass = $params->get('jobclass');
- $bind = array((int)Flux::config('RankingHideLevel'));
- if (!is_null($jobClass) && !array_key_exists($jobClass, $classes)) {
- $this->deny();
- }
- $col = "ch.char_id, ch.name AS char_name, ch.class AS char_class, ch.base_level, ch.base_exp, ch.job_level, ch.job_exp, ";
- $col .= "ch.guild_id, guild.name AS guild_name, guild.emblem_len AS guild_emblem_len";
- $sql = "SELECT $col FROM {$server->charMapDatabase}.`char` AS ch ";
- $sql .= "LEFT JOIN {$server->charMapDatabase}.guild ON guild.guild_id = ch.guild_id ";
- $sql .= "LEFT JOIN {$server->loginDatabase}.login ON login.account_id = ch.account_id ";
- $sql .= "WHERE 1=1 ";
- if (Flux::config('HidePermBannedCharRank')) {
- $sql .= "AND login.state != 5 ";
- }
- if (Flux::config('HideTempBannedCharRank')) {
- $sql .= "AND (login.unban_time IS NULL OR login.unban_time = 0) ";
- }
- $sql .= "AND login.level < ? ";
- if ($days=Flux::config('CharRankingThreshold')) {
- $sql .= 'AND (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(login.lastlogin)) <= ? ';
- $bind[] = $days * 24 * 60 * 60;
- }
- if (!is_null($jobClass)) {
- $sql .= "AND ch.class = ? ";
- $bind[] = $jobClass;
- }
- $sql .= "ORDER BY ch.base_level DESC, ch.job_level DESC, ch.base_exp DESC, ch.job_exp DESC, ch.char_id ASC ";
- $sql .= "LIMIT ".(int)Flux::config('CharRankingLimit');
- $sth = $server->connection->getStatement($sql);
- $sth->execute($bind);
- $chars = $sth->fetchAll();
- ?>