rendered paste bodyOK on www.wowwiki.mobi, when i click roster (only during the caching period), i get alot of the following error
Notice: Undefined variable: actMember in /home/wowwiki/public_html/components/com_armoryroster/classes/ArmoryRoster.class.php on line 86
<?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 = ArmoryRoster::createGuildMember($actMember, $serverName, $WoWArmoryUrl, $memberInfoPage, $memberReputationPage, $memberSkillsPage, $debug = false);
$memberArray2[] = $actMember;
}
// now for all members retrieve the fractions and the reputation
return $memberArray2;
}
}
?>