1<div class="well widget">
2 <div class="header">
3 <?= t('widget.powergamers.title') ?>
4 </div>
5 <div class="body">
6 <table>
7 <?php
8 $cache = new Cache('engine/cache/widget_powergamers');
9 if ($cache->hasExpired()) {
10 $players = db()->fetchAll("
11 SELECT
12 `h`.`player_id`,
13 `p`.`name`,
14 `p`.`level`,
15 CAST(`p`.`experience` as signed) - CAST(`f`.`experience` as signed) AS `diff_experience`
16 FROM (
17 SELECT
18 `i`.`player_id`,
19 IFNULL(`o`.`id`, `i`.`id`) AS `from_id`
20 FROM `player_history_skill` AS `i`
21 LEFT JOIN (
22 SELECT
23 `x`.`player_id`,
24 MAX(`x`.`id`) AS `id`
25 FROM `player_history_skill` AS `x`
26 WHERE
27 `x`.`lastlogout` < UNIX_TIMESTAMP() - 7 * 24 * 60 * 60
28 GROUP BY
29 `x`.`player_id`
30 ) AS `o`
31 ON `i`.`player_id` = `o`.`player_id`
32 WHERE
33 `i`.`lastlogout` >= UNIX_TIMESTAMP() - 7 * 24 * 60 * 60
34 GROUP BY
35 `i`.`player_id`
36 ) AS `h`
37 INNER JOIN `player_history_skill` AS `f`
38 ON `h`.`from_id` = `f`.`id`
39 INNER JOIN `players` AS `p`
40 ON `h`.`player_id` = `p`.`id`
41 WHERE CAST(`p`.`experience` as signed) - CAST(`f`.`experience` as signed) > 0
42 ORDER BY CAST(`p`.`experience` as signed) - CAST(`f`.`experience` as signed) DESC
43 LIMIT 5
44 ");
45
46 $cache->setContent($players);
47 $cache->save();
48 } else {
49 $players = $cache->load();
50 }
51
52 if ($players) {
53 foreach($players as $count => $player) {
54 $nr = $count+1;
55 $kexp = $player['diff_experience'] / 1000;
56 $kexp = number_format($kexp, 0, '', ' ');
57 echo "<tr><td>{$nr}</td><td><a href='characterprofile.php?name={$player['name']}'>{$player['name']}</a> ({$player['level']}) <span style='float: right;font-size:14px;'>{$kexp} K exp</span></td></tr>";
58 }
59 }
60 ?>
61 </table>
62 </div>
63</div>
64