Advertisement
Guest User

Untitled

a guest
Oct 6th, 2015
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. if(!defined('INITIALIZED'))
  3. exit;
  4.  
  5. class Highscores extends DatabaseList
  6. {
  7. const SKILL_FIST = 0;
  8. const SKILL_CLUB = 1;
  9. const SKILL_SWORD = 2;
  10. const SKILL_AXE = 3;
  11. const SKILL_DISTANCE = 4;
  12. const SKILL_SHIELD = 5;
  13. const SKILL_FISHING = 6;
  14. const SKILL__MAGLEVEL = 7;
  15. const SKILL__LEVEL = 8;
  16.  
  17. public $highscoreConfig;
  18. public $skillType;
  19. public $worldId;
  20. public $vocation = '';
  21.  
  22. public function __construct($type, $limit = 5, $page = 0, $worldId = 0, $vocation = '')
  23. {
  24. $this->highscoreConfig = Website::getWebsiteConfig();
  25. parent::__construct();
  26. $this->skillType = $type;
  27. $this->setLimit($limit);
  28. $this->setOffset($page * $limit);
  29. $this->worldId = $worldId;
  30. $this->vocation = $vocation;
  31. switch($type)
  32. {
  33. case self::SKILL_FIST;
  34. case self::SKILL_CLUB;
  35. case self::SKILL_SWORD;
  36. case self::SKILL_AXE;
  37. case self::SKILL_DISTANCE;
  38. case self::SKILL_SHIELD;
  39. case self::SKILL_FISHING;
  40. $this->loadSkill();
  41. break;
  42. case self::SKILL__MAGLEVEL;
  43. $this->loadMagic();
  44. break;
  45. case self::SKILL__LEVEL;
  46. $this->loadLevel();
  47. break;
  48. default;
  49. new Error_Critic('', __METHOD__ . '(), unknown type: ' . htmlspecialchars($type));
  50. break;
  51. }
  52. }
  53.  
  54. public function loadSkill()
  55. {
  56. $this->setClass('Highscore');
  57. $this->addOrder(new SQL_Order(new SQL_Field('value', 'player_skills'), SQL_Order::DESC));
  58. $this->addOrder(new SQL_Order(new SQL_Field('count', 'player_skills'), SQL_Order::DESC));
  59. $this->addExtraField(new SQL_Field('count', 'player_skills'));
  60. $this->addExtraField(new SQL_Field('value', 'player_skills'));
  61. $this->addExtraField(new SQL_Field('flag', 'accounts'));
  62. $filterPlayer = new SQL_Filter(new SQL_Field('id', 'players'), SQL_Filter::EQUAL, new SQL_Field('player_id', 'player_skills'));
  63. $filterSkill = new SQL_Filter(new SQL_Field('skillid', 'player_skills'), SQL_Filter::EQUAL, $this->skillType);
  64. $filter = new SQL_Filter($filterPlayer, SQL_Filter::CRITERIUM_AND, $filterSkill);
  65.  
  66. if($this->highscoreConfig->isSetKey('groups_hidden'))
  67. foreach($this->highscoreConfig->getValue('groups_hidden') as $_group_filter)
  68. $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('group_id', 'players'), SQL_Filter::NOT_EQUAL, $_group_filter), SQL_Filter::CRITERIUM_AND, $filter);
  69.  
  70. if($this->highscoreConfig->isSetKey('accounts_hidden'))
  71. foreach($this->highscoreConfig->getValue('accounts_hidden') as $_account_filter)
  72. $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('account_id', 'players'), SQL_Filter::NOT_EQUAL, $_account_filter), SQL_Filter::CRITERIUM_AND, $filter);
  73.  
  74. if($this->vocation != '')
  75. $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('vocation', 'players'), SQL_Filter::EQUAL, $this->vocation), SQL_Filter::CRITERIUM_AND, $filter);
  76.  
  77. $filter = new SQL_Filter(new SQL_Filter(new SQL_Field('account_id', 'players'), SQL_Filter::EQUAL, new SQL_Field('id', 'accounts')), SQL_Filter::CRITERIUM_AND, $filter);
  78. $this->setFilter($filter);
  79. }
  80.  
  81. public function loadMagic()
  82. {
  83. $this->setClass('Highscore');
  84. $this->addOrder(new SQL_Order(new SQL_Field('maglevel'), SQL_Order::DESC));
  85. $this->addOrder(new SQL_Order(new SQL_Field('manaspent'), SQL_Order::DESC));
  86. $this->addExtraField(new SQL_Field('flag', 'accounts'));
  87. $filter = new SQL_Filter(new SQL_Field('account_id', 'players'), SQL_Filter::EQUAL, new SQL_Field('id', 'accounts'));
  88.  
  89. if($this->vocation != '')
  90. $filter = new SQL_Filter($filter, SQL_Filter::CRITERIUM_AND, new SQL_Filter(new SQL_Field('vocation', 'players'), SQL_Filter::EQUAL, $this->vocation));
  91.  
  92. if($this->highscoreConfig->isSetKey('groups_hidden'))
  93. foreach($this->highscoreConfig->getValue('groups_hidden') as $_group_filter)
  94. $filter = new SQL_Filter($filter, SQL_Filter::CRITERIUM_AND, new SQL_Filter(new SQL_Field('group_id', 'players'), SQL_Filter::NOT_EQUAL, $_group_filter));
  95.  
  96. if($this->highscoreConfig->isSetKey('accounts_hidden'))
  97. foreach($this->highscoreConfig->getValue('accounts_hidden') as $_account_filter)
  98. $filter = new SQL_Filter($filter, SQL_Filter::CRITERIUM_AND, new SQL_Filter(new SQL_Field('account_id', 'players'), SQL_Filter::NOT_EQUAL, $_account_filter));
  99.  
  100. $this->setFilter($filter);
  101. }
  102.  
  103. public function loadLevel()
  104. {
  105. $this->setClass('Highscore');
  106. $this->addOrder(new SQL_Order(new SQL_Field('experience'), SQL_Order::DESC));
  107. $this->addExtraField(new SQL_Field('flag', 'accounts'));
  108. $filter = new SQL_Filter(new SQL_Field('account_id', 'players'), SQL_Filter::EQUAL, new SQL_Field('id', 'accounts'));
  109.  
  110.  
  111. if($this->vocation != '') {
  112. if($this->vocation >= 1 and $this->vocation <= 4) {
  113. $arrayVocs = array(1, 2, 3, 4, 5, 6, 7, 8);
  114.  
  115. unset($arrayVocs[array_search($this->vocation,$arrayVocs)]);
  116. unset($arrayVocs[array_search($this->vocation+4,$arrayVocs)]);
  117.  
  118. foreach($arrayVocs as $_vocation_filter)
  119. $filter = new SQL_Filter($filter, SQL_Filter::CRITERIUM_AND, new SQL_Filter(new SQL_Field('vocation', 'players'), SQL_Filter::NOT_EQUAL, $_vocation_filter));
  120. } else {
  121. $filter = new SQL_Filter($filter, SQL_Filter::CRITERIUM_AND, new SQL_Filter(new SQL_Field('vocation', 'players'), SQL_Filter::EQUAL, $this->vocation));
  122. }
  123. }
  124.  
  125. if($this->highscoreConfig->isSetKey('groups_hidden'))
  126. foreach($this->highscoreConfig->getValue('groups_hidden') as $_group_filter)
  127. $filter = new SQL_Filter($filter, SQL_Filter::CRITERIUM_AND, new SQL_Filter(new SQL_Field('group_id', 'players'), SQL_Filter::NOT_EQUAL, $_group_filter));
  128.  
  129. if($this->highscoreConfig->isSetKey('accounts_hidden'))
  130. foreach($this->highscoreConfig->getValue('accounts_hidden') as $_account_filter)
  131. $filter = new SQL_Filter($filter, SQL_Filter::CRITERIUM_AND, new SQL_Filter(new SQL_Field('account_id', 'players'), SQL_Filter::NOT_EQUAL, $_account_filter));
  132.  
  133.  
  134.  
  135. $this->setFilter($filter);
  136. }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement