/** * Value function to select starting page */ function pageNames() { global $roster; $input_field = '<select name="config_default_page">' . "\n"; $select_one = 1; // --[ Fetch button list from DB ]-- $query = "SELECT `mb`.*, `a`.`basename`\r\n\t\tFROM `" . $roster->db->table('menu_button') . "` AS mb\r\n\t\tLEFT JOIN `" . $roster->db->table('addon') . "` AS a\r\n\t\tON `mb`.`addon_id` = `a`.`addon_id`\r\n\t\tWHERE `scope` IN ('util','realm','guild')\r\n\t\tORDER BY `mb`.`title`;"; $result = $roster->db->query($query); if (!$result) { die_quietly('Could not fetch menu buttons from table'); } while ($row = $roster->db->fetch($result)) { if ($row['addon_id'] != '0' && !isset($roster->locale->act[$row['title']])) { // Include addon's locale files if they exist foreach ($roster->multilanguages as $lang) { $roster->locale->add_locale_file(ROSTER_ADDONS . $row['basename'] . DIR_SEP . 'locale' . DIR_SEP . $lang . '.php', $lang); } } list($title) = explode('|', isset($roster->locale->act[$row['title']]) ? $roster->locale->act[$row['title']] : $row['title']); $title = $roster->locale->act[$row['scope']] . ' - ' . $title; if ($row['addon_id'] != 0) { $row['url'] = $row['scope'] . '-' . $row['basename'] . (empty($row['url']) ? '' : '-' . $row['url']); } if ($row['url'] == $roster->config['default_page'] && $select_one) { $input_field .= ' <option value="' . $row['url'] . '" selected="selected">-[ ' . $title . ' ]-</option>' . "\n"; $select_one = 0; } else { $input_field .= ' <option value="' . $row['url'] . '">' . $title . '</option>' . "\n"; } } $input_field .= '</select>'; $roster->db->free_result($result); return $input_field; }
function _getGuildEvents() { global $roster, $addon; $query = "SELECT "; $query .= "asevent.id "; $query .= "FROM `" . $roster->db->table('event', 'assessment') . "` AS asevent "; $query .= "LEFT JOIN `" . $roster->db->table('groupmembers', 'assessment') . "` AS asmembers "; $query .= "ON asmembers.eventId = asevent.id "; $query .= "LEFT JOIN `" . $roster->db->table('members') . "` AS members "; $query .= "ON asmembers.name = members.name "; $query .= "WHERE members.guild_id = " . $roster->data['guild_id'] . " "; $query .= "GROUP BY asevent.id "; $query .= "ORDER BY asevent.eventName"; if ($result = $roster->db->query($query)) { $ret = array(); if ($roster->db->num_rows($result) > 0) { $array = $roster->db->fetch_all(); require_once $addon['dir'] . 'inc/assessment.event.class.php'; foreach ($array as $set) { $event = new AssessmentEvent(); $event->get($set['id']); $event->getEventListDetails(); $ret[] = $event; } $roster->db->free_result($result); } return $ret; } else { die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); } }
/** * Generate the Honor List * * @return string */ function generateHsList() { global $roster; //Highest Lifetime Rank $query = "SELECT `name`, `lifetimeRankName` FROM `" . $roster->db->table('players') . "` WHERE `guild_id` = '" . $roster->data['guild_id'] . "' ORDER BY `lifetimeHighestRank`DESC, `lifetimeHK` DESC LIMIT 0 , 1"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); $row = $roster->db->fetch($result); if ($row) { $roster->tpl->assign_block_vars('hslist', array('ROW_CLASS' => $roster->switch_row_class(), 'LINK' => makelink('guild-memberslist-honorlist'), 'VALUE' => $roster->locale->act['hslist1'], 'NAME' => $row['name'], 'COUNT' => $row['lifetimeRankName'] ? $row['lifetimeRankName'] : ' ')); } //Highest LifeTime HKs $query = "SELECT `name`, `lifetimeHK` FROM `" . $roster->db->table('players') . "` WHERE `guild_id` = '" . $roster->data['guild_id'] . "' ORDER BY `lifetimeHK` DESC, `lifetimeHighestRank` DESC LIMIT 0 , 1"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); $row = $roster->db->fetch($result); if ($row) { $roster->tpl->assign_block_vars('hslist', array('ROW_CLASS' => $roster->switch_row_class(), 'LINK' => makelink('guild-memberslist-honorlist'), 'VALUE' => $roster->locale->act['hslist2'], 'NAME' => $row['name'], 'COUNT' => $row['lifetimeHK'])); } //Highest honorpoints $query = "SELECT `name`, `honorpoints` FROM `" . $roster->db->table('players') . "` WHERE `guild_id` = '" . $roster->data['guild_id'] . "' ORDER BY `honorpoints` DESC LIMIT 0 , 1"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); $row = $roster->db->fetch($result); if ($row) { $roster->tpl->assign_block_vars('hslist', array('ROW_CLASS' => $roster->switch_row_class(), 'LINK' => makelink('guild-memberslist-honorlist'), 'VALUE' => $roster->locale->act['hslist3'], 'NAME' => $row['name'], 'COUNT' => $row['honorpoints'])); } //Highest arenapoints $query = "SELECT `name`, `arenapoints` FROM `" . $roster->db->table('players') . "` WHERE `guild_id` = '" . $roster->data['guild_id'] . "' ORDER BY `arenapoints` DESC LIMIT 0 , 1"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); $row = $roster->db->fetch($result); if ($row) { $roster->tpl->assign_block_vars('hslist', array('ROW_CLASS' => $roster->switch_row_class(), 'LINK' => makelink('guild-memberslist-honorlist'), 'VALUE' => $roster->locale->act['hslist4'], 'NAME' => $row['name'], 'COUNT' => $row['arenapoints'])); } $roster->db->free_result($result); $roster->tpl->set_handle('hslist', 'hslist.html'); return $roster->tpl->fetch('hslist'); }
function createTables() { global $wowdb, $roster_conf, $db_prefix; // Declare tables needed for EventCalendar $create_events = "CREATE TABLE `" . $db_prefix . "events` (\n\t\t`eventid` int(6) NOT NULL AUTO_INCREMENT,\n\t\t`date` datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t`title` varchar(100) NOT NULL default '',\n\t\t`type` varchar(100) NOT NULL default '',\n\t\t`note` varchar(255) NOT NULL default '',\n\t\t`leader` varchar(100) NOT NULL default '',\t\t\n\t\t`minLevel` int(11) NOT NULL default '0',\n\t\t`maxLevel` int(11) NOT NULL default '0',\n\t\t`maxCount` int(11) NOT NULL default '0',\n\t\tKEY `eventid` (`eventid`)\n\t\t) TYPE=MyISAM;"; $create_eventmembers = "CREATE TABLE `" . $db_prefix . "event_members` (\n\t\t`name` varchar(100) NOT NULL default '',\n\t\t`guild` varchar(255) NOT NULL default '',\n\t\t`class` varchar(100) NOT NULL default '',\n\t\t`level` int(11) NOT NULL default '0',\n\t\tUNIQUE KEY `name` (`name`)\n\t\t) TYPE=MyISAM;"; $create_eventsubscribers = "CREATE TABLE `" . $db_prefix . "event_subscribers` (\n\t\t`eventid` int(11) NOT NULL default '0',\n\t\t`name` varchar(100) NOT NULL default '',\n\t\t`place` varchar(10) NOT NULL default '',\n\t\t`status` varchar(100) NOT NULL default '',\n\t\t`note` varchar(255) NOT NULL default '',\n\t\tKEY `eventid` (`eventid`),\n\t\tKEY `name` (`name`)\n\t\t) TYPE=MyISAM;"; $create_eventlimits = "CREATE TABLE `" . $db_prefix . "event_limits` (\n\t\t`eventid` int(11) NOT NULL default '0',\n\t\t`class` varchar(100) NOT NULL default '',\n\t\t`min` int(11) NOT NULL default '0',\n\t\t`max` int(11) NOT NULL default '0',\n\t\tKEY `eventid` (`eventid`)\n\t\t) TYPE=MyISAM;"; // Create tables declared above $tables = 0; if ($wowdb->query($create_events) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $create_events)) { $tables += 1; } if ($wowdb->query($create_eventmembers) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $create_eventmembers)) { $tables += 1; } if ($wowdb->query($create_eventsubscribers) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $create_raidmembers)) { $tables += 1; } if ($wowdb->query($create_eventlimits) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $create_eventlimits)) { $tables += 1; } if ($tables == 4) { echo border('syellow', 'start'); echo '<table width="300px">'; echo '<tr><td align="center">All tables successfully added</td></tr>'; echo '<tr><td align="center"><a href="addon.php?roster_addon_name=EventCalendar">Finish installation</a></td></tr>'; echo '</table>'; echo border('syellow', 'end'); } }
function createTables() { global $wowdb, $roster_conf, $wordings; // Declare tables needed for RaidTracker $create_nodes = 'CREATE TABLE `' . GATHERER_TABLE . '` ( `id` int(11) NOT NULL auto_increment, `number` int(15) NOT NULL, `nodeNumber` int(11) NOT NULL, `map` varchar(25) NOT NULL, `nodeType` varchar(25) NOT NULL, `continent` int(3) NOT NULL, PRIMARY KEY (`id`), KEY `number` (`number`) ) ENGINE=MyISAM;'; // Create tables declared above $tables = 0; if ($wowdb->query($create_nodes) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $create_nodes)) { $tables += 1; } if ($tables == 1) { print message_die('All tables successfully added<br /><br /><a href="' . $script_filename . '">Finish installation</a>', 'Installation Successful', 'syellow'); } else { print message_die('Install failed<br /><br />Please copy the contents of the SQL log and make a post in the Gather Sub-forum at WoWRoster.net', 'Install Error'); } }
/** * Sets up plugin data for use in the plugin framework * * @param string $pluginname | The name of the plugin * @return array $plugin | The plugin's database record * * @global array $plugin_conf | The plugin's config data is added to this global array. */ function getplugin($pluginname) { global $roster, $accounts; if (!isset($accounts->plugin_data[$pluginname])) { roster_die(sprintf($roster->locale->act['plugin_not_installed'], $pluginname), $roster->locale->act['plugin_error']); } $plugin = $accounts->plugin_data[$pluginname]; // Get the plugin's location $plugin['dir'] = $addon['inc_dir'] . DIR_SEP . 'plugin' . DIR_SEP . $plugin['basename']; // Get the plugin's url $plugin['url'] = $addon['inc_dir'] . DIR_SEP . 'plugin' . DIR_SEP . $plugin['basename'] . '/'; $plugin['url_full'] = ROSTER_URL . $plugin['url']; $plugin['url_path'] = ROSTER_PATH . $plugin['url']; // Get plugin's url to images directory $plugin['image_url'] = ROSTER_URL . $plugin['url'] . 'images/'; $plugin['image_path'] = ROSTER_PATH . $plugin['url'] . 'images/'; // Get the plugin's css style $plugin['css_file'] = $plugin['dir'] . 'style.css'; if (file_exists($plugin['css_file'])) { $plugin['css_url'] = $plugin['url_path'] . 'style.css'; } else { $plugin['css_url'] = ''; } // Get the plugin's inc dir $plugin['inc_dir'] = $plugin['dir'] . 'inc' . DIR_SEP; // Get the plugin's conf file $plugin['conf_file'] = $plugin['inc_dir'] . DIR_SEP . 'conf.php'; // Get the plugin's search file $plugin['search_file'] = $plugin['inc_dir'] . DIR_SEP . 'search.inc.php'; // Get the plugin's locale dir $plugin['locale_dir'] = $plugin['dir'] . 'locale' . DIR_SEP; // Get the plugin's admin dir $plugin['admin_dir'] = $plugin['dir'] . 'admin' . DIR_SEP; // Get the plugin's trigger file $plugin['trigger_file'] = $plugin['inc_dir'] . 'update_hook.php'; // Get the plugin's ajax functions file $plugin['ajax_file'] = $plugin['inc_dir'] . 'ajax.php'; // Get config values for the default profile and insert them into the array $plugin['config'] = ''; $query = "SELECT `config_name`, `config_value` FROM `" . $roster->db->table('plugin_config', $addon['basename']) . "` WHERE `plugin_id` = '" . $plugin['plugin_id'] . "' ORDER BY `id` ASC;"; $result = $roster->db->query($query); if (!$result) { die_quietly($roster->db->error(), $roster->locale->act['plugin_error'], __FILE__, __LINE__, $query); } if ($roster->db->num_rows($result) > 0) { while ($row = $roster->db->fetch($result, SQL_ASSOC)) { $plugin['config'][$row['config_name']] = $row['config_value']; } $roster->db->free_result($result); } return $plugin; }
/** * Guild_pre trigger, set out guild id here * * @param array $guild * CP.lua guild data */ function guild_post($guild) { global $roster, $update; $addon = getaddon('raidbox'); //echo '<pre>'; //print_r($addon); //echo '</pre>'; //build critera data $query = "SELECT * FROM `" . $roster->db->table('g_criteria', 'achievements') . "`"; // WHERE `cid` = '15079'"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', basename(__FILE__), __LINE__, $query); $crit = array(); while ($row = $roster->db->fetch($result)) { $crit[$row['crit_id']] = array('crit_id' => $row['crit_id'], 'crit_date' => $row['crit_date'], 'crit_value' => $row['crit_value']); } //build achievement data $query1 = "SELECT * FROM `" . $roster->db->table('g_achievements', 'achievements') . "`"; // WHERE `cid` = '15079'"; $result1 = $roster->db->query($query1) or die_quietly($roster->db->error(), 'Database Error', basename(__FILE__), __LINE__, $query); $achi = array(); while ($row = $roster->db->fetch($result1)) { $achi[$row['achie_id']] = array('achie_id' => $row['achie_id'], 'achie_date' => $row['achie_date']); } // this loops each raid foreach ($this->raids as $raid => $rinfo) { $overide = false; if (isset($achi[$rinfo['id']]['achie_date'])) { $overide = true; } $this->messages .= '<br/>' . $rinfo['title'] . '<ul>'; //echo $rinfo['title'].' <img src="'.$roster->config['img_url'].'interface/icons/'.$rinfo['icon'].'"></a><br>'; foreach ($rinfo['criteria'] as $id => $boss) { if (isset($crit[$boss['id']]['crit_value'])) { $down = $crit[$boss['id']]['crit_value']; } else { $down = '0'; } if ($overide or $down >= 1) { $down = 1; } //echo $boss['description'] . ' x' . $down . '<br>'; $this->messages .= '<li>' . $boss['description'] . ' - ' . $down . '</li>'; $querystr = "UPDATE `" . $roster->db->table('addon_config') . "` SET `config_value` = '" . $down . "' WHERE `config_name` = '" . $raid . '_boss_' . ($id + 1) . "'"; //$this->messages .= $querystr.'<br>'; $result = $roster->db->query($querystr); } $this->messages .= '</ul>'; } return true; }
/** * dbFunction Insert or Update * * @param string $string * @return string date */ function _dbWrite() { global $roster, $addon; $query = $this->_buildWriteQuery(); $ret; if (!$roster->db->query($query)) { die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); } else { if ($this->idNeeded && $this->id == 0) { $query = "SELECT LAST_INSERT_ID();"; if ($roster->db->query($query)) { $this->id = $roster->db->query_first($query); } else { die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); } } } }
function glyphlookup($locales) { global $roster; $query = "SELECT DISTINCT `recipe_name`, `reagents`, `recipe_type`, `recipe_tooltip`, `recipe_texture`, `item_color`\n\t\t\tFROM `" . $roster->db->table('recipes') . "` as r, `" . $roster->db->table('members') . "` as m\n\t\t\tWHERE (`skill_name` = '" . $roster->locale->act['sill'] . "')\n\t\t\tand `m`.`guild_id` = '" . $roster->data['guild_id'] . "'\n\t\t\tand `m`.`member_id` = `r`.`member_id`"; for ($i = 1; $i < count($locales); $i++) { if ($locales[$i] != '') { $query .= " OR (`skill_name` = '" . $roster->locale->act['sill'] . "') "; } } $query .= "ORDER BY recipe_type, `reagents`,`recipe_name` "; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', basename(__FILE__), __LINE__, $query); $count = 0; $temp = array(); while ($row = $roster->db->fetch($result)) { $temp[$count] = $row; $count++; } return $temp; }
function gemlookup($locales, $color) { global $roster; $query = "SELECT DISTINCT `recipe_name`, `reagents`, `recipe_type`, `recipe_tooltip`, `recipe_texture`, `item_color`\n\t\t\tFROM `" . $roster->db->table('recipes') . "`\n\t\t\tWHERE (`recipe_type` = '" . $roster->locale->act['GemType'][$color] . "'\n\t\t\tAND `skill_name` = '" . $roster->locale->act['sill'] . "') "; for ($i = 1; $i < count($locales); $i++) { if ($locales[$i] != '') { $query .= " OR (`recipe_type` = '" . $roster->locale->act['GemType'][$color] . "'\n\t\t\tAND `skill_name` = '" . $roster->locale->act['sill'] . "') "; } } $query .= "ORDER BY `reagents`,`recipe_name` "; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', basename(__FILE__), __LINE__, $query); $count = 0; $temp = array(); while ($row = $roster->db->fetch($result)) { $temp[$count] = $row; $count++; } return $temp; }
function set_tpl($data) { global $roster; // Create a character based icon if ($data['raceEn'] == '' || $data['sexid'] == '') { $data['char_icon'] = 'unknown'; } else { $data['char_icon'] = strtolower($data['raceEn']) . '-' . ($data['sexid'] == '0' ? 'male' : 'female'); } /** * Assigning everything this file may need to the template * The only tpl vars not here are ones that need to be generated in their respective methods */ $query = 'SELECT guild.* ' . "FROM `" . $roster->db->table('guild') . "` guild " . "WHERE `guild_id` = '" . $roster->data['guild_id'] . "';"; $result = $roster->db->query($query); if (!$result) { die_quietly($roster->db->error(), 'Database Error', __FILE__ . '<br />Function: ' . __FUNCTION__, __LINE__, $query); } $rdata = $roster->db->fetch($result); $roster->tpl->assign_vars(array('CHAR_ICON' => $data['char_icon'], 'NAME' => $data['name'], 'SERVER' => $data['server'], 'ID' => $data['member_id'], 'LOCALE' => $data['clientLocale'], 'LEVEL' => $data['level'], 'RACE' => $data['race'], 'CLASS' => $data['class'], 'GUILD_TITLE' => $data['guild_title'], 'GUILD_NAME' => $data['guild_name'], 'FACTION_EN' => strtolower($rdata['factionEn']), 'FACTION' => $rdata['faction'])); }
function selectQuery($table, $fieldtoget, $field, $current, $urltorun) { global $roster; /** * table, field, current option if matching to existing data (EG: $row['state']) * and you want the drop down to be preselected on their current data, the id field from that table (EG: stateid) */ $sql = "SELECT {$fieldtoget} FROM {$table} ORDER BY `quest_data`.{$field} ASC;"; // execute SQL query and get result $sql_result = $roster->db->query($sql) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $sql); // put data into drop-down list box while ($row = $roster->db->fetch($sql_result)) { $id = rawurlencode($row["{$field}"]); // must leave double quote $optiontocompare = $row["{$field}"]; // must leave double quote $optiontodisplay = $row["{$field}"]; // must leave double quote $roster->tpl->assign_block_vars($field . '_list', array('NAME' => $optiontodisplay, 'VALUE' => makelink("{$urltorun}={$id}", true), 'SELECTED' => stripslashes($current) == $optiontocompare ? true : false)); } }
function guide_step2() { global $roster; $roster->tpl->assign_var('S_STEP_2', true); $name = trim(post_or_db('name')); $server = trim(post_or_db('server')); $region = strtoupper(substr(trim(post_or_db('region')), 0, 2)); if (!empty($name) || !empty($server) || !empty($region)) { $query = "UPDATE `" . $roster->db->table('upload') . "` SET `default` = '0';"; if (!$roster->db->query($query)) { die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); } $query = "INSERT INTO `" . $roster->db->table('upload') . "`" . " (`name`,`server`,`region`,`type`,`default`)" . " VALUES ('" . $name . "','" . $server . "','" . $region . "','0','1');"; if (!$roster->db->query($query)) { die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); } $roster->tpl->assign_var('MESSAGE', messagebox(sprintf($roster->locale->act['guide_complete'], makelink('rostercp-install')))); } else { $roster->tpl->assign_var('MESSAGE', messagebox($roster->locale->act['upload_rules_error'], '', 'sred')); } }
function createTables() { global $wowdb, $roster_conf, $rt_wordings, $db_prefix; // Declare tables needed for RaidTracker $create_raids = "CREATE TABLE `" . $db_prefix . "raids` (\n\t\t\t\t\t`raidnum` int(6) NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t`raidid` datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t`instanceid` int(12) NOT NULL ,\n\t\t\t\t\t`end` int(12) NOT NULL default '0',\n\t\t\t\t\t`zone` varchar(100) NOT NULL default '',\n\t\t\t\t\t`note` varchar(255) NOT NULL default '',\n\t\t\t\t\t`deleted` int(1) default '0',\n\t\t\t\t\tKEY `raidnum` (`raidnum`),\n\t\t\t\t\tKEY `raidid` (`raidid`),\n\t\t\t\t\tKEY `instanceid` (`instanceid`)\n\t\t\t\t\t) TYPE=MyISAM;"; $create_raidbosskills = "CREATE TABLE " . $db_prefix . "raidbosskills (\n\t\t\t\t\t\t\t`raidnum` int(12) NOT NULL default '0',\n\t\t\t\t\t\t\t`raidid` datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t\t\t`boss` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t\t`time` datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t\t\tKEY `raidnum` (`raidnum`)\n\t\t\t\t\t\t\t) TYPE=MyISAM;"; $create_raiditems = "CREATE TABLE `" . $db_prefix . "raiditems` (\n\t\t\t\t\t\t `raidnum` int(12) NOT NULL default '0',\n\t\t\t\t\t\t `raidid` datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t\t `itemname` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t `zone` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t `boss` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t `number` int(12) NOT NULL default '0',\n\t\t\t\t\t\t `color` varchar(10) NOT NULL default 'ffffffff',\n\t\t\t\t\t\t `loottime` datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t\t `name` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t `note` varchar(255) NOT NULL default '',\n\t\t\t\t\t\t KEY `itemname` (`itemname`),\n\t\t\t\t\t\t KEY `raidnum` (`raidnum`),\n\t\t\t\t\t\t KEY `name` (`name`)\n\t\t\t\t\t\t) TYPE=MyISAM;"; $create_raidmembers = "CREATE TABLE `" . $db_prefix . "raidmembers` (\n\t\t\t\t\t\t\t `name` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t\t `race` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t\t `class` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t\t `level` int(11) NOT NULL default '0',\n\t\t\t\t\t\t\t UNIQUE KEY `name` (`name`)\n\t\t\t\t\t\t\t) TYPE=MyISAM;"; $create_raidjoins = "CREATE TABLE `" . $db_prefix . "raidjoins` (\n\t\t\t\t\t\t `raidnum` int(12) NOT NULL default '0',\n\t\t\t\t\t\t `raidid` datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t\t `datejoin` datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t\t `name` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t KEY `raidnum` (`raidnum`),\n\t\t\t\t\t\t KEY `name` (`name`),\n\t\t\t\t\t\t KEY `datejoin` (`datejoin`)\n\t\t\t\t\t\t) TYPE=MyISAM;"; $create_raidleaves = "CREATE TABLE `" . $db_prefix . "raidleaves` (\n\t\t\t\t\t\t `raidnum` int(12) NOT NULL default '0',\n\t\t\t\t\t\t `raidid` datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t\t `index` int(11) NOT NULL default '0',\n\t\t\t\t\t\t `dateleft` datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t\t `name` varchar(100) NOT NULL default '',\n\t\t\t\t\t\t KEY `raidnum` (`raidnum`),\n\t\t\t\t\t\t KEY `name` (`name`),\n\t\t\t\t\t\t KEY `dateleft` (`dateleft`)\n\t\t\t\t\t\t) TYPE=MyISAM;"; // Create tables declared above $tables = 0; if ($wowdb->query($create_raidleaves) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $create_raidleaves)) { $tables += 1; } if ($wowdb->query($create_raidjoins) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $create_raidjoins)) { $tables += 1; } if ($wowdb->query($create_raidmembers) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $create_raidmembers)) { $tables += 1; } if ($wowdb->query($create_raiditems) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $create_raiditems)) { $tables += 1; } if ($wowdb->query($create_raidbosskills) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $create_raidbosskills)) { $tables += 1; } if ($wowdb->query($create_raids) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $create_raids)) { $tables += 1; } if ($tables == 6) { echo border('syellow', 'start'); echo '<table width="300px">'; echo '<tr><td align="center">All tables successfully added</td></tr>'; echo '<tr><td align="center"><a href="addon.php?roster_addon_name=RaidTracker">Finish installation</a></td></tr>'; echo '</table>'; echo border('syellow', 'end'); } }
/** * Parse multi-line SQL statements into a single line * * @param string $sql SQL file contents * @param char $delim End-of-statement SQL delimiter * @return array */ function parse_sql($sql, $delim) { if ($sql == '') { die_quietly('Could not obtain SQL structure/data'); } $retval = array(); $statements = explode($delim, $sql); unset($sql); $linecount = count($statements); for ($i = 0; $i < $linecount; $i++) { if ($i != $linecount - 1 || strlen($statements[$i]) > 0) { $statements[$i] = trim($statements[$i]); if (strpos($statements[$i], $roster->db->table('menu')) === false && strpos($statements[$i], $roster->db->table('menu_button')) === false) { $statements[$i] = str_replace("\r\n", '', $statements[$i]) . "\n"; // Remove 2 or more spaces $statements[$i] = preg_replace('#\\s{2,}#', ' ', $statements[$i]); $retval[] = trim($statements[$i]); } } } unset($statements); return $retval; }
function insert_stat($itemrawlist) { global $roster_conf, $addon_conf, $wowdb; foreach ($itemrawlist as $group => $itemraw) { $item = explode("\n", $itemraw); foreach ($item as $itemsplit) { $itemtmp = explode("\t", $itemsplit); $itemrowid = $itemtmp[0]; $items = explode(" ", $itemtmp[1]); $itemcount = count($items); $insertitems = ''; $insertvals = ''; for ($i = 0; $i < $itemcount; $i++) { $insertitems .= ', `' . strtolower($items[$i + 1]) . '`'; $itemval = $items[$i]; $insertvals .= ", '" . $itemval . "'"; $i++; } $insertsql = "INSERT INTO `roster171_dkpitemstats` (`suffix_id`, `text_id`" . $insertitems . ") VALUES ('" . $itemrowid . "', '" . $group . "'" . $insertvals . ")"; $result = $wowdb->query($insertsql) or die_quietly($wowdb->error(), 'roster_dkp', __FILE__, __LINE__, $insertsql); print $insertsql . "<br>" . $result . "<br><br>"; } } }
function getitemcache($itemid, $itemname, $itemdkpval = '', $itemquality = 0, $itemcolor = 0, $itemtexture = 0, $update_outdated = 0) { global $roster_conf, $addon_conf, $wowdb, $wordings; $updatecache = FALSE; $insertcache = FALSE; $date_now = date("Y-m-d H:i"); $udate_now = date("U"); // Test if our itemcache table exists $query = "SHOW TABLES LIKE '" . ROSTER_ADDON_DKP_WIZARD_CACHE . "'"; $result = $wowdb->query($query) or die_quietly($wowdb->error(), 'dkp_wizard', __FILE__, __LINE__, $query); if ($row = $wowdb->fetch_assoc($result)) { $wowdb->free_result($result); // Get config values and insert them into the array $query = "SELECT * FROM `" . ROSTER_ADDON_DKP_WIZARD_CACHE . "` WHERE `item_id` = '" . $itemid . "' LIMIT 1"; $result = $wowdb->query($query) or die_quietly($wowdb->error(), 'dkp_wizard', __FILE__, __LINE__, $query); if ($row = $wowdb->fetch_assoc($result)) { $cache_item = $row; $udate_item = strtotime($cache_item['storedate']); $oldtooltip = $row['item_tooltip']; if (($udate_now - $udate_item > 604800 || $udate_item > $udate_now) && $update_outdated) { // The Store Date of the item in the cache is too old (7 days) or in the future!!! // Lets re-get the details and update the cache $updatecache = TRUE; } if ($cache_item['item_quality'] != $itemquality && $itemquality) { // The Item Quality does not match with the cache, lets update the cache $updatecache = TRUE; } if ($cache_item['item_color'] != $itemcolor && $itemcolor) { // The Item Color does not match with the cache, lets update the cache $updatecache = TRUE; } if ($cache_item['item_texture'] != $itemtexture && $itemtexture) { // The Item Texture does not match with the cache, lets update the cache $updatecache = TRUE; } if (isset($itemdkpval) && $itemdkpval != '' && $cache_item['dkp_value'] != $itemdkpval) { // The Item Texture does not match with the cache, lets update the cache $updatecache = TRUE; } } else { // Item does not exist in cache yet, lets flag the item for caching. $insertcache = TRUE; } $wowdb->free_result($result); if ($updatecache || $insertcache) { $itemid_split = explode(":", $itemid); $url = $addon_conf['allakhazam'] . $itemid_split[0] . '&locale=' . $roster_conf['roster_lang']; print $url . '<br>'; $itemtooltiptmp = rosterdkp_gettooltip($url); if (is_array($itemtooltiptmp['set'])) { $itemset['id'] = $itemtooltiptmp['set']['id']; $itemset['name'] = $itemtooltiptmp['set']['name']; } else { $itemset['id'] = 0; $itemset['name'] = ''; } $itemtooltiptmp = $itemtooltiptmp['tooltip']; $item['item_id'] = $itemid; // Add the ItemStats based on the SuffixID (if there is any) $tooltipaddon = ''; if ($itemid_split[2] > 0) { // Get the Statistics for this Suffix $query = "SELECT * FROM `" . ROSTER_ADDON_DKP_WIZARD_CACHE_STATS . "` WHERE `suffix_id` = '" . $itemid_split[2] . "' LIMIT 1"; $result = $wowdb->query($query) or die_quietly($wowdb->error(), 'roster_dkp', __FILE__, __LINE__, $query); if ($row = $wowdb->fetch_assoc($result)) { foreach ($row as $wording => $value) { if ($value && $wording != 'suffix_id' && $wording != 'text_id') { if ($wording == 'block' || $wording == 'dodge') { $tooltipaddon .= "\n +" . $value . '% ' . $wordings[$roster_conf['roster_lang']][$wording]; } elseif ($wording == 'critical_hit') { $tooltipaddon .= "\n " . $wordings[$roster_conf['roster_lang']][$wording] . ' +' . $value . '%'; } elseif ($wording == 'on_get_hit_shadow_bolt') { $tooltipaddon .= "\n " . $wordings[$roster_conf['roster_lang']][$wording] . ' (' . $value . ' ' . $wordings[$roster_conf['roster_lang']]['damage'] . ')'; } else { $tooltipaddon .= "\n +" . $value . ' ' . $wordings[$roster_conf['roster_lang']][$wording]; } } elseif ($wording == 'text_id') { $tooltipaddon_desc = $wordings[$roster_conf['roster_lang']]['statlocal'][$row['text_id']]; } } } } if ($itemtooltiptmp && isset($oldtooltip)) { $itemtooltiptmp = $oldtooltip; } $itemtooltiptmp = explode("\n", $itemtooltiptmp); if ($tooltipaddon_desc != '') { $itemtooltiptmp[0] = str_replace("...", $tooltipaddon_desc, $itemtooltiptmp[0]); } $tooltip = implode("\n", $itemtooltiptmp) . $tooltipaddon; $item['item_tooltip'] = $tooltip; $item['item_tooltip_escape'] = $wowdb->escape($item['item_tooltip']); if (!$item['item_tooltip'] || eregi("tem not f", $item['item_tooltip'])) { $item['item_tooltip'] = $itemname . $tooltipaddon; $item['item_tooltip_escape'] = $wowdb->escape($item['item_tooltip']); } if ($itemname && $itemname != '') { $item['item_name'] = $wowdb->escape($itemname); } else { $item['item_name'] = $cache_item['item_name']; } if ($itemquality) { $item['item_quality'] = $itemquality; } else { $item['item_quality'] = $cache_item['item_quality']; } if ($itemcolor) { $item['item_color'] = $wowdb->escape($itemcolor); } else { $item['item_color'] = $cache_item['item_color']; } if ($itemtexture) { $item['item_texture'] = $wowdb->escape($itemtexture); } else { $item['item_texture'] = $cache_item['item_texture']; } if (isset($itemdkpval) && $itemdkpval != '') { $item['dkp_value'] = $itemdkpval; } elseif ($cache_item['dkp_value']) { $item['dkp_value'] = $cache_item['dkp_value']; } else { $item['dkp_value'] = 0.0; } if ($itemset['id']) { $item['item_setid'] = $itemset['id']; $item['item_setname'] = $wowdb->escape($itemset['name']); } elseif ($cache_item['item_setid']) { $item['item_setid'] = $cache_item['item_setid']; $item['item_setname'] = $cache_item['item_setname']; } else { $item['item_setid'] = 0; $item['item_setname'] = ''; } } else { $item = $cache_item; } if ($insertcache) { $insertsql = "INSERT INTO `" . ROSTER_ADDON_DKP_WIZARD_CACHE . "` ( `cache_id` , `storedate` , `item_name` , `item_id` , `item_quality` , `item_tooltip` , `item_color` , `item_texture` , `item_setid` , `item_setname` , `dkp_value` ) VALUES ('', '" . $date_now . "', '" . $item['item_name'] . "', '" . $item['item_id'] . "', '" . $item['item_quality'] . "', '" . $item['item_tooltip_escape'] . "', '" . $item['item_color'] . "', '" . $item['item_texture'] . "', '" . $item['item_setid'] . "', '" . $item['item_setname'] . "', '" . $item['dkp_value'] . "')"; $result = $wowdb->query($insertsql) or die_quietly($wowdb->error(), 'roster_dkp', __FILE__, __LINE__, $insertsql); // Re-Get the item from the cache now $query = "SELECT * FROM `" . ROSTER_ADDON_DKP_WIZARD_CACHE . "` WHERE `item_id` = '" . $itemid . "' LIMIT 1"; $result = $wowdb->query($query) or die_quietly($wowdb->error(), 'roster_dkp', __FILE__, __LINE__, $query); if ($row = $wowdb->fetch_assoc($result)) { $item = $row; } } elseif ($updatecache) { $updatesql = "UPDATE `" . ROSTER_ADDON_DKP_WIZARD_CACHE . "` SET `storedate` = '" . $date_now . "', `item_name` = '" . $item['item_name'] . "', `item_id` = '" . $item['item_id'] . "', `item_quality` = '" . $item['item_quality'] . "', `item_tooltip` = '" . $item['item_tooltip_escape'] . "', `item_color` = '" . $item['item_color'] . "', `item_texture` = '" . $item['item_texture'] . "', `item_setid` = '" . $item['item_setid'] . "', `item_setname` = '" . $item['item_setname'] . "', `dkp_value` = '" . $item['dkp_value'] . "' WHERE `cache_id` = " . $cache_item['cache_id'] . " LIMIT 1"; $result = $wowdb->query($updatesql) or die_quietly($wowdb->error(), 'roster_dkp', __FILE__, __LINE__, $updatesql); // Re-Get the item from the cache now $query = "SELECT * FROM `" . ROSTER_ADDON_DKP_WIZARD_CACHE . "` WHERE `item_id` = '" . $itemid . "' LIMIT 1"; $result = $wowdb->query($query) or die_quietly($wowdb->error(), 'roster_dkp', __FILE__, __LINE__, $query); if ($row = $wowdb->fetch_assoc($result)) { $item = $row; } } return $item; } }
define('ALTMONITOR_MAIN_NO_ALTS', 1); define('ALTMONITOR_ALT_WITH_MAIN', 2); define('ALTMONITOR_ALT_NO_MAIN', 3); define('ALTMONITOR_MAIN_MANUAL_WITH_ALTS', 4); define('ALTMONITOR_MAIN_MANUAL_NO_ALTS', 5); define('ALTMONITOR_ALT_MANUAL_WITH_MAIN', 6); define('ALTMONITOR_ALT_MANUAL_NO_MAIN', 7); /* $manual = $alt_type & 0x4 $alt = $alt_type & 0x2 $single = $alt_type & 0x1 */ // -[ Test if our config table exists ]- $query = "SHOW TABLES LIKE '" . ROSTER_ALT_CONFIG_TABLE . "'"; $result = $wowdb->query($query) or die_quietly($wowdb->error(), 'AltMonitor', __FILE__, __LINE__, $query); if ($row = $wowdb->fetch_assoc($result)) { $wowdb->free_result($result); // -[ Get config values and insert them into the array ]- $query = "SELECT `config_name`, `config_value` FROM `" . ROSTER_ALT_CONFIG_TABLE . "` ORDER BY `id` ASC;"; $result = $wowdb->query($query) or die_quietly($wowdb->error(), 'AltMonitor', __FILE__, __LINE__, $query); while ($row = $wowdb->fetch_assoc($result)) { $addon_conf['AltMonitor'][$row['config_name']] = stripslashes($row['config_value']); } $wowdb->free_result($result); $dbversion = $addon_conf['AltMonitor']['version']; } else { $dbversion = '0.0.0'; // we need to install $addon_conf['AltMonitor']['update_type'] = 0; // for the trigger file }
/** * User defined error handling function * * @param int $errno * @param string $errmsg * @param string $filename * @param int $linenum * @param mixed $vars */ function handler($errno, $errmsg, $filename, $linenum, $vars = '') { global $roster; $errortype = array(E_WARNING => 'Warning', E_NOTICE => 'Notice', E_CORE_ERROR => 'Core Error', E_CORE_WARNING => 'Core Warning', E_COMPILE_ERROR => 'Compile Error', E_COMPILE_WARNING => 'Compile Warning', E_USER_ERROR => 'Roster Error', E_USER_WARNING => 'Roster Warning', E_USER_NOTICE => 'Roster Notice', E_STRICT => 'Runtime Notice', E_DEPRECATED => 'Core Warning, Depreciated', E_RECOVERABLE_ERROR => 'Catchable fatal error', E_USER_DEPRECATED => 'User-generated warning message'); // NOTE: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR and E_COMPILE_WARNING // error levels will be handled as per the error_reporting settings. if ($errno == E_USER_ERROR) { if ($roster->config['debug_mode']) { die_quietly($errmsg, $errortype[$errno], $filename, $linenum); } else { die_quietly("A error occured while processing this page.<br />Please report the following error to the owner of this website.<br /><br /><b>{$errmsg}</b>", $errortype[$errno]); } } // set of errors for which a trace will be saved if ($errno & $this->error_level) { $this->report[$filename][] = $errortype[$errno] . " line {$linenum}: " . $errmsg; } }
/** * Process Data for entry to the database * * @return string Settings changed or not changed */ function processpData() { global $roster, $addon, $user, $uid; $update_sql = array(); $mid = 0; $src = ''; $settings = array(); foreach ($_POST as $sName => $settingValue) { if ($sName != 'process') { list($type, $settingName) = explode(':', $sName); if ($type == 'select') { if ($settingName == 'is_main') { $mid = $roster->db->escape($settingValue); //$roster->db->escape( $settingValue ); setMain($roster->auth->user['id'], $mid); } if ($settingName == 'avsig_src') { //$user->profile->setAvSig($roster->auth->user['id'], $mid, $src); } } if ($type == 'disp_') { $settings[$settingName] = $settingValue; } } } // Update DataBase if (!empty($settings)) { $querystr = "SELECT * FROM `" . $roster->db->table('profile', 'user') . "` WHERE `uid` = '" . $roster->auth->uid . "';"; $result = $roster->db->query($querystr) or die_quietly($roster->db->error(), 'WowDB Error', __FILE__ . '<br />Function: ' . __FUNCTION__, __LINE__, $querystr); if ($roster->db->num_rows() == 1) { $sql = "UPDATE `" . $roster->db->table('profile', 'user') . "` SET " . $roster->db->build_query('UPDATE', $settings) . " WHERE `uid` = '" . $roster->auth->uid . "';"; } else { $settings['uid'] = $roster->auth->uid; $sql = "INSERT `" . $roster->db->table('profile', 'user') . "` " . $roster->db->build_query('INSERT', $settings) . ";"; } $result = $roster->db->query($sql); if (!$result) { $roster->set_message('<span style="color:#0099FF;font-size:11px;">Error saving settings</span><br />MySQL Said:<br /><pre>' . $roster->db->error() . '</pre><br />'); } $roster->set_message('<span style="color:#0099FF;font-size:11px;">Settings have been changed</span>'); } else { $roster->set_message('<span style="color:#0099FF;font-size:11px;">No changes have been made</span>'); } return true; }
tableHeaderRow(array('<a href="' . makelink($url . '&s=date') . '">' . $roster->locale->act['when'] . '</a>', '<a href="' . makelink($url . '&s=name') . '">' . $roster->locale->act['them'] . '</a>', '<a href="' . makelink($url . '&s=gn') . '">' . $roster->locale->act['us'] . '</a>', '<a href="' . makelink($url . '&s=result') . '">' . $roster->locale->act['result'] . '</a>', '<a href="' . makelink($url . '&s=zone') . '">' . $roster->locale->act['zone'] . '</a>', '<a href="' . makelink($url . '&s=subzone') . '">' . $roster->locale->act['subzone'] . '</a>', '<a href="' . makelink($url . '&s=diff') . '">' . $roster->locale->act['leveldiff'] . '</a>')); $query = "SELECT `pvp`.*, `members`.`name` AS gn" . " FROM `" . $roster->db->table('pvp2', $addon['basename']) . "` AS pvp" . " LEFT JOIN `" . $roster->db->table('members') . "` AS members ON `members`.`member_id` = `pvp`.`member_id`" . " WHERE `pvp`.`guild` = '" . $guild . "'"; if ($sort == 'name') { $query .= ' ORDER BY `name`, `leveldiff` DESC, `guild`;'; } elseif ($sort == 'gn') { $query .= ' ORDER BY `gn`, `leveldiff` DESC;'; } elseif ($sort == 'race') { $query .= ' ORDER BY `race`, `name`, `leveldiff` DESC;'; } elseif ($sort == 'class') { $query .= ' ORDER BY `class`, `name`, `leveldiff` DESC;'; } elseif ($sort == 'diff') { $query .= ' ORDER BY `leveldiff` DESC, `name`;'; } elseif ($sort == 'result') { $query .= ' ORDER BY `win` DESC, `name`;'; } elseif ($sort == 'zone') { $query .= ' ORDER BY `zone`, `name`;'; } elseif ($sort == 'subzone') { $query .= ' ORDER BY `subzone`, `name`;'; } elseif ($sort == 'date') { $query .= ' ORDER BY `date` DESC, `name`;'; } else { $query .= ' ORDER BY `date` DESC, `name`;'; } $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); while ($row = $roster->db->fetch($result)) { $roster->tpl->assign_block_vars('rows', array('ROW_CLASS' => $roster->switch_row_class(), 'DATE' => readbleDate($row['date']), 'LINK' => makelink('guild-' . $addon['basename'] . '&type=playerinfo&player=' . urlencode($row['name'])), 'NAME' => $row['name'], 'GLINK' => makelink('char-' . $addon['basename'] . '-pvp&a=c:' . $row['member_id']), 'GNAME' => $row['gn'], 'WIN' => $row['win'] == '1' ? true : false, 'ZONE' => $row['zone'], 'SUBZONE' => $row['subzone'], 'LEVELDIFF' => $row['leveldiff'])); } $roster->db->free_result($result); } $roster->tpl->set_handle('body', $addon['basename'] . '/guild.html'); $roster->tpl->display('body');
?> </th> <th class="membersHeader" <?php echo makeOverlib($roster->locale->act['order_use']); ?> > <?php echo $roster->locale->act['order']; ?> </th> <th class="membersHeaderRight"> </th> </tr> </thead> <tbody> <?php $query = "SELECT *\n\tFROM `" . $roster->db->table('Key', 'Key_BC') . "`\n\tWHERE `lang`= '" . $roster->config['locale'] . "'\n\tORDER BY `order` ASC"; $result_key = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', basename(__FILE__), __LINE__, $query); $max = 0; while ($row = $roster->db->fetch($result_key)) { ?> <tr> <td class="membersRow1" style="text-align:center;"> <?php if (isset($_POST['check']) && $_POST['check'] == $row['id']) { ?> <img src="img/check_on.png" alt="" /> <?php $id = $row['id']; $id_display = $row['id_display']; $instance_name = $row['instance_name']; $key_name = $row['key_name']; $Type = $row['Type'];
/** * Generate the PvP stats List * * @return string */ function generatePvpList() { global $roster; $roster->tpl->assign_var('L_PVPLIST', $roster->locale->get_string('pvplist', 'pvplog')); // Guild that suffered most at our hands $query = "SELECT `pvp`.`guild`, COUNT(`pvp`.`guild`) AS countg" . " FROM `" . $roster->db->table('pvp2', 'pvplog') . "` AS pvp" . " LEFT JOIN `" . $roster->db->table('members') . "` AS members ON `members`.`member_id` = `pvp`.`member_id`" . " WHERE `members`.`guild_id` = '" . $roster->data['guild_id'] . "' AND `pvp`.`guild` != '' AND `pvp`.`win` = '1' AND `pvp`.`enemy` = '1'" . " GROUP BY `pvp`.`guild` ORDER BY countg DESC"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); $row = $roster->db->fetch($result, SQL_ASSOC); if ($row) { $roster->tpl->assign_block_vars('pvplist', array('ROW_CLASS' => $roster->switch_row_class(), 'LINK' => makelink('guild-pvplog&type=guildwins'), 'VALUE' => $roster->locale->get_string('pvplist1', 'pvplog'), 'NAME' => $row['guild'] == '' ? '(unguilded)' : $row['guild'], 'COUNT' => $row['countg'])); } // Guild that killed us the most $query = "SELECT `pvp`.`guild`, COUNT(`pvp`.`guild`) AS countg" . " FROM `" . $roster->db->table('pvp2', 'pvplog') . "` AS pvp" . " LEFT JOIN `" . $roster->db->table('members') . "` AS members ON `members`.`member_id` = `pvp`.`member_id`" . " WHERE `members`.`guild_id` = '" . $roster->data['guild_id'] . "' AND `pvp`.`guild` != '' AND `pvp`.`win` = '0' AND `pvp`.`enemy` = '1'" . " GROUP BY `pvp`.`guild` ORDER BY countg DESC"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); $row = $roster->db->fetch($result, SQL_ASSOC); if ($row) { $roster->tpl->assign_block_vars('pvplist', array('ROW_CLASS' => $roster->switch_row_class(), 'LINK' => makelink('guild-pvplog&type=guildlosses'), 'VALUE' => $roster->locale->get_string('pvplist2', 'pvplog'), 'NAME' => $row['guild'] == '' ? '(unguilded)' : $row['guild'], 'COUNT' => $row['countg'])); } // Player who we killed the most $query = "SELECT `pvp`.`name`, COUNT(`pvp`.`name`) AS countg" . " FROM `" . $roster->db->table('pvp2', 'pvplog') . "` AS pvp" . " LEFT JOIN `" . $roster->db->table('members') . "` AS members ON `members`.`member_id` = `pvp`.`member_id`" . " WHERE `members`.`guild_id` = '" . $roster->data['guild_id'] . "' AND `pvp`.`guild` != '' AND `pvp`.`win` = '1' AND `pvp`.`enemy` = '1'" . " GROUP BY `pvp`.`name` ORDER BY countg DESC"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); $row = $roster->db->fetch($result, SQL_ASSOC); if ($row) { $roster->tpl->assign_block_vars('pvplist', array('ROW_CLASS' => $roster->switch_row_class(), 'LINK' => makelink('guild-pvplog&type=enemywins'), 'VALUE' => $roster->locale->get_string('pvplist3', 'pvplog'), 'NAME' => $row['name'], 'COUNT' => $row['countg'])); } // Player who killed us the most $query = "SELECT `pvp`.`name`, COUNT(`pvp`.`name`) AS countg" . " FROM `" . $roster->db->table('pvp2', 'pvplog') . "` AS pvp" . " LEFT JOIN `" . $roster->db->table('members') . "` AS members ON `members`.`member_id` = `pvp`.`member_id`" . " WHERE `members`.`guild_id` = '" . $roster->data['guild_id'] . "' AND `pvp`.`win` = '0' AND `pvp`.`enemy` = '1'" . " GROUP BY `pvp`.`name` ORDER BY countg DESC"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); $row = $roster->db->fetch($result, SQL_ASSOC); if ($row) { $roster->tpl->assign_block_vars('pvplist', array('ROW_CLASS' => $roster->switch_row_class(), 'LINK' => makelink('guild-pvplog&type=enemylosses'), 'VALUE' => $roster->locale->get_string('pvplist4', 'pvplog'), 'NAME' => $row['name'], 'COUNT' => $row['countg'])); } // Member with the most kills $query = "SELECT `pvp`.`member_id`, `members`.`name` AS gn, COUNT(`pvp`.`member_id`) AS countg" . " FROM `" . $roster->db->table('pvp2', 'pvplog') . "` pvp" . " LEFT JOIN `" . $roster->db->table('members') . "` members ON `members`.`member_id` = `pvp`.`member_id`" . " WHERE `members`.`guild_id` = '" . $roster->data['guild_id'] . "' AND `pvp`.`win` = '1' AND `pvp`.`enemy` = '1'" . " GROUP BY `pvp`.`member_id` ORDER BY countg DESC;"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); $row = $roster->db->fetch($result, SQL_ASSOC); if ($row) { $roster->tpl->assign_block_vars('pvplist', array('ROW_CLASS' => $roster->switch_row_class(), 'LINK' => makelink('guild-pvplog&type=purgewins'), 'VALUE' => $roster->locale->get_string('pvplist5', 'pvplog'), 'NAME' => $row['gn'], 'COUNT' => $row['countg'])); } // Member who has died the most $query = "SELECT `pvp`.`member_id`, `members`.`name` AS gn, COUNT(`pvp`.`member_id`) AS countg" . " FROM `" . $roster->db->table('pvp2', 'pvplog') . "` pvp" . " LEFT JOIN `" . $roster->db->table('members') . "` members ON `members`.`member_id` = `pvp`.`member_id`" . " WHERE `members`.`guild_id` = '" . $roster->data['guild_id'] . "' AND `pvp`.`win` = '0' AND `pvp`.`enemy` = '1'" . " GROUP BY `pvp`.`member_id` ORDER BY countg DESC;"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); $row = $roster->db->fetch($result, SQL_ASSOC); if ($row) { $roster->tpl->assign_block_vars('pvplist', array('ROW_CLASS' => $roster->switch_row_class(), 'LINK' => makelink('guild-pvplog&type=purgelosses'), 'VALUE' => $roster->locale->get_string('pvplist6', 'pvplog'), 'NAME' => $row['gn'], 'COUNT' => $row['countg'])); } // Member with best kill average $query = "SELECT `pvp`.`member_id`, `members`.`name` AS gn, AVG(`pvp`.`leveldiff`) AS ave, COUNT(`pvp`.`member_id`) AS countg" . " FROM `" . $roster->db->table('pvp2', 'pvplog') . "` AS pvp" . " LEFT JOIN `" . $roster->db->table('members') . "` AS members ON `members`.`member_id` = `pvp`.`member_id`" . " WHERE `members`.`guild_id` = '" . $roster->data['guild_id'] . "' AND `pvp`.`win` = '1' AND `pvp`.`enemy` = '1'" . " GROUP BY `pvp`.`member_id` ORDER BY ave DESC"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); $row = $roster->db->fetch($result, SQL_ASSOC); if ($row) { $ave = round($row['ave'], 2); $roster->tpl->assign_block_vars('pvplist', array('ROW_CLASS' => $roster->switch_row_class(), 'LINK' => makelink('guild-pvplog&type=purgeavewins'), 'VALUE' => $roster->locale->get_string('pvplist7', 'pvplog'), 'NAME' => $row['gn'], 'COUNT' => ($ave > 0 ? '+' : '') . $ave)); } // Member with best loss average $query = "SELECT `pvp`.`member_id`, `members`.`name` AS gn, AVG(`pvp`.`leveldiff`) AS ave, COUNT(`pvp`.`member_id`) AS countg" . " FROM `" . $roster->db->table('pvp2', 'pvplog') . "` AS pvp" . " LEFT JOIN `" . $roster->db->table('members') . "` AS members ON `members`.`member_id` = `pvp`.`member_id`" . " WHERE `members`.`guild_id` = '" . $roster->data['guild_id'] . "' AND `pvp`.`win` = '0' AND `pvp`.`enemy` = '1'" . " GROUP BY `pvp`.`member_id` ORDER BY ave DESC"; $result = $roster->db->query($query) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); $row = $roster->db->fetch($result, SQL_ASSOC); if ($row) { $ave = round($row['ave'], 2); $roster->tpl->assign_block_vars('pvplist', array('ROW_CLASS' => $roster->switch_row_class(), 'LINK' => makelink('guild-pvplog&type=purgeavelosses'), 'VALUE' => $roster->locale->get_string('pvplist8', 'pvplog'), 'NAME' => $row['gn'], 'COUNT' => ($ave > 0 ? '+' : '') . $ave)); } $roster->db->free_result($result); $roster->tpl->set_handle('pvplist', 'pvplog/pvplist.html'); return $roster->tpl->fetch('pvplist'); }
$toggleboxes++; $query = "SELECT * FROM " . ANNOUNCE_TABLE . " WHERE active = '1' order by date DESC LIMIT " . $howmany . ""; $results = $wowdb->query($query) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $query); while ($row = $wowdb->fetch_array($results)) { $message = $row['post']; $title = $row['title']; $style = 'sgray'; $open = false; $width = '550px'; $height = '100px'; echo '<div id="toggleCol' . $toggleboxes . '" style="display:' . ($open ? 'none' : 'inline') . ';">' . border($style, 'start', "<div style=\"cursor:pointer;width:" . $width . ";\" onclick=\"swapShow('toggleCol" . $toggleboxes . "','toggle" . $toggleboxes . "')\"><img src=\"" . $roster_conf['img_url'] . "plus.gif\" style=\"float:right;\" /> Announcement: " . $title . "</div>") . border($style, 'end') . '</div>' . '<div id="toggle' . $toggleboxes . '" style="display:' . ($open ? 'inline' : 'none') . ';">' . scrollbox($message, "<div style=\"cursor:pointer;width:" . $width . ";\" onclick=\"swapShow('toggleCol" . $toggleboxes . "','toggle" . $toggleboxes . "')\"><img src=\"" . $roster_conf['img_url'] . "minus.gif\" style=\"float:right;\" /> Announcement: " . $title . "</div>", $style, $width, $height) . '</div><br>'; } break; default: $query = "SELECT * FROM " . ANNOUNCE_TABLE . " WHERE active='1' order by date DESC"; $results = $wowdb->query($query) or die_quietly($wowdb->error(), 'Database Error', basename(__FILE__), __LINE__, $query); while ($row = $wowdb->fetch_array($results)) { // Convert the date to readable time $date = get_local_date($row['date'], $roster_conf['localtimeoffset']); // In the archive, display all boxes open. echo border('syellow', 'start'); ?> <table width="700" border="0" cellspacing="0" cellpadding="0"> <tr> <td class='simpleborderheader syellowborderheader'><div class="membersGroup"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td> <?php echo $row['title']; ?>
function processAccess() { global $roster; $access = implode(":", $_POST['config_access']); $id = (int) $_POST['id']; $query = "UPDATE `" . $roster->db->table('addon') . "` SET `access` = '{$access}' WHERE `addon_id` = '{$id}';"; if (!$roster->db->query($query)) { die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $query); } }
/** * Process Data for entry to the database * * @return string Settings changed or not changed */ function processData() { global $roster; $update_sql = array(); // Update only the changed fields foreach ($_POST as $settingName => $settingValue) { if (substr($settingName, 0, 5) == 'disp_') { $settingName = str_replace('disp_', '', $settingName); list($member_id, $settingName) = explode(':', $settingName); $get_val = "SELECT `{$settingName}`" . " FROM `" . $roster->db->table('display', 'info') . "`" . " WHERE `member_id` = '{$member_id}';"; $result = $roster->db->query($get_val) or die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $get_val); $config = $roster->db->fetch($result); if ($config[$settingName] != $settingValue && $settingName != 'process') { $update_sql[] = "UPDATE `" . $roster->db->table('display', 'info') . "`" . " SET `{$settingName}` = '" . $roster->db->escape($settingValue) . "'" . " WHERE `member_id` = '{$member_id}';"; } } } // Update DataBase if (!empty($update_sql)) { foreach ($update_sql as $sql) { $result = $roster->db->query($sql); if (!$result) { return '<span style="color:#0099FF;font-size:11px;">Error saving settings</span><br />MySQL Said:<br /><pre>' . $roster->db->error() . '</pre><br />'; } } return '<span style="color:#0099FF;font-size:11px;">Settings have been changed</span>'; } else { return '<span style="color:#0099FF;font-size:11px;">No changes have been made</span>'; } }
$roster->db->free_result($result); $roster->tpl->assign_vars(array('S_DATA_SELECT' => $guilds > 1 ? true : false, 'TOTAL_GUILDS' => $guilds)); if (count($menu_select) > 0) { foreach ($menu_select as $realm => $guild) { $roster->tpl->assign_block_vars('menu_select_group', array('U_VALUE' => $realm)); foreach ($guild as $id => $name) { $roster->tpl->assign_block_vars('menu_select_group.menu_select_row', array('TEXT' => $name, 'U_VALUE' => makelink('&a=g:' . $id, true), 'S_SELECTED' => $id == $roster->data['guild_id'] ? true : false)); } } } } elseif ($roster->scope == 'char') { // Get the scope select data $query = "SELECT `name`, `member_id`" . " FROM `" . $roster->db->table('players') . "`" . " WHERE `guild_id` = '" . $roster->data['guild_id'] . "'" . " ORDER BY `name` ASC;"; $result = $roster->db->query($query); if (!$result) { die_quietly($roster->db->error(), 'Database error', __FILE__, __LINE__, $query); } while ($data = $roster->db->fetch($result, SQL_NUM)) { $menu_select[$data[1]] = $data[0]; } $roster->tpl->assign_var('S_DATA_SELECT', $roster->db->num_rows() > 1 ? true : false); $roster->db->free_result($result); if (count($menu_select) > 0) { $roster->tpl->assign_block_vars('menu_select_group', array('U_VALUE' => $roster->data['guild_name'])); foreach ($menu_select as $id => $name) { $roster->tpl->assign_block_vars('menu_select_group.menu_select_row', array('TEXT' => $name, 'U_VALUE' => makelink('&a=c:' . $id, true), 'S_SELECTED' => $id == $roster->data['member_id'] ? true : false)); } } } // Gather messages and create the messages block $roster->tpl->assign_var('S_MESSAGES', (bool) $roster->get_messages('', false));
/** * Returns the actual list. (but not the border) */ function makeMembersList($border = false) { global $roster; $roster->tpl->assign_vars(array('S_ML_BORDER' => $border)); $cols = count($this->fields); $result = $roster->db->query($this->query); if (!$result) { die_quietly($roster->db->error(), 'Database Error', __FILE__, __LINE__, $this->query); } // --[ Cache arrays for main/alt ordering ]-- $lines = $line = array(); $lookup = array(); // --[ Actual list ]-- while ($row = $roster->db->fetch($result)) { $line = array(); $current_col = 1; // Echoing cells w/ data foreach ($this->fields as $field => $DATA) { if (isset($DATA['value'])) { $cell_value = call_user_func($DATA['value'], $row, $field, isset($DATA['passthrough']) ? $DATA['passthrough'] : array()); } elseif (isset($DATA['jsort'])) { $cell_value = '<div style="display:none;">' . $row[$DATA['jsort']] . '</div>' . $row[$field]; if (empty($row[$field])) { $cell_value .= ' '; } } else { if ($row[$field] == '') { $row[$field] = ' '; } $cell_value = '<div>' . $row[$field] . '</div>'; } /** * IMPORTANT do not add any spaces between the td and the * $cell_value or the javascript will break * This construct means we can't hide the first column. But * that's no problem cause it's probably the name anyway which * is locked on force visible. */ $line[] = array('cell_value' => $cell_value, 'display' => $DATA['display'] == 1 ? true : false, 'padding' => $current_col == 1 ? $this->addon['config']['group_alts'] <= 0 || $row['main_id'] == $row['member_id'] ? false : true : false); $current_col++; } // Cache lines for main/alt stuff if ($this->addon['config']['group_alts'] <= 0) { $lookup[] = count($lines); $lines[]['main'] = $line; } elseif ($row['main_id'] == $row['member_id']) { $lookup[] = $row['member_id']; $lines[$row['member_id']]['main'] = $line; } else { $lines[$row['main_id']]['alts'][] = $line; } } // Main/Alt block $new_lookup = array_diff(array_keys($lines), $lookup); foreach ($new_lookup as $member_id) { $lookup[] = $member_id; } $lookup_count = count($lookup); for ($i = 0; $i < $lookup_count; $i++) { $member_id = $lookup[$i]; $block = $lines[$member_id]; // Group alts off if ($this->addon['config']['group_alts'] <= 0) { $roster->tpl->assign_block_vars('members_row', array('SIMPLE' => true, 'ROW_CLASS' => $roster->switch_row_class(), 'MA' => false, 'DISPLAY' => true)); foreach ($block['main'] as $line) { $roster->tpl->assign_block_vars('members_row.cell', array('VALUE' => $line['cell_value'], 'DISPLAY' => $line['display'], 'PADDING' => $line['padding'])); } continue; } // Main, or no alt data if (!isset($block['alts']) || 0 == count($block['alts'])) { $roster->tpl->assign_block_vars('members_row', array('SIMPLE' => true, 'ROW_CLASS' => $roster->switch_row_class(), 'MA' => false, 'DISPLAY' => false)); foreach ($block['main'] as $line) { $roster->tpl->assign_block_vars('members_row.cell', array('VALUE' => $line['cell_value'], 'DISPLAY' => $line['display'], 'PADDING' => $line['padding'])); } continue; } // Mainless alt. if (!isset($block['main'])) { foreach ($block['alts'] as $rows) { $roster->tpl->assign_block_vars('members_row', array('SIMPLE' => true, 'ROW_CLASS' => $roster->switch_row_class(), 'MA' => true, 'DISPLAY' => false)); foreach ($rows as $line) { $roster->tpl->assign_block_vars('members_row.cell', array('VALUE' => $line['cell_value'], 'DISPLAY' => $line['display'], 'PADDING' => $line['padding'])); } } continue; } // Main with alts $roster->tpl->assign_block_vars('members_row', array('SIMPLE' => false, 'ROW_CLASS' => $roster->switch_row_class(), 'MEMBER_ID' => $member_id, 'DISPLAY' => false, 'OPEN' => $this->addon['config']['group_alts'] == 2 ? true : false)); foreach ($block['main'] as $line) { $roster->tpl->assign_block_vars('members_row.cell', array('VALUE' => $line['cell_value'], 'DISPLAY' => $line['display'], 'PADDING' => $line['padding'])); } foreach ($block['alts'] as $rows) { $roster->tpl->assign_block_vars('members_row.alt', array('ROW_CLASS' => $roster->switch_alt_row_class(), 'DISPLAY' => $this->addon['config']['group_alts'] == 1 ? true : false)); foreach ($rows as $line) { $roster->tpl->assign_block_vars('members_row.alt.cell', array('VALUE' => $line['cell_value'], 'DISPLAY' => $line['display'], 'PADDING' => $line['padding'])); } } } return $roster->tpl->fetch('memberslist'); }
if (version_compare($dbversion, $version, "<")) { $install_queries = explode(';', $sql); foreach ($install_queries as $query) { if (!empty($query)) { if ($roster_conf['sqldebug']) { echo "<!--{$query}-->\n"; } $result = $wowdb->query($query) or die_quietly('Failed to install AltMonitor. MySQL said: <br />' . $wowdb->error(), 'AltMonitor Installer', __FILE__, __LINE__, $query); $wowdb->free_result($result); } } $wowdb->reset_values(); $wowdb->add_value('config_value', $version); $query = "UPDATE `" . ROSTER_ADDON_SKELETON_CONFIG . "` SET " . $wowdb->assignstr . " WHERE `config_name` = 'version'"; if ($roster_conf['sqldebug']) { echo "<!--{$query}-->\n"; } $result = $wowdb->query($query) or die_quietly('Failed to install AltMonitor. MySQL said: <br />' . $wowdb->error(), 'AltMonitor Installer', __FILE__, __LINE__, $query); $wowdb->free_result($result); } } // Write the file version to the database, just in case the most recent update/fix didn't include a DB update. $wowdb->reset_values(); $wowdb->add_value('config_value', $fileversion); $query = "UPDATE `" . ROSTER_ADDON_SKELETON_CONFIG . "` SET " . $wowdb->assignstr . " WHERE `config_name` = 'version'"; if ($roster_conf['sqldebug']) { echo "<!--{$query}-->\n"; } $result = $wowdb->query($query) or die_quietly('Failed to install AltMonitor. MySQL said: <br />' . $wowdb->error(), 'AltMonitor Installer', __FILE__, __LINE__, $query); $wowdb->free_result($result); echo border('sgreen', 'start', $wordings[$roster_conf['roster_lang']]['Skeleton_install_page']) . $wordings[$roster_conf['roster_lang']]['Skeleton_installed'] . '<br />' . "<a href='?roster_addon_name=AltMonitor&action=config'>" . $wordings[$roster_conf['roster_lang']]['Skeleton_config'] . "</a>" . border('sgreen', 'end');
/** * Updates or creates an entry in the guild table in the database * Then returns the guild ID * * @param string $realmName * @param string $guildName * @param array $currentTime * @param array $guild * @return string */ function update_guild($realmName, $guildName, $currentTime, $guild, $region) { global $roster; $guildInfo = $this->get_guild_info($realmName, $guildName, $region); $this->locale = $guild['Locale']; $this->reset_values(); $this->add_value('guild_name', $guildName); $this->add_value('server', $realmName); $this->add_value('region', $region); $this->add_ifvalue($guild, 'Faction', 'faction'); $this->add_ifvalue($guild, 'FactionEn', 'factionEn'); $this->add_ifvalue($guild, 'Motd', 'guild_motd'); $this->add_ifvalue($guild, 'NumMembers', 'guild_num_members'); $this->add_ifvalue($guild, 'NumAccounts', 'guild_num_accounts'); $this->add_ifvalue($guild, 'GuildXP', 'guild_xp'); $this->add_ifvalue($guild, 'GuildXPCap', 'guild_xpcap'); $this->add_ifvalue($guild, 'GuildLevel', 'guild_level'); $this->add_timestamp('update_time', $currentTime); $this->add_ifvalue($guild, 'DBversion'); $this->add_ifvalue($guild, 'GPversion'); $this->add_value('guild_info_text', str_replace('\\n', "<br />", $guild['Info'])); if (is_array($guildInfo)) { $querystra = "UPDATE `" . $roster->db->table('guild') . "` SET " . $this->assignstr . " WHERE `guild_id` = '" . $guildInfo['guild_id'] . "';"; $output = $guildInfo['guild_id']; } else { $querystra = "INSERT INTO `" . $roster->db->table('guild') . "` SET " . $this->assignstr; } $roster->db->query($querystra) or die_quietly($roster->db->error(), 'WowDB Error', __FILE__ . '<br />Function: ' . __FUNCTION__, __LINE__, $querystra); if (is_array($guildInfo)) { $querystr = "UPDATE `" . $roster->db->table('members') . "` SET `active` = '0' WHERE `guild_id` = '" . $guildInfo['guild_id'] . "';"; $roster->db->query($querystr) or die_quietly($roster->db->error(), 'WowDB Error', __FILE__ . '<br />Function: ' . __FUNCTION__, __LINE__, $querystr); } if (!is_array($guildInfo)) { $guildInfo = $this->get_guild_info($realmName, $guildName); $output = $guildInfo['guild_id']; } return $output; }