Area.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  1. <?php
  2. /**
  3. * Area entity file.
  4. *
  5. * Creates the entity and makes it available.
  6. *
  7. * @category Entity
  8. */
  9. /*
  10. * Require entity dependencies if not present.
  11. */
  12. require_once(PATH::ENTITY . "Entity.php");
  13. /**
  14. * An area.
  15. *
  16. * Represents an object from the table 'area'.
  17. *
  18. * @category Entity
  19. */
  20. class Area extends Entity{
  21. private $id;
  22. private $type;
  23. private $name;
  24. /**
  25. * Constructor.
  26. *
  27. * Retrieves the area information from the database.
  28. *
  29. * @param int $id Area identifier.
  30. * @param int $type Area type.
  31. */
  32. public function __construct($id, $type){
  33. $this->id = $id;
  34. $this->type = $type;
  35. $statement = get_context()->get_db()->prepare("
  36. SELECT
  37. id,
  38. type,
  39. name
  40. FROM area
  41. WHERE
  42. id = :id AND
  43. type = :type
  44. ORDER BY type DESC;
  45. ");
  46. $statement->bindValue(':id', $id, SQLITE3_TEXT);
  47. $statement->bindValue(':type', $type, SQLITE3_TEXT);
  48. $r = $statement->execute()->fetchArray(SQLITE3_ASSOC);
  49. if ($r){
  50. $this->name = HTML::e($r["name"]);
  51. }
  52. elseif($this->id > 1000){
  53. $this->type = AREA_TYPE_ID::CAIROS_DUNGEON;
  54. $this->name = "Hall of Heroes";
  55. }
  56. else{
  57. $statement = get_context()->get_db()->prepare("
  58. SELECT name
  59. FROM area_type
  60. WHERE id = :type;
  61. ");
  62. $statement->bindValue(':type', $type, SQLITE3_TEXT);
  63. if ($r){
  64. $this->name = HTML::e($r["name"]);
  65. }
  66. }
  67. }
  68. /**
  69. * Retrieves the area identifier.
  70. *
  71. * @return int Area ID.
  72. */
  73. public function get_d(){
  74. return $this->id;
  75. }
  76. /**
  77. * Retrieves Area type identifier.
  78. *
  79. * @return int Area type ID
  80. */
  81. public function get_type(){
  82. return $this->type;
  83. }
  84. /**
  85. * Retrieves the area name.
  86. *
  87. * @return string The area name.
  88. */
  89. public function get_name(){
  90. return $this->name;
  91. }
  92. /**
  93. * Gets the URL to the area image.
  94. *
  95. * @param string $stage Stage number, for a more accurate image in Dimension Hole.
  96. * @return string Image URL, or a fixed unknown image.
  97. */
  98. public function get_image($stage = null){
  99. if ($this->id > 10000){
  100. // Hall of Heroes
  101. return APPLICATION::img("AREA", "HOH");
  102. }
  103. elseif ($this->type == AREA_TYPE_ID::RIFT_RAID){
  104. return APPLICATION::img("UNIT", 44007);
  105. }
  106. elseif ($this->type == AREA_TYPE_ID::ARENA){
  107. return APPLICATION::img("AREA", "ARENA");
  108. }
  109. elseif ($this->type == AREA_TYPE_ID::DIMENSIONAL_RIFT){
  110. return APPLICATION::img("CURRENCY", "darkportalenergy");
  111. }
  112. elseif (
  113. $this->type == AREA_TYPE_ID::SCENARIO ||
  114. $this->type == AREA_TYPE_ID::GUILD_WAR ||
  115. $this->type == AREA_TYPE_ID::GUILD_SIEGE ||
  116. $this->type == AREA_TYPE_ID::WORLD_BOSS ||
  117. $this->type == AREA_TYPE_ID::DIMENSIONAL_RIFT
  118. ){
  119. return APPLICATION::img("AREA", $this->id);
  120. }
  121. elseif ($this->type == AREA_TYPE_ID::CAIROS_DUNGEON && APPLICATION::valid_id("DUNGEON_ID", $this->id)){
  122. switch ($this->id){
  123. case DUNGEON_ID::GIANTS_KEEP:
  124. return APPLICATION::img("UNIT", 60201);
  125. break;
  126. case DUNGEON_ID::DRAGONS_LAIR:
  127. return APPLICATION::img("UNIT", 60302);
  128. break;
  129. case DUNGEON_ID::NECROPOLIS:
  130. return APPLICATION::img("UNIT", 62105);
  131. break;
  132. case DUNGEON_ID::STEEL_FORTRESS:
  133. return APPLICATION::img("UNIT", 62403);
  134. break;
  135. case DUNGEON_ID::PUNISHERS_CRYPT:
  136. return APPLICATION::img("UNIT", 62403);
  137. break;
  138. case DUNGEON_ID::HALL_OF_WATER:
  139. return APPLICATION::img("UNIT", 60101);
  140. break;
  141. case DUNGEON_ID::HALL_OF_FIRE:
  142. return APPLICATION::img("UNIT", 60102);
  143. break;
  144. case DUNGEON_ID::HALL_OF_WIND:
  145. return APPLICATION::img("UNIT", 60103);
  146. break;
  147. case DUNGEON_ID::HALL_OF_LIGHT:
  148. return APPLICATION::img("UNIT", 60104);
  149. break;
  150. case DUNGEON_ID::HALL_OF_DARK:
  151. return APPLICATION::img("UNIT", 60105);
  152. break;
  153. case DUNGEON_ID::HALL_OF_MAGIC:
  154. return APPLICATION::img("UNIT", 62004);
  155. break;
  156. default:
  157. return APPLICATION::img("AREA", $this->id);
  158. }
  159. }
  160. elseif ($this->type == AREA_TYPE_ID::RIFT_DUNGEON && APPLICATION::valid_id("ELEMENTAL_RIFT_DUNGEON_ID", $this->id)){
  161. switch ($this->id){
  162. case ELEMENTAL_RIFT_DUNGEON_ID::ICE_BEAST:
  163. return APPLICATION::img("UNIT", 43001);
  164. break;
  165. case ELEMENTAL_RIFT_DUNGEON_ID::FIRE_BEAST:
  166. return APPLICATION::img("UNIT", 43002);
  167. break;
  168. case ELEMENTAL_RIFT_DUNGEON_ID::WIND_BEAST:
  169. return APPLICATION::img("UNIT", 43003);
  170. break;
  171. case ELEMENTAL_RIFT_DUNGEON_ID::LIGHT_BEAST:
  172. return APPLICATION::img("UNIT", 43004);
  173. break;
  174. case ELEMENTAL_RIFT_DUNGEON_ID::DARK_BEAST:
  175. return APPLICATION::img("UNIT", 43005);
  176. break;
  177. default:
  178. return APPLICATION::img("AREA", $this->id);
  179. break;
  180. }
  181. }
  182. elseif ($this->type == AREA_TYPE_ID::DIMENSIONAL_HOLE){
  183. switch ($this->id){
  184. case DUNGEON_ID::FOREST_OF_ROARING_BEASTS:
  185. return APPLICATION::img("UNIT", 47002);
  186. break;
  187. case DUNGEON_ID::SANCTUARY_OF_DREAMING_FAIRIES:
  188. return APPLICATION::img("UNIT", 47001);
  189. break;
  190. case DUNGEON_ID::CLIFF_OF_TOUGH_BEASTS_MEN:
  191. return APPLICATION::img("UNIT", 47002);
  192. break;
  193. case DUNGEON_ID::KARZHAN_REMAINS_WARBEAR:
  194. switch ($stage){
  195. case 1:
  196. return APPLICATION::img("UNIT", 10734);
  197. break;
  198. case 2:
  199. return APPLICATION::img("UNIT", 10733);
  200. break;
  201. case 3:
  202. return APPLICATION::img("UNIT", 10731);
  203. break;
  204. case 4:
  205. return APPLICATION::img("UNIT", 10735);
  206. break;
  207. case 5:
  208. return APPLICATION::img("UNIT", 10732);
  209. break;
  210. default:
  211. return APPLICATION::img("AREA", $this->id);
  212. break;
  213. }
  214. break;
  215. case DUNGEON_ID::KARZHAN_REMAINS_INUGAMI:
  216. switch ($stage){
  217. case 1:
  218. return APPLICATION::img("UNIT", 11031);
  219. break;
  220. case 2:
  221. return APPLICATION::img("UNIT", 11033);
  222. break;
  223. case 3:
  224. return APPLICATION::img("UNIT", 11032);
  225. break;
  226. case 4:
  227. return APPLICATION::img("UNIT", 11034);
  228. break;
  229. case 5:
  230. return APPLICATION::img("UNIT", 11035);
  231. break;
  232. default:
  233. return APPLICATION::img("AREA", $this->id);
  234. break;
  235. }
  236. break;
  237. case DUNGEON_ID::ELLUNIA_REMAINS_FAIRY:
  238. switch ($stage){
  239. case 1:
  240. return APPLICATION::img("UNIT", 10132);
  241. break;
  242. case 2:
  243. return APPLICATION::img("UNIT", 10134);
  244. break;
  245. case 3:
  246. return APPLICATION::img("UNIT", 10131);
  247. break;
  248. case 4:
  249. return APPLICATION::img("UNIT", 10133);
  250. break;
  251. case 5:
  252. return APPLICATION::img("UNIT", 10134);
  253. break;
  254. default:
  255. return APPLICATION::img("AREA", $this->id);
  256. break;
  257. }
  258. break;
  259. case DUNGEON_ID::ELLUNIA_REMAINS_PIXIE:
  260. switch ($stage){
  261. case 1:
  262. return APPLICATION::img("UNIT", 10334);
  263. break;
  264. case 2:
  265. return APPLICATION::img("UNIT", 10332);
  266. break;
  267. case 3:
  268. return APPLICATION::img("UNIT", 10335);
  269. break;
  270. case 4:
  271. return APPLICATION::img("UNIT", 10333);
  272. break;
  273. case 5:
  274. return APPLICATION::img("UNIT", 10331);
  275. break;
  276. default:
  277. return APPLICATION::img("AREA", $this->id);
  278. break;
  279. }
  280. break;
  281. case DUNGEON_ID::LUMEL_REMAINS_WEREWOLF:
  282. switch ($stage){
  283. case 1:
  284. return APPLICATION::img("UNIT", 14035);
  285. break;
  286. case 2:
  287. return APPLICATION::img("UNIT", 14033);
  288. break;
  289. case 3:
  290. return APPLICATION::img("UNIT", 14031);
  291. break;
  292. case 4:
  293. return APPLICATION::img("UNIT", 14034);
  294. break;
  295. case 5:
  296. return APPLICATION::img("UNIT", 14032);
  297. break;
  298. default:
  299. return APPLICATION::img("AREA", $this->id);
  300. break;
  301. }
  302. break;
  303. case DUNGEON_ID::LUMEL_REMAINS_MARTIAL_CAT:
  304. switch ($stage){
  305. case 1:
  306. return APPLICATION::img("UNIT", 15032);
  307. break;
  308. case 2:
  309. return APPLICATION::img("UNIT", 15034);
  310. break;
  311. case 3:
  312. return APPLICATION::img("UNIT", 15031);
  313. break;
  314. case 4:
  315. return APPLICATION::img("UNIT", 15035);
  316. break;
  317. case 5:
  318. return APPLICATION::img("UNIT", 15033);
  319. break;
  320. default:
  321. return APPLICATION::img("AREA", $this->id);
  322. break;
  323. }
  324. break;
  325. default:
  326. return APPLICATION::img("AREA", $this->id);
  327. break;
  328. }
  329. }
  330. elseif ($this->type == AREA_TYPE_ID::TARTARUS_LABYRINTH){
  331. switch ($stage){
  332. case LABYRINTH_STAGES_ID::TARTARUS:
  333. return APPLICATION::img("UNIT", 46001);
  334. break;
  335. case LABYRINTH_STAGES_ID::LEOS:
  336. return APPLICATION::img("UNIT", 46101);
  337. break;
  338. case LABYRINTH_STAGES_ID::KOTTOS:
  339. return APPLICATION::img("UNIT", 46102);
  340. break;
  341. case LABYRINTH_STAGES_ID::AQUILES:
  342. return APPLICATION::img("UNIT", 46103);
  343. break;
  344. default:
  345. return APPLICATION::img("AREA", $this->id);
  346. }
  347. }
  348. elseif ($this->type == AREA_TYPE_ID::TRIAL_OF_ASCENSION){
  349. return APPLICATION::img("AREA", "TRIAL_OF_ASCENSION");
  350. }
  351. else{
  352. return APPLICATION::img("AREA", $this->id);
  353. }
  354. }
  355. }
  356. ?>