PHP код:
// ## Function takes an array from fetch_userinfo and an array from cache_permissions()
// ## Returns the user's reputation altering power (for positive)
function fetch_reppower(&$userinfo, &$perms, $reputation = 'pos')
{
global $vbulletin;
// User does not have permission to leave negative reputation
if (!($perms***91;'genericpermissions'***93; & $vbulletin->bf_ugp_genericpermissions***91;'cannegativerep'***93;))
{
$reputation = 'pos';
}
if (!($perms***91;'genericpermissions'***93; & $vbulletin->bf_ugp_genericpermissions***91;'canuserep'***93;))
{
$reppower = 0;
}
else if ($perms***91;'adminpermissions'***93; & $vbulletin->bf_ugp_adminpermissions***91;'cancontrolpanel'***93; AND $vbulletin->options***91;'adminpower'***93;)
{
$reppower = iif($reputation != 'pos', $vbulletin->options***91;'adminpower'***93; * -1, $vbulletin->options***91;'adminpower'***93;);
}
else if (($userinfo***91;'posts'***93; < $vbulletin->options***91;'minreputationpost'***93;) OR ($userinfo***91;'reputation'***93; < $vbulletin->options***91;'minreputationcount'***93;))
{
$reppower = 0;
}
else
{
$reppower = 1;
if ($vbulletin->options***91;'pcpower'***93;)
{
$reppower += intval($userinfo***91;'posts'***93; / $vbulletin->options***91;'pcpower'***93;);
}
if ($vbulletin->options***91;'kppower'***93;)
{
$reppower += intval($userinfo***91;'reputation'***93; / $vbulletin->options***91;'kppower'***93;);
}
if ($vbulletin->options***91;'rdpower'***93;)
{
$reppower += intval(intval((TIMENOW - $userinfo***91;'joindate'***93;) / 86400) / $vbulletin->options***91;'rdpower'***93;);
}
if ($reputation != 'pos')
{
// make negative reputation worth half of positive, but at least 1
$reppower = intval($reppower / 2);
if ($reppower < 1)
{
$reppower = 1;
}
$reppower *= -1;
}
}
($hook = vBulletinHook::fetch_hook('reputation_power')) ? eval($hook) : false;
return $reppower;
}