2021-02-19, 09:55 AM
hi
How to use hook, push return true to parent funtion
mybb will have hook in is_moderator function()
This is how I try use it
hooks work, I can use echo in if, if work, but i can not push return true to is_moderator() func
in attachment I add simple plugin to test if someone can help
How to use hook, push return true to parent funtion
mybb will have hook in is_moderator function()
function is_moderator($fid=0, $action="", $uid=0)
{
global $mybb, $cache, $plugins;
if($uid == 0)
{
$uid = $mybb->user['uid'];
}
if($uid == 0)
{
return false;
}
$user_perms = user_permissions($uid);
$hook_args = array(
'fid' => $fid,
'action' => $action,
'uid' => $uid,
);
$plugins->run_hooks("is_moderator", $hook_args);
if($user_perms['issupermod'] == 1)
{
if($fid)
{
$forumpermissions = forum_permissions($fid);
if($forumpermissions['canview'] && $forumpermissions['canviewthreads'] && !$forumpermissions['canonlyviewownthreads'])
{
return true;
}
return false;
}
return true;
}
else
{
if(!$fid)
{
$modcache = $cache->read('moderators');
if(!empty($modcache))
{
foreach($modcache as $modusers)
{
if(isset($modusers['users'][$uid]) && $modusers['users'][$uid]['mid'] && (!$action || !empty($modusers['users'][$uid][$action])))
{
return true;
}
$groups = explode(',', $user_perms['all_usergroups']);
foreach($groups as $group)
{
if(trim($group) != '' && isset($modusers['usergroups'][$group]) && (!$action || !empty($modusers['usergroups'][$group][$action])))
{
return true;
}
}
}
}
return false;
}
else
{
$modperms = get_moderator_permissions($fid, $uid);
if(!$action && $modperms)
{
return true;
}
else
{
if(isset($modperms[$action]) && $modperms[$action] == 1)
{
return true;
}
else
{
return false;
}
}
}
}
}
This is how I try use it
function statusupdate_is_moderator(&$hook_args)
{
global $mybb;
if(in_array($hook_args['action'], array("viewstatusupdate", "canviewstatusupdate", "canaddstatusupdate", "canlockunlockstatusupdate", "caneditstatusupdate", "candeletestatusupdate", "maxstatusupdateperday", "edittimelimitstatusupdate", "canviewstatusupdateeditinfo", "viewstatusupdateeditinfo", "viewstatusupdatereputations", "canviewstatusupdatereputations", "cangivestatusupdatereputations", "canremovestatusupdatereputations", "viewstatusupdatecomments", "canviewstatusupdatecomments", "canaddstatusupdatecomments", "caneditstatusupdatecomments", "candeletestatusupdatecomments", "maxstatusupdatecommentsperday", "edittimelimitstatusupdatecomments", "canviewstatusupdatecommentseditinfo", "viewstatusupdatecommentseditinfo", "viewstatusupdatecommentsreputations", "canviewstatusupdatecommentsreputations", "cangivestatusupdatecommentsreputations", "canremovestatusupdatecommentsreputations")))
{
return true;
}
}
hooks work, I can use echo in if, if work, but i can not push return true to is_moderator() func
in attachment I add simple plugin to test if someone can help