| @@ 509-559 (lines=51) @@ | ||
| 506 | // Trainers |
|
| 507 | ////////////// |
|
| 508 | ||
| 509 | public function getTrainers($trainer_name, $team, $page, $rankingNumber) { |
|
| 510 | $ranking = $this->getTrainerLevelRanking(); |
|
| 511 | $where = ""; |
|
| 512 | if (!empty(self::$config->system->trainer_blacklist)) { |
|
| 513 | $where .= " AND gd.owner_name NOT IN ('".implode("','", self::$config->system->trainer_blacklist)."')"; |
|
| 514 | } |
|
| 515 | if ($trainer_name != "") { |
|
| 516 | $where = " AND gd.owner_name LIKE '%".$trainer_name."%'"; |
|
| 517 | } |
|
| 518 | if ($team != 0) { |
|
| 519 | $where .= ($where == "" ? " HAVING" : " AND")." team = ".$team; |
|
| 520 | } |
|
| 521 | switch ($rankingNumber) { |
|
| 522 | case 1: |
|
| 523 | $order = " ORDER BY active DESC, level DESC"; |
|
| 524 | break; |
|
| 525 | case 2: |
|
| 526 | $order = " ORDER BY maxCp DESC, level DESC"; |
|
| 527 | break; |
|
| 528 | default: |
|
| 529 | $order = " ORDER BY level DESC, active DESC"; |
|
| 530 | } |
|
| 531 | $order .= ", last_seen DESC, name "; |
|
| 532 | $limit = " LIMIT 10 OFFSET ".($page * 10); |
|
| 533 | $req = "SELECT gd.owner_name AS name, MAX(owner_level) AS level, MAX(cp) AS maxCp, MAX(active) AS active, MAX(team) AS team, TO_TIMESTAMP(MAX(last_modified)) as last_seen |
|
| 534 | FROM gym_defenders gd |
|
| 535 | LEFT JOIN ( |
|
| 536 | SELECT owner_name, COUNT(*) as active |
|
| 537 | FROM gym_defenders gd2 |
|
| 538 | WHERE fort_id IS NOT NULL |
|
| 539 | GROUP BY owner_name |
|
| 540 | ) active ON active.owner_name = gd.owner_name |
|
| 541 | WHERE level IS NOT NULL " . $where . " |
|
| 542 | GROUP BY gd.owner_name" . $order . $limit; |
|
| 543 | $result = $this->mysqli->query($req); |
|
| 544 | $trainers = array(); |
|
| 545 | while ($data = $result->fetch_object()) { |
|
| 546 | $data->last_seen = date("Y-m-d", strtotime($data->last_seen)); |
|
| 547 | if (is_null($data->active)) { |
|
| 548 | $data->active = 0; |
|
| 549 | } |
|
| 550 | $trainers[$data->name] = $data; |
|
| 551 | ||
| 552 | $pokemon = array_merge($this->getActivePokemon($data->name), $this->getInactivePokemon($data->name)); |
|
| 553 | ||
| 554 | $trainers[$data->name]->gyms = $data->active; |
|
| 555 | $trainers[$data->name]->pokemons = $pokemon; |
|
| 556 | $trainers[$data->name]->rank = $ranking[$data->level]; |
|
| 557 | } |
|
| 558 | return $trainers; |
|
| 559 | } |
|
| 560 | ||
| 561 | public function getTrainerLevelRanking() { |
|
| 562 | $exclue = ""; |
|
| @@ 504-554 (lines=51) @@ | ||
| 501 | // Trainers |
|
| 502 | ////////////// |
|
| 503 | ||
| 504 | public function getTrainers($trainer_name, $team, $page, $rankingNumber) { |
|
| 505 | $ranking = $this->getTrainerLevelRanking(); |
|
| 506 | $where = ""; |
|
| 507 | if (!empty(self::$config->system->trainer_blacklist)) { |
|
| 508 | $where .= " AND gd.owner_name NOT IN ('".implode("','", self::$config->system->trainer_blacklist)."')"; |
|
| 509 | } |
|
| 510 | if ($trainer_name != "") { |
|
| 511 | $where = " AND gd.owner_name LIKE '%".$trainer_name."%'"; |
|
| 512 | } |
|
| 513 | if ($team != 0) { |
|
| 514 | $where .= ($where == "" ? " HAVING" : " AND")." team = ".$team; |
|
| 515 | } |
|
| 516 | switch ($rankingNumber) { |
|
| 517 | case 1: |
|
| 518 | $order = " ORDER BY active DESC, level DESC"; |
|
| 519 | break; |
|
| 520 | case 2: |
|
| 521 | $order = " ORDER BY maxCp DESC, level DESC"; |
|
| 522 | break; |
|
| 523 | default: |
|
| 524 | $order = " ORDER BY level DESC, active DESC"; |
|
| 525 | } |
|
| 526 | $order .= ", last_seen DESC, name "; |
|
| 527 | $limit = " LIMIT ".($page * 10).",10 "; |
|
| 528 | $req = "SELECT gd.owner_name AS name, MAX(owner_level) AS level, MAX(cp) AS maxCp, MAX(active) AS active, MAX(team) AS team, FROM_UNIXTIME(MAX(last_modified)) as last_seen |
|
| 529 | FROM gym_defenders gd |
|
| 530 | LEFT JOIN ( |
|
| 531 | SELECT owner_name, COUNT(*) as active |
|
| 532 | FROM gym_defenders gd2 |
|
| 533 | WHERE fort_id IS NOT NULL |
|
| 534 | GROUP BY owner_name |
|
| 535 | ) active ON active.owner_name = gd.owner_name |
|
| 536 | WHERE gd.owner_level IS NOT NULL " . $where . " |
|
| 537 | GROUP BY gd.owner_name" . $order . $limit; |
|
| 538 | $result = $this->mysqli->query($req); |
|
| 539 | $trainers = array(); |
|
| 540 | while ($data = $result->fetch_object()) { |
|
| 541 | $data->last_seen = date("Y-m-d", strtotime($data->last_seen)); |
|
| 542 | if (is_null($data->active)) { |
|
| 543 | $data->active = 0; |
|
| 544 | } |
|
| 545 | $trainers[$data->name] = $data; |
|
| 546 | ||
| 547 | $pokemon = array_merge($this->getActivePokemon($data->name), $this->getInactivePokemon($data->name)); |
|
| 548 | ||
| 549 | $trainers[$data->name]->gyms = $data->active; |
|
| 550 | $trainers[$data->name]->pokemons = $pokemon; |
|
| 551 | $trainers[$data->name]->rank = $ranking[$data->level]; |
|
| 552 | } |
|
| 553 | return $trainers; |
|
| 554 | } |
|
| 555 | ||
| 556 | public function getTrainerLevelRanking() { |
|
| 557 | $exclue = ""; |
|