Phalynx, I saw there was a problem with the new option to remove awards from a certain usergroup. It was showing the same user getting an award for gold, silver, and bronze. Since lets say user 1-5 were not to get awards, then the first user that is able to get awards gets all 3 since they will be in the limit 10 each time.
Anyways, i changed it to the mysql query. here is the whole CalculateAwards() that fixes any issue with this.
PHP Code:
function CalculateAwards()
{
global $vbulletin;
$vbulletin->db->query_write("UPDATE " . TABLE_PREFIX . "user
SET
xperience_awards=''");
if (!$vbulletin->options['xperience_use_awards'])
{
return;
}
require_once('./includes/functions_xperience.php');
$awardsq =$vbulletin->db->query_read("SELECT
*
FROM " . TABLE_PREFIX . "xperience_awards
WHERE awardstatus > 0
ORDER BY awardstatus
");
if ($vbulletin->db->num_rows($awardsq) > 0)
{
while ($awards = $vbulletin->db->fetch_array($awardsq))
{
if ($awards['manualassign'] <> 0)
{
if (!strstr($awards['manualassign'], ","))
{
if (verify_id("user", $awards['manualassign'], false) <> 0)
{
WriteAward($awards, $awards['manualassign']);
}
} else {
$manualawards=explode(",", $awards['manualassign']);
for ($i = 0; $i < count($manualawards); $i ++)
{
if (verify_id("user", $manualawards[$i], false) <> 0)
{
WriteAward($awards, $manualawards[$i]);
}
}
}
} else {
if (strlen($vbulletin->options['xperience_ignore_users']) > 0)
{
$IgnoreUser=" AND u.userid NOT IN(".$vbulletin->options['xperience_ignore_users'].")";
}
$usergroups=explode(",", $vbulletin->options['xperience_award_exclude']);
foreach ($usergroups AS $usergroupid)
{
$wherenot .= " OR u.usergroupid = '$usergroupid' OR FIND_IN_SET($usergroupid, u.membergroupids)";
}
$genawardq =$vbulletin->db->query_read("SELECT
u.userid,
".$awards['awardfields']."
AS get_count
FROM " . TABLE_PREFIX . "xperience_stats as s
LEFT JOIN " . TABLE_PREFIX . "user as u ON u.userid = s.userid
WHERE 1 = 1 $IgnoreUser AND NOT (1=2 $wherenot)
ORDER BY get_count DESC, points_xperience DESC
LIMIT ".$awards['awardlimit'].",1");
if ($vbulletin->db->num_rows($genawardq) > 0)
{
$genaward = $vbulletin->db->fetch_array($genawardq);
if ($genaward['get_count'] <> 0)
{
WriteAward($awards, $genaward['userid']);
}
}
}
}
}
}