Example #1
0
 /**
  * Find page's ancestors (templates and parents) and flatted all their roles.
  *
  * @param View $view
  *
  * @return array
  */
 private function getPageRoles(View $view)
 {
     $insertAncestorRole = function (View $view = null) use(&$insertAncestorRole) {
         if ($view === null) {
             return;
         }
         $roles = $view->getRoles();
         if ($templateRoles = $insertAncestorRole($view->getTemplate(), $roles)) {
             $roles .= ($roles ? ',' : '') . $templateRoles;
         }
         if ($parentRoles = $insertAncestorRole($view->getParent(), $roles)) {
             $roles .= ($roles ? ',' : '') . $parentRoles;
         }
         return $roles;
     };
     $roles = $insertAncestorRole($view);
     if ($roles) {
         return array_unique(explode(',', $roles));
     }
 }