home.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570
  1. <?php
  2. /**
  3. * Home view.
  4. *
  5. * Contains the view layout and some code to present the data.
  6. *
  7. * @author Iñigo Valentin <i@inigovalentin.com>
  8. * @license https://www.gnu.org/licenses/gpl-3.0.en.html GNU General Public License V3
  9. * @package SWDB
  10. * @category View
  11. * @property Home_Page $page The page model.
  12. * @var Home_Page $page The page model.
  13. */
  14. ?>
  15. <!DOCTYPE html>
  16. <html lang='en'>
  17. <head>
  18. <meta content='text/html; charset=utf-8' http-equiv='content-type'/>
  19. <meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1'/>
  20. <title><?=$page->get_title()?></title>
  21. <link rel='shortcut icon' href='<?=$page->get_favicon()?>'/>
  22. <!-- CSS files -->
  23. <link rel='stylesheet' type='text/css' href='<?=URL::CSS?>ui.css'/>
  24. <?php
  25. if (get_context()->get_game_mode() == GAME_MODE_ID::RTA){
  26. ?>
  27. <link rel='stylesheet' type='text/css' href='<?=URL::CSS?>ui-rta.css'/>
  28. <?php
  29. }
  30. ?>
  31. <link rel='stylesheet' type='text/css' href='<?=URL::CSS?>home.css'/>
  32. <!-- Meta tags -->
  33. <link rel='canonical' href='<?=$page->get_canonical()?>'/>
  34. <link rel='author' href='<?=$page->get_author()?>'/>
  35. <link rel='publisher' href='<?=$page->get_author()?>'/>
  36. <meta name='description' content='<?=$page->get_description()?>'/>
  37. <meta property='og:title' content='<?=$page->get_title()?>'/>
  38. <meta property='og:url' content='<?=$page->get_canonical()?>'/>
  39. <meta property='og:description' content='<?=$page->get_description()?>'/>
  40. <meta property='og:image' content='<?=$page->get_icon()?>'/>
  41. <meta property='og:site_name' content='<?=$page->get_name()?>?>'/>
  42. <meta property='og:type' content='website'/>
  43. <meta property='og:locale' content='en'/>
  44. <meta name='twitter:card' content='summary'/>
  45. <meta name='twitter:title' content='<?=$page->get_title()?>'/>
  46. <meta name='twitter:description' content='<?=$page->get_description()?>'/>
  47. <meta name='twitter:image' content='<?=$page->get_icon()?>'/>
  48. <meta name='twitter:url' content='<?=$page->get_canonical()?>'/>
  49. <meta name='robots' content='index follow'/>
  50. </head>
  51. <body>
  52. <?php
  53. include __DIR__ . "/inc/header.php";
  54. ?>
  55. <aside>
  56. <h2>
  57. <?=get_context()->get_player()->get_name()?>
  58. </h2>
  59. <p>
  60. <?=get_context()->get_player()->get_name()?>'s profile
  61. </p>
  62. <table id='profile'>
  63. <tr>
  64. <td class='label'>
  65. Lv.
  66. </td>
  67. <td class='value'>
  68. <?=get_context()->get_player()->get_level()?>
  69. </td>
  70. </tr>
  71. <tr>
  72. <td class='label'>
  73. Exp.
  74. </td>
  75. <td class='value'>
  76. <?=get_context()->get_player()->get_experience()?>
  77. </td>
  78. </tr>
  79. <tr>
  80. <td class='label'>
  81. Country
  82. </td>
  83. <td class='value'>
  84. <?=get_context()->get_player()->get_country()?>
  85. </td>
  86. </tr>
  87. <tr>
  88. <td class='label'>
  89. Since
  90. </td>
  91. <td class='value'>
  92. <?=get_context()->get_player()->get_joined('Y-m-d')?>
  93. </td>
  94. </tr>
  95. <tr>
  96. <td class='label'>
  97. Days
  98. </td>
  99. <td class='value'>
  100. <?=round((time() - get_context()->get_player()->get_joined('U')) / (60 * 60 * 24))?>
  101. </td>
  102. </tr>
  103. </table>
  104. </aside>
  105. <main>
  106. <section class='content'>
  107. <h2>
  108. <span>
  109. Summoners War DataBase
  110. </span>
  111. </h2>
  112. <article id='profile'>
  113. <div class='panel' id='panel_left'>
  114. <div id='placements' class='profile_section'>
  115. <h4>
  116. Placements
  117. </h4>
  118. <div id='placements_rep'>
  119. <h5>
  120. Rep monster:
  121. </h5>
  122. <div class='monster_panel'>
  123. <?=HTML::unit_panel(get_context()->get_player()->get_rep())?>
  124. </div> <!-- .monster_panel -->
  125. </div>
  126. <div id='placements_arena'>
  127. <h5>
  128. Arena defense:
  129. </h5>
  130. <?php
  131. $first = true;
  132. foreach (get_context()->get_player()->get_arena_defense() as $defense){
  133. ?>
  134. <div class='monster_panel'>
  135. <?=HTML::unit_panel($defense)?>
  136. </div>
  137. <?php
  138. if (
  139. $first &&
  140. null != $defense->get_monster()->get_leader_skill() &&
  141. (
  142. $defense->get_monster()->get_leader_skill()->get_area() == EFFECT_AREA_ID::GENERAL ||
  143. $defense->get_monster()->get_leader_skill()->get_area() == EFFECT_AREA_ID::ARENA
  144. )
  145. ){
  146. ?>
  147. <div class='skill'>
  148. <img class='skill_img' title='<?=$defense->get_monster()->get_leader_skill()->get_description()?>' src='<?=$defense->get_monster()->get_leader_skill()->get_image()?>'/>
  149. </div>
  150. <?php
  151. }
  152. $first = false;
  153. }
  154. ?>
  155. </div>
  156. <div id='placements_gw'>
  157. <h5>
  158. Guild War defense:
  159. </h5>
  160. <?php
  161. $first = true;
  162. // TODO: Watch if null
  163. foreach (get_context()->get_player()->get_gw_defense()[0] as $defense){
  164. ?>
  165. <div class='monster_panel'>
  166. <?=HTML::unit_panel($defense)?>
  167. </div>
  168. <?php
  169. if (
  170. $first &&
  171. null != $defense->get_monster()->get_leader_skill() &&
  172. (
  173. $defense->get_monster()->get_leader_skill()->get_area() == EFFECT_AREA_ID::GENERAL ||
  174. $defense->get_monster()->get_leader_skill()->get_area() == EFFECT_AREA_ID::GUILD
  175. )
  176. ){
  177. ?>
  178. <div class='skill'>
  179. <img class='skill_img' title='<?=$defense->get_monster()->get_leader_skill()->get_description()?>' src='<?=$defense->get_monster()->get_leader_skill()->get_image()?>'/>
  180. </div>
  181. <?php
  182. }
  183. $first = false;
  184. }
  185. ?>
  186. <hr/>
  187. <?php
  188. $first = true;
  189. // TODO: Watch if null
  190. foreach (get_context()->get_player()->get_gw_defense()[1] as $defense){
  191. ?>
  192. <div class='monster_panel'>
  193. <?=HTML::unit_panel($defense)?>
  194. </div>
  195. <?php
  196. // TODO: Guild content, not arena.
  197. if (
  198. $first &&
  199. null != $defense->get_monster()->get_leader_skill() &&
  200. (
  201. $defense->get_monster()->get_leader_skill()->get_area() == EFFECT_AREA_ID::GENERAL ||
  202. $defense->get_monster()->get_leader_skill()->get_area() == EFFECT_AREA_ID::GUILD
  203. )
  204. ){
  205. ?>
  206. <div class='skill'>
  207. <img class='skill_img' title='<?=$defense->get_monster()->get_leader_skill()->get_description()?>' src='<?=$defense->get_monster()->get_leader_skill()->get_image()?>'/>
  208. </div>
  209. <?php
  210. }
  211. $first = false;
  212. }
  213. ?>
  214. </div>
  215. </div>
  216. <div id='building' class='profile_section'>
  217. <h4>
  218. Buildings
  219. </h4>
  220. <?php
  221. // Buildings
  222. $half = sizeof(get_context()->get_player()->get_buildings()) / 2;
  223. $i = 0;
  224. foreach (get_context()->get_player()->get_buildings() as $building){
  225. if ($i == $half){
  226. ?>
  227. <br class='desktop'/>
  228. <?php
  229. }
  230. ?>
  231. <?=HTML::building_panel($building)?>
  232. <?php
  233. $i ++;
  234. }
  235. ?>
  236. <br/>
  237. <?php
  238. // Decorations
  239. $ $half = sizeof(get_context()->get_player()->get_decorations()) / 2;
  240. $i = 0;
  241. foreach (get_context()->get_player()->get_decorations() as $decoration){
  242. if ($i == $half){
  243. ?>
  244. <br class='desktop'/>
  245. <?php
  246. }
  247. ?>
  248. <?=HTML::building_panel($decoration)?>
  249. <?php
  250. $i ++;
  251. }
  252. ?>
  253. </div>
  254. <div class='inventory profile_section' id='inventory'>
  255. <h4>
  256. Inventory
  257. </h4>
  258. <ul>
  259. <li>
  260. <img title='Energy' src='<?=URL::IMG["CURRENCY"]?>energy.png'/>
  261. <?=get_context()->get_player()->get_currencies()["energy"]?> / <?=get_context()->get_player()->get_currencies()["energy_max"]?>
  262. </li>
  263. <li>
  264. <img title='Arena Invitations' src='<?=URL::IMG["CURRENCY"]?>arenaenergy.png'/>
  265. <?=get_context()->get_player()->get_currencies()["arena_energy"]?> / 10
  266. </li>
  267. <li>
  268. <img title='Dimensional Energy' src='<?=URL::IMG["CURRENCY"]?>dimensionenergy.png'/>
  269. <?=get_context()->get_player()->get_currencies()["dimension_energy"]?> / 10
  270. </li>
  271. <li>
  272. <img title='Dimensional Crystal' src='<?=URL::IMG["CURRENCY"]?>darkportalenergy.png'/>
  273. <?=get_context()->get_player()->get_currencies()["darkportal_energy"]?> / 10
  274. </li>
  275. <li>
  276. <img title='Mana' src='<?=URL::IMG["CURRENCY"]?>mana.png'/>
  277. <?=get_context()->get_player()->get_currencies()["mana"]?>
  278. </li>
  279. <li>
  280. <img title='Crystal' src='<?=URL::IMG["CURRENCY"]?>crystal.png'/>
  281. <?=get_context()->get_player()->get_currencies()["crystal"]?>
  282. </li>
  283. <li>
  284. <img title='Social Points' src='<?=URL::IMG["CURRENCY"]?>socialpoint.png'/>
  285. <?=get_context()->get_player()->get_currencies()["social_point"]?>
  286. </li>
  287. <li>
  288. <img title='Honor Points' src='<?=URL::IMG["CURRENCY"]?>honor.png'/>
  289. <?=get_context()->get_player()->get_currencies()["honor_point"]?>
  290. </li>
  291. <li>
  292. <img title='Guild Points' src='<?=URL::IMG["CURRENCY"]?>guildpoint.png'/>
  293. <?=get_context()->get_player()->get_currencies()["guild_point"]?>
  294. </li>
  295. <li>
  296. <img title='Honor Medals' src='<?=URL::IMG["CURRENCY"]?>badge.png'/>
  297. <?=get_context()->get_player()->get_currencies()["honor_medal"]?>
  298. </li>
  299. <li>
  300. <img src='<?=URL::IMG["CURRENCY"]?>mark.png'/>
  301. <?=get_context()->get_player()->get_currencies()["honor_mark"]?>
  302. </li>
  303. <li>
  304. <img title='Ancient Coins' src='<?=URL::IMG["CURRENCY"]?>ancientcoin.png'/>
  305. <?=get_context()->get_player()->get_currencies()["event_coin"]?>
  306. </li>
  307. <li>
  308. <img title='Ancient Crystal' src='<?=URL::IMG["CURRENCY"]?>ancientstone.png'/>
  309. <?=get_context()->get_player()->get_currencies()["ancient_stone"]?>
  310. </li>
  311. <li>
  312. <img title='Shapeshifting Stones' src='<?=URL::IMG["CURRENCY"]?>costumestone.png'/>
  313. <?=get_context()->get_player()->get_currencies()["costume_point"]?>
  314. </li>
  315. </ul>
  316. <?php
  317. // Scrolls
  318. $half = sizeof(get_context()->get_player()->get_scrolls()) / 2;
  319. $i = 0;
  320. foreach (get_context()->get_player()->get_scrolls() as $item){
  321. if ($half > 6 && $i == $half){
  322. ?>
  323. <br class='desktop'/>
  324. <?php
  325. }
  326. ?>
  327. <?=HTML::item_panel($item)?>
  328. <?php
  329. $i ++;
  330. }
  331. ?>
  332. <br/>
  333. <?php
  334. // Rune craft materials
  335. $prev = 0;
  336. foreach (get_context()->get_player()->get_rune_craft_materials() as $item){
  337. ?>
  338. <?=HTML::item_panel($item)?>
  339. <?php
  340. $prev = $item->get_id();
  341. }
  342. ?>
  343. <br/>
  344. <?php
  345. // Other craft materials
  346. $prev = 0;
  347. foreach (get_context()->get_player()->get_craft_materials() as $item){
  348. if ($prev != 0 && $prev < 5000 && $item->get_id() > 5000){
  349. ?>
  350. <br class='desktop'/>
  351. <?php
  352. }
  353. ?>
  354. <?=HTML::item_panel($item)?>
  355. <?php
  356. $prev = $item->get_id();
  357. }
  358. ?>
  359. <br/>
  360. <?php
  361. // Essences
  362. $prev = "";
  363. $i = 0;
  364. foreach (get_context()->get_player()->get_essences() as $item){
  365. //if ($prev != "" && $prev != preg_split('/\s+/', $item->name)[2]){
  366. if ($i > 0 && $i % 6 == 0){
  367. ?>
  368. <br class='desktop'/>
  369. <?php
  370. }
  371. ?>
  372. <?=HTML::item_panel($item)?>
  373. <?php
  374. $prev = preg_split('/\s+/', $item->get_name())[2];
  375. $i ++;
  376. }
  377. ?>
  378. </div>
  379. </div> <!-- #panel_left -->
  380. <div class='panel' id='panel_right'>
  381. <div class='profile_section' id='records'>
  382. <h4>
  383. Records
  384. </h4>
  385. <div class='record'>
  386. <table id='rank_records'>
  387. <tr>
  388. <td class='label'>
  389. Arena
  390. </td>
  391. <td class='value rank'>
  392. <?=HTML::arena_rank_icon(get_context()->get_player()->get_top_rank_arena())?>
  393. </td>
  394. </tr>
  395. <tr>
  396. <td class='label'>
  397. World Arena
  398. </td>
  399. <td class='value rank'>
  400. <?=HTML::arena_rank_icon(get_context()->get_player()->get_top_rank_world_arena())?>
  401. </td>
  402. </tr>
  403. <tr>
  404. <td class='label'>
  405. Special League
  406. </td>
  407. <td class='value rank'>
  408. <?=HTML::arena_rank_icon(get_context()->get_player()->get_top_rank_special_league())?>
  409. </td>
  410. </tr>
  411. <tr>
  412. <td class='label'>
  413. Guild War
  414. </td>
  415. <td class='value rank'>
  416. <?=HTML::arena_rank_icon(get_context()->get_player()->get_top_rank_gw() - 10)?>
  417. </td>
  418. </tr>
  419. <tr>
  420. <td class='label'>
  421. Siege Battle
  422. </td>
  423. <td class='value rank'>
  424. <?=HTML::arena_rank_icon(get_context()->get_player()->get_top_rank_siege())?>
  425. </td>
  426. </tr>
  427. <tr>
  428. <td class='label'>
  429. World Boss
  430. </td>
  431. <td class='value wboss'>
  432. <!-- TODO Rank 12?? -->
  433. <?=WORLD_BOSS_RANK_ID::RANK[get_context()->get_player()->get_top_rank_wboss()]?>
  434. </td>
  435. </tr>
  436. <tr>
  437. <td class='label'>
  438. Trial of Ascension (N)
  439. </td>
  440. <td class='value toa'>
  441. <?=get_context()->get_player()->get_top_rank_toan()?>F
  442. </td>
  443. </tr>
  444. <tr>
  445. <td class='label'>
  446. Trial of Ascension (N)
  447. </td>
  448. <td class='value toa'>
  449. <?=get_context()->get_player()->get_top_rank_toah()?>F
  450. </td>
  451. </tr>
  452. </table>
  453. <table id='battle_records'>
  454. <?php
  455. foreach (get_context()->get_player()->get_records() as $record){
  456. ?>
  457. <tr>
  458. <td class='record_dungeon'>
  459. <img title='<?=$record->area->name?>' class='area' src='<?=$record->area->get_image()?>'/>
  460. </td>
  461. <td class='record_info'>
  462. <span class='title'>
  463. <?php
  464. $title = "";
  465. switch ($record->area->type){
  466. case AREA_TYPE_ID::CAIROS_DUNGEON:
  467. $title = $record->area->name . " " . $record->stage . "F";
  468. break;
  469. case AREA_TYPE_ID::RIFT_DUNGEON:
  470. $title = $record->area->name;
  471. break;
  472. case AREA_TYPE_ID::RIFT_RAID:
  473. $title = $record->area->name;
  474. }
  475. ?>
  476. <?=$title?>
  477. </span>
  478. <?php
  479. if ($record->area->type == AREA_TYPE_ID::RIFT_DUNGEON){
  480. ?>
  481. <span class='score'>
  482. <?=$record->score?>
  483. </span>
  484. <span class='rank'>
  485. <?=$record->rank?>
  486. </span>
  487. <?php
  488. }
  489. else{
  490. $s = floor($record->time / 1000);
  491. $m = floor($s / 60);
  492. $s = floor($s % 60);
  493. $ms = ($record-> time - (1000 * 60 * $m) - (1000 * 60 * $s) / 100);
  494. $s = str_pad($s, 2, '0', STR_PAD_LEFT);
  495. $ms = str_pad($ms, 2, '0', STR_PAD_LEFT);
  496. ?>
  497. <span class='time'>
  498. <?=$m?>:<?=$s?><span class='ms'>.<?=$ms?></span>
  499. </span>
  500. <?php
  501. }
  502. ?>
  503. </td>
  504. <?php
  505. $class_frontline = "";
  506. if ($record->area->type == AREA_TYPE_ID::RIFT_DUNGEON || $record->area->type == AREA_TYPE_ID::RIFT_RAID){
  507. $class_frontline = "frontlines";
  508. }
  509. ?>
  510. <td class='record_party <?=$class_frontline?>'>
  511. <?php
  512. $prev_front = false;
  513. $front = "undefined";
  514. foreach ($record->party as $party){
  515. $front = in_array($party->id, $record->frontline);
  516. if ($front != "undefined" && $prev_front != $front){
  517. ?>
  518. <hr class='frontline'/>
  519. <?php
  520. }
  521. if ($party instanceof Monster){
  522. $disabled = "disabled";
  523. }
  524. else{
  525. $disabled = "";
  526. }
  527. if ($disabled == ""){
  528. ?>
  529. <a target='_blank' href='/<?=get_context()->get_player()->get_id()?>/monster/<?=$party->id?>'>
  530. <?php
  531. }
  532. ?>
  533. <div class='monster_panel <?=$disabled?>'>
  534. <?=HTML::unit_panel($party)?>
  535. <?php
  536. if ($party->id == $record->leader){
  537. ?>
  538. <img alt='Leader' class='leader' src='<?=URL::IMG["ICON"]?>leader.png'/>
  539. <?php
  540. }
  541. ?>
  542. </div>
  543. <?php
  544. if ($disabled == ""){
  545. ?>
  546. </a>
  547. <?php
  548. }
  549. $prev_front = $front;
  550. }
  551. ?>
  552. </td>
  553. </tr>
  554. <?php
  555. }
  556. ?>
  557. </table>
  558. </div>
  559. </div>
  560. </div> <!-- #panel_right -->
  561. </article>
  562. </section>
  563. </main>
  564. <?php
  565. include __DIR__ . "/inc/footer.php";
  566. ?>
  567. </body>
  568. </html>