function forum_do_edit_stick(&$sqlm) { global $forum_lang, $user_lvl, $mmfpm_db; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); if ($user_lvl == 0) { error($forum_lang['no_access']); } if (!isset($_GET['id'])) { error($forum_lang['no_such_topic']); } else { $id = $sqlm->quote_smart($_GET['id']); } if (!isset($_GET['state'])) { error('Bad request, please mail admin and describe what you did to get this error.'); } else { $state = $sqlm->quote_smart($_GET['state']); } $sqlm->query(' UPDATE mm_forum_posts SET sticked = ' . $state . ' WHERE id = ' . $id . ''); $sqlm->close(); redirect('forum.php?action=view_topic&id=' . $id . ''); // Queries : 1 }
/** * calculate creature health, mana and armor * * kinda crappy way, but works * * if $type is used: * 1 -> returns health * 2 -> returns mana * 3 -> returns armor * 0 -> returns array(health,mana,armor) */ function get_additional_data($entryid, $type = 0) { global $world_db, $realm_id; if (!is_numeric($entryid)) { return array(0, 0, 0); } $sqlw = new SQL(); $sqlw->connect($world_db[$realm_id]['addr'], $world_db[$realm_id]['user'], $world_db[$realm_id]['pass'], $world_db[$realm_id]['name']); $q = $sqlw->query("\n\t\tSELECT \n\t\t\t(SELECT unit_class \n\t\t\tFROM creature_template \n\t\t\tWHERE entry = " . $entryid . ") AS class, \n\t\t\t\t(SELECT FLOOR(minlevel + (RAND() * (maxlevel - minlevel + 1))) \n\t\t\t\tFROM creature_template \n\t\t\t\tWHERE entry = " . $entryid . ") AS level, \n\t\t\t\t(SELECT exp \n\t\t\t\tFROM creature_template \n\t\t\t\tWHERE entry = " . $entryid . ") AS exp;"); $data = $sqlw->fetch_assoc($q); if ($sqlw->num_rows($q) == 0) { return array(0, 0, 0); } $q = "\n\t\t\tSELECT \n\t\t\t\t((SELECT Health_Mod \n\t\t\t\tFROM creature_template \n\t\t\t\tWHERE entry = " . $entryid . ")\n\t\t\t\t\t*(SELECT basehp" . $data['exp'] . " \n\t\t\t\t\tFROM creature_classlevelstats \n\t\t\t\t\tWHERE level = " . $data['level'] . " AND class = " . $data['class'] . ")+0.5), \n\t\t\t\t((SELECT Mana_Mod \n\t\t\t\tFROM creature_template \n\t\t\t\tWHERE entry = " . $entryid . ")\n\t\t\t\t\t*(SELECT basemana \n\t\t\t\t\tFROM creature_classlevelstats \n\t\t\t\t\tWHERE level = " . $data['level'] . " AND class = " . $data['class'] . ")+0.5),\n\t\t\t\t((SELECT Armor_Mod \n\t\t\t\tFROM creature_template \n\t\t\t\tWHERE entry = " . $entryid . ")\n\t\t\t\t*(SELECT basearmor \n\t\t\t\tFROM creature_classlevelstats \n\t\t\t\tWHERE level = " . $data['level'] . " AND class = " . $data['class'] . ")+0.5);"; if ($type == 1) { $q = "\n\t\t\tSELECT \n\t\t\t\t((SELECT Health_Mod \n\t\t\t\tFROM creature_template \n\t\t\t\tWHERE entry = " . $entryid . ")\n\t\t\t\t\t*(SELECT basehp" . $data['exp'] . " \n\t\t\t\t\tFROM creature_classlevelstats \n\t\t\t\t\tWHERE level = " . $data['level'] . " AND class = " . $data['class'] . ")+0.5);"; } if ($type == 2) { $q = "\n\t\t\tSELECT \n\t\t\t\t((SELECT Mana_Mod \n\t\t\t\tFROM creature_template \n\t\t\t\tWHERE entry = " . $entryid . ")\n\t\t\t\t\t*(SELECT basemana \n\t\t\t\t\tFROM creature_classlevelstats \n\t\t\t\t\tWHERE level = " . $data['level'] . " AND class = " . $data['class'] . ")+0.5);"; } if ($type == 3) { $q = "\n\t\t\tSELECT \n\t\t\t\t((SELECT Armor_Mod \n\t\t\t\tFROM creature_template \n\t\t\t\tWHERE entry = " . $entryid . ")\n\t\t\t\t\t*(SELECT basearmor \n\t\t\t\t\tFROM creature_classlevelstats \n\t\t\t\t\tWHERE level = " . $data['level'] . " AND class = " . $data['class'] . ")+0.5);"; } $query = $sqlw->query($q); $result = $sqlw->fetch_row($query); $sqlw->close(); unset($sql); if ($type == 2 && $result[0] == 0.5) { return 0; } if ($type == 0 && $result[1] == 0.5) { return array($result[0], 0, $result[2]); } return $type > 0 ? $result[0] : $result; }
function get_realm_name($realm_id) { global $realm_db; $sqlr = new SQL(); $sqlr->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']); $result = $sqlr->query("SELECT name FROM `realmlist` WHERE id = '{$realm_id}'"); $realm_name = $sqlr->result($result, 0); return $realm_name; }
/** * Delete a Categorie in DB * parameters = POST: Categorie ID */ public function deleteKategorien() { require 'classes/SQL.php'; $sql = new SQL(); $sql->connect(); $id = mysql_real_escape_string($_POST['id']); if (is_numeric($id)) { $sql->doThat('DELETE FROM quizCategories WHERE id=' . $id); } }
/** * Remove Question in DB * parameters = POST: QuestionID */ public function deleteQuestion() { require 'classes/SQL.php'; $sql = new SQL(); $sql->connect(); $id = mysql_real_escape_string($_POST['id']); if (is_numeric($gameID)) { $sql->doThat('DELETE FROM quizQuestions WHERE id=' . mysql_real_escape_string($id)); } }
function search() { global $lang_global, $lang_mail, $output, $itemperpage, $item_datasite, $mangos_db, $characters_db, $realm_id, $sql_search_limit; wowhead_tt(); if (!isset($_GET['search_value']) || !isset($_GET['search_by'])) { redirect("mail_on.php?error=2"); } $sql = new SQL(); $sql->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']); $search_value = $sql->quote_smart($_GET['search_value']); $search_by = $sql->quote_smart($_GET['search_by']); $search_menu = array('sender', 'receiver'); // if (!array_key_exists($search_by, $search_menu)) $search_by = 'sender'; $start = isset($_GET['start']) ? $sql->quote_smart($_GET['start']) : 0; $order_by = isset($_GET['order_by']) ? $sql->quote_smart($_GET['order_by']) : "id"; $dir = isset($_GET['dir']) ? $sql->quote_smart($_GET['dir']) : 1; $order_dir = $dir ? "ASC" : "DESC"; $dir = $dir ? 0 : 1; $temp = $sql->query("SELECT guid FROM `characters` WHERE name like '%{$search_value}%'"); $search_value = $sql->result($temp, 0, 'guid'); $query_1 = $sql->query("SELECT count(*) FROM `mail`"); $query = $sql->query("SELECT a.id, a.messageType, a.sender, a.receiver, a.subject, a.itemTextId, a.has_items, a.money, a.cod, a.checked, b.item_template\r\n FROM mail a\r\n INNER JOIN mail_items b ON a.id = b.mail_id\r\n WHERE {$search_by} = {$search_value}\r\n ORDER BY {$order_by} {$order_dir} LIMIT {$start}, {$itemperpage}"); $this_page = $sql->num_rows($query); $all_record = $sql->result($query_1, 0); $total_found = $sql->num_rows($query); //==========================top page navigation starts here======================== $output .= "<center><table class=\"top_hidden\">\r\n <tr><td>\r\n <table class=\"hidden\">\r\n <tr><td>\r\n <form action=\"mail_on.php\" method=\"get\" name=\"form\">\r\n <input type=\"hidden\" name=\"action\" value=\"search\" />\r\n <input type=\"hidden\" name=\"error\" value=\"4\" />\r\n <input type=\"text\" size=\"45\" name=\"search_value\" />\r\n <select name=\"search_by\">\r\n <option value=\"sender\">Sender</option>\r\n <option value=\"receiver\">Receiver</option>\r\n </select></form></td><td>"; makebutton($lang_global['search'], "javascript:do_submit()", 80); $output .= "</td></tr></table>\r\n <td align=\"right\">"; $output .= generate_pagination("mail_on.php?action=search&order_by={$order_by}&dir=" . !$dir, $all_record, $itemperpage, $start); $output .= "</td></tr></table>"; //==========================top page navigation ENDS here ======================== $output .= "<table class=\"lined\">\r\n <tr>\r\n <th width=\"5%\">" . $lang_mail['id'] . "</th>\r\n <th width=\"5%\">" . $lang_mail['mail_type'] . "</th>\r\n <th width=\"10%\">" . $lang_mail['sender'] . "</th>\r\n <th width=\"10%\">" . $lang_mail['receiver'] . "</th>\r\n <th width=\"15%\">" . $lang_mail['subject'] . "</th>\r\n <th width=\"5%\">" . $lang_mail['has_items'] . "</th>\r\n <th width=\"25%\">" . $lang_mail['text'] . "</th>\r\n <th width=\"20%\">" . $lang_mail['money'] . "</th>\r\n <th width=\"5%\">" . $lang_mail['checked'] . "</th>\r\n </tr>"; while ($mail = $sql->fetch_array($query)) { $g = floor($mail[7] / 10000); $mail[7] -= $g * 10000; $s = floor($mail[7] / 100); $mail[7] -= $s * 100; $c = $mail[7]; $money = ""; if ($mail[7] > 0) { $money = $g . "<img src=\"./img/gold.gif\" /> " . $s . "<img src=\"./img/silver.gif\" /> " . $c . "<img src=\"./img/copper.gif\" /> "; } $output .= "<tr valign=top>\r\n <td>{$mail['0']}</td>\r\n <td>" . get_mail_source($mail[1]) . "</td>\r\n <td><a href=\"char.php?id={$mail['2']}\">" . get_char_name($mail[2]) . "</a></td>\r\n <td><a href=\"char.php?id={$mail['3']}\">" . get_char_name($mail[3]) . "</a></td>\r\n <td>{$mail['4']}</td>\r\n "; $output .= "<td>"; $output .= "\r\n <a style=\"padding:2px;\" href=\"{$item_datasite}{$mail[10]}\" target=\"_blank\">\r\n <img class=\"bag_icon\" src=\"" . get_item_icon($mail[10]) . "\" alt=\"\" />\r\n </a>"; //maketooltip("<img src=\"./img/up.gif\" alt=\"\">", $item_datasite{$mail[10]}, $mail[10], "item_tooltip", "target=\"_blank\""); $output .= "</td>"; $output .= "<td>" . get_mail_text($mail[5]) . "</td>\r\n <td>{$money}</td>\r\n <td>" . get_check_state($mail[9]) . "</td>\r\n </tr>"; } /*--------------------------------------------------*/ $output .= "<tr><td colspan=\"6\" class=\"hidden\" align=\"right\">All Mails: {$all_record}</td></tr>\r\n </table></center>"; $sql->close(); }
/** * Return Data-Model for the View */ private function getModel() { require_once 'classes/SQL.php'; $model = new stdClass(); $model->template = 'admin/HighscoreTable'; $model->isAdmin = person::getPermissionName() == 'admin' ? 'true' : 'false'; $model->gameID = $this->getGameId(); $sql = new SQL(); $sql->connect(); $model->data = $sql->get("SELECT * FROM ViewHighscore ORDER BY GamerMainScore DESC"); return $model; }
function connect() { if ($this->isConnected) { return; } parent::connect(); $this->version = floatval($this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION)); if ($this->version < 9) { $this->separator = '),'; $this->agg = 'array_to_string(array_agg'; } }
function get_mail_text($id) { global $characters_db, $realm_id; if ($id) { $sqlc = new SQL(); $sqlc->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']); $result = $sqlc->query("SELECT `body` FROM `mail` WHERE `id` = '{$id}'"); $text_subject = $sqlc->result($result, 0); return $text_subject; } else { return NULL; } }
function get_char_name($id) { global $characters_db, $realm_id; if ($id) { $sqlc = new SQL(); $sqlc->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']); $result = $sqlc->query("SELECT `name` FROM `characters` WHERE `guid` = '{$id}'"); $player_name = $sqlc->result($result, 0); return $player_name; } else { return NULL; } }
function dologin(&$sqlr) { global $mmfpm_db, $require_account_verify; if (empty($_POST['user']) || empty($_POST['pass'])) { redirect('login.php?error=2'); } $user_name = $sqlr->quote_smart($_POST['user']); $user_pass = $sqlr->quote_smart($_POST['pass']); if (255 < strlen($user_name) || 255 < strlen($user_pass)) { redirect('login.php?error=1'); } $result = $sqlr->query('SELECT id, username FROM account WHERE username = \'' . $user_name . '\' AND sha_pass_hash = \'' . $user_pass . '\''); $result2 = $sqlr->query('SELECT id, gmlevel FROM account_access'); if ($require_account_verify) { $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $result2 = $sqlm->query("SELECT * \n\t\t\t\t\t\t\t\t\tFROM mm_account_verification \n\t\t\t\t\t\t\t\t\tWHERE username = '******'"); if ($sqlm->num_rows($result2) >= 1) { $sqlm->close; redirect('login.php?error=7'); } } unset($user_name); if (1 == $sqlr->num_rows($result)) { $id = $sqlr->result($result, 0, 'id'); if ($sqlr->result($sqlr->query('SELECT count(*) FROM account_banned WHERE id = ' . $id . ' AND active = \'1\''), 0)) { redirect('login.php?error=3'); } else { $_SESSION['user_id'] = $id; $_SESSION['uname'] = $sqlr->result($result, 0, 'username'); if ($sqlr->result($result2, 0, 'gmlevel') == null) { $_SESSION['user_lvl'] = 0; } else { $_SESSION['user_lvl'] = $sqlr->result($result2, 0, 'gmlevel'); } $_SESSION['realm_id'] = $sqlr->quote_smart($_POST['realm']); $_SESSION['client_ip'] = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : getenv('REMOTE_ADDR'); $_SESSION['logged_in'] = true; if (isset($_POST['remember']) && $_POST['remember'] != '') { setcookie('uname', $_SESSION['uname'], time() + 60 * 60 * 24 * 7); setcookie('realm_id', $_SESSION['realm_id'], time() + 60 * 60 * 24 * 7); setcookie('p_hash', $user_pass, time() + 60 * 60 * 24 * 7); } redirect('index.php'); } } else { redirect('login.php?error=1'); } }
function getListProduit() { $sql = new SQL(); $sql->connect(); $sql->exe_select("select * from produit"); $items = array(); for ($i = 1; $i <= $sql->nbresult(); $i++) { $produit = new Produit(); $produit->__set('idProduit', $sql->recup($i, 'ID_PRODUIT')); $produit->__set('libelle', $sql->recup($i, 'LIBELLE')); $items[] = $produit; } return $items; }
function uptime() { global $realm, $realmd_host, $realmd_user, $realmd_pass, $realmd_db; $id = $realm['id']; $sqlr = new SQL(); $sqlr->connect($realmd_host, $realmd_user, $realmd_pass, $realmd_db); $query = $sqlr->query("SELECT uptime FROM uptime WHERE realmid='{$id}'"); $result = mysql_fetch_assoc($query); $up = $result['uptime']; $secs = intval($up % 60); $mins = intval($up / 60 % 60); $hours = intval($up / 3600 % 24); $days = intval($up / 86400); return $days . " days " . $hours . " hours " . $mins . " minutes " . $secs . " seconds"; }
function del_guild() { global $lang_guild, $lang_global, $output, $characters_db, $realm_id, $realm_db, $action_permission, $user_lvl, $user_id; $sqlr = new SQL(); $sqlr->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']); if (empty($_GET['realm'])) { $realmid = $realm_id; } else { $realmid = $sqlr->quote_smart($_GET['realm']); if (!is_numeric($realmid)) { $realmid = $realm_id; } } if (isset($_GET['id'])) { $id = $_GET['id']; } else { redirect("guild.php?error=1&realm={$realmid}"); } if (is_numeric($id)) { } else { redirect("guild.php?error=5&realm={$realmid}"); } $sqlc = new SQL(); $sqlc->connect($characters_db[$realmid]['addr'], $characters_db[$realmid]['user'], $characters_db[$realmid]['pass'], $characters_db[$realmid]['name']); $q_amIguildleader = $sqlc->query("select 1 from guild where guildid = '{$id}' and leaderguid in (select guid from characters where account = '{$user_id}')"); $amIguildleader = $sqlc->result($q_amIguildleader, 0, '1'); if ($user_lvl < $action_permission['delete'] && !$amIguildleader) { redirect("guild.php?error=6&realm={$realmid}"); } $output .= "\r\n <center>\r\n <h1><font class=\"error\">{$lang_global['are_you_sure']}</font></h1>\r\n <br />\r\n <font class=\"bold\">{$lang_guild['guild_id']}: {$id} {$lang_global['will_be_erased']}</font>\r\n <br /><br />\r\n <form action=\"cleanup.php?action=docleanup\" method=\"post\" name=\"form\">\r\n <input type=\"hidden\" name=\"type\" value=\"guild\" />\r\n <input type=\"hidden\" name=\"check\" value=\"-{$id}\" />\r\n <input type=\"hidden\" name=\"override\" value=\"1\" />\r\n <table class=\"hidden\">\r\n <tr>\r\n <td>"; makebutton($lang_global['yes'], "javascript:do_submit()\" type=\"wrn", 130); $output .= "\r\n </td>\r\n <td>"; makebutton($lang_global['no'], "guild.php?action=view_guild&realm={$realmid}&id={$id}\" type=\"def", 130); $output .= ' </td> </tr> </table> </form> </center> <br />'; }
// we check how many realms are configured, this does not check if config is valid if (1 < $sqlr->num_rows($result) && 1 < count($server) && 1 < count($characters_db)) { $output .= ' <li><a href="#">' . $lang_header['realms'] . '</a></li>'; while ($realm = $sqlr->fetch_assoc($result)) { if (isset($server[$realm['id']])) { $set = $realm_id === $realm['id'] ? '>' : ''; $output .= ' <li><a href="realm.php?action=set_def_realm&id=' . $realm['id'] . '&url=' . $_SERVER['PHP_SELF'] . '">' . htmlentities($set . ' ' . $realm['name']) . '</a></li>'; } } unset($set); unset($realm); } $sqlc = new SQL(); $sqlc->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']); // we have a different menu for guest account if ($allow_anony && empty($_SESSION['logged_in'])) { $lang_login = lang_login(); $output .= ' <li><a href="#">' . $lang_header['account'] . '</a></li> <li><a href="register.php">' . $lang_login['not_registrated'] . '</a></li> <li><a href="login.php">' . $lang_login['login'] . '</a></li>'; unset($lang_login); } else { $result = $sqlc->query('SELECT guid, name, race, class, level, gender FROM characters WHERE account = ' . $user_id . ''); // this puts links to user characters of active realm in "My Account" menu if ($sqlc->num_rows($result)) { $output .= '
function events() { global $output, $lang_events, $realm_id, $world_db, $itemperpage; $sqlw = new SQL(); $sqlw->connect($world_db[$realm_id]['addr'], $world_db[$realm_id]['user'], $world_db[$realm_id]['pass'], $world_db[$realm_id]['name']); //==========================$_GET and SECURE======================== // pagination and order by to prevent sql injection require_once './include/security.php'; $order_dir = $dir ? 'DESC' : 'ASC'; $dir = $dir ? 1 : 0; //==========================$_GET and SECURE end======================== // for multipage support $all_record = $sqlw->result($sqlw->query(' SELECT count(*) FROM game_event WHERE start_time <> end_time'), 0); // main data that we need for this page, game events $result = $sqlw->query(' SELECT entry, description, start_time, occurence, length FROM game_event WHERE start_time <> end_time ORDER BY ' . $order_by . ' ' . $order_dir . ' LIMIT ' . $start . ', ' . $itemperpage . ''); //---------------Page Specific Data Starts Here-------------------------- $output .= ' <center> <table class="top_hidden"> <tr> <td width="25%" align="right">'; // multi page links $output .= $lang_events['total'] . ' : ' . $all_record . '<br /><br />' . generate_pagination('events.php?order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1), $all_record, $itemperpage, $start); // column headers, with links for sorting $output .= ' </td> </tr> </table> <table class="lined"> <tr> <th width="1%"><a href="events.php?order_by=entry&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'entry' ? ' class="' . $order_dir . '"' : '') . '>ID</a></th> <th width="34%"><a href="events.php?order_by=description&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'description' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_events['descr'] . '</a></th> <th width="25%"><a href="events.php?order_by=start_time&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'start_time' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_events['start'] . '</a></th> <th width="20%"><a href="events.php?order_by=occurence&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'occurence' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_events['occur'] . '</a></th> <th width="20%"><a href="events.php?order_by=length&start=' . $start . '&dir=' . $dir . '"' . ($order_by === 'length' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_events['length'] . '</a></th> </tr>'; while ($events = $sqlw->fetch_assoc($result)) { $days = floor(round($events['occurence'] / 60) / 24); $hours = round($events['occurence'] / 60) - $days * 24; $event_occurance = ''; if ($days) { $event_occurance .= $days . ' days '; } if ($hours) { $event_occurance .= $hours . ' hours'; } $days = floor(round($events['length'] / 60) / 24); $hours = round($events['length'] / 60) - $days * 24; $event_duration = ''; if ($days) { $event_duration .= $days . ' days '; } if ($hours) { $event_duration .= $hours . ' hours'; } $output .= ' <tr valign="top"> <td>' . $events['entry'] . '</td> <td align="left">' . $events['description'] . '</td> <td>' . $events['start_time'] . '</td> <td>' . $event_occurance . '</td> <td>' . $event_duration . '</td> </tr>'; } unset($event_duration); unset($event_occurance); unset($hours); unset($days); unset($events); unset($result); $output .= ' <tr> <td colspan="4" class="hidden" align="right" width="25%">'; // multi page links $output .= generate_pagination('events.php?order_by=' . $order_by . '&dir=' . ($dir ? 0 : 1), $all_record, $itemperpage, $start); unset($start); $output .= ' </td> </tr> <tr> <td colspan="4" class="hidden" align="right">' . $lang_events['total'] . ' : ' . $all_record . '</td> </tr> </table> </center>'; }
// please restore <code>\'scripts/config.dist.php\'</code></center>'); require_once 'scripts/config.php'; //} //else // exit('<center><br><code>\'scripts/config.php\'</code> not found,<br> // please copy <code>\'scripts/config.dist.php\'</code> to // <code>\'scripts/config.php\'</code> and make appropriate changes.'); require_once 'libs/db_lib.php'; require_once 'libs/global_lib.php'; require_once 'libs/spell_lib.php'; //header('Expires: Tue, 01 Jan 2000 00:00:00 GMT'); //header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); //header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0'); //header('Cache-Control: post-check=0, pre-check=0', false); //header('Pragma: no-cache'); //wowhead_tt(); //echo $output; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $result = $sqlm->query('select spellID from dbc_spell order by spellID ASC'); $i = 0; while ($entry = $sqlm->fetch_assoc($result)) { if (spell_get_icon($entry['spellID'], $sqlm) == 'img/INV/INV_blank_32.gif') { //echo '<a href="'.$spell_datasite.$entry['spellID'].'"><img src="'.spell_get_icon($entry['spellID'], $sqlm).'" /></a>'; spell_get_icon($entry['spellID'], $sqlm); echo $entry['spellID'] . ' '; } else { ++$i; } } echo $i;
function char_main(&$sqlr, &$sqlc) { global $output, $lang_global, $lang_char, $lang_item, $realm_id, $realm_db, $characters_db, $world_db, $server, $mmfpm_db, $action_permission, $user_lvl, $user_name, $user_id, $item_datasite, $spell_datasite, $showcountryflag; // this page uses wowhead tooltops wowhead_tt(); // we need at least an id or we would have nothing to show if (empty($_GET['id'])) { error($lang_global['empty_fields']); } // this is multi realm support, as of writing still under development // this page is already implementing it if (empty($_GET['realm'])) { $realmid = $realm_id; } else { $realmid = $sqlr->quote_smart($_GET['realm']); if (is_numeric($realmid)) { $sqlc->connect($characters_db[$realmid]['addr'], $characters_db[$realmid]['user'], $characters_db[$realmid]['pass'], $characters_db[$realmid]['name']); } else { $realmid = $realm_id; } } $id = $sqlc->quote_smart($_GET['id']); if (is_numeric($id)) { } else { error($lang_global['empty_fields']); } $result = $sqlc->query('SELECT account, race FROM characters WHERE guid = ' . $id . ' LIMIT 1'); if ($sqlc->num_rows($result)) { //resrict by owner's gmlvl $owner_acc_id = $sqlc->result($result, 0, 'account'); $query = $sqlr->query('SELECT gmlevel, username FROM account WHERE id = ' . $owner_acc_id . ''); $owner_gmlvl = $sqlr->result($query, 0, 'gmlevel'); $owner_name = $sqlr->result($query, 0, 'username'); if ($user_lvl || $server[$realmid]['both_factions']) { $side_v = 0; $side_p = 0; } else { $side_p = in_array($sqlc->result($result, 0, 'race'), array(2, 5, 6, 8, 10)) ? 1 : 2; $result_1 = $sqlc->query('SELECT race FROM characters WHERE account = ' . $user_id . ' LIMIT 1'); if ($sqlc->num_rows($result)) { $side_v = in_array($sqlc->result($result_1, 0, 'race'), array(2, 5, 6, 8, 10)) ? 1 : 2; } else { $side_v = 0; } unset($result_1); } if ($user_lvl >= $owner_gmlvl && ($side_v === $side_p || !$side_v)) { $result = $sqlc->query('SELECT account, data, name, race, class, gender, level, zone, map, online, totaltime, arenaPoints, totalHonorPoints, totalKills, health, power1, power2, power3, power4, power5, power6, power7 FROM characters WHERE guid = ' . $id . ''); $char = $sqlc->fetch_assoc($result); $char_data = explode(' ', $char['data']); $online = $char['online'] ? $lang_char['online'] : $lang_char['offline']; if ($char_data[CHAR_DATA_OFFSET_GUILD_ID]) { $guild_name = $sqlc->result($sqlc->query('SELECT name FROM guild WHERE guildid =' . $char_data[CHAR_DATA_OFFSET_GUILD_ID] . ''), 0, 'name'); $guild_name = '<a href="guild.php?action=view_guild&realm=' . $realmid . '&error=3&id=' . $char_data[CHAR_DATA_OFFSET_GUILD_ID] . '" >' . $guild_name . '</a>'; $mrank = $char_data[CHAR_DATA_OFFSET_GUILD_RANK] + 1; $guild_rank = $sqlc->result($sqlc->query('SELECT rname FROM guild_rank WHERE guildid =' . $char_data[CHAR_DATA_OFFSET_GUILD_ID] . ' AND rid=' . $mrank . ''), 0, 'rname'); } else { $guild_name = $lang_global['none']; $guild_rank = $lang_global['none']; } $block = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_BLOCK])); $block = round($block[1], 2); $dodge = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_DODGE])); $dodge = round($dodge[1], 2); $parry = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_PARRY])); $parry = round($parry[1], 2); $crit = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_MELEE_CRIT])); $crit = round($crit[1], 2); $ranged_crit = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_RANGE_CRIT])); $ranged_crit = round($ranged_crit[1], 2); $maxdamage = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_MAXDAMAGE])); $maxdamage = round($maxdamage[1], 0); $mindamage = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_MINDAMAGE])); $mindamage = round($mindamage[1], 0); $maxrangeddamage = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_MAXRANGEDDAMAGE])); $maxrangeddamage = round($maxrangeddamage[1], 0); $minrangeddamage = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_MINRANGEDDAMAGE])); $minrangeddamage = round($minrangeddamage[1], 0); $spell_crit = 100; for ($i = 0; $i < 6; ++$i) { $temp = unpack('f', pack('L', $char_data[CHAR_DATA_OFFSET_SPELL_CRIT + 1 + $i])); if ($temp[1] < $spell_crit) { $spell_crit = $temp[1]; } } $spell_crit = round($spell_crit, 2); $spell_damage = 9999; for ($i = 0; $i < 6; ++$i) { if ($char_data[CHAR_DATA_OFFSET_SPELL_DAMAGE + 1 + $i] < $spell_damage) { $spell_damage = $char_data[CHAR_DATA_OFFSET_SPELL_DAMAGE + 1 + $i]; } } $rage = round($char['power2'] / 10); $expertise = '' . $char_data[CHAR_DATA_OFFSET_EXPERTISE] . ' / ' . $char_data[CHAR_DATA_OFFSET_OFFHAND_EXPERTISE] . ''; $EQU_HEAD = $char_data[CHAR_DATA_OFFSET_EQU_HEAD]; $EQU_NECK = $char_data[CHAR_DATA_OFFSET_EQU_NECK]; $EQU_SHOULDER = $char_data[CHAR_DATA_OFFSET_EQU_SHOULDER]; $EQU_SHIRT = $char_data[CHAR_DATA_OFFSET_EQU_SHIRT]; $EQU_CHEST = $char_data[CHAR_DATA_OFFSET_EQU_CHEST]; $EQU_BELT = $char_data[CHAR_DATA_OFFSET_EQU_BELT]; $EQU_LEGS = $char_data[CHAR_DATA_OFFSET_EQU_LEGS]; $EQU_FEET = $char_data[CHAR_DATA_OFFSET_EQU_FEET]; $EQU_WRIST = $char_data[CHAR_DATA_OFFSET_EQU_WRIST]; $EQU_GLOVES = $char_data[CHAR_DATA_OFFSET_EQU_GLOVES]; $EQU_FINGER1 = $char_data[CHAR_DATA_OFFSET_EQU_FINGER1]; $EQU_FINGER2 = $char_data[CHAR_DATA_OFFSET_EQU_FINGER2]; $EQU_TRINKET1 = $char_data[CHAR_DATA_OFFSET_EQU_TRINKET1]; $EQU_TRINKET2 = $char_data[CHAR_DATA_OFFSET_EQU_TRINKET2]; $EQU_BACK = $char_data[CHAR_DATA_OFFSET_EQU_BACK]; $EQU_MAIN_HAND = $char_data[CHAR_DATA_OFFSET_EQU_MAIN_HAND]; $EQU_OFF_HAND = $char_data[CHAR_DATA_OFFSET_EQU_OFF_HAND]; $EQU_RANGED = $char_data[CHAR_DATA_OFFSET_EQU_RANGED]; $EQU_TABARD = $char_data[CHAR_DATA_OFFSET_EQU_TABARD]; /* // reserved incase we want to use back minimanagers' built in tooltip, instead of wowheads' // minimanagers' item tooltip needs updating, but it can show enchantments and sockets. $equiped_items = array ( 1 => array(($EQU_HEAD ? get_item_tooltip($EQU_HEAD) : 0),($EQU_HEAD ? get_item_icon($EQU_HEAD) : 0),($EQU_HEAD ? get_item_border($EQU_HEAD) : 0)), 2 => array(($EQU_NECK ? get_item_tooltip($EQU_NECK) : 0),($EQU_NECK ? get_item_icon($EQU_NECK) : 0),($EQU_NECK ? get_item_border($EQU_NECK) : 0)), 3 => array(($EQU_SHOULDER ? get_item_tooltip($EQU_SHOULDER) : 0),($EQU_SHOULDER ? get_item_icon($EQU_SHOULDER) : 0),($EQU_SHOULDER ? get_item_border($EQU_SHOULDER) : 0)), 4 => array(($EQU_SHIRT ? get_item_tooltip($EQU_SHIRT) : 0),($EQU_SHIRT ? get_item_icon($EQU_SHIRT) : 0),($EQU_SHIRT ? get_item_border($EQU_SHIRT) : 0)), 5 => array(($EQU_CHEST ? get_item_tooltip($EQU_CHEST) : 0),($EQU_CHEST ? get_item_icon($EQU_CHEST) : 0),($EQU_CHEST ? get_item_border($EQU_CHEST) : 0)), 6 => array(($EQU_BELT ? get_item_tooltip($EQU_BELT) : 0),($EQU_BELT ? get_item_icon($EQU_BELT) : 0),($EQU_BELT ? get_item_border($EQU_BELT) : 0)), 7 => array(($EQU_LEGS ? get_item_tooltip($EQU_LEGS) : 0),($EQU_LEGS ? get_item_icon($EQU_LEGS) : 0),($EQU_LEGS ? get_item_border($EQU_LEGS) : 0)), 8 => array(($EQU_FEET ? get_item_tooltip($EQU_FEET) : 0),($EQU_FEET ? get_item_icon($EQU_FEET) : 0),($EQU_FEET ? get_item_border($EQU_FEET) : 0)), 9 => array(($EQU_WRIST ? get_item_tooltip($EQU_WRIST) : 0),($EQU_WRIST ? get_item_icon($EQU_WRIST) : 0),($EQU_WRIST ? get_item_border($EQU_WRIST) : 0)), 10 => array(($EQU_GLOVES ? get_item_tooltip($EQU_GLOVES) : 0),($EQU_GLOVES ? get_item_icon($EQU_GLOVES) : 0),($EQU_GLOVES ? get_item_border($EQU_GLOVES) : 0)), 11 => array(($EQU_FINGER1 ? get_item_tooltip($EQU_FINGER1) : 0),($EQU_FINGER1 ? get_item_icon($EQU_FINGER1) : 0),($EQU_FINGER1 ? get_item_border($EQU_FINGER1) : 0)), 12 => array(($EQU_FINGER2 ? get_item_tooltip($EQU_FINGER2) : 0),($EQU_FINGER2 ? get_item_icon($EQU_FINGER2) : 0),($EQU_FINGER2 ? get_item_border($EQU_FINGER2) : 0)), 13 => array(($EQU_TRINKET1 ? get_item_tooltip($EQU_TRINKET1) : 0),($EQU_TRINKET1 ? get_item_icon($EQU_TRINKET1) : 0),($EQU_TRINKET1 ? get_item_border($EQU_TRINKET1) : 0)), 14 => array(($EQU_TRINKET2 ? get_item_tooltip($EQU_TRINKET2) : 0),($EQU_TRINKET2 ? get_item_icon($EQU_TRINKET2) : 0),($EQU_TRINKET2 ? get_item_border($EQU_TRINKET2) : 0)), 15 => array(($EQU_BACK ? get_item_tooltip($EQU_BACK) : 0),($EQU_BACK ? get_item_icon($EQU_BACK) : 0),($EQU_BACK ? get_item_border($EQU_BACK) : 0)), 16 => array(($EQU_MAIN_HAND ? get_item_tooltip($EQU_MAIN_HAND) : 0),($EQU_MAIN_HAND ? get_item_icon($EQU_MAIN_HAND) : 0),($EQU_MAIN_HAND ? get_item_border($EQU_MAIN_HAND) : 0)), 17 => array(($EQU_OFF_HAND ? get_item_tooltip($EQU_OFF_HAND) : 0),($EQU_OFF_HAND ? get_item_icon($EQU_OFF_HAND) : 0),($EQU_OFF_HAND ? get_item_border($EQU_OFF_HAND) : 0)), 18 => array(($EQU_RANGED ? get_item_tooltip($EQU_RANGED) : 0),($EQU_RANGED ? get_item_icon($EQU_RANGED) : 0),($EQU_RANGED ? get_item_border($EQU_RANGED) : 0)), 19 => array(($EQU_TABARD ? get_item_tooltip($EQU_TABARD) : 0),($EQU_TABARD ? get_item_icon($EQU_TABARD) : 0),($EQU_TABARD ? get_item_border($EQU_TABARD) : 0)) ); */ $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $sqlw = new SQL(); $sqlw->connect($world_db[$realmid]['addr'], $world_db[$realmid]['user'], $world_db[$realmid]['pass'], $world_db[$realmid]['name']); $equiped_items = array(1 => array('', $EQU_HEAD ? get_item_icon($EQU_HEAD, $sqlm, $sqlw) : 0, $EQU_HEAD ? get_item_border($EQU_HEAD, $sqlw) : 0), 2 => array('', $EQU_NECK ? get_item_icon($EQU_NECK, $sqlm, $sqlw) : 0, $EQU_NECK ? get_item_border($EQU_NECK, $sqlw) : 0), 3 => array('', $EQU_SHOULDER ? get_item_icon($EQU_SHOULDER, $sqlm, $sqlw) : 0, $EQU_SHOULDER ? get_item_border($EQU_SHOULDER, $sqlw) : 0), 4 => array('', $EQU_SHIRT ? get_item_icon($EQU_SHIRT, $sqlm, $sqlw) : 0, $EQU_SHIRT ? get_item_border($EQU_SHIRT, $sqlw) : 0), 5 => array('', $EQU_CHEST ? get_item_icon($EQU_CHEST, $sqlm, $sqlw) : 0, $EQU_CHEST ? get_item_border($EQU_CHEST, $sqlw) : 0), 6 => array('', $EQU_BELT ? get_item_icon($EQU_BELT, $sqlm, $sqlw) : 0, $EQU_BELT ? get_item_border($EQU_BELT, $sqlw) : 0), 7 => array('', $EQU_LEGS ? get_item_icon($EQU_LEGS, $sqlm, $sqlw) : 0, $EQU_LEGS ? get_item_border($EQU_LEGS, $sqlw) : 0), 8 => array('', $EQU_FEET ? get_item_icon($EQU_FEET, $sqlm, $sqlw) : 0, $EQU_FEET ? get_item_border($EQU_FEET, $sqlw) : 0), 9 => array('', $EQU_WRIST ? get_item_icon($EQU_WRIST, $sqlm, $sqlw) : 0, $EQU_WRIST ? get_item_border($EQU_WRIST, $sqlw) : 0), 10 => array('', $EQU_GLOVES ? get_item_icon($EQU_GLOVES, $sqlm, $sqlw) : 0, $EQU_GLOVES ? get_item_border($EQU_GLOVES, $sqlw) : 0), 11 => array('', $EQU_FINGER1 ? get_item_icon($EQU_FINGER1, $sqlm, $sqlw) : 0, $EQU_FINGER1 ? get_item_border($EQU_FINGER1, $sqlw) : 0), 12 => array('', $EQU_FINGER2 ? get_item_icon($EQU_FINGER2, $sqlm, $sqlw) : 0, $EQU_FINGER2 ? get_item_border($EQU_FINGER2, $sqlw) : 0), 13 => array('', $EQU_TRINKET1 ? get_item_icon($EQU_TRINKET1, $sqlm, $sqlw) : 0, $EQU_TRINKET1 ? get_item_border($EQU_TRINKET1, $sqlw) : 0), 14 => array('', $EQU_TRINKET2 ? get_item_icon($EQU_TRINKET2, $sqlm, $sqlw) : 0, $EQU_TRINKET2 ? get_item_border($EQU_TRINKET2, $sqlw) : 0), 15 => array('', $EQU_BACK ? get_item_icon($EQU_BACK, $sqlm, $sqlw) : 0, $EQU_BACK ? get_item_border($EQU_BACK, $sqlw) : 0), 16 => array('', $EQU_MAIN_HAND ? get_item_icon($EQU_MAIN_HAND, $sqlm, $sqlw) : 0, $EQU_MAIN_HAND ? get_item_border($EQU_MAIN_HAND, $sqlw) : 0), 17 => array('', $EQU_OFF_HAND ? get_item_icon($EQU_OFF_HAND, $sqlm, $sqlw) : 0, $EQU_OFF_HAND ? get_item_border($EQU_OFF_HAND, $sqlw) : 0), 18 => array('', $EQU_RANGED ? get_item_icon($EQU_RANGED, $sqlm, $sqlw) : 0, $EQU_RANGED ? get_item_border($EQU_RANGED, $sqlw) : 0), 19 => array('', $EQU_TABARD ? get_item_icon($EQU_TABARD, $sqlm, $sqlw) : 0, $EQU_TABARD ? get_item_border($EQU_TABARD, $sqlw) : 0)); if ($user_lvl > $owner_gmlvl || $owner_name === $user_name) { $output .= ' <!-- start of char.php --> <center> <div id="tab_content"> <div id="tab"> <ul> <li><a href="char_inv.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['inventory'] . '</a></li> <li><a href="char_extra.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['extra'] . '</a></li> ' . ($char['level'] < 10 ? '' : '<li><a href="char_talent.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['talents'] . '</a></li>') . ' <li><a href="char_achieve.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['achievements'] . '</a></li> <li><a href="char_rep.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['reputation'] . '</a></li> <li><a href="char_skill.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['skills'] . '</a></li> <li><a href="char_quest.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['quests'] . '</a></li>'; if (char_get_class_name($char['class']) === 'Hunter') { $output .= ' <li><a href="char_pets.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['pets'] . '</a></li>'; } $output .= ' <li><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['friends'] . '</a></li> <li><a href="char_spell.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['spells'] . '</a></li> <li><a href="char_mail.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['mail'] . '</a></li> </ul> <ul>'; // selected char tab at last $output .= ' <li id="selected"><a href="char.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['char_sheet'] . '</a></li>'; } else { $output .= ' <center> <div id="tab"> <ul> <li id="selected"><a href="char.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['char_sheet'] . '</a></li> </ul> </div> <div id="tab_content"> <div id="tab"> <ul>'; } $output .= ' </ul> </div> <div id="tab_content2"> <table class="lined" style="width: 580px;"> <tr> <td colspan="2"> <div> <img src="' . char_get_avatar_img($char['level'], $char['gender'], $char['race'], $char['class'], 0) . '" alt="avatar" /> </div> <div>'; $a_results = $sqlc->query('SELECT DISTINCT spell FROM character_aura WHERE guid = ' . $id . ''); if ($sqlc->num_rows($a_results)) { while ($aura = $sqlc->fetch_assoc($a_results)) { $output .= ' <a style="padding:2px;" href="' . $spell_datasite . $aura['spell'] . '" target="_blank"> <img src="' . spell_get_icon($aura['spell'], $sqlm) . '" alt="' . $aura['spell'] . '" width="24" height="24" /> </a>'; } } $output .= ' </div> </td> <td colspan="4"> <font class="bold"> ' . htmlentities($char['name']) . ' - <img src="img/c_icons/' . $char['race'] . '-' . $char['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($char['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> <img src="img/c_icons/' . $char['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($char['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> - lvl ' . char_get_level_color($char['level']) . ' </font> <br />' . get_map_name($char['map'], $sqlm) . ' - ' . get_zone_name($char['zone'], $sqlm) . ' <br />' . $lang_char['honor_points'] . ': ' . $char['totalHonorPoints'] . ' / ' . $char['arenaPoints'] . ' - ' . $lang_char['honor_kills'] . ': ' . $char['totalKills'] . ' <br />' . $lang_char['guild'] . ': ' . $guild_name . ' | ' . $lang_char['rank'] . ': ' . htmlentities($guild_rank) . ' <br />' . ($char['online'] ? '<img src="img/up.gif" onmousemove="toolTip(\'Online\', \'item_tooltip\')" onmouseout="toolTip()" alt="online" />' : '<img src="img/down.gif" onmousemove="toolTip(\'Offline\', \'item_tooltip\')" onmouseout="toolTip()" alt="offline" />'); if ($showcountryflag) { require_once 'libs/misc_lib.php'; $country = misc_get_country_by_account($char['account'], $sqlr, $sqlm); $output .= ' - ' . ($country['code'] ? '<img src="img/flags/' . $country['code'] . '.png" onmousemove="toolTip(\'' . $country['country'] . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" />' : '-'); unset($country); } $output .= ' </td> </tr> <tr> <td width="6%">'; if ($equiped_items[1][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_HEAD . '" target="_blank"> <img src="' . $equiped_items[1][1] . '" class="' . $equiped_items[1][2] . '" alt="Head" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_head.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" align="center" width="50%"> <div class="gradient_p">' . $lang_item['health'] . ':</div> <div class="gradient_pp">' . $char['health'] . '</div>'; if ($char['class'] == 11) { //druid $output .= ' </br> <div class="gradient_p">' . $lang_item['energy'] . ':</div> <div class="gradient_pp">' . $char['power4'] . '</div>'; } $output .= ' </td> <td class="half_line" colspan="2" align="center" width="50%">'; if ($char['class'] == 1) { $output .= ' <div class="gradient_p">' . $lang_item['rage'] . ':</div> <div class="gradient_pp">' . $rage . '</div>'; } elseif ($char['class'] == 4) { $output .= ' <div class="gradient_p">' . $lang_item['energy'] . ':</div> <div class="gradient_pp">' . $char['power4'] . '</div>'; } elseif ($char['class'] == 6) { // Don't know if FOCUS is the right one need to verify with Death Knight player. $output .= ' <div class="gradient_p">' . $lang_item['runic'] . ':</div> <div class="gradient_pp">Unknown</div>'; } elseif ($char['class'] == 11) { $output .= ' <div class="gradient_p">' . $lang_item['mana'] . ':</div> <div class="gradient_pp">' . $char['power1'] . '</div> </br> <div class="gradient_p">' . $lang_item['rage'] . ':</div> <div class="gradient_pp">' . $rage . '</div>'; } elseif ($char['class'] == 2 || $char['class'] == 3 || $char['class'] == 5 || $char['class'] == 7 || $char['class'] == 8 || $char['class'] == 9) { $output .= ' <div class="gradient_p">' . $lang_item['mana'] . ':</div> <div class="gradient_pp">' . $char['power1'] . '</div>'; } $output .= ' </td> <td width="6%">'; if ($equiped_items[10][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_GLOVES . '" target="_blank"> <img src="' . $equiped_items[10][1] . '" class="' . $equiped_items[10][2] . '" alt="Gloves" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_gloves.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[2][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_NECK . '" target="_blank"> <img src="' . $equiped_items[2][1] . '" class="' . $equiped_items[2][2] . '" alt="Neck" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_neck.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="3" align="center" width="50%"> <div class="gradient_p"> ' . $lang_item['strength'] . ':<br /> ' . $lang_item['agility'] . ':<br /> ' . $lang_item['stamina'] . ':<br /> ' . $lang_item['intellect'] . ':<br /> ' . $lang_item['spirit'] . ':<br /> ' . $lang_item['armor'] . ': </div> <div class="gradient_pp"> ' . $char_data[CHAR_DATA_OFFSET_STR] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_AGI] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_STA] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_INT] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_SPI] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_ARMOR] . ' </div> </td> <td class="half_line" colspan="2" rowspan="3" align="center" width="50%"> <div class="gradient_p"> ' . $lang_item['res_holy'] . ':<br /> ' . $lang_item['res_arcane'] . ':<br /> ' . $lang_item['res_fire'] . ':<br /> ' . $lang_item['res_nature'] . ':<br /> ' . $lang_item['res_frost'] . ':<br /> ' . $lang_item['res_shadow'] . ': </div> <div class="gradient_pp"> ' . $char_data[CHAR_DATA_OFFSET_RES_HOLY] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RES_ARCANE] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RES_FIRE] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RES_NATURE] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RES_FROST] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RES_SHADOW] . ' </div> </td> <td width="1%">'; if ($equiped_items[6][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_BELT . '" target="_blank"> <img src="' . $equiped_items[6][1] . '" class="' . $equiped_items[6][2] . '" alt="Belt" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_waist.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[3][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_SHOULDER . '" target="_blank"> <img src="' . $equiped_items[3][1] . '" class="' . $equiped_items[3][2] . '" alt="Shoulder" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_shoulder.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="1%">'; if ($equiped_items[7][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_LEGS . '" target="_blank"> <img src="' . $equiped_items[7][1] . '" class="' . $equiped_items[7][2] . '" alt="Legs" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_legs.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[15][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_BACK . '" target="_blank"> <img src="' . $equiped_items[15][1] . '" class="' . $equiped_items[15][2] . '" alt="Back" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_chest_back.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="1%">'; if ($equiped_items[8][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_FEET . '" target="_blank"> <img src="' . $equiped_items[8][1] . '" class="' . $equiped_items[8][2] . '" alt="Feet" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_feet.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[5][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_CHEST . '" target="_blank"> <img src="' . $equiped_items[5][1] . '" class="' . $equiped_items[5][2] . '" alt="Chest" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_chest_back.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="2" align="center" width="50%"> <div class="gradient_p"> ' . $lang_char['melee_d'] . ':<br /> ' . $lang_char['melee_ap'] . ':<br /> ' . $lang_char['melee_hit'] . ':<br /> ' . $lang_char['melee_crit'] . ':<br /> ' . $lang_char['expertise'] . ':<br /> </div> <div class="gradient_pp"> ' . $mindamage . '-' . $maxdamage . '<br /> ' . ($char_data[CHAR_DATA_OFFSET_AP] + $char_data[CHAR_DATA_OFFSET_AP_MOD]) . '<br /> ' . $char_data[CHAR_DATA_OFFSET_MELEE_HIT] . '<br /> ' . $crit . '%<br /> ' . $expertise . '<br /> </div> </td> <td class="half_line" colspan="2" rowspan="2" align="center" width="50%"> <div class="gradient_p"> ' . $lang_char['spell_d'] . ':<br /> ' . $lang_char['spell_heal'] . ':<br /> ' . $lang_char['spell_hit'] . ':<br /> ' . $lang_char['spell_crit'] . ':<br /> ' . $lang_char['spell_haste'] . ' </div> <div class="gradient_pp"> ' . $spell_damage . '<br /> ' . $char_data[CHAR_DATA_OFFSET_SPELL_HEAL] . '<br /> ' . $char_data[CHAR_DATA_OFFSET_SPELL_HIT] . '<br /> ' . $spell_crit . '%<br /> ' . $char_data[CHAR_DATA_OFFSET_SPELL_HASTE_RATING] . ' </div> </td> <td width="1%">'; if ($equiped_items[11][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_FINGER1 . '" target="_blank"> <img src="' . $equiped_items[11][1] . '" class="' . $equiped_items[11][2] . '" alt="Finger1" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_finger.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[4][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_SHIRT . '" target="_blank"> <img src="' . $equiped_items[4][1] . '" class="' . $equiped_items[4][2] . '" alt="Shirt" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_shirt.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="1%">'; if ($equiped_items[12][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_FINGER2 . '" target="_blank"> <img src="' . $equiped_items[12][1] . '" class="' . $equiped_items[12][2] . '" alt="Finger2" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_finger.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[19][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_TABARD . '" target="_blank"> <img src="' . $equiped_items[19][1] . '" class="' . $equiped_items[19][2] . '" alt="Tabard" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_tabard.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td class="half_line" colspan="2" rowspan="2" align="center" width="50%"> <div class="gradient_p"> ' . $lang_char['dodge'] . ':<br /> ' . $lang_char['parry'] . ':<br /> ' . $lang_char['block'] . ':<br /> ' . $lang_char['resilience'] . ':<br /> </div> <div class="gradient_pp"> ' . $dodge . '%<br /> ' . $parry . '%<br /> ' . $block . '%<br /> ' . $char_data[CHAR_DATA_OFFSET_RESILIENCE] . '<br /> </div> </td> <td class="half_line" colspan="2" rowspan="2" align="center" width="50%"> <div class="gradient_p"> ' . $lang_char['ranged_d'] . ':<br /> ' . $lang_char['ranged_ap'] . ':<br /> ' . $lang_char['ranged_hit'] . ':<br /> ' . $lang_char['ranged_crit'] . ':<br /> </div> <div class="gradient_pp"> ' . $minrangeddamage . '-' . $maxrangeddamage . '<br /> ' . ($char_data[CHAR_DATA_OFFSET_RANGED_AP] + $char_data[CHAR_DATA_OFFSET_RANGED_AP_MOD]) . '<br /> ' . $char_data[CHAR_DATA_OFFSET_RANGE_HIT] . '<br /> ' . $ranged_crit . '%<br /> </div> </td> <td width="1%">'; if ($equiped_items[13][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_TRINKET1 . '" target="_blank"> <img src="' . $equiped_items[13][1] . '" class="' . $equiped_items[13][2] . '" alt="Trinket1" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_trinket.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td width="1%">'; if ($equiped_items[9][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_WRIST . '" target="_blank"> <img src="' . $equiped_items[9][1] . '" class="' . $equiped_items[9][2] . '" alt="Wrist" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_wrist.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="1%">'; if ($equiped_items[14][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_TRINKET2 . '" target="_blank"> <img src="' . $equiped_items[14][1] . '" class="' . $equiped_items[14][2] . '" alt="Trinket2" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_trinket.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> </tr> <tr> <td></td> <td width="15%">'; if ($equiped_items[16][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_MAIN_HAND . '" target="_blank"> <img src="' . $equiped_items[16][1] . '" class="' . $equiped_items[16][2] . '" alt="MainHand" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_main_hand.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="15%">'; if ($equiped_items[17][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_OFF_HAND . '" target="_blank"> <img src="' . $equiped_items[17][1] . '" class="' . $equiped_items[17][2] . '" alt="OffHand" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_off_hand.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="15%">'; if ($equiped_items[18][1]) { $output .= ' <a style="padding:2px;" href="' . $item_datasite . $EQU_RANGED . '" target="_blank"> <img src="' . $equiped_items[18][1] . '" class="' . $equiped_items[18][2] . '" alt="Ranged" /> </a>'; } else { $output .= ' <img src="img/INV/INV_empty_ranged.png" class="icon_border_0" alt="empty" />'; } $output .= ' </td> <td width="15%"></td> <td></td> </tr>'; if ($user_lvl > $owner_gmlvl || $owner_name === $user_name) { //total time played $tot_time = $char['totaltime']; $tot_days = (int) ($tot_time / 86400); $tot_time = $tot_time - $tot_days * 86400; $total_hours = (int) ($tot_time / 3600); $tot_time = $tot_time - $total_hours * 3600; $total_min = (int) ($tot_time / 60); $output .= ' <tr> <td colspan="6"> ' . $lang_char['tot_paly_time'] . ': ' . $tot_days . ' ' . $lang_char['days'] . ' ' . $total_hours . ' ' . $lang_char['hours'] . ' ' . $total_min . ' ' . $lang_char['min'] . ' </td> </tr>'; } $output .= ' </table> </div> <br /> </div> <br /> <table class="hidden"> <tr> <td>'; // button to user account page, user account page has own security makebutton($lang_char['chars_acc'], 'user.php?action=edit_user&id=' . $owner_acc_id . '', 130); $output .= ' </td> <td>'; // only higher level GM with delete access can edit character // character edit allows removal of character items, so delete permission is needed if ($user_lvl > $owner_gmlvl && $user_lvl >= $action_permission['delete']) { makebutton($lang_char['edit_button'], 'char_edit.php?id=' . $id . '&realm=' . $realmid . '', 130); $output .= ' </td> <td>'; } // only higher level GM with delete access, or character owner can delete character if ($user_lvl > $owner_gmlvl && $user_lvl >= $action_permission['delete'] || $owner_name === $user_name) { makebutton($lang_char['del_char'], 'char_list.php?action=del_char_form&check%5B%5D=' . $id . '" type="wrn', 130); $output .= ' </td> <td>'; } // only GM with update permission can send mail, mail can send items, so update permission is needed if ($user_lvl >= $action_permission['update']) { makebutton($lang_char['send_mail'], 'mail.php?type=ingame_mail&to=' . $char['name'] . '', 130); $output .= ' </td> <td>'; } makebutton($lang_global['back'], 'javascript:window.history.back()" type="def', 130); $output .= ' </td> </tr> </table> <br /> </center> <!-- end of char.php -->'; } else { error($lang_char['no_permission']); } } else { error($lang_char['no_char_found']); } }
function doupdate_referral($referredby, $user_id) { global $realm_db, $mmfpm_db, $characters_db, $realm_id; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $sqlc = new SQL(); $sqlc->connect($characters_db[$realm_id]['addr'], $characters_db[$realm_id]['user'], $characters_db[$realm_id]['pass'], $characters_db[$realm_id]['name']); $sqlr = new SQL(); $sqlr->connect($realm_db['addr'], $realm_db['user'], $realm_db['pass'], $realm_db['name']); $result = $sqlm->fetch_row($sqlm->query("SELECT InvitedBy FROM mm_point_system_invites WHERE PlayersAccount = '{$user_id}'")); $result = $result[0]; if ($result == NULL) { $referred_by = $sqlc->fetch_row($sqlc->query("SELECT guid FROM characters WHERE name = '{$referredby}'")); $referred_by = $referred_by[0]; if ($referred_by != NULL) { $char = $sqlc->fetch_row($sqlc->query("SELECT account FROM characters WHERE guid = '{$referred_by}'")); $result = $sqlr->fetch_row($sqlr->query("SELECT id FROM account WHERE id = '{$char}'")); $result = $result[0]; if ($result != $user_id) { $sqlm->query("INSERT INTO mm_point_system_invites (PlayersAccount, InvitedBy, InviterAccount) VALUES ('{$user_id}', '{$referred_by}', '{$result}')"); return true; } else { return false; } } } }
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ require_once "db_lib.php"; $sqlm = new SQL(); $sqlm->connect($corem_db["addr"], $corem_db["user"], $corem_db["pass"], $corem_db["name"], $corem_db["encoding"]); $temp = $sqlm->fetch_assoc($sqlm->query("SELECT * FROM config_dbc_database")); $dbc_db["addr"] = $temp["Address"] . ":" . $temp["Port"]; $dbc_db["user"] = $temp["User"]; $dbc_db["pass"] = $temp["Password"]; $dbc_db["name"] = $temp["Name"]; $dbc_db["encoding"] = $temp["Encoding"]; $temp = $sqlm->fetch_assoc($sqlm->query("SELECT * FROM config_logon_database")); $logon_db["addr"] = $temp["Address"] . ":" . $temp["Port"]; $logon_db["user"] = $temp["User"]; $logon_db["pass"] = $temp["Password"]; $logon_db["name"] = $temp["Name"]; $logon_db["encoding"] = $temp["Encoding"]; $temp = $sqlm->query("SELECT * FROM config_world_databases"); while ($world = $sqlm->fetch_assoc($temp)) { $world_db[$world["Index"]]["id"] = $world["Index"];
function char_spell(&$sqlr, &$sqlc) { global $output, $lang_global, $lang_char, $realm_id, $characters_db, $mmfpm_db, $action_permission, $user_lvl, $user_name, $spell_datasite, $itemperpage; wowhead_tt(); require_once 'core/char/char_security.php'; $start = isset($_GET['start']) ? $sqlc->quote_smart($_GET['start']) : 0; if (is_numeric($start)) { } else { $start = 0; } $result = $sqlc->query('SELECT account, name, race, class, level, gender FROM characters WHERE guid = ' . $id . ' LIMIT 1'); if ($sqlc->num_rows($result)) { $char = $sqlc->fetch_assoc($result); $owner_acc_id = $sqlc->result($result, 0, 'account'); $result = $sqlr->query('SELECT `username`, `gmlevel` FROM `account` LEFT JOIN `account_access` ON `account`.`id`=`account_access`.`id` WHERE `account`.`id` = ' . $owner_acc_id . ' ORDER BY `gmlevel` DESC LIMIT 1'); $owner_name = $sqlr->result($result, 0, 'username'); $owner_gmlvl = $sqlr->result($result, 0, 'gmlevel'); if (empty($owner_gmlvl)) { $owner_gmlvl = 0; } if ($user_lvl > $owner_gmlvl || $owner_name === $user_name) { $all_record = $sqlc->result($sqlc->query('SELECT count(spell) FROM character_spell WHERE guid = ' . $id . ' and active = 1'), 0); $result = $sqlc->query('SELECT spell FROM character_spell WHERE guid = ' . $id . ' and active = 1 order by spell ASC LIMIT ' . $start . ', ' . $itemperpage . ''); $output .= ' <center> <div id="tab_content"> <h1>' . $lang_char['spells'] . '</h1> <br />'; require_once 'core/char/char_header.php'; $output .= ' <br /><br />'; if ($sqlc->num_rows($result)) { $output .= ' <table class="lined" style="width: 550px;"> <tr align="right"> <td colspan="4">'; $output .= generate_pagination('char_spell.php?id=' . $id . '&realm=' . $realmid . '&start=' . $start . '', $all_record, $itemperpage, $start); $output .= ' </td> </tr> <tr> <th>' . $lang_char['icon'] . '</th> <th>' . $lang_char['name'] . '</th> <th>' . $lang_char['icon'] . '</th> <th>' . $lang_char['name'] . '</th> </tr>'; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); while ($spell = $sqlc->fetch_assoc($result)) { $output .= ' <tr> <td><a href="' . $spell_datasite . $spell['spell'] . '"><img src="' . spell_get_icon($spell['spell'], $sqlm) . '" class="icon_border_0" /></a></td> <td align="left"><a href="' . $spell_datasite . $spell['spell'] . '">' . spell_get_name($spell['spell'], $sqlm) . '</a></td>'; if ($spell = $sqlc->fetch_assoc($result)) { $output .= ' <td><a href="' . $spell_datasite . $spell['spell'] . '"><img src="' . spell_get_icon($spell['spell'], $sqlm) . '" class="icon_border_0" /></a></td> <td align="left"><a href="' . $spell_datasite . $spell['spell'] . '">' . spell_get_name($spell['spell'], $sqlm) . '</a></td> </tr>'; } else { $output .= ' <td></td> <td></td> </tr>'; } } $output .= ' <tr align="right"> <td colspan="4">'; $output .= generate_pagination('char_spell.php?id=' . $id . '&realm=' . $realmid . '&start=' . $start . '', $all_record, $itemperpage, $start); $output .= ' </td> </tr> </table>'; } //---------------Page Specific Data Ends here---------------------------- //---------------Character Tabs Footer----------------------------------- $output .= ' </div> </div> <br />'; require_once 'core/char/char_footer.php'; $output .= ' <br /> </center> <!-- end of char_spell.php -->'; } else { error($lang_char['no_permission']); } } else { error($lang_char['no_char_found']); } }
function delete_motd(&$sqlm) { global $action_permission, $realm_id, $mmfpm_db; // minimum permission to view page valid_login($action_permission['delete']); $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); if (empty($_GET['id'])) { redirect('index.php'); } $id = $sqlm->quote_smart($_GET['id']); if (is_numeric($id)) { } else { redirect('motd.php?error=1'); } $sqlm->query(' DELETE FROM mm_motd WHERE id =' . $id . ''); unset($id); redirect('index.php'); }
function do_delete_reward_item(&$sqlm) { global $action_permission, $mmfpm_db; valid_login($action_permission['delete']); $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); if (empty($_GET['item'])) { redirect('rewards.php?error=1'); } $items = $sqlm->quote_smart($_GET['item']); if (is_numeric($items)) { } else { redirect('rewards.php?error=1'); } $sqlm->query('DELETE FROM mm_reward_item WHERE item = ' . $items . ''); unset($items); if ($sqlm->affected_rows()) { redirect('rewards.php?action=show_reward_item'); } else { redirect('rewards.php?error=2'); } }
function char_talent(&$sqlr, &$sqlc) { global $output, $lang_global, $lang_char, $realm_id, $realm_db, $characters_db, $mmfpm_db, $server, $action_permission, $user_lvl, $user_name, $spell_datasite; // this page uses wowhead tooltops wowhead_tt(); //==========================$_GET and SECURE================================= // id and multi realm security to prevent sql injection require_once './include/char/include/char_multi_realm_security.php'; //==========================$_GET and SECURE end============================= // getting character data from database $result = $sqlc->query(' SELECT account, name, race, class, level, gender, specCount AS talent_points FROM characters WHERE guid = ' . $id . ' LIMIT 1'); // no point going further if character does not exist if ($sqlc->num_rows($result)) { $char = $sqlc->fetch_assoc($result); // we get user permissions first $owner_acc_id = $sqlc->result($result, 0, 'account'); $result = $sqlr->query(' SELECT gmlevel, username FROM account WHERE id = ' . $char['account'] . ''); $owner_gmlvl = $sqlr->result($result, 0, 'gmlevel'); $owner_name = $sqlr->result($result, 0, 'username'); // check user permission if ($user_lvl > $owner_gmlvl || $owner_name === $user_name) { // character sub header $output .= ' <center> <div id="tab_content"> <h1>' . $lang_char['talents'] . '</h1> <br />'; // character menu tab require_once './include/char/include/char_header.php'; // character info require_once './include/char/include/char_info.php'; //---------------Page Specific Data Starts Here-------------------------- $output .= ' <div id="tab_content2"> <table class="lined" style="width: 550px;"> <tr valign="top" align="center">'; $result = $sqlc->query(' SELECT spell FROM character_spell WHERE guid = ' . $id . ' AND active = 1 AND disabled = 0 ORDER BY spell DESC'); if ($sqlc->num_rows($result)) { $talent_rate = isset($server[$realmid]['talent_rate']) ? $server[$realmid]['talent_rate'] : 1; $talent_points = ($char['level'] - 9) * $talent_rate; $talent_points_left = $char['talent_points']; $talent_points_used = $talent_points - $talent_points_left; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $tabs = array(); $l = 0; while (($talent = $sqlc->fetch_assoc($result)) && $l < $talent_points_used) { if ($tab = $sqlm->fetch_assoc($sqlm->query(' SELECT field_1, field_2, field_3, field_13, field_16 FROM dbc_talent WHERE field_8 = ' . $talent['spell'] . ' LIMIT 1'))) { if (isset($tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']])) { $l -= $tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']][1]; } $tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']] = array($talent['spell'], '5', '5'); $l += 5; if ($tab['field_13']) { talent_dependencies($tabs, $tab, $l, $sqlm); } } elseif ($tab = $sqlm->fetch_assoc($sqlm->query(' SELECT field_1, field_2, field_3, field_13, field_16, field_8 FROM dbc_talent WHERE field_7 = ' . $talent['spell'] . ' LIMIT 1'))) { if (isset($tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']])) { $l -= $tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']][1]; } $tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']] = array($talent['spell'], '4', $tab['field_8'] ? '2' : '5'); $l += 4; if ($tab['field_13']) { talent_dependencies($tabs, $tab, $l, $sqlm); } } elseif ($tab = $sqlm->fetch_assoc($sqlm->query(' SELECT field_1, field_2, field_3, field_13, field_16, field_7 FROM dbc_talent WHERE field_6 = ' . $talent['spell'] . ' LIMIT 1'))) { if (isset($tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']])) { $l -= $tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']][1]; } $tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']] = array($talent['spell'], '3', $tab['field_7'] ? '2' : '5'); $l += 3; if ($tab['field_13']) { talent_dependencies($tabs, $tab, $l, $sqlm); } } elseif ($tab = $sqlm->fetch_assoc($sqlm->query(' SELECT field_1, field_2, field_3, field_13, field_16, field_6 FROM dbc_talent WHERE field_5 = ' . $talent['spell'] . ' LIMIT 1'))) { if (isset($tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']])) { $l -= $tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']][1]; } $tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']] = array($talent['spell'], '2', $tab['field_6'] ? '2' : '5'); $l += 2; if ($tab['field_13']) { talent_dependencies($tabs, $tab, $l, $sqlm); } } elseif ($tab = $sqlm->fetch_assoc($sqlm->query(' SELECT field_1, field_2, field_3, field_13, field_16, field_5 FROM dbc_talent WHERE field_4 = ' . $talent['spell'] . ' LIMIT 1'))) { if (isset($tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']])) { $l -= $tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']][1]; } $tabs[$tab['field_1']][$tab['field_2']][$tab['field_3']] = array($talent['spell'], '1', $tab['field_5'] ? '2' : '5'); $l += 1; if ($tab['field_13']) { talent_dependencies($tabs, $tab, $l, $sqlm); } } } unset($tab); unset($talent); foreach ($tabs as $k => $data) { $points = 0; $output .= ' <td> <table class="hidden" style="width: 0px;"> <tr> <td colspan="6" style="border-bottom-width: 0px;"> </td> </tr> <tr>'; for ($i = 0; $i < 11; ++$i) { for ($j = 0; $j < 4; ++$j) { if (isset($data[$i][$j])) { $output .= ' <td valign="bottom" align="center" style="border-top-width: 0px;border-bottom-width: 0px;"> <a href="' . $spell_datasite . $data[$i][$j][0] . '" target="_blank"> <img src="' . spell_get_icon($data[$i][$j][0], $sqlm) . '" width="36" height="36" class="icon_border_' . $data[$i][$j][2] . '" alt="" /> </a> <div style="width:0px;margin:-14px 0px 0px 30px;font-size:14px;color:black"> ' . $data[$i][$j][1] . ' </div> <div style="width:0px;margin:-14px 0px 0px 29px;font-size:14px;color:white"> ' . $data[$i][$j][1] . ' </div> </td>'; $points += $data[$i][$j][1]; } else { $output .= ' <td valign="bottom" align="center" style="border-top-width: 0px;border-bottom-width: 0px;"> <img src="img/blank.gif" width="44" height="44" alt="" /> </td>'; } } $output .= ' </tr> <tr>'; } $output .= ' <td colspan="6" style="border-top-width: 0px;border-bottom-width: 0px;"></td> </tr> <tr> <td colspan="6" valign="bottom" align="left"> ' . $sqlm->result($sqlm->query('SELECT field_1 FROM dbc_talenttab WHERE id = ' . $k . ''), 0, 'field_1') . ': ' . $points . ' </td> </tr> </table> </td>'; } unset($data); unset($k); unset($tabs); $output .= ' </tr> </table> <br /> <table> <tr> <td align="left"> ' . $lang_char['talent_rate'] . ': <br /> ' . $lang_char['talent_points'] . ': <br /> ' . $lang_char['talent_points_used'] . ': <br /> ' . $lang_char['talent_points_shown'] . ': <br /> ' . $lang_char['talent_points_left'] . ': </td> <td align="left"> ' . $talent_rate . '<br /> ' . $talent_points . '<br /> ' . $talent_points_used . '<br /> ' . $l . '<br /> ' . $talent_points_left . ' </td> <td width="64"> </td> <td align="right">'; unset($l); unset($talent_rate); unset($talent_points); unset($talent_points_used); unset($talent_points_left); $result = $sqlc->query(' SELECT spec, slot, glyph FROM character_glyphs WHERE guid = ' . $id . ''); while ($glyphs = $sqlc->fetch_assoc($result)) { if ($glyphs['glyph']) { $glyph = $sqlm->result($sqlm->query(' SELECT field_1 FROM dbc_glyphproperties WHERE id = ' . $glyphs['glyph'] . ''), 0); $output .= ' <a href="' . $spell_datasite . $glyph . '" target="_blank"> <img src="' . spell_get_icon($glyph, $sqlm) . '" width="36" height="36" class="icon_border_0" alt="" /> </a>'; } } unset($glyphs); $output .= ' </td>'; } $output .= ' </tr> </table>'; $output .= ' </div> <br />'; //---------------Page Specific Data Ends here---------------------------- // character sub footer require_once './include/char/include/char_ footer.php'; $output .= ' <br /> </center>'; } else { error($lang_char['no_permission']); } } else { error($lang_char['no_char_found']); } }
function del_acc($acc_id) { global $characters_db, $logon_db, $corem_db, $realm_id, $user_lvl, $user_id, $tab_del_user_realmd, $tab_del_user_char, $tab_del_user_characters, $sql, $core; $del_char = 0; // get username name to delete from account table if ($core == 1) { $query = $sql["logon"]->query("SELECT login AS username FROM accounts WHERE acct='" . $acc_id . "'"); } else { $query = $sql["logon"]->query("SELECT username FROM account WHERE id='" . $acc_id . "'"); } $acct_name = $sql["logon"]->result($query, 0, "username"); // get the account's owner's SecurityLevel (not 100% perfect since we don't use the core gm) $query = $sql["mgr"]->query("SELECT SecurityLevel FROM config_accounts WHERE Login='******'"); $gmlevel = $sql["mgr"]->result($query, 0, "SecurityLevel"); if ($user_lvl >= gmlevel($gmlevel) || $acc_id == $user_id) { if ($core == 1) { $char_count_query = "SELECT COUNT(*) FROM characters WHERE acct='" . $acct_id . "'"; } else { $char_count_query = "SELECT COUNT(*) FROM characters WHERE account='" . $acct_id . "'"; } $online = $sql["char"]->result($sql["char"]->query($char_count_query), 0); if (!$online > 0) { foreach ($characters_db as $db) { $sqlx = new SQL(); $sqlx->connect($db["addr"], $db["user"], $db["pass"], $db["name"], $db["encoding"]); if ($core == 1) { $result = $sqlx->query("SELECT guid FROM characters WHERE acct='" . $acc_id . "'"); } else { $result = $sqlx->query("SELECT guid FROM characters WHERE account='" . $acc_id . "'"); } while ($row = $sqlx->fetch_assoc($result)) { $temp = del_char($row["guid"], $db["id"]); $del_char++; } // MaNGOS: Delete character_tutorial if ($core == 2) { $sqlx->query("DELETE FROM character_tutorial WHERE account='" . $owner_acc_id . "'"); } // Trinity: Delete account_tutorial if ($core == 3) { $sqlx->query("DELETE FROM account_tutorial WHERE accountId='" . $owner_acc_id . "'"); } // ArcEmu: Delete account_data for this user if ($core == 1) { $sqlx->query("DELETE FROM account_data WHERE acct='" . $owner_acc_id . "'"); } } if ($core == 1) { $sql["logon"]->query("DELETE FROM accounts WHERE acct='" . $acc_id . "'"); } else { $sql["logon"]->query("DELETE FROM account WHERE id='" . $acc_id . "'"); } $sql["mgr"]->query("DELETE FROM point_system_invites WHERE PlayersAccount='" . $acc_id . "'"); $sql["mgr"]->query("DELETE FROM config_accounts WHERE Login='******'"); if ($sql["logon"]->affected_rows()) { return array(true, $del_char); } } } return array(false, $del_char); }
<?php #---Define-- mb_internal_encoding("UTF-8"); define('ROOT', dirname(__FILE__) . '/../'); #Default Page define('default_page', 'main'); #Admin_login define('admin_login', '*****@*****.**'); #Автозагрузчики include ROOT . 'classes/_autoload.php'; include ROOT . 'models/_autoload.php'; include ROOT . 'controllers/_autoload.php'; #Подключение библиотеки SQL SQL::connect(include ROOT . 'config/db.php'); #User Init User::LoginByCookie(Request::cookie('userid', '')); #QueryStringload Request::Load(); #WebSite Init $controller = mb_strtolower(Request::GetPart(0, default_page)); $action = Request::GetPart(1, 'index'); //if (!User::isLogged()) $controller = 'login'; #Загрузка шаблонизатора Site::$home = 'http://localhost/promspace/'; Site::$template = 'main'; Site::$title = 'PromSpace - Вся промышленность России'; Site::$keywords = 'Вся промышленность России, Предприятия России, Компании России'; Site::Show($controller, $action);
function saveserver() { global $corem_db; $sqlm = new SQL(); $sqlm->connect($corem_db["addr"], $corem_db["user"], $corem_db["pass"], $corem_db["name"], $corem_db["encoding"]); $server_id = $sqlm->quote_smart($_GET["index"]); $new_server_id = $sqlm->quote_smart($_GET["new_index"]); $server_name = $sqlm->quote_smart($_GET["server_name"]); $server_hosti = $sqlm->quote_smart($_GET["server_hosti"]); $server_hostp = $sqlm->quote_smart($_GET["server_hostp"]); $server_port = $sqlm->quote_smart($_GET["server_port"]); $server_telnet_port = isset($_GET["server_telnet_port"]) ? $sqlm->quote_smart($_GET["server_telnet_port"]) : NULL; $server_telnet_user = isset($_GET["server_telnet_user"]) ? strtoupper($sqlm->quote_smart($_GET["server_telnet_user"])) : NULL; $server_telnet_pass = isset($_GET["server_telnet_pass"]) ? $sqlm->quote_smart($_GET["server_telnet_pass"]) : NULL; $server_type = $sqlm->quote_smart($_GET["server_type"]); $server_color = $sqlm->quote_smart($_GET["server_color"]); $server_timezone = $sqlm->quote_smart($_GET["server_timezone"]); $server_factions = isset($_GET["server_both"]) ? 1 : 0; $server_stats = isset($_GET["server_stats"]) ? $sqlm->quote_smart($_GET["server_stats"]) : NULL; $result = $sqlm->query("UPDATE config_servers SET `Index`='" . $new_server_id . "', Address='" . $server_hosti . "', Port='" . $server_port . "', Telnet_Port='" . $server_telnet_port . "', Telnet_User='******', Telnet_Pass='******', Both_Factions='" . $server_factions . "', Stats_XML='" . $server_stats . "', Name='" . $server_name . "', External_Address='" . $server_hostp . "', Port='" . $server_port . "', Icon='" . $server_type . "', Color='" . $server_color . "', Timezone='" . $server_timezone . "' WHERE `Index`='" . $server_id . "'"); redirect("admin.php?section=servers"); }
function char_friends(&$sqlr, &$sqlc) { global $output, $lang_global, $lang_char, $realm_id, $realm_db, $mmfpm_db, $characters_db, $action_permission, $user_lvl, $user_name; //==========================$_GET and SECURE================================= // id and multi realm security to prevent sql injection require_once './include/char/include/char_multi_realm_security.php'; $order_by = isset($_GET['order_by']) ? $sqlc->quote_smart($_GET['order_by']) : 'name'; if (preg_match('/^[[:lower:]]{1,6}$/', $order_by)) { } else { $order_by = 'name'; } $dir = isset($_GET['dir']) ? $sqlc->quote_smart($_GET['dir']) : 1; if (preg_match('/^[01]{1}$/', $dir)) { } else { $dir = 1; } $order_dir = $dir ? 'ASC' : 'DESC'; $dir = $dir ? 0 : 1; if ($order_by === 'map') { $order_by = 'map ' . $order_dir . ', zone'; } elseif ($order_by === 'zone') { $order_by = 'zone ' . $order_dir . ', map'; } //==========================$_GET and SECURE end======================== // getting character data from database $result = $sqlc->query(' SELECT account, name, race, class, gender, level FROM characters WHERE guid = ' . $id . ' LIMIT 1'); // no point going further if character does not exist if ($sqlc->num_rows($result)) { $char = $sqlc->fetch_assoc($result); // we get user permissions first $owner_acc_id = $sqlc->result($result, 0, 'account'); $result = $sqlr->query(' SELECT gmlevel, username FROM account WHERE id = ' . $char['account'] . ''); $owner_gmlvl = $sqlr->result($result, 0, 'gmlevel'); $owner_name = $sqlr->result($result, 0, 'username'); // check user permission if ($user_lvl > $owner_gmlvl || $owner_name === $user_name) { // character sub header $output .= ' <center> <div id="tab_content"> <h1>' . $lang_char['friends'] . '</h1> <br />'; // character menu tab require_once './include/char/include/char_header.php'; // character info require_once './include/char/include/char_info.php'; //---------------Page Specific Data Starts Here-------------------------- $output .= ' <script type="text/javascript"> // <![CDATA[ function wrap() { if (getBrowserWidth() > 1024) document.write(\'</table></td><td><table class="lined" style="width: 1%;">\'); } // ]]> </script> <div id="tab_content2"> <table class="lined" style="width: 1%;">'; $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); $result = $sqlc->query(' SELECT name, race, class, map, zone, level, gender, online, account, guid FROM characters WHERE guid in (SELECT friend FROM character_social WHERE guid = ' . $id . ' and flags <= 1) ORDER BY ' . $order_by . ' ' . $order_dir . ''); if ($sqlc->num_rows($result)) { $output .= ' <tr> <th colspan="7" align="left">' . $lang_char['friends'] . '</th> </tr> <tr> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=name&dir=' . $dir . '"' . ($order_by === 'name' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['name'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=race&dir=' . $dir . '"' . ($order_by === 'race' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['race'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=class&dir=' . $dir . '"' . ($order_by === 'class' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['class'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=level&dir=' . $dir . '"' . ($order_by === 'level' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['level'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=map&dir=' . $dir . '"' . ($order_by === 'map ' . $order_dir . ', zone' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['map'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=zone&dir=' . $dir . '"' . ($order_by === 'zone ' . $order_dir . ', map' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['zone'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=online&dir=' . $dir . '"' . ($order_by === 'online' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['online'] . '</a></th> </tr>'; while ($data = $sqlc->fetch_assoc($result)) { $char_gm_level = $sqlr->result($sqlr->query(' SELECT gmlevel FROM account WHERE id = ' . $data['account'] . ''), 0, 'gmlevel'); $output .= ' <tr> <td>'; if ($user_lvl >= $char_gm_level) { $output .= ' <a href="char.php?id=' . $data['guid'] . '">' . $data['name'] . '</a>'; } else { $output .= $data['name']; } $output .= ' </td> <td><img src="img/c_icons/' . $data['race'] . '-' . $data['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($data['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /></td> <td><img src="img/c_icons/' . $data['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($data['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /></td> <td>' . char_get_level_color($data['level']) . '</td> <td class="small"><span onmousemove="toolTip(\'MapID:' . $data['map'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_map_name($data['map'], $sqlm) . '</span></td> <td class="small"><span onmousemove="toolTip(\'ZoneID:' . $data['zone'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_zone_name($data['zone'], $sqlm) . '</span></td> <td>' . ($data['online'] ? '<img src="img/up.gif" alt="" />' : '-') . '</td> </tr>'; } } $result = $sqlc->query(' SELECT name, race, class, map, zone, level, gender, online, account, guid FROM characters WHERE guid in (SELECT guid FROM character_social WHERE friend = ' . $id . ' and flags <= 1) ORDER BY ' . $order_by . ' ' . $order_dir . ''); if ($sqlc->num_rows($result)) { $output .= ' <tr> <th colspan="7" align="left">' . $lang_char['friendof'] . '</th> </tr> <tr> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=name&dir=' . $dir . '"' . ($order_by === 'name' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['name'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=race&dir=' . $dir . '"' . ($order_by === 'race' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['race'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=class&dir=' . $dir . '"' . ($order_by === 'class' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['class'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=level&dir=' . $dir . '"' . ($order_by === 'level' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['level'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=map&dir=' . $dir . '"' . ($order_by === 'map ' . $order_dir . ', zone' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['map'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=zone&dir=' . $dir . '"' . ($order_by === 'zone ' . $order_dir . ', map' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['zone'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=online&dir=' . $dir . '"' . ($order_by === 'online' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['online'] . '</a></th> </tr>'; while ($data = $sqlc->fetch_assoc($result)) { $char_gm_level = $sqlr->result($sqlr->query(' SELECT gmlevel FROM account WHERE id = ' . $data['account'] . ''), 0, 'gmlevel'); $output .= ' <tr> <td>'; if ($user_lvl >= $char_gm_level) { $output .= ' <a href="char.php?id=' . $data['guid'] . '">' . $data['name'] . '</a>'; } else { $output .= $data['name']; } $output .= ' </td> <td><img src="img/c_icons/' . $data['race'] . '-' . $data['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($data['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /></td> <td><img src="img/c_icons/' . $data['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($data['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /></td> <td>' . char_get_level_color($data['level']) . '</td> <td class="small"><span onmousemove="toolTip(\'MapID:' . $data['map'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_map_name($data['map'], $sqlm) . '</span></td> <td class="small"><span onmousemove="toolTip(\'ZoneID:' . $data['zone'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_zone_name($data['zone'], $sqlm) . '</span></td> <td>' . ($data['online'] ? '<img src="img/up.gif" alt="" />' : '-') . '</td> </tr>'; } } $output .= ' <script type="text/javascript"> // <![CDATA[ wrap(); // ]]> </script>'; $result = $sqlc->query(' SELECT name, race, class, map, zone, level, gender, online, account, guid FROM characters WHERE guid in (SELECT friend FROM character_social WHERE guid = ' . $id . ' and flags > 1) ORDER BY ' . $order_by . ' ' . $order_dir . ''); if ($sqlc->num_rows($result)) { $output .= ' <tr> <th colspan="7" align="left">' . $lang_char['ignored'] . '</th> </tr> <tr> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=name&dir=' . $dir . '"' . ($order_by === 'name' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['name'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=race&dir=' . $dir . '"' . ($order_by === 'race' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['race'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=class&dir=' . $dir . '"' . ($order_by === 'class' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['class'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=level&dir=' . $dir . '"' . ($order_by === 'level' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['level'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=map&dir=' . $dir . '"' . ($order_by === 'map ' . $order_dir . ', zone' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['map'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=zone&dir=' . $dir . '"' . ($order_by === 'zone ' . $order_dir . ', map' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['zone'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=online&dir=' . $dir . '"' . ($order_by === 'online' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['online'] . '</a></th> </tr>'; while ($data = $sqlc->fetch_assoc($result)) { $char_gm_level = $sqlr->result($sqlr->query(' SELECT gmlevel FROM account WHERE id = ' . $data['account'] . ''), 0, 'gmlevel'); $output .= ' <tr> <td>'; if ($user_lvl >= $char_gm_level) { $output .= ' <a href="char.php?id=' . $data['guid'] . '">' . $data['name'] . '</a>'; } else { $output .= $data['name']; } $output .= ' </td> <td><img src="img/c_icons/' . $data['race'] . '-' . $data['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($data['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /></td> <td><img src="img/c_icons/' . $data['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($data['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /></td> <td>' . char_get_level_color($data['level']) . '</td> <td class="small"><span onmousemove="toolTip(\'MapID:' . $data['map'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_map_name($data['map'], $sqlm) . '</span></td> <td class="small"><span onmousemove="toolTip(\'ZoneID:' . $data['zone'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_zone_name($data['zone'], $sqlm) . '</span></td> <td>' . ($data['online'] ? '<img src="img/up.gif" alt="" />' : '-') . '</td> </tr>'; } } $result = $sqlc->query(' SELECT name, race, class, map, zone, level, gender, online, account, guid FROM characters WHERE guid in (SELECT guid FROM character_social WHERE friend = ' . $id . ' and flags > 1) ORDER BY ' . $order_by . ' ' . $order_dir . ''); if ($sqlc->num_rows($result)) { $output .= ' <tr> <th colspan="7" align="left">' . $lang_char['ignoredby'] . '</th> </tr> <tr> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=name&dir=' . $dir . '"' . ($order_by === 'name' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['name'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=race&dir=' . $dir . '"' . ($order_by === 'race' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['race'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=class&dir=' . $dir . '"' . ($order_by === 'class' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['class'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=level&dir=' . $dir . '"' . ($order_by === 'level' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['level'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=map&dir=' . $dir . '"' . ($order_by === 'map ' . $order_dir . ', zone' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['map'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=zone&dir=' . $dir . '"' . ($order_by === 'zone ' . $order_dir . ', map' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['zone'] . '</a></th> <th width="1%"><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '&order_by=online&dir=' . $dir . '"' . ($order_by === 'online' ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['online'] . '</a></th> </tr>'; while ($data = $sqlc->fetch_assoc($result)) { $char_gm_level = $sqlr->result($sqlr->query(' SELECT gmlevel FROM account WHERE id = ' . $data['account'] . ''), 0, 'gmlevel'); $output .= ' <tr> <td>'; if ($user_lvl >= $char_gm_level) { $output .= ' <a href="char.php?id=' . $data['guid'] . '">' . $data['name'] . '</a>'; } else { $output .= $data['name']; } $output .= ' </td> <td><img src="img/c_icons/' . $data['race'] . '-' . $data['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($data['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /></td> <td><img src="img/c_icons/' . $data['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($data['class']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /></td> <td>' . char_get_level_color($data['level']) . '</td> <td class="small"><span onmousemove="toolTip(\'MapID:' . $data['map'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_map_name($data['map'], $sqlm) . '</span></td> <td class="small"><span onmousemove="toolTip(\'ZoneID:' . $data['zone'] . '\', \'item_tooltip\')" onmouseout="toolTip()">' . get_zone_name($data['zone'], $sqlm) . '</span></td> <td>' . ($data['online'] ? '<img src="img/up.gif" alt="" />' : '-') . '</td> </tr>'; } } $output .= ' </table> </div> </div> <br />'; //---------------Page Specific Data Ends here---------------------------- // character sub footer require_once './include/char/include/char_ footer.php'; $output .= ' <br /> </center>'; } else { error($lang_char['no_permission']); } } else { error($lang_char['no_char_found']); } }
function char_rep(&$sqlr, &$sqlc) { global $output, $lang_global, $lang_char, $realm_id, $characters_db, $mmfpm_db, $action_permission, $user_lvl, $user_name; require_once 'libs/fact_lib.php'; $reputation_rank = fact_get_reputation_rank_arr(); $reputation_rank_length = fact_get_reputation_rank_length(); if (empty($_GET['id'])) { error($lang_global['empty_fields']); } // this is multi realm support, as of writing still under development // this page is already implementing it if (empty($_GET['realm'])) { $realmid = $realm_id; } else { $realmid = $sqlr->quote_smart($_GET['realm']); if (is_numeric($realmid)) { $sqlc->connect($characters_db[$realmid]['addr'], $characters_db[$realmid]['user'], $characters_db[$realmid]['pass'], $characters_db[$realmid]['name']); } else { $realmid = $realm_id; } } $id = $sqlc->quote_smart($_GET['id']); if (is_numeric($id)) { } else { $id = 0; } $result = $sqlc->query('SELECT account, name, race, class, level, gender FROM characters WHERE guid = ' . $id . ' LIMIT 1'); if ($sqlc->num_rows($result)) { $char = $sqlc->fetch_assoc($result); // we get user permissions first $owner_acc_id = $sqlc->result($result, 0, 'account'); $result = $sqlr->query('SELECT gmlevel, username FROM account WHERE id = ' . $char['account'] . ''); $owner_gmlvl = $sqlr->result($result, 0, 'gmlevel'); $owner_name = $sqlr->result($result, 0, 'username'); if ($user_lvl > $owner_gmlvl || $owner_name === $user_name) { $result = $sqlc->query('SELECT faction, standing FROM character_reputation WHERE guid = ' . $id . ' AND (flags & 1 = 1)'); $output .= ' <center> <div id="tab_content"> <div id="tab"> <ul> <li><a href="char.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['char_sheet'] . '</a></li> <li><a href="char_inv.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['inventory'] . '</a></li> <li><a href="char_extra.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['extra'] . '</a></li> ' . ($char['level'] < 10 ? '' : '<li><a href="char_talent.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['talents'] . '</a></li>') . ' <li><a href="char_achieve.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['achievements'] . '</a></li> <li><a href="char_skill.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['skills'] . '</a></li> <li><a href="char_quest.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['quests'] . '</a></li>'; if (char_get_class_name($char['class']) === 'Hunter') { $output .= ' <li><a href="char_pets.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['pets'] . '</a></li>'; } $output .= ' <li><a href="char_friends.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['friends'] . '</a></li> <li><a href="char_spell.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['spells'] . '</a></li> <li><a href="char_mail.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['mail'] . '</a></li> </ul> <ul>'; // selected char tab at last $output .= ' <li id="selected"><a href="char_rep.php?id=' . $id . '&realm=' . $realmid . '">' . $lang_char['reputation'] . '</a></li>'; $output .= ' </ul> </div> <div id="tab_content2"> <font class="bold"> ' . htmlentities($char['name']) . ' - <img src="img/c_icons/' . $char['race'] . '-' . $char['gender'] . '.gif" onmousemove="toolTip(\'' . char_get_race_name($char['race']) . '\', \'item_tooltip\')" onmouseout="toolTip()" alt="" /> <img src="img/c_icons/' . $char['class'] . '.gif" onmousemove="toolTip(\'' . char_get_class_name($char['class']) . '\',\'item_tooltip\')" onmouseout="toolTip()" alt="" /> - lvl ' . char_get_level_color($char['level']) . ' </font> <br /><br />'; $temp_out = array(1 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi1" onclick="expand(\'i1\', this, \'Alliance\')">[-] Alliance</div> </th> </tr> <tr> <td> <table id="i1" class="lined" style="width: 535px; display: table;">', 0), 2 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi2" onclick="expand(\'i2\', this, \'Horde\')">[-] Horde</div> </th> </tr> <tr> <td> <table id="i2" class="lined" style="width: 535px; display: table;">', 0), 3 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi3" onclick="expand(\'i3\', this, \'Alliance Forces\')">[-] Alliance Forces</div> </th> </tr> <tr> <td> <table id="i3" class="lined" style="width: 535px; display: table;">', 0), 4 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi4" onclick="expand(\'i4\', this, \'Horde Forces\')">[-] Horde Forces</div> </th> </tr> <tr> <td> <table id="i4" class="lined" style="width: 535px; display: table;">', 0), 5 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi5" onclick="expand(\'i5\', this, \'Steamwheedle Cartels\')">[-] Steamwheedle Cartel</div> </th> </tr> <tr> <td> <table id="i5" class="lined" style="width: 535px; display: table;">', 0), 6 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi6" onclick="expand(\'i6\', this, \'The Burning Crusade\')">[-] The Burning Crusade</div> </th> </tr> <tr> <td> <table id="i6" class="lined" style="width: 535px; display: table;">', 0), 7 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi7" onclick="expand(\'i7\', this, \'Shattrath City\')">[-] Shattrath City</div> </th> </tr> <tr> <td> <table id="i7" class="lined" style="width: 535px; display: table;">', 0), 8 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi8" onclick="expand(\'i8\', this, \'Alliance Vanguard\')">[-] Alliance Vanguard</div> </th> </tr> <tr> <td> <table id="i8" class="lined" style="width: 535px; display: table;">', 0), 9 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi9" onclick="expand(\'i9\', this, \'Horde Expedition \')">[-] Horde Expedition </div> </th> </tr> <tr> <td> <table id="i9" class="lined" style="width: 535px; display: table;">', 0), 10 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi10" onclick="expand(\'i10\', this, \'Sholazar Basin\')">[-] Sholazar Basin</div> </th> </tr> <tr> <td> <table id="i10" class="lined" style="width: 535px; display: table;">', 0), 11 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi11" onclick="expand(\'i11\', this, \'Wrath of the Lich King\')">[-] Wrath of the Lich King</div> </th> </tr> <tr> <td> <table id="i11" class="lined" style="width: 535px; display: table;">', 0), 12 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi12" onclick="expand(\'i12\', this, \'Other\')">[-] Other</div> </th> </tr> <tr> <td> <table id="i12" class="lined" style="width: 535px; display: table;">', 0), 0 => array(' <table class="lined" style="width: 550px;"> <tr> <th colspan="3" align="left"> <div id="divi13" onclick="expand(\'i13\', this, \'Unknown\')">[-] Unknown</div> </th> </tr> <tr> <td> <table id="i13" class="lined" style="width: 535px; display: table;">', 0)); $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); if ($sqlc->num_rows($result)) { while ($fact = $sqlc->fetch_assoc($result)) { $faction = $fact['faction']; $standing = $fact['standing']; $rep_rank = fact_get_reputation_rank($faction, $standing, $char['race'], $sqlm); $rep_rank_name = $reputation_rank[$rep_rank]; $rep_cap = $reputation_rank_length[$rep_rank]; $rep = fact_get_reputation_at_rank($faction, $standing, $char['race'], $sqlm); $faction_name = fact_get_faction_name($faction, $sqlm); $ft = fact_get_faction_tree($faction); // not show alliance rep for horde and vice versa: if (1 << $char['race'] - 1 & 690 && ($ft == 1 || $ft == 3) || 1 << $char['race'] - 1 & 1101 && ($ft == 2 || $ft == 4)) { } else { $temp_out[$ft][0] .= ' <tr> <td width="30%" align="left">' . $faction_name . '</td> <td width="55%" valign="top"> <div class="faction-bar"> <div class="rep' . $rep_rank . '"> <span class="rep-data">' . $rep . '/' . $rep_cap . '</span> <div class="bar-color" style="width:' . 100 * $rep / $rep_cap . '%"></div> </div> </div> </td> <td width="15%" align="left" class="rep' . $rep_rank . '">' . $rep_rank_name . '</td> </tr>'; $temp_out[$ft][1] = 1; } } } else { $output .= ' <tr> <td colspan="2"><br /><br />' . $lang_global['err_no_records_found'] . '<br /><br /></td> </tr>'; } foreach ($temp_out as $out) { if ($out[1]) { $output .= $out[0] . ' </table> </td> </tr> </table>'; } } $output .= ' <br /> </div> <br /> </div> <br /> <table class="hidden"> <tr> <td>'; // button to user account page, user account page has own security makebutton($lang_char['chars_acc'], 'user.php?action=edit_user&id=' . $owner_acc_id . '', 130); $output .= ' </td> <td>'; // only higher level GM with delete access can edit character // character edit allows removal of character items, so delete permission is needed if ($user_lvl > $owner_gmlvl && $user_lvl >= $action_permission['delete']) { makebutton($lang_char['edit_button'], 'char_edit.php?id=' . $id . '&realm=' . $realmid . '', 130); $output .= ' </td> <td>'; } // only higher level GM with delete access, or character owner can delete character if ($user_lvl > $owner_gmlvl && $user_lvl >= $action_permission['delete'] || $owner_name === $user_name) { makebutton($lang_char['del_char'], 'char_list.php?action=del_char_form&check%5B%5D=' . $id . '" type="wrn', 130); $output .= ' </td> <td>'; } // only GM with update permission can send mail, mail can send items, so update permission is needed if ($user_lvl >= $action_permission['update']) { makebutton($lang_char['send_mail'], 'mail.php?type=ingame_mail&to=' . $char['name'] . '', 130); $output .= ' </td> <td>'; } makebutton($lang_global['back'], 'javascript:window.history.back()" type="def', 130); $output .= ' </td> </tr> </table> <br /> </center> <!-- end of char_achieve.php -->'; } else { error($lang_char['no_permission']); } } else { error($lang_char['no_char_found']); } }
function char_skill(&$sqlr, &$sqlc) { global $lang_global, $lang_char, $output, $realm_id, $realm_db, $characters_db, $mmfpm_db, $action_permission, $user_lvl, $user_name, $skill_datasite; // this page uses wowhead tooltops wowhead_tt(); //==========================$_GET and SECURE================================= // id and multi realm security to prevent sql injection require_once './include/char/include/char_multi_realm_security.php'; $order_by = isset($_GET['order_by']) ? $sqlc->quote_smart($_GET['order_by']) : 1; $dir = isset($_GET['dir']) ? $sqlc->quote_smart($_GET['dir']) : 1; if (preg_match('/^[01]{1}$/', $dir)) { } else { $dir = 1; } $order_dir = $dir ? 'ASC' : 'DESC'; $dir = $dir ? 0 : 1; //==========================$_GET and SECURE end============================= // getting character data from database $result = $sqlc->query(' SELECT account, name, race, class, gender, level FROM characters WHERE guid = ' . $id . ' LIMIT 1'); // no point going further if character does not exist if ($sqlc->num_rows($result)) { $char = $sqlc->fetch_assoc($result); // we get user permissions first $owner_acc_id = $sqlc->result($result, 0, 'account'); $result = $sqlr->query(' SELECT gmlevel, username FROM account WHERE id = ' . $char['account'] . ''); $owner_gmlvl = $sqlr->result($result, 0, 'gmlevel'); $owner_name = $sqlr->result($result, 0, 'username'); // check user permission if ($user_lvl > $owner_gmlvl || $owner_name === $user_name) { // character sub header $output .= ' <center> <div id="tab_content"> <h1>' . $lang_char['skills'] . '</h1> <br />'; // character menu tab require_once './include/char/include/char_header.php'; // character info require_once './include/char/include/char_info.php'; //---------------Page Specific Data Starts Here-------------------------- $output .= ' <div id="tab_content2"> <table class="lined" style="width: 700px;"> <tr> <th class="title" colspan="' . ($user_lvl ? '3' : '2') . '" align="left">' . $lang_char['skills'] . '</th> </tr> <tr> ' . ($user_lvl ? '<th><a href="char_skill.php?id=' . $id . '&realm=' . $realmid . '&order_by=0&dir=' . $dir . '"' . ($order_by == 0 ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['skill_id'] . '</a></th>' : '') . ' <th align="right"><a href="char_skill.php?id=' . $id . '&realm=' . $realmid . '&order_by=1&dir=' . $dir . '"' . ($order_by == 1 ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['skill_name'] . '</a></th> <th><a href="char_skill.php?id=' . $id . '&realm=' . $realmid . '&order_by=2&dir=' . $dir . '"' . ($order_by == 2 ? ' class="' . $order_dir . '"' : '') . '>' . $lang_char['skill_value'] . '</a></th> </tr>'; $skill_array = array(); $class_array = array(); $prof_1_array = array(); $prof_2_array = array(); $weapon_array = array(); $armor_array = array(); $language_array = array(); $skill_rank_array = array(1 => $lang_char['none'], 350 => $lang_char['none'], 75 => $lang_char['apprentice'], 150 => $lang_char['journeyman'], 225 => $lang_char['expert'], 300 => $lang_char['artisan'], 375 => $lang_char['master'], 450 => $lang_char['grand_master'], 525 => $lang_char['illustrious']); $result = $sqlc->query(' SELECT skill, value, max FROM character_skills WHERE guid = ' . $id . ''); $sqlm = new SQL(); $sqlm->connect($mmfpm_db['addr'], $mmfpm_db['user'], $mmfpm_db['pass'], $mmfpm_db['name']); while ($char_skill = $sqlc->fetch_assoc($result)) { $temp = $char_skill['value']; $skill = $char_skill['skill']; $max = $char_skill['max']; if (skill_get_type($skill, $sqlm) == 6) { array_push($weapon_array, array($user_lvl ? $skill : '', skill_get_name($skill, $sqlm), $temp, $max)); } elseif (skill_get_type($skill, $sqlm) == 7) { array_push($class_array, array($user_lvl ? $skill : '', skill_get_name($skill, $sqlm), $temp, $max)); } elseif (skill_get_type($skill, $sqlm) == 8) { array_push($armor_array, array($user_lvl ? $skill : '', skill_get_name($skill, $sqlm), $temp, $max)); } elseif (skill_get_type($skill, $sqlm) == 9) { array_push($prof_2_array, array($user_lvl ? $skill : '', skill_get_name($skill, $sqlm), $temp, $max)); } elseif (skill_get_type($skill, $sqlm) == 10) { array_push($language_array, array($user_lvl ? $skill : '', skill_get_name($skill, $sqlm), $temp, $max)); } elseif (skill_get_type($skill, $sqlm) == 11) { array_push($prof_1_array, array($user_lvl ? $skill : '', skill_get_name($skill, $sqlm), $temp, $max)); } else { array_push($skill_array, array($user_lvl ? $skill : '', skill_get_name($skill, $sqlm), $temp, $max)); } } unset($char_skill); aasort($skill_array, $order_by, $dir); aasort($class_array, $order_by, $dir); aasort($prof_1_array, $order_by, $dir); aasort($prof_2_array, $order_by, $dir); aasort($weapon_array, $order_by, $dir); aasort($armor_array, $order_by, $dir); aasort($language_array, $order_by, $dir); foreach ($skill_array as $data) { $output .= ' <tr> ' . ($user_lvl ? '<td>' . $data[0] . '</td>' : '') . ' <td align="right">' . $data[1] . '</td> <td valign="center" class="bar skill_bar" style="background-position: ' . (round(450 * $data[2] / $data[3]) - 450) . 'px;"> <span>' . $data[2] . '/' . $data[3] . '</span> </td> </tr>'; } if (count($class_array)) { $output .= ' <tr> <th class="title" colspan="' . ($user_lvl ? '3' : '2') . '" align="left">' . $lang_char['classskills'] . '</th> </tr>'; } foreach ($class_array as $data) { $output .= ' <tr> ' . ($user_lvl ? '<td>' . $data[0] . '</td>' : '') . ' <td align="right"><a href="' . $skill_datasite . '7.' . $char['class'] . '.' . $data[0] . '" target="_blank">' . $data[1] . '</td> <td valign="center" class="bar skill_bar" style="background-position: 0px;"></td> </tr>'; } if (count($prof_1_array)) { $output .= ' <tr> <th class="title" colspan="' . ($user_lvl ? '3' : '2') . '" align="left">' . $lang_char['professions'] . '</th> </tr>'; } foreach ($prof_1_array as $data) { $output .= ' <tr> ' . ($user_lvl ? '<td>' . $data[0] . '</td>' : '') . ' <td align="right"><a href="' . $skill_datasite . '11.' . $data[0] . '" target="_blank">' . $data[1] . '</a></td> <td valign="center" class="bar skill_bar" style="background-position: ' . (round(450 * $data[2] / $data[3]) - 450) . 'px;"> <span>' . $data[2] . '/' . $data[3] . ' (' . $skill_rank_array[$data[3]] . ')</span> </td> </tr>'; } if (count($prof_2_array)) { $output .= ' <tr> <th class="title" colspan="' . ($user_lvl ? '3' : '2') . '" align="left">' . $lang_char['secondaryskills'] . '</th> </tr>'; } foreach ($prof_2_array as $data) { $output .= ' <tr> ' . ($user_lvl ? '<td>' . $data[0] . '</td>' : '') . ' <td align="right"><a href="' . $skill_datasite . '9.' . $data[0] . '" target="_blank">' . $data[1] . '</a></td> <td valign="center" class="bar skill_bar" style="background-position: ' . (round(450 * $data[2] / $data[3]) - 450) . 'px;"> <span>' . $data[2] . '/' . $data[3] . ' (' . $skill_rank_array[$data[3]] . ')</span> </td> </tr>'; } if (count($weapon_array)) { $output .= ' <tr> <th class="title" colspan="' . ($user_lvl ? '3' : '2') . '" align="left">' . $lang_char['weaponskills'] . '</th> </tr>'; } foreach ($weapon_array as $data) { $output .= ' <tr> ' . ($user_lvl ? '<td>' . $data[0] . '</td>' : '') . ' <td align="right">' . $data[1] . '</td> <td valign="center" class="bar skill_bar" style="background-position: ' . (round(450 * $data[2] / $data[3]) - 450) . 'px;"> <span>' . $data[2] . '/' . $data[3] . '</span> </td> </tr>'; } if (count($armor_array)) { $output .= ' <tr> <th class="title" colspan="' . ($user_lvl ? '3' : '2') . '" align="left">' . $lang_char['armorproficiencies'] . '</th> </tr>'; } foreach ($armor_array as $data) { $output .= ' <tr> ' . ($user_lvl ? '<td>' . $data[0] . '</td>' : '') . ' <td align="right">' . $data[1] . '</td> <td valign="center" class="bar skill_bar" style="background-position: 0px;"></td> </tr>'; } if (count($language_array)) { $output .= ' <tr> <th class="title" colspan="' . ($user_lvl ? '3' : '2') . '" align="left">' . $lang_char['languages'] . '</th> </tr>'; } foreach ($language_array as $data) { $output .= ' <tr> ' . ($user_lvl ? '<td>' . $data[0] . '</td>' : '') . ' <td align="right">' . $data[1] . '</td> <td valign="center" class="bar skill_bar" style="background-position: ' . (round(450 * $data[2] / $data[3]) - 450) . 'px;"> <span>' . $data[2] . '/' . $data[3] . '</span> </td> </tr>'; } $output .= ' </table> </div> </div> <br />'; //---------------Page Specific Data Ends here---------------------------- // character sub footer require_once './include/char/include/char_ footer.php'; $output .= ' <br /> </center>'; } else { error($lang_char['no_permission']); } } else { error($lang_char['no_char_found']); } }