While this is definitely not of plugin quality, it is a quick fix to the hierarchy post edit issue.
Please note that a moderator can still edit and/or delete the thread itself.
In addition, moderators that are not assigned a forum do not count as privileged to edit posts.
I did write this quickly, so unlike my username, I haven't fully tested it. Use at your own discretion.
1). Copy and paste the following function at the end of the functions.php file:
PHP Code:
// note: moderator usergroup only counts if user is assigned to a forum
function caneditposter($userid)
{
global $vbulletin;
static $superadmins;
$issuperadmin = false;
$issuperadmin2 = false;
$isadmin = false;
$isadmin2 = false;
$issupermod = false;
$issupermod2 = false;
$ismod = false;
$ismod2 = false;
if ($userid == $vbulletin->userinfo['userid'])
return true;
if (!is_array($superadmins))
{
$superadmins = preg_split('#\s*,\s*#s', $vbulletin->config['SpecialUsers']['superadministrators'], -1, PREG_SPLIT_NO_EMPTY);
}
if ($vbulletin->userinfo['userid'] < 1)
{
// user is a guest
return false;
}
else if (in_array($vbulletin->userinfo['userid'], $superadmins))
{
// user is a super administrator (defined in config.php) so can do anything
$issuperadmin = true;
}
else if (($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel']))
{
$isadmin = true;
}
if ($userid < 1)
{
// user is a guest
return true;
}
$userinfo = fetch_userinfo($userid);
if (in_array($userid, $superadmins))
{
// user is a super administrator (defined in config.php) so can do anything
$issuperadmin2 = true;
}
else if ($userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel'])
{
$isadmin2 = true;
}
if ($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['ismoderator'])
{
$issupermod = true;
}
if ($userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['ismoderator'])
{
$issupermod2 = true;
}
if (!$issupermod)
{
$mod = $vbulletin->db->query_first_slave("
SELECT forumid
FROM " . TABLE_PREFIX . "moderator
WHERE userid = " . $vbulletin->userinfo['userid'] . "
LIMIT 1
");
if ($mod)
$ismod = true;
}
if (!$issupermod2)
{
$mod2 = $vbulletin->db->query_first("
SELECT forumid
FROM " . TABLE_PREFIX . "moderator
WHERE userid = $userid
LIMIT 1
");
if ($mod2)
$ismod2 = true;
}
if ($issuperadmin)
{
if ($issuperadmin2)
return false;
else
return true;
}
else if ($isadmin)
{
if ($issuperadmin2 OR $isadmin2)
return false;
else
return true;
}
else if ($issupermod)
{
if ($issuperadmin2 OR $isadmin2 OR $issupermod2)
return false;
else
return true;
}
else if ($ismod)
{
if ($issuperadmin2 OR $isadmin2 OR $issupermod2 OR $ismod2)
return false;
else
return true;
}
return false;
}
2). Locate the hook 'postbit_display_complete' in class_postbit.php and paste the following:
PHP Code:
if ($this->post['editlink'] AND !caneditposter($this->post['userid']))
{
$this->post['editlink'] = '';
$show['ajax_js'] = false;
}
3). Locate 'verify_forum_password' in editpost.php and paste the following:
PHP Code:
if (!caneditposter($postinfo['userid']))
print_no_permission();
4). Done!
Cheers,
FullyTested.