/** * @param Entity\Role $role * * @return array */ private function getPermissionsConfig(Entity\Role $role) { $permissionObjects = $this->factory->getSecurity()->getPermissionObjects(); $translator = $this->factory->getTranslator(); $permissionsArray = $role->getId() ? $this->factory->getEntityManager()->getRepository('MauticUserBundle:Permission')->getPermissionsByRole($role, true) : array(); $permissions = array(); $permissionsList = array(); /** @var \Mautic\CoreBundle\Security\Permissions\AbstractPermissions $object */ foreach ($permissionObjects as $object) { if (!is_object($object)) { continue; } if ($object->isEnabled()) { $bundle = $object->getName(); $label = $translator->trans("mautic.{$bundle}.permissions.header"); //convert the permission bits from the db into readable names $data = $object->convertBitsToPermissionNames($permissionsArray); //get the ratio of granted/total list($granted, $total) = $object->getPermissionRatio($data); $permissions[$bundle] = array('label' => $label, 'permissionObject' => $object, 'ratio' => array($granted, $total), 'data' => $data); $perms = $object->getPermissions(); foreach ($perms as $level => $perm) { $levelPerms = array_keys($perm); $object->parseForJavascript($levelPerms); $permissionsList[$bundle][$level] = $levelPerms; } } } //order permissions by label uasort($permissions, function ($a, $b) { return strnatcmp($a['label'], $b['label']); }); return array('config' => $permissions, 'list' => $permissionsList); }
/** * {@inheritDoc} */ public function getId() { if ($this->__isInitialized__ === false) { return (int) parent::getId(); } $this->__initializer__ && $this->__initializer__->__invoke($this, 'getId', array()); return parent::getId(); }