Thank you for both of your responses. I've PMed you the code if you have the chance to review it that would be swell.
Lynne, I've globalized only $vbulletin and a few vars I want to hold the string outside of functions. I'm unsure what else would need to be done.
Dismounted, How would this make a difference? I'm stating that the task works when run manually by clicking on "Run Now" not from outside the Admin CP. I don't think you can even run it stand alone as it calls the db defined by vbulletin. There isn't any code in it that would matter as for member vs guest.
After getting a response from Lynne I've decided to post the code. Anyone who see's an issue please help!
PHP Code:
<?php
/*======================================================================*\
|| #################################################################### ||
|| # Who's on XBL By OcR Envy v 2.8 ||
|| #################################################################### ||
\*======================================================================*/
// ---------------------------------------------------
// Start Set PHP Environment
// ---------------------------------------------------
error_reporting(E_ALL & ~E_NOTICE);
if (!is_object($vbulletin->db))
{
echo "No vBulletin Found!";
exit;
}
// ---------------------------------------------------
// Start Cronjob
// ---------------------------------------------------
global $vbulletin;
global $db;
@set_time_limit(0);
@ignore_user_abort(true);
$updatetime=time();
putenv("TZ=US/Eastern");
$checktime=date("h:i A", time());
$checkdate=date("m/d/y", time());
function DownloadUrl($Url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_USERAGENT, 'vBulletin via cURL/PHP');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
$output = curl_exec($ch);
curl_close($ch);
$online = strstr($output, 'Server');
if($online) {
$online = "false";
} else {
if($output == "") {
$online = "false";
} else {
global $xml;
$xml = simplexml_load_string($output);
$account=$xml->AccountStatus;
if($account == "Gold") {
$online = "true";
} else {
$online = "false";
}
}
}
return $online;
}
$duncanonline = Downloadurl('http://xboxapi.duncanmackenzie.net/gamertag.ashx?GamerTag=outcast%20reborn');
$vbulletin->db->query("UPDATE xblusers SET time='$checktime', date='$checkdate' WHERE title='checked'");
if($duncanonline=="true") {
$updater="true";
} else {
$grabchecked = $vbulletin->db->query("SELECT time, date FROM xblusers WHERE title='crashed'");
$gchecked=$vbulletin->db->fetch_array($grabchecked);
$checkedt=$gchecked['time'];
if($checkedt=="00:00PM") {
$vbulletin->db->query("UPDATE xblusers SET time='$checktime', date='$checkdate' WHERE title='crashed'");
}
die;
}
$gamertaggrab=$vbulletin->db->query("SELECT userfield.field5, userfield.field11, userfield.userid FROM userfield INNER JOIN user ON user.userid = userfield.userid AND userfield.field5 > '' WHERE usergroupid IN (6,48,52,50,51,26,58,60,55,46,25)");
while($userrow = $vbulletin->db->fetch_array($gamertaggrab)) {
$gamertag=$userrow['field5'];
if ($gamertag) {
$duncanonline = Downloadurl('http://xboxapi.duncanmackenzie.net/gamertag.ashx?GamerTag='. urlencode($gamertag));
if($duncanonline=="true") {
$coretag=$xml->Gamertag;
$tagvalid=$xml->PresenceInfo->Valid;
$onlinestatus=$xml->PresenceInfo->Online;
$statustext=$xml->PresenceInfo->StatusText;
$title=$xml->PresenceInfo->Title;
$info=$xml->PresenceInfo->Info;
$info2=$xml->PresenceInfo->Info2;
$lastseen=$xml->PresenceInfo->LastSeen;
$statustext=addslashes($statustext);
$title=addslashes($title);
$info=addslashes($info);
$info2=addslashes($info2);
if ($onlinestatus=="true") {
$online=1;
} else {
$online=0;
}
foreach ($xml->xpath('//Game') as $gameset) {
$gamename=$gameset->Name;
$gametile=$gameset->Image32url;
$gamename=addslashes($gamename);
$vbulletin->db->query("INSERT IGNORE INTO xblgames (name,tile) VALUES ('".$gamename."','".$gametile."')");
}
if ($tagvalid=="true") {
$logmsg = $logmsg . $userrow['userid'] . ": " . $gamertag . "-" . $statustext . "<br />";
$vbulletin->db->query("INSERT INTO xblstatus (userid,gamertag,online,statustext,title,info,info2,lastseen,updatetime)
VALUES ('".$userrow['userid']."','$coretag','$online','$statustext','$title','$info','$info2','$lastseen',FROM_UNIXTIME($updatetime)) ON DUPLICATE KEY
UPDATE userid='".$userrow['userid']."',gamertag='$coretag',online='$online',statustext='$statustext',title='$title',info='$info',info2='$info2',
lastseen='$lastseen',updatetime=FROM_UNIXTIME($updatetime)");
$vbulletin->db->query("UPDATE userfield SET field12='$statustext',field13='$title',field14='$info2' WHERE userid=".$userrow['userid']);
}
}
}
$gamertag=$userrow['field11'];
if ($gamertag) {
$duncanonline = Downloadurl('http://xboxapi.duncanmackenzie.net/gamertag.ashx?GamerTag='. urlencode($gamertag));
if($duncanonline=="true") {
$coretag=$xml->Gamertag;
$tagvalid=$xml->PresenceInfo->Valid;
$onlinestatus=$xml->PresenceInfo->Online;
$statustext=$xml->PresenceInfo->StatusText;
$title=$xml->PresenceInfo->Title;
$info=$xml->PresenceInfo->Info;
$info2=$xml->PresenceInfo->Info2;
$lastseen=$xml->PresenceInfo->LastSeen;
$statustext=addslashes($statustext);
$title=addslashes($title);
$info=addslashes($info);
$info2=addslashes($info2);
if ($onlinestatus=="true") {
$online=1;
} else {
$online=0;
}
if ($tagvalid=="true") {
$logmsg = $logmsg . $userrow['userid'] . ": " . $gamertag . "-" . $statustext . "<br />";
$vbulletin->db->query("INSERT INTO sxblstatus (userid,gamertag,online,statustext,title,info,info2,lastseen,updatetime)
VALUES ('".$userrow['userid']."','$coretag','$online','$statustext','$title','$info','$info2','$lastseen',FROM_UNIXTIME($updatetime)) ON DUPLICATE KEY
UPDATE userid='".$userrow['userid']."',gamertag='$coretag',online='$online',statustext='$statustext',title='$title',info='$info',info2='$info2',
lastseen='$lastseen',updatetime=FROM_UNIXTIME($updatetime)");
$vbulletin->db->query("UPDATE userfield SET field15='$statustext',field16='$title',field17='$info2' WHERE userid=".$userrow['userid']);
}
}
}
}
if($updater=="true") {
$vbulletin->db->query("UPDATE xblusers SET time='00:00PM', date='00/00/00' WHERE title='crashed'");
}
log_cron_action('Updated XBL Status', $nextitem, 1);
// ---------------------------------------------------
// End Cronjob
// ---------------------------------------------------
?>