View file MMO-Hide-2.3.4/upload/src/addons/MMO/Hide/XF/Permission/NodePermissions.php

File size: 1.39Kb
<?php

namespace MMO\Hide\XF\Permission;

use MMO\Hide\Data\HideTags;
use XF\Entity\Permission;

class NodePermissions extends XFCP_NodePermissions
{
    public function isValidPermission(Permission $permission)
    {
        $parent = parent::isValidPermission($permission);

        if ($permission->permission_group_id == 'mh_hide')
        {
            /** @var HideTags $hideTags */
            $data = \XF::app()->data(HideTags::class);
            $hideTags = $data->getHideTags();
            $bypassTags = \array_map(function($tag) {
                return 'bypassTag' . \ucfirst($tag);
            }, $hideTags);

            if (\in_array($permission->permission_id, $bypassTags))
            {
                return true;
            }
        }

        return $parent;
    }

    protected function getFinalPerms($contentId, array $calculated, array &$childPerms)
    {
        $final = parent::getFinalPerms($contentId, $calculated, $childPerms);

        $final += $this->builder->finalizePermissionValues($calculated['mh_hide']);

        return $final;
    }

    protected function getFinalAnalysisPerms($contentId, array $calculated, array &$childPerms)
    {
        $final = parent::getFinalAnalysisPerms($contentId, $calculated, $childPerms);

        $final += $this->builder->finalizePermissionValues($calculated);

        return $final;
    }
}