Advertisement
Guest User

Untitled

a guest
Jan 11th, 2015
595
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 9.93 KB | None | 0 0
  1. <?php
  2. if (!defined('FLUX_ROOT')) exit;
  3.  
  4. $this->loginRequired();
  5.  
  6. $title = Flux::message('AccountViewTitle');
  7.  
  8. require_once 'Flux/TemporaryTable.php';
  9.  
  10. if($server->isRenewal) {
  11.         $fromTables = array("{$server->charMapDatabase}.item_db_re", "{$server->charMapDatabase}.item_db2");
  12. } else {
  13.         $fromTables = array("{$server->charMapDatabase}.item_db", "{$server->charMapDatabase}.item_db2");
  14. }
  15. $tableName = "{$server->charMapDatabase}.items";
  16. $tempTable = new Flux_TemporaryTable($server->connection, $tableName, $fromTables);
  17.  
  18. $creditsTable  = Flux::config('FluxTables.CreditsTable');
  19. $creditColumns = 'credits.balance, credits.last_donation_date, credits.last_donation_amount';
  20. $createTable   = Flux::config('FluxTables.AccountCreateTable');
  21. $createColumns = 'created.confirmed, created.confirm_code, created.reg_date';
  22. $isMine        = false;
  23. $accountID     = $params->get('id');
  24. $account       = false;
  25.  
  26. if (!$accountID || $accountID == $session->account->account_id) {
  27.         $isMine    = true;
  28.         $accountID = $session->account->account_id;
  29.         $account   = $session->account;
  30. }
  31.  
  32. if (!$isMine) {
  33.         // Allowed to view other peoples' account information?
  34.         if (!$auth->allowedToViewAccount) {
  35.                 $this->deny();
  36.         }
  37.  
  38.         $sql  = "SELECT login.*, {$creditColumns}, {$createColumns} FROM {$server->loginDatabase}.login ";
  39.         $sql .= "LEFT OUTER JOIN {$server->loginDatabase}.{$creditsTable} AS credits ON login.account_id = credits.account_id ";
  40.         $sql .= "LEFT OUTER JOIN {$server->loginDatabase}.{$createTable} AS created ON login.account_id = created.account_id ";
  41.         $sql .= "WHERE login.sex != 'S' AND login.group_id >= 0 AND login.account_id = ? LIMIT 1";
  42.         $sth  = $server->connection->getStatement($sql);
  43.         $sth->execute(array($accountID));
  44.  
  45.         // Account object.
  46.         $account = $sth->fetch();
  47.  
  48.         if ($account) {
  49.                 $title = sprintf(Flux::message('AccountViewTitle2'), $account->userid);
  50.         }
  51. }
  52. else {
  53.         $title = Flux::message('AccountViewTitle3');
  54. }
  55.  
  56. $level       = AccountLevel::getGroupLevel($account->group_id);
  57.  
  58. $banSuperior = $account && (($level > $session->account->group_level && $auth->allowedToBanHigherPower) || $level <= $session->account->group_level);
  59. $canTempBan  = !$isMine && $banSuperior && $auth->allowedToTempBanAccount;
  60. $canPermBan  = !$isMine && $banSuperior && $auth->allowedToPermBanAccount;
  61. $tempBanned  = $account && $account->unban_time > 0;
  62. $permBanned  = $account && $account->state == 5;
  63. $showTempBan = !$isMine && !$tempBanned && !$permBanned && $auth->allowedToTempBanAccount;
  64. $showPermBan = !$isMine && !$permBanned && $auth->allowedToPermBanAccount;
  65. $showUnban   = !$isMine && ($tempBanned && $auth->allowedToTempUnbanAccount) || ($permBanned && $auth->allowedToPermUnbanAccount);
  66.  
  67. if (count($_POST) && $account) {
  68.         $reason = (string)$params->get('reason');
  69.  
  70.         if ($params->get('tempban') && ($tempBanDate=$params->get('tempban_date'))) {
  71.                 if ($canTempBan) {
  72.                         if ($server->loginServer->temporarilyBan($session->account->account_id, $reason, $account->account_id, $tempBanDate)) {
  73.                                 $formattedDate = $this->formatDateTime($tempBanDate);
  74.                                 $session->setMessageData("Account has been temporarily banned until $formattedDate.");
  75.                                 $this->redirect($this->url('account', 'view', array('id' => $account->account_id)));
  76.                         }
  77.                         else {
  78.                                 $errorMessage = Flux::message('AccountTempBanFailed');
  79.                         }
  80.                 }
  81.                 else {
  82.                         $errorMessage = Flux::message('AccountTempBanUnauth');
  83.                 }
  84.         }
  85.         elseif ($params->get('permban')) {
  86.                 if ($canPermBan) {
  87.                         if ($server->loginServer->permanentlyBan($session->account->account_id, $reason, $account->account_id)) {
  88.                                 $session->setMessageData("Account has been permanently banned.");
  89.                                 $this->redirect($this->url('account', 'view', array('id' => $account->account_id)));
  90.                         }
  91.                         else {
  92.                                 $errorMessage = Flux::message('AccountPermBanFailed');
  93.                         }
  94.                 }
  95.                 else {
  96.                         $errorMessage = Flux::message('AccountPermBanUnauth');
  97.                 }
  98.         }
  99.         elseif ($params->get('unban')) {
  100.                 $tbl = Flux::config('FluxTables.AccountCreateTable');
  101.                 $sql = "SELECT account_id FROM {$server->loginDatabase}.$tbl WHERE confirmed = 0 AND account_id = ?";
  102.                 $sth = $server->connection->getStatement($sql);
  103.  
  104.                 $sth->execute(array($account->account_id));
  105.                 $confirm = $sth->fetch();
  106.  
  107.                 $sql = "UPDATE {$server->loginDatabase}.$tbl SET confirmed = 1, confirm_expire = NULL WHERE account_id = ?";
  108.                 $sth = $server->connection->getStatement($sql);
  109.  
  110.                 if ($tempBanned && $auth->allowedToTempUnbanAccount &&
  111.                                 $server->loginServer->unban($session->account->account_id, $reason, $account->account_id)) {
  112.  
  113.                         if ($confirm) {
  114.                                 $sth->execute(array($account->account_id));
  115.                         }
  116.  
  117.                         $session->setMessageData(Flux::message('AccountLiftTempBan'));
  118.                         $this->redirect($this->url('account', 'view', array('id' => $account->account_id)));
  119.                 }
  120.                 elseif ($permBanned && $auth->allowedToPermUnbanAccount &&
  121.                                 $server->loginServer->unban($session->account->account_id, $reason, $account->account_id)) {
  122.  
  123.                         if ($confirm) {
  124.                                 $sth->execute(array($account->account_id));
  125.                         }
  126.  
  127.                         $session->setMessageData(Flux::message('AccountLiftPermBan'));
  128.                         $this->redirect($this->url('account', 'view', array('id' => $account->account_id)));
  129.                 }
  130.                 else {
  131.                         $errorMessage = Flux::message('AccountLiftBanUnauth');
  132.                 }
  133.         }
  134. }
  135.  
  136. $banInfo = false;
  137. if ($account) {
  138.         $banInfo = $server->loginServer->getBanInfo($account->account_id);
  139. }
  140.  
  141. $characters = array();
  142. foreach ($session->getAthenaServerNames() as $serverName) {
  143.         $athena = $session->getAthenaServer($serverName);
  144.  
  145.         $sql  = "SELECT ch.*, guild.name AS guild_name, guild.emblem_len AS guild_emblem_len ";
  146.         $sql .= "FROM {$athena->charMapDatabase}.`char` AS ch ";
  147.         $sql .= "LEFT OUTER JOIN {$athena->charMapDatabase}.guild ON guild.guild_id = ch.guild_id ";
  148.         $sql .= "WHERE ch.account_id = ? ORDER BY ch.char_num ASC";
  149.         $sth  = $server->connection->getStatement($sql);
  150.         $sth->execute(array($accountID));
  151.  
  152.         $chars = $sth->fetchAll();
  153.         $characters[$athena->serverName] = $chars;
  154. }
  155.  
  156. $col  = "storage.*, items.name_japanese, items.type, items.slots, c.char_id, c.name AS char_name";
  157.  
  158. $sql  = "SELECT $col FROM {$server->charMapDatabase}.storage ";
  159. $sql .= "LEFT JOIN {$server->charMapDatabase}.items ON items.id = storage.nameid ";
  160. $sql .= "LEFT JOIN {$server->charMapDatabase}.`char` AS c ";
  161. $sql .= "ON c.char_id = IF(storage.card0 IN (254, 255), ";
  162. $sql .= "IF(storage.card2 < 0, storage.card2 + 65536, storage.card2) ";
  163. $sql .= "| (storage.card3 << 16), NULL) ";
  164. $sql .= "WHERE storage.account_id = ? ";
  165.  
  166. if (!$auth->allowedToSeeUnknownItems) {
  167.         $sql .= 'AND storage.identify > 0 ';
  168. }
  169.  
  170. if ($account) {
  171.         $sql .= "ORDER BY storage.nameid ASC, storage.identify DESC, ";
  172.         $sql .= "storage.attribute DESC, storage.refine ASC";
  173.  
  174.         $sth  = $server->connection->getStatement($sql);
  175.         $sth->execute(array($account->account_id));
  176.  
  177.         $items = $sth->fetchAll();
  178.         $cards = array();
  179.  
  180.         if ($items) {
  181.                 $cardIDs = array();
  182.  
  183.                 foreach ($items as $item) {
  184.                         $item->cardsOver = -$item->slots;
  185.  
  186.                         if ($item->card0) {
  187.                                 $cardIDs[] = $item->card0;
  188.                                 $item->cardsOver++;
  189.                         }
  190.                         if ($item->card1) {
  191.                                 $cardIDs[] = $item->card1;
  192.                                 $item->cardsOver++;
  193.                         }
  194.                         if ($item->card2) {
  195.                                 $cardIDs[] = $item->card2;
  196.                                 $item->cardsOver++;
  197.                         }
  198.                         if ($item->card3) {
  199.                                 $cardIDs[] = $item->card3;
  200.                                 $item->cardsOver++;
  201.                         }
  202.  if ($item->card0 == 254 || $item->card0 == 255 || $item->card0 == -256 || $item->cardsOver < 0) {
  203.                                 $item->cardsOver = 0;
  204.                         }
  205.                 }
  206.  
  207.                 if ($cardIDs) {
  208.                         $ids = implode(',', array_fill(0, count($cardIDs), '?'));
  209.                         $sql = "SELECT id, name_japanese FROM {$server->charMapDatabase}.items WHERE id IN ($ids)";
  210.                         $sth = $server->connection->getStatement($sql);
  211.  
  212.                         $sth->execute($cardIDs);
  213.                         $temp = $sth->fetchAll();
  214.                         if ($temp) {
  215.                                 foreach ($temp as $card) {
  216.                                         $cards[$card->id] = $card->name_japanese;
  217.                                 }
  218.                         }
  219.                 }
  220.         }
  221.  
  222.         $itemAttributes = Flux::config('Attributes')->toArray();
  223. }
  224. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement