All pastes #995836 Raw Edit

Oxideword

public text v1 · immutable
#995836 ·published 2008-04-24 15:03 UTC
rendered paste body
Thanks for the help in advance,  here is the error Im getting when I click on the roster button at www.wowwiki.mobi

Fatal error: Call to undefined function createguildmember() in /home/wowwiki/public_html/components/com_armoryroster/classes/ArmoryRoster.class.php on line 204

Here is my ArmoryRoster.class.php file

----

<?php
define('USE_FILE_GET_CONTENTS', false);

error_reporting(E_ALL);

class ArmoryRoster {

	function ArmoryRoster() {
	}

	function showAvailableImage($bool, $points, $neededPoints) {
		if (!$bool)
			return "<img src=\"components/com_armoryroster/assets/images/false.png\" width=\"16px;\" /><i class=\"missingPoints\">(" . ($neededPoints - $points) . ")</i>";
		return "<img src=\"components/com_armoryroster/assets/images/ok.png\" width=\"16px;\" />";
	}

	function retrieveXMLInformation($server, $url, $debug = true) {

		// try to retrieve via file_get_contents
		if (ini_get("allow_url_fopen")) {
			ini_set('default_socket_timeout', 1);
			ini_set('user_agent', "Mozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8) Gecko/20051111 Firefox/1.5\r\n");
			$tryCounter = 0;

			// try for a maximum of 10 times to retrieve data
			while ((!isset ($xmlString) || !$xmlString) && $tryCounter++ < 10) {
				if ($debug) {
					echo "retrieving url: http://$server/$url for the " . ($tryCounter) . " time.<br />";
				}
				$xmlString = @ file_get_contents('http://' . $server . $url, FALSE);
			}
			if (!isset ($xmlString)) {
				return false;
			}
			$xml = new JSimpleXML();
			$status = $xml->loadString($xmlString);
			if (!$status)
				return false;
			return $xml;
		} else {
			// try to retrieve via sockets
			$response = '';
			$xmlString = '';

			$fp = @ fsockopen($server, 80, $errno, $errstr, 2);
			$counter = 10;
			while (!$fp && $counter--) {
				echo "$errstr ($errno)<br />\n";
			}
			if (!$fp) {
				return false;
			} else {

				$get = "GET $url HTTP/1.0\r\n";
				$get .= "Host: $server\r\n";
				$get .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4\r\n";
				$get .= "Accept: text/xml\r\n";
				$get .= "Connection: Close\r\n";
				$get .= "\r\n";

				fputs($fp, $get);
				while (!feof($fp)) {
					$lineStr = fgets($fp, 32);
					$response .= $lineStr;
				}
				fclose($fp);

				// find the position of the header end
				$xmlString = trim(strstr($response, "\r\n\r\n"));
				$xml = new JSimpleXML();
				$status = $xml->loadString($xmlString);

				if (!$status) {
					unset ($xml);
					return false;
				}

				return $xml;
			}
		}
	}

	function createGuildMember($member, $serverName, $WoWArmoryUrl, $memberInfoPage, $memberReputationPage, $memberSkillsPage, $debug = false){
		// character Profile only available from lvl 10
			if ($actMember->level >= 10) {
				$actMember->faction = in_array($actMember->raceId, array (1, 3, 4, 7, 11)) ? 'Alliance' : 'Horde';

				$memberInfoRequestUrl = '/' . $memberInfoPage . '?r=' . $serverName . '&n=' . urlencode($actMember->name);
				$memberData = ArmoryRoster :: retrieveXMLInformation($WoWArmoryUrl, $memberInfoRequestUrl, $debug);

				// **** TALENTS ****
				if (isset($memberData->document->characterInfo[0]->characterTab[0]->talentSpec[0])) {
					$memberTalentArray = $memberData->document->characterInfo[0]->characterTab[0]->talentSpec[0]->attributes();
					$actMember->talents = $memberTalentArray['treeone'] . "/" . $memberTalentArray['treetwo'] . "/" . $memberTalentArray['treethree'];
				}

				// **** SKILLS ****
				$memberSkillsRequestUrl = '/' . $memberSkillsPage . '?r=' . $serverName . '&n=' . urlencode($member->name);
				$memberSkillsData = ArmoryRoster :: retrieveXMLInformation($WoWArmoryUrl, $memberSkillsRequestUrl, $debug);

				$talentNames = array ();

				if (isset($memberSkillsData->document->characterInfo[0]->skillTab[0])) {
					$skillsArray = array ();
					$skillCats = $memberSkillsData->document->characterInfo[0]->skillTab[0];

					$memberSkillsCats = $skillCats->children();

					foreach ($memberSkillsCats as $category) {
						$skillCatAttrs = $category->attributes();

						foreach ($category->children() as $skill) {
							$skillAttrs = $skill->attributes();

							if ($skillCatAttrs['key'] == 'classskills' && !in_array($skillAttrs['key'], array (
									'lockpicking',
									'poisons'
								))) {
								$talentNames[] = $skillAttrs['key'];
							}

							$actMember->addSkill($skillAttrs['key'], $skillAttrs['name'], $skillAttrs['value'], $skillAttrs['max'], $skillCatAttrs['key']);
						}
					}
				}
				if (isset($memberSkillsData->document->characterInfo[0]->character[0])) {
					$character = $memberSkillsData->document->characterInfo[0]->character[0];
					$characterAttributes = $character->attributes();

					$actMember->faction = $characterAttributes['faction'];

				}

				/* build string for specialization */

				$sum1 = $memberTalentArray['treeone'];
				$sum2 = $memberTalentArray['treetwo'];
				$sum3 = $memberTalentArray['treethree'];
				$allSum = $sum1 + $sum2 + $sum3;

				$border = $allSum * 0.6;
				$name = "hybrid";
				if ($allSum == 0) {
					$name = "untalented";
				}
				elseif ($sum1 > $border) {
					$name = $talentNames[0];
				}
				elseif ($sum2 > $border) {
					$name = $talentNames[1];
				}
				elseif ($sum3 > $border) {
					$name = $talentNames[2];
				}

				$actMember->talentSpecializationName = $name;
				// **** REPUTATION ****
				// only retrieve reputation if member level is higher than 58
				if ($actMember->level > 58) {
					// now for all members retrieve the fractions and the reputation
					$memberReputationRequestUrl = '/' . $memberReputationPage . '?r=' . $serverName . '&n=' . urlencode($actMember->name);
					$memberReputationData = ArmoryRoster :: retrieveXMLInformation($WoWArmoryUrl, $memberReputationRequestUrl, $debug);

					if ($memberReputationData->document->characterInfo[0]->reputationTab[0]) {
						$factionCategoryArray = $memberReputationData->document->characterInfo[0]->reputationTab[0]->children();
						foreach ($factionCategoryArray as $factionCategory) {
							foreach ($factionCategory->children() as $faction) {
								$factionAttrs = $faction->attributes();
								$actMember->addReputationFaction($factionAttrs['name'], $factionAttrs['reputation']);
							}
						}
					}
				}
			}
			return $member;
	}

	function retrieveGuildMembers($guildName, $serverName, $WoWArmoryUrl, $guildInfoPage, $memberInfoPage, $memberReputationPage, $memberSkillsPage, $debug = false, $start = 0, $limit = 20) {

		$serverName = urlencode(utf8_encode($serverName));
		$guildName = urlencode(utf8_encode($guildName));

		$guildInfoRequestUrl = '/' . $guildInfoPage . '?r=' . $serverName . '&n=' . $guildName;

		$simple = false;
		$originalData = ArmoryRoster :: retrieveXMLInformation($WoWArmoryUrl, $guildInfoRequestUrl, $debug);
		if (!$originalData) {
			return false;
		}

		$memberArray = $originalData->document->guildInfo[0]->guild[0]->members[0]->children();

		$memberArray2 = array ();
		// now create the object member array
		$counter = 0;
		foreach ($memberArray as $member) {

			// only retrieve limit members at a time.
			if ($counter++ > $limit)
				break;
			$memberAttributes = $member->attributes();
			$actMember = new Member($memberAttributes['name'], $memberAttributes['class'], $memberAttributes['classid'], $memberAttributes['level'], NULL, $memberAttributes['race'], $memberAttributes['raceid'], $memberAttributes['gender'], $memberAttributes['rank'], $memberAttributes['url']);

			$actMember = createGuildMember($actMember,  $serverName, $WoWArmoryUrl, $memberInfoPage, $memberReputationPage, $memberSkillsPage, $debug = false);

			$memberArray2[] = $actMember;
		}
		// now for all members retrieve the fractions and the reputation
		return $memberArray2;
	}
}
?>