Newscoop\Utils\PermissionToAcl::translate PHP Méthode

translate() public static méthode

Translate permission to resource - action pair
public static translate ( string $perm ) : array
$perm string
Résultat array
    public static function translate($perm)
    {
        $perm = (string) $perm;
        // apply filters
        foreach (self::$filters as $search => $replace) {
            $perm = str_replace($search, $replace, $perm);
        }
        // find plugins
        $perm_ary = explode('_', $perm);
        if (sizeof($perm_ary) == 3) {
            $perm_ary = array_map('ucfirst', $perm_ary);
            $resource = $perm_ary[0] . '-' . $perm_ary[1];
            $action = $perm_ary[2];
            return self::format($resource, $action);
        }
        // find known resource
        foreach (self::$resources as $resource) {
            if (strpos($perm, $resource) !== FALSE) {
                $action = str_replace($resource, '', $perm);
                return self::format($resource, $action);
            }
        }
        // find known action
        foreach (self::$actions as $action) {
            if (strpos($perm, $action) !== FALSE) {
                $resource = str_replace($action, '', $perm);
                if (isset(self::$rename[$resource])) {
                    $resource = self::$rename[$resource];
                }
                return self::format($resource, $action);
            }
        }
        throw new \InvalidArgumentException("'{$perm}' can't be translated");
    }

Usage Example

Exemple #1
0
 /**
  * Get dynamic resources
  *
  * @return array
  */
 public function getResources()
 {
     $em = $this->doctrine->getManager();
     $permissions = $em->getRepository('Newscoop\\Entity\\Acl\\Permission')->createQueryBuilder('p')->select('p.name')->getQuery()->getArrayResult();
     $resources = array();
     foreach ($permissions as $permission) {
         try {
             list($resource, $action) = PermissionToAcl::translate($permission['name']);
         } catch (\InvalidArgumentException $e) {
             // ignore obsolete permissions
             continue;
         }
         if (!isset($resources[$resource])) {
             $resources[$resource] = array();
         }
         $resources[$resource][] = $action;
     }
     return $resources;
 }
All Usage Examples Of Newscoop\Utils\PermissionToAcl::translate
PermissionToAcl