Clean some bullshit in Ranking.php

Clean some bullshit in Ranking.php
This commit is contained in:
Catalin Novgorodschi
2026-04-23 11:18:35 +03:00
parent c3049f7f1a
commit a230378532
+85 -191
View File
@@ -5,7 +5,9 @@
+---------------------------------------------------------+ +---------------------------------------------------------+
| Credits: All the developers including the leaders: | | Credits: All the developers including the leaders: |
| Advocaite & Dzoki & Donnchadh | | Advocaite & Dzoki & Donnchadh |
| | | |
| Clean some bullshit : Shadow |
| |
| Copyright: TravianZ Project All rights reserved | | Copyright: TravianZ Project All rights reserved |
\** --------------------------------------------------- **/ \** --------------------------------------------------- **/
@@ -19,25 +21,16 @@
} }
public function getUserRank($id) { public function getUserRank($id) {
global $database;
$ranking = $this->getRank(); $ranking = $this->getRank();
$users = "SELECT Count(*) as Total FROM " . TB_PREFIX . "users WHERE access < " . (INCLUDE_ADMIN ? "10" : "8"); if(count($ranking) > 0) {
$users2 = mysqli_fetch_array(mysqli_query($database->dblink,$users), MYSQLI_ASSOC); foreach($ranking as $key => $row) {
$users2 = $users2['Total']; if($row != "pad" && isset($row['userid']) && $row['userid'] == $id) {
$users3 = $users2 + 1; return $key;
$myrank = 0;
if(count($ranking) > 0) {
for($i = 0;$i < $users3; $i++) {
if( isset( $ranking[$i]['userid'] ) ) {
if($ranking[$i]['userid'] == $id && $ranking[$i] != "pad") {
$myrank = $i;
}
}
} }
} }
return $myrank;
} }
return 0;
}
public function procRankReq($get) { public function procRankReq($get) {
global $village, $session; global $village, $session;
@@ -179,7 +172,7 @@
public function getAllianceRank($id) { public function getAllianceRank($id) {
$this->procARankArray(); $this->procARankArray();
while(1) { while(true) {
if(count($this->rankarray) > 1) { if(count($this->rankarray) > 1) {
$key = key($this->rankarray); $key = key($this->rankarray);
if(isset ($this->rankarray[$key]["id"]) && $this->rankarray[$key]["id"] === $id) { if(isset ($this->rankarray[$key]["id"]) && $this->rankarray[$key]["id"] === $id) {
@@ -198,20 +191,20 @@
} }
public function searchRank($name, $field) { public function searchRank($name, $field) {
$count = count($this->rankarray);
while(1) { for ($key = 1; $key < $count; $key++) {
//$key = key($this->rankarray); if (!isset($this->rankarray[$key]) || $this->rankarray[$key] === "pad") {
for($key = 0; $key < count($this->rankarray); $key++){ continue;
if($this->rankarray[$key]!="pad") { }
if($this->rankarray[$key][$field] == $name) return $key; if (isset($this->rankarray[$key][$field]) &&
} $this->rankarray[$key][$field] == $name) {
} return $key;
if(!next($this->rankarray)) { }
if($field != "userid") return $name; }
else return 0; if ($field != "userid") {
} return $name;
}
} return 0;
} }
public function procRankArray() { public function procRankArray() {
@@ -219,59 +212,34 @@
if($GLOBALS['db']->countUser() > 0){ if($GLOBALS['db']->countUser() > 0){
$holder = array(); $holder = array();
if(SHOW_NATARS == True){ $tribeCondition = SHOW_NATARS ? "(u.tribe <= 5) AND (u.id > 5 OR u.id = 3)" : "u.tribe <= 3 AND u.id > 5";
$q = "SELECT " . TB_PREFIX . "users.id userid, " . TB_PREFIX . "users.username username, " . TB_PREFIX . "users.oldrank oldrank, " . TB_PREFIX . "users.alliance alliance, ( $q = "
SELECT
SELECT SUM( " . TB_PREFIX . "vdata.pop ) u.id AS userid,
FROM " . TB_PREFIX . "vdata u.username,
WHERE " . TB_PREFIX . "vdata.owner = userid u.oldrank,
)totalpop, ( u.alliance,
a.tag AS allitag,
SELECT COUNT( " . TB_PREFIX . "vdata.wref ) SUM(v.pop) AS totalpop,
FROM " . TB_PREFIX . "vdata COUNT(CASE WHEN v.type != 99 THEN v.wref END) AS totalvillages
WHERE " . TB_PREFIX . "vdata.owner = userid AND type != 99 FROM " . TB_PREFIX . "users u
)totalvillages, ( LEFT JOIN " . TB_PREFIX . "vdata v
ON v.owner = u.id
SELECT " . TB_PREFIX . "alidata.tag LEFT JOIN " . TB_PREFIX . "alidata a
FROM " . TB_PREFIX . "alidata, " . TB_PREFIX . "users ON a.id = u.alliance
WHERE " . TB_PREFIX . "alidata.id = " . TB_PREFIX . "users.alliance WHERE
AND " . TB_PREFIX . "users.id = userid u.access < " . (INCLUDE_ADMIN ? 10 : 8) . "
)allitag AND $tribeCondition
FROM " . TB_PREFIX . "users GROUP BY
WHERE " . TB_PREFIX . "users.access < " . (INCLUDE_ADMIN ? "10" : "8") . " u.id
AND (" . TB_PREFIX . "users.tribe <= 5 OR " . TB_PREFIX . "users.tribe = 5) ORDER BY
AND (" . TB_PREFIX . "users.id > 5 OR " . TB_PREFIX . "users.id = 3) totalpop DESC,
ORDER BY totalpop DESC, totalvillages DESC, userid DESC"; totalvillages DESC,
} else { u.id DESC";
$q = "SELECT " . TB_PREFIX . "users.id userid, " . TB_PREFIX . "users.username username, " . TB_PREFIX . "users.oldrank oldrank, " . TB_PREFIX . "users.alliance alliance, (
SELECT SUM( " . TB_PREFIX . "vdata.pop )
FROM " . TB_PREFIX . "vdata
WHERE " . TB_PREFIX . "vdata.owner = userid
)totalpop, (
SELECT COUNT( " . TB_PREFIX . "vdata.wref )
FROM " . TB_PREFIX . "vdata
WHERE " . TB_PREFIX . "vdata.owner = userid AND type != 99
)totalvillages, (
SELECT " . TB_PREFIX . "alidata.tag
FROM " . TB_PREFIX . "alidata, " . TB_PREFIX . "users
WHERE " . TB_PREFIX . "alidata.id = " . TB_PREFIX . "users.alliance
AND " . TB_PREFIX . "users.id = userid
)allitag
FROM " . TB_PREFIX . "users
WHERE " . TB_PREFIX . "users.access < " . (INCLUDE_ADMIN ? "10" : "8") . "
AND " . TB_PREFIX . "users.tribe <= 3
AND " . TB_PREFIX . "users.id > 5
ORDER BY totalpop DESC, totalvillages DESC, userid DESC";
}
$datas = [];
$result = (mysqli_query($database->dblink,$q)); $result = (mysqli_query($database->dblink,$q));
while($row = mysqli_fetch_assoc($result)) $datas[] = $row; $datas = [];
while($row = mysqli_fetch_assoc($result))
$datas[] = $row;
if (count($datas)) { if (count($datas)) {
foreach($datas as $result) { foreach($datas as $result) {
$value['userid'] = $result['userid']; $value['userid'] = $result['userid'];
@@ -281,67 +249,37 @@
$value['aname'] = $result['allitag']; $value['aname'] = $result['allitag'];
$value['totalpop'] = $result['totalpop']; $value['totalpop'] = $result['totalpop'];
$value['totalvillage'] = $result['totalvillages']; $value['totalvillage'] = $result['totalvillages'];
array_push($holder, $value); $holder[] = $value;
} }
} }
$newholder = ["pad"]; $newholder = ["pad"];
foreach($holder as $key) array_push($newholder, $key); foreach($holder as $key) array_push($newholder, $key);
$this->rankarray = $newholder; $this->rankarray = $newholder;
} }
} }
public function procRankRaceArray($race) { public function procRankRaceArray($race) {
global $multisort, $database; global $multisort, $database;
$race = $database->escape((int) $race); $race = $database->escape((int) $race);
//$array = $GLOBALS['db']->getRanking();
$holder = array(); $holder = array();
//$value['totalvillage'] = count($GLOBALS['db']->getVillagesID($value['id'])); $q = "SELECT u.id AS userid, u.tribe, u.username, u.alliance, COALESCE(SUM(v.pop),0) AS totalpop, COUNT(CASE WHEN v.type != 99 THEN v.wref END) AS totalvillages, a.tag AS allitag
//$value['totalvillage'] = count($GLOBALS['db']->getVillagesID($value['id'])); FROM " . TB_PREFIX . "users u LEFT JOIN " . TB_PREFIX . "vdata v ON v.owner = u.id LEFT JOIN " . TB_PREFIX . "alidata a ON a.id = u.alliance
//$value['totalpop'] = $GLOBALS['db']->getVSumField($value['id'],"pop"); WHERE u.tribe = $race
//$value['aname'] = $GLOBALS['db']->getAllianceName($value['alliance']); AND u.access < " . (INCLUDE_ADMIN ? "10" : "8") . " AND u.id > 5 GROUP BY u.id ORDER BY totalpop DESC, totalvillages DESC, userid DESC";
$q = "SELECT " . TB_PREFIX . "users.id userid, " . TB_PREFIX . "users.tribe tribe, " . TB_PREFIX . "users.username username," . TB_PREFIX . "users.alliance alliance, (
SELECT SUM( " . TB_PREFIX . "vdata.pop )
FROM " . TB_PREFIX . "vdata
WHERE " . TB_PREFIX . "vdata.owner = userid
)totalpop, (
SELECT COUNT( " . TB_PREFIX . "vdata.wref )
FROM " . TB_PREFIX . "vdata
WHERE " . TB_PREFIX . "vdata.owner = userid AND type != 99
)totalvillages, (
SELECT " . TB_PREFIX . "alidata.tag
FROM " . TB_PREFIX . "alidata, " . TB_PREFIX . "users
WHERE " . TB_PREFIX . "alidata.id = " . TB_PREFIX . "users.alliance
AND " . TB_PREFIX . "users.id = userid
)allitag
FROM " . TB_PREFIX . "users
WHERE " . TB_PREFIX . "users.tribe = $race AND " . TB_PREFIX . "users.access < " . (INCLUDE_ADMIN ? "10" : "8") . "
AND " . TB_PREFIX . "users.id > 5
ORDER BY totalpop DESC, totalvillages DESC, userid DESC";
$result = (mysqli_query($database->dblink,$q)); $result = (mysqli_query($database->dblink,$q));
$datas = [];
while($row = mysqli_fetch_assoc($result)) { while($row = mysqli_fetch_assoc($result)) {
$datas[] = $row; $datas[] = $row;
} }
if(!empty($datas)) {
if(mysqli_num_rows($result)) {
foreach($datas as $result) { foreach($datas as $result) {
$value['userid'] = $result['userid']; $value['userid'] = $result['userid'];
$value['username'] = $result['username']; $value['username'] = $result['username'];
$value['alliance'] = $result['alliance']; $value['alliance'] = $result['alliance'];
$value['aname'] = $result['allitag']; $value['aname'] = $result['allitag'];
$value['totalpop'] = $result['totalpop']; $value['totalpop'] = $result['totalpop'];
$value['totalvillage'] = $result['totalvillages']; $value['totalvillage'] = $result['totalvillages'];
//SELECT (SELECT SUM(".TB_PREFIX."vdata.pop) FROM ".TB_PREFIX."vdata WHERE ".TB_PREFIX."vdata.owner = 2) totalpop, (SELECT COUNT(".TB_PREFIX."vdata.wref) FROM ".TB_PREFIX."vdata WHERE ".TB_PREFIX."vdata.owner = 2) totalvillages, (SELECT ".TB_PREFIX."alidata.tag FROM ".TB_PREFIX."alidata WHERE ".TB_PREFIX."alidata.id = ".TB_PREFIX."users.alliance AND ".TB_PREFIX."users.id = 2); $holder[] = $value;
array_push($holder, $value);
} }
} else { } else {
$value['userid'] = 0; $value['userid'] = 0;
@@ -350,9 +288,8 @@
$value['aname'] = ""; $value['aname'] = "";
$value['totalpop'] = ""; $value['totalpop'] = "";
$value['totalvillage'] = ""; $value['totalvillage'] = "";
array_push($holder, $value); $holder[] = $value;
} }
//$holder = $multisort->sorte($holder, "'totalvillage'", false, 2, "'totalpop'", false, 2);
$newholder = array("pad"); $newholder = array("pad");
foreach($holder as $key) { foreach($holder as $key) {
array_push($newholder, $key); array_push($newholder, $key);
@@ -362,31 +299,16 @@
public function procAttRankArray() { public function procAttRankArray() {
global $multisort, $database; global $multisort, $database;
//$array = $GLOBALS['db']->getRanking();
$holder = array(); $holder = array();
$q = "SELECT u.id AS userid, u.username, u.apall, COUNT(CASE WHEN v.type != 99 THEN v.wref END) AS totalvillages, COALESCE(SUM(v.pop),0) AS pop
//$value['totalvillage'] = count($GLOBALS['db']->getVillagesID($value['id'])); FROM " . TB_PREFIX . "users u LEFT JOIN " . TB_PREFIX . "vdata v ON v.owner = u.id
//$value['totalpop'] = $GLOBALS['db']->getVSumField($value['id'],"pop"); WHERE u.apall >= 0 AND u.access < " . (INCLUDE_ADMIN ? 10 : 8) . " AND u.tribe <= 3 AND u.id > 5
$q = "SELECT " . TB_PREFIX . "users.id userid, " . TB_PREFIX . "users.username username, " . TB_PREFIX . "users.apall, ( GROUP BY u.id ORDER BY u.apall DESC, pop DESC, u.id DESC";
SELECT COUNT( " . TB_PREFIX . "vdata.wref )
FROM " . TB_PREFIX . "vdata
WHERE " . TB_PREFIX . "vdata.owner = userid AND type != 99
)totalvillages, (
SELECT SUM( " . TB_PREFIX . "vdata.pop )
FROM " . TB_PREFIX . "vdata
WHERE " . TB_PREFIX . "vdata.owner = userid
)pop
FROM " . TB_PREFIX . "users
WHERE " . TB_PREFIX . "users.apall >=0 AND " . TB_PREFIX . "users.access < " . (INCLUDE_ADMIN ? "10" : "8") . " AND " . TB_PREFIX . "users.tribe <= 3
AND " . TB_PREFIX . "users.id > 5
ORDER BY " . TB_PREFIX . "users.apall DESC, pop DESC, userid DESC";
$result = mysqli_query($database->dblink,$q) or die(mysqli_error($database->dblink)); $result = mysqli_query($database->dblink,$q) or die(mysqli_error($database->dblink));
while($row = mysqli_Fetch_assoc($result)) { $datas = [];
while($row = mysqli_fetch_assoc($result)) {
$datas[] = $row; $datas[] = $row;
} }
foreach($datas as $key => $row) { foreach($datas as $key => $row) {
$value['userid'] = $row['userid']; $value['userid'] = $row['userid'];
$value['username'] = $row['username']; $value['username'] = $row['username'];
@@ -394,11 +316,8 @@
$value['id'] = $row['userid']; $value['id'] = $row['userid'];
$value['totalpop'] = $row['pop']; $value['totalpop'] = $row['pop'];
$value['apall'] = $row['apall']; $value['apall'] = $row['apall'];
array_push($holder, $value); $holder[] = $value;
printf("\n<!-- %s %s %s %s -->\n", $value['username'], $value['totalvillages'], $value['totalpop'], $value['apall']);
} }
//$holder = $multisort->sorte($holder, "'ap'", false, 2, "'totalvillages'", false, 2, "'ap'", false, 2);
$newholder = array("pad"); $newholder = array("pad");
foreach($holder as $key) { foreach($holder as $key) {
array_push($newholder, $key); array_push($newholder, $key);
@@ -408,29 +327,16 @@
public function procDefRankArray() { public function procDefRankArray() {
global $database; global $database;
//global $GLOBALS['db'], $multisort;
//$array = $GLOBALS['db']->getRanking();
$holder = array(); $holder = array();
$q = "SELECT " . TB_PREFIX . "users.id userid, " . TB_PREFIX . "users.username username, " . TB_PREFIX . "users.dpall, ( $q = "SELECT u.id AS userid, u.username, u.dpall, COUNT(CASE WHEN v.type != 99 THEN v.wref END) AS totalvillages, COALESCE(SUM(v.pop),0) AS pop
FROM " . TB_PREFIX . "users u LEFT JOIN " . TB_PREFIX . "vdata v ON v.owner = u.id
SELECT COUNT( " . TB_PREFIX . "vdata.wref ) WHERE u.dpall >= 0 AND u.access < " . (INCLUDE_ADMIN ? 10 : 8) . " AND u.tribe <= 3 AND u.id > 5
FROM " . TB_PREFIX . "vdata GROUP BY u.id ORDER BY u.dpall DESC, pop DESC, u.id DESC";
WHERE " . TB_PREFIX . "vdata.owner = userid AND type != 99
)totalvillages, (
SELECT SUM( " . TB_PREFIX . "vdata.pop )
FROM " . TB_PREFIX . "vdata
WHERE " . TB_PREFIX . "vdata.owner = userid
)pop
FROM " . TB_PREFIX . "users
WHERE " . TB_PREFIX . "users.dpall >=0 AND " . TB_PREFIX . "users.access < " . (INCLUDE_ADMIN ? "10" : "8") . " AND " . TB_PREFIX . "users.tribe <= 3
AND " . TB_PREFIX . "users.id > 5
ORDER BY " . TB_PREFIX . "users.dpall DESC, pop DESC, userid DESC";
$result = mysqli_query($database->dblink,$q) or die(mysqli_error($database->dblink)); $result = mysqli_query($database->dblink,$q) or die(mysqli_error($database->dblink));
while($row = mysqli_Fetch_assoc($result)) { $datas = [];
while($row = mysqli_fetch_assoc($result)) {
$datas[] = $row; $datas[] = $row;
} }
foreach($datas as $key => $row) { foreach($datas as $key => $row) {
$value['userid'] = $row['userid']; $value['userid'] = $row['userid'];
$value['username'] = $row['username']; $value['username'] = $row['username'];
@@ -438,11 +344,8 @@
$value['id'] = $row['userid']; $value['id'] = $row['userid'];
$value['totalpop'] = $row['pop']; $value['totalpop'] = $row['pop'];
$value['dpall'] = $row['dpall']; $value['dpall'] = $row['dpall'];
array_push($holder, $value); $holder[] = $value;
} }
//$holder = $multisort->sorte($holder, "'dpall'", false, 2, "'totalvillage'", false, 2, "'dpall'", false, 2);
$newholder = array("pad"); $newholder = array("pad");
foreach($holder as $key) { foreach($holder as $key) {
array_push($newholder, $key); array_push($newholder, $key);
@@ -459,8 +362,7 @@
$value['x'] = $coor['x']; $value['x'] = $coor['x'];
$value['y'] = $coor['y']; $value['y'] = $coor['y'];
$value['user'] = $GLOBALS['db']->getUserField($value['owner'], "username", 0); $value['user'] = $GLOBALS['db']->getUserField($value['owner'], "username", 0);
$holder[] = $value;
array_push($holder, $value);
} }
$holder = $multisort->sorte($holder, "x", true, 2, "y", true, 2, "pop", false, 2); $holder = $multisort->sorte($holder, "x", true, 2, "y", true, 2, "pop", false, 2);
$newholder = array("pad"); $newholder = array("pad");
@@ -474,32 +376,27 @@
global $multisort, $database; global $multisort, $database;
$array = $GLOBALS['db']->getARanking(); $array = $GLOBALS['db']->getARanking();
$holder = array(); $holder = array();
foreach($array as $value) { foreach($array as $value) {
$memberlist = $GLOBALS['db']->getAllMember($value['id']); $memberlist = $GLOBALS['db']->getAllMember($value['id']);
$totalpop = 0; $totalpop = 0;
$memberIDs = []; $memberIDs = [];
foreach($memberlist as $member) { foreach($memberlist as $member) {
$memberIDs[] = $member['id']; $memberIDs[] = $member['id'];
} }
$data = $database->getVSumField($memberIDs,"pop"); $data = $database->getVSumField($memberIDs,"pop");
if (count($data)) { if (count($data)) {
foreach ($data as $row) { foreach ($data as $row) {
$totalpop += $row['Total']; $totalpop += $row['Total'];
} }
} }
$value['players'] = count($memberlist); $value['players'] = count($memberlist);
$value['totalpop'] = $totalpop; $value['totalpop'] = $totalpop;
if(!isset($value['avg'])) { if(!isset($value['avg'])) {
$value['avg'] = @round($totalpop / count($memberlist)); $value['avg'] = (count($memberlist) > 0) ? round($totalpop / count($memberlist)) : 0;
} else { } else {
$value['avg'] = 0; $value['avg'] = 0;
} }
$holder[] = $value;
array_push($holder, $value);
} }
$holder = $multisort->sorte($holder, "totalpop", false, 2); $holder = $multisort->sorte($holder, "totalpop", false, 2);
$newholder = array("pad"); $newholder = array("pad");
@@ -518,8 +415,7 @@
$value['level']; $value['level'];
$value['name']; $value['name'];
$value['uid']; $value['uid'];
$holder[] = $value;
array_push($holder, $value);
} }
$holder = $multisort->sorte($holder, "experience", false, 2); $holder = $multisort->sorte($holder, "experience", false, 2);
$newholder = array("pad"); $newholder = array("pad");
@@ -542,12 +438,11 @@
$value['players'] = count($memberlist); $value['players'] = count($memberlist);
$value['totalap'] = $totalap; $value['totalap'] = $totalap;
if($value['avg'] > 0) { if($value['avg'] > 0) {
$value['avg'] = round($totalap / count($memberlist)); $value['avg'] = ($totalap > 0 && count($memberlist) > 0) ? round($totalap / count($memberlist)) : 0;
} else { } else {
$value['avg'] = 0; $value['avg'] = 0;
} }
$holder[] = $value;
array_push($holder, $value);
} }
$holder = $multisort->sorte($holder, "Aap", false, 2); $holder = $multisort->sorte($holder, "Aap", false, 2);
$newholder = array("pad"); $newholder = array("pad");
@@ -570,12 +465,11 @@
$value['players'] = count($memberlist); $value['players'] = count($memberlist);
$value['totaldp'] = $totaldp; $value['totaldp'] = $totaldp;
if($value['avg'] > 0) { if($value['avg'] > 0) {
$value['avg'] = round($totalap / count($memberlist)); $value['avg'] = ($totaldp > 0 && count($memberlist) > 0) ? round($totaldp / count($memberlist)) : 0;
} else { } else {
$value['avg'] = 0; $value['avg'] = 0;
} }
$holder[] = $value;
array_push($holder, $value);
} }
$holder = $multisort->sorte($holder, "Adp", false, 2); $holder = $multisort->sorte($holder, "Adp", false, 2);
$newholder = array("pad"); $newholder = array("pad");
@@ -589,4 +483,4 @@
$ranking = new Ranking; $ranking = new Ranking;
?> ?>