Пример #1
0
 public function parse($name, $args = array())
 {
     if (trim($name) == '') {
         return false;
     }
     $cache = new wowhead_cache();
     $this->lang = !array_key_exists('lang', $args) ? WHP_LANG : $args['lang'];
     $this->language->loadLanguage($this->lang);
     // if the wowhead arg exists then format it into something the script can read
     if (array_key_exists('wowhead', $args)) {
         $args['pins'] = $this->wowhead_map($args['wowhead']);
         unset($args['wowhead']);
     }
     if (!($result = $cache->getZone($name, $this->lang))) {
         // method depends if the id or name is given
         $result = is_numeric($name) ? $this->getZoneByID($name) : $this->getZoneByName($name);
         if (!$result) {
             // not found
             $cache->close();
             return $this->_notFound($this->language->words['zone'], $name);
         } else {
             // transfer the zone map
             if (WHP_TRANSFER_MAP == true) {
                 $this->transferImage($result['map']);
             }
             $cache->saveZone($result);
             $cache->close();
             return $this->toHTML($result, $args);
         }
     } else {
         // found in cache
         $cache->close();
         return $this->toHTML($result, $args);
     }
 }
Пример #2
0
 public function parse($name, $args = array())
 {
     if (trim($name) == '') {
         return false;
     }
     $cache = new wowhead_cache();
     $this->lang = !array_key_exists('lang', $args) ? WHP_LANG : $args['lang'];
     $this->language->loadLanguage($this->lang);
     if (!($result = $cache->getObject($name, 'achievement', $this->lang))) {
         // not in cache
         if (is_numeric($name)) {
             $result = $this->_getAchievementByID($name);
         } else {
             $result = $this->_getAchievementByName($name);
         }
         if (!$result) {
             // not found
             $cache->close();
             return $this->_notfound($this->language->words['achievement'], $name);
         } else {
             $cache->saveObject($result);
             $cache->close();
             return $this->generateHTML($result, 'achievement');
         }
     } else {
         $cache->close();
         return $this->generateHTML($result, 'achievement');
     }
 }
Пример #3
0
 public function parse($name, $args = array())
 {
     if (trim($name) == '') {
         return false;
     }
     // set up some preliminary stuff
     $this->lang = array_key_exists('lang', $args) ? $args['lang'] : WHP_LANG;
     $cache = new wowhead_cache();
     $this->language->loadLanguage($this->lang);
     if (!($result = $cache->getEnchant($name, $this->lang))) {
         $result = is_numeric($name) ? $this->getEnchantByID($name) : $this->getEnchantByName($name);
         if (!$result || sizeof($this->reagents) == 0) {
             $cache->close();
             return $this->_notFound($this->language->words['enchant'], $name);
         } else {
             $cache->saveEnchant($result, $this->reagents);
             $cache->close();
             return $this->toHTML($result);
         }
     } else {
         $this->reagents = $cache->getEnchantReagents($result['id'], $this->lang);
         $cache->close();
         return $this->toHTML($result);
     }
 }
Пример #4
0
 /**
  * Parses Items
  * @access public
  **/
 public function parse($name, $args = array())
 {
     global $item_show_icon;
     if (trim($name) == '') {
         return false;
     }
     $this->lang = !array_key_exists('lang', $args) ? WHP_LANG : $args['lang'];
     // load the language pack
     $this->language->loadLanguage($this->lang);
     $cache = new wowhead_cache();
     if ($item_show_icon == true || array_key_exists('icon', $args)) {
         $this->show_icon = true;
         $this->type = 'item_icon';
     }
     // check if its already in the cache
     if (!($result = $cache->getObject($name, $this->type, $this->lang))) {
         // not in the cache
         if (!($result = $this->_getItemInfo($name))) {
             // item not found
             $cache->close();
             return $this->_notfound($this->language->words['item'], $name);
         } else {
             $cache->saveObject($result);
             // save it to cache
             $cache->close();
             if (array_key_exists('gems', $args) || array_key_exists('enchant', $args)) {
                 $enhance = $this->_buildEnhancement($args);
                 return $this->generateHTML($result, $this->type, '', '', $enhance);
             } else {
                 return $this->generateHTML($result, $this->type);
             }
         }
     } else {
         $cache->close();
         if (array_key_exists('gems', $args) || array_key_exists('enchant', $args)) {
             $enhance = $this->_buildEnhancement($args);
             return $this->generateHTML($result, $this->type, '', '', $enhance);
         } else {
             return $this->generateHTML($result, $this->type);
         }
     }
 }
Пример #5
0
 public function parse($name, $args = array())
 {
     if (trim($name) == '') {
         return false;
     }
     $this->lang = !array_key_exists('lang', $args) ? WHP_LANG : $args['lang'];
     $this->language->loadLanguage($this->lang);
     // load the language pack
     $this->nomats = !array_key_exists('nomats', $args) ? false : $args['nomats'];
     $cache = new wowhead_cache();
     if (!($result = $cache->getCraftable($name, $this->lang))) {
         $data = $this->_read_url($name, 'craftable');
         // accounts for SimpleXML not being able to handle 3 parameters if you're using PHP 5.1 or below.
         if (!$this->_allowSimpleXMLOptions()) {
             $data = $this->_removeCData($data);
             $xml = simplexml_load_string($data, 'SimpleXMLElement');
         } else {
             $xml = simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA);
         }
         if ($xml->error == '') {
             // build our craft array
             $this->craft = array('itemid' => $xml->item['id'], 'name' => $xml->item->name, 'search_name' => $name, 'quality' => $xml->item->quality['id'], 'lang' => $this->lang, 'icon' => 'http://static.wowhead.com/images/icons/small/' . strtolower($xml->item->icon) . '.jpg');
             // build spell craft array
             $this->craft_spell = array('reagentof' => $xml->item['id'], 'spellid' => $xml->item->createdBy->spell['id'], 'name' => $xml->item->createdBy->spell['name']);
             if ($this->nomats == false) {
                 // build reagent array
                 foreach ($xml->item->createdBy->spell->reagent as $reagent) {
                     array_push($this->craft_reagents, array('itemid' => $reagent['id'], 'reagentof' => $xml->item['id'], 'name' => $reagent['name'], 'quantity' => $reagent['count'], 'quality' => $reagent['quality'], 'icon' => 'http://static.wowhead.com/images/icons/small/' . strtolower($reagent['icon']) . '.jpg'));
                 }
             }
         } else {
             $cache->close();
             return $this->_notfound($this->language->words['craft'], $name);
         }
         if ($this->nomats == false) {
             $cache->saveCraftable($this->craft, $this->craft_spell, $this->craft_reagents);
         } else {
             $cache->saveCraftable($this->craft, $this->craft_spell);
         }
         unset($xml);
         $cache->close();
         return $this->_toHTML();
     } else {
         $this->craft = $result;
         $this->craft_spell = $cache->getCraftableSpell($this->craft['itemid']);
         if ($this->nomats == false) {
             $this->craft_reagents = $cache->getCraftableReagents($this->craft['itemid']);
         }
         $cache->close();
         return $this->_toHTML();
     }
 }
Пример #6
0
 public function parse($name, $args = array())
 {
     if (trim($name) == '') {
         return false;
     }
     $this->lang = array_key_exists('lang', $args) ? $args['lang'] : WHP_LANG;
     $this->language->loadLanguage($this->lang);
     $cache = new wowhead_cache();
     if (!($result = $cache->getObject($name, 'object', $this->lang))) {
         $result = is_numeric($name) ? $this->getObjectByID($name) : $this->getObjectByName($name);
         if (!$result) {
             $cache->close();
             return $this->_notFound($this->language->words['object'], $name);
         } else {
             $cache->saveObject($result);
             $cache->close();
             return $this->generateHTML($result, 'object');
         }
     } else {
         $cache->close();
         return $this->generateHTML($result, 'object');
     }
 }
Пример #7
0
 /**
  * Parse Item Icons
  * @access public
  **/
 public function parse($name, $args = array())
 {
     if (trim($name) == '') {
         return false;
     }
     $size = !array_key_exists('size', $args) ? 'medium' : $args['size'];
     $this->lang = !array_key_exists('lang', $args) ? WHP_LANG : $args['lang'];
     $this->language->loadLanguage($this->lang);
     $cache = new wowhead_cache();
     if (!($result = $cache->getObject($name, 'itemico', $this->lang, '', $size))) {
         if (!($result = $this->_getItemIcon($name, $size))) {
             $cache->close();
             return $this->_notfound($this->language->words['item'], $name);
         } else {
             $cache->saveObject($result);
             $cache->close();
             return $this->generateHTML($result, 'itemico', $size);
         }
     } else {
         $cache->close();
         return $this->generateHTML($result, 'itemico', $size);
     }
 }
Пример #8
0
 public function parse($name, $args = array())
 {
     if (trim($name) == '') {
         return false;
     }
     // set the language for this parse, and then load the language pack
     $this->lang = array_key_exists('lang', $args) ? $args['lang'] : WHP_LANG;
     $this->language->loadLanguage($this->lang);
     $cache = new wowhead_cache();
     if (!($result = $cache->getFaction($name, $this->lang))) {
         $result = is_numeric($name) ? $this->getFactionByID($name) : $this->getFactionByName($name);
         if (!$result) {
             $cache->close();
             return $this->_notFound($this->language->words['faction'], $name);
         } else {
             $cache->saveFaction($result);
             $cache->close();
             return $this->generateHTML($result, 'faction');
         }
     } else {
         $cache->close();
         return $this->generateHTML($result, 'faction');
     }
 }
Пример #9
0
 /**
  * Parses information
  * @access public
  **/
 public function parse($name, $args = array())
 {
     if (trim($name) == '') {
         return false;
     }
     $this->lang = !array_key_exists('lang', $args) ? WHP_LANG : $args['lang'];
     $this->language->loadLanguage($this->lang);
     $rank = !array_key_exists('rank', $args) ? '' : $args['rank'];
     $cache = new wowhead_cache();
     if (!($result = $cache->getObject($name, 'spell', $this->lang, $rank))) {
         $result = is_numeric($name) ? $this->_getSpellByID($name) : $this->_getSpellByName($name, $rank);
         if (!$result) {
             $cache->close();
             return $this->_notfound($this->language->words['spell'], $name);
         } else {
             $cache->saveObject($result);
             $cache->close();
             return $this->generateHTML($result, 'spell', '', $rank);
         }
     } else {
         $cache->close();
         return $this->generateHTML($result, 'spell', '', $rank);
     }
 }
Пример #10
0
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
**/
include_once dirname(__FILE__) . '/../config.php';
include_once dirname(__FILE__) . '/../includes/wowhead_cache.php';
$cache = new wowhead_cache();
// get the vars from the get global
$get_char = isset($_GET['char']) ? urldecode($_GET['char']) : '';
$get_realm = urldecode(stripslashes($_GET['realm']));
$get_region = array_key_exists('region', $_GET) ? $_GET['region'] : '';
$get_prop = isset($_GET['prop']) ? $_GET['prop'] : 'char';
$get_guild = isset($_GET['guild']) ? urldecode($_GET['guild']) : '';
if ($get_guild != '') {
    $get_prop = 'guild';
}
if (empty($get_guild) && empty($get_char) || empty($get_realm)) {
    $cache->close();
    exit;
}
if ($get_prop == 'char') {
    $uniquekey = $cache->generateKey($get_char, $get_realm, $get_region);
    $result = $cache->getArmory($uniquekey, $armory_char_cache);
    if ($result) {
        header("Content-Type: text/html");
        print utf8_encode(stripslashes($result['tooltip']));
    } else {
        print "Tooltip information not found.<br/>Cache time may have expired, try reloading the page.<br/>Unique Key: {$uniquekey}<br/>Name: {$get_char}<br/>Realm: {$get_realm}<br/>Region: {$get_region}";
    }
}
if ($get_prop == 'guild') {
    $uniquekey = $cache->generateKey($get_guild, $get_realm, $get_region);
    $result = $cache->getGuild($uniquekey, $armory_guild_cache);
Пример #11
0
 /**
  * Parse Text
  * @access public
  **/
 public function parse($name, $args = array())
 {
     if (trim($name) == '') {
         return false;
     }
     $cache = new wowhead_cache();
     // they specified a realm/region
     if (array_key_exists('loc', $args)) {
         $aLoc = explode(',', $args['loc']);
         $this->region = $aLoc[0];
         $this->realm = $aLoc[1];
     }
     // they specified a language
     if (array_key_exists('lang', $args)) {
         $this->lang = $args['lang'];
     }
     // see if they want icons
     if (array_key_exists('noicons', $args)) {
         $this->icons = false;
     }
     if (array_key_exists('noclass', $args)) {
         $this->class_icon = false;
     }
     if (array_key_exists('norace', $args)) {
         $this->race_icon = false;
     }
     if (array_key_exists('gearlist', $args)) {
         $this->type = 'armory_gearlist';
     }
     if (array_key_exists('recruit', $args)) {
         $this->type = 'armory_recruit';
     }
     // load the language pack
     $this->language->loadLanguage($this->lang);
     $this->char_url = $this->characterURL($name);
     if (WOWHEAD_DEBUG == true) {
         print $this->char_url;
     }
     $this->now = mktime();
     $uniquekey = $cache->generateKey($name, $this->realm, $this->region);
     $result = $cache->getArmory($uniquekey, $this->char_cache);
     if (!$result) {
         $xml_data = $this->getXML($this->characterURL($name));
         if (!($xml = @simplexml_load_string($xml_data, 'SimpleXMLElement'))) {
             // failed to get the xml, most likely blocked by the armory or character not found
             $cache->close();
             return $this->generateError($this->language->words['armory_blocked']);
         }
         // make sure the character does exist
         if (array_key_exists('errcode', $xml->characterInfo)) {
             $cache->close();
             return $this->generateError($this->language->words['char_not_found']);
         } elseif (!$xml->characterInfo->characterTab) {
             $cache->close();
             return $this->generateError($this->language->words['char_no_data']);
         }
         $this->ctab = $xml->characterInfo->characterTab;
         $this->char = $xml->characterInfo->character;
         $this->cinfo = $xml->characterInfo;
         // get character stats
         $this->stats = $this->generateStats();
         // get character talents
         $this->char_data['talents'] = $this->generateTalents();
         // get professions
         $this->char_data['prof'] = $this->generateProfessions();
         // get avatar
         $this->char_data['avatar'] = $this->generateAvatar();
         // generate achievements
         $this->char_data['achieve'] = $this->generateAchievements();
         // generate average item level
         if ($this->item_level == true) {
             $this->char_data['itemlevel'] = $this->generateItemLevel();
         }
         // finalize the character and add other randomness
         $this->finalizeChar();
         // save to cache
         $cache->saveArmory(array('uniquekey' => $uniquekey, 'name' => $this->char_data['name'], 'class' => $this->char_data['class'], 'genderid' => $this->char_data['genderid'], 'raceid' => $this->char_data['raceid'], 'classid' => $this->char_data['classid'], 'realm' => $this->realm, 'region' => $this->region, 'tooltip' => $this->generateTooltip()));
         unset($xml);
         $cache->close();
         // generate html
         return $this->generateHTML(array('realm' => $this->realm, 'region' => $this->region, 'name' => $this->char_data['name'], 'icons' => $this->getIcons($this->char_data['raceid'], $this->char_data['genderid'], $this->char_data['classid']), 'link' => $this->characterURL($this->char_data['name']), 'class' => 'armory_tt_class_' . strtolower(str_replace(' ', '', $this->char_data['class'])), 'image' => $this->icon_url . 'images/wait.gif'), $this->type);
     } else {
         $cache->close();
         return $this->generateHTML(array('realm' => $this->realm, 'region' => $this->region, 'name' => $result['name'], 'icons' => $this->getIcons($result['raceid'], $result['genderid'], $result['classid']), 'link' => $this->characterURL($result['name']), 'class' => 'armory_tt_class_' . strtolower(str_replace(' ', '', $result['class'])), 'image' => $this->icon_url . 'images/wait.gif'), $this->type);
     }
 }
Пример #12
0
 /**
  * Parses itemset bbcode
  * @access public
  **/
 public function parse($name, $args = array())
 {
     if (trim($name) == '') {
         return false;
     }
     $this->lang = !array_key_exists('lang', $args) ? WHP_LANG : $args['lang'];
     $this->language->loadLanguage($this->lang);
     $cache = new wowhead_cache();
     if (!($result = $cache->getItemset($name, $this->lang))) {
         if (!is_numeric($name)) {
             $data = $this->_read_url($name, 'itemset', false);
             if (!preg_match('#Location: /\\?itemset=([\\-0-9]{1,10})#s', $data, $match)) {
                 // didn't find the redirect header, so we'll have to look in the search page
                 $summary = $this->summaryLine($data);
                 if (!preg_match('#id:([\\-0-9]{1,10}),name:#s', $summary, $match)) {
                     $cache->close();
                     return $this->_notFound($this->language->words['itemset'], $name);
                 }
             }
         }
         // we now have the set id, and can query wowhead for the info we need
         $this->setid = is_numeric($name) ? $name : $match[1];
         $data = $this->_read_url($this->setid, 'itemset', false);
         // if they used ID rather than name, then we must get the name
         if (is_numeric($name)) {
             if (!preg_match('#name: \'(.+?)\'};#s', $this->nameLine($data), $match)) {
                 $cache->close();
                 return $this->_notFound($this->language->words['itemset'], $name);
             } else {
                 $found_name = stripslashes($match[1]);
             }
         }
         $this->itemset = array('setid' => $this->setid, 'name' => is_numeric($name) ? $found_name : $name, 'search_name' => $name, 'lang' => $this->lang);
         $summary = $this->summaryLine($data);
         while (preg_match('#\\[\\[([0-9]{1,10})\\]\\]#s', $summary, $match)) {
             $data = $this->_read_url($match[1]);
             if (trim($data) == '' || empty($data)) {
                 return false;
             }
             // accounts for SimpleXML not being able to handle 3 parameters if you're using PHP 5.1 or below.
             if (!$this->_allowSimpleXMLOptions()) {
                 $data = $this->_removeCData($data);
                 $xml = simplexml_load_string($data, 'SimpleXMLElement');
             } else {
                 $xml = simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA);
             }
             if ($xml->error == '') {
                 // add the results to our item array
                 array_push($this->itemset_items, array('setid' => $this->setid, 'itemid' => (int) $xml->item['id'], 'name' => (string) $xml->item->name, 'quality' => (int) $xml->item->quality['id'], 'icon' => 'http://static.wowhead.com/images/icons/small/' . strtolower($xml->item->icon) . '.jpg'));
             } else {
                 return false;
             }
             unset($xml);
             // strip what it found so we don't get an endless loop
             $summary = str_replace($match[0], '', $summary);
         }
         $cache->saveItemset($this->itemset, $this->itemset_items);
         $cache->close();
         return $this->toHTML();
     } else {
         $this->itemset = $result;
         $this->itemset_items = $cache->getItemsetReagents($this->itemset['setid']);
         $cache->close();
         return $this->toHTML();
     }
 }
Пример #13
0
 public function parse($name, $args = array())
 {
     if (trim($name) == '') {
         return false;
     }
     $this->lang = !array_key_exists('lang', $args) ? WHP_LANG : $args['lang'];
     $this->language->loadLanguage($this->lang);
     $cache = new wowhead_cache();
     if (!($result = $cache->getNPC($name, $this->lang))) {
         // not found in cache
         $result = $this->getNPCInfo($name);
         if (!$result) {
             // not found
             $cache->close();
             return $this->_notFound($this->language->words['npc'], $name);
         } else {
             // see if they want to display a map as well
             if (array_key_exists('map', $args)) {
                 if (!($sql_map = $cache->getZone($args['map']['name'], $this->lang))) {
                     $mapinfo = $this->getZoneMap($args['map']['name']);
                     if (!$mapinfo) {
                         $cache->close();
                         return $this->_notFound($this->language->words['zone'], $name);
                     } else {
                         if (!file_exists($this->images_path . $mapinfo['map']) && WHP_TRANSFER_MAP == true) {
                             // file doesn't exist, so transfer it locally
                             $this->transferImage($mapinfo['map']);
                         }
                         $cache->saveZone($mapinfo);
                         $mapinfo['x'] = $args['map']['x'];
                         $mapinfo['y'] = $args['map']['y'];
                         $cache->saveNPC($result);
                         $cache->close();
                         return $this->mapHTML($result, $mapinfo);
                     }
                 } else {
                     if (!file_exists($this->images_path . $sql_map['map']) && WHP_TRANSFER_MAP == true) {
                         // file doesn't exist, so transfer it locally
                         $this->transferImage($sql_map['map']);
                     }
                     $sql_map['x'] = $args['map']['x'];
                     $sql_map['y'] = $args['map']['y'];
                     $cache->saveNPC($result);
                     $cache->close();
                     return $this->mapHTML($result, $sql_map);
                 }
             } else {
                 // found, save it and display
                 $cache->saveNPC($result);
                 $cache->close();
                 return $this->generateHTML($result, 'npc');
             }
         }
     } else {
         if (array_key_exists('map', $args)) {
             $mapinfo = $cache->getZone($args['map']['name'], $this->lang);
             if (!file_exists($this->images_path . $mapinfo['map']) && WHP_TRANSFER_MAP == true) {
                 // file doesn't exist, so transfer it locally
                 $this->transferImage($mapinfo['map']);
             }
             $mapinfo['x'] = $args['map']['x'];
             $mapinfo['y'] = $args['map']['y'];
             $cache->close();
             return $this->mapHTML($result, $mapinfo);
         } else {
             $cache->close();
             return $this->generateHTML($result, 'npc');
         }
     }
 }