Code Coverage  | 
     ||||||||||
Classes and Traits  | 
      Functions and Methods  | 
      Lines  | 
     ||||||||
| Total |         | 
      100.00%  | 
      1 / 1  | 
              | 
      100.00%  | 
      4 / 4  | 
      CRAP |         | 
      100.00%  | 
      11 / 11  | 
     
| FrontExtension |         | 
      100.00%  | 
      1 / 1  | 
              | 
      100.00%  | 
      4 / 4  | 
      6 |         | 
      100.00%  | 
      11 / 11  | 
     
| getFilters |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      3 / 3  | 
     |||
| uriIdFilter |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      1 / 1  | 
     |||
| userTopRoleFilter |         | 
      100.00%  | 
      1 / 1  | 
      3 |         | 
      100.00%  | 
      6 / 6  | 
     |||
| getName |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      1 / 1  | 
     |||
| <?php | |
| /* | |
| * This file is part of the Incipio package. | |
| * | |
| * (c) Théo FIDRY <theo.fidry@gmail.com> | |
| * | |
| * For the full copyright and license information, please view the LICENSE | |
| * file that was distributed with this source code. | |
| */ | |
| namespace FrontBundle\Twig; | |
| use FrontBundle\Utils\RoleHierarchyHelper; | |
| /** | |
| * Class FrontExtension: class used to create custom Twig functionalities and filters. | |
| * | |
| * @author Théo FIDRY <theo.fidry@gmail.com> | |
| */ | |
| class FrontExtension extends \Twig_Extension | |
| { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getFilters() | |
| { | |
| return [ | |
| new \Twig_SimpleFilter('uriId', [$this, 'uriIdFilter']), | |
| new \Twig_SimpleFilter('userTopRole', [$this, 'userTopRoleFilter']), | |
| ]; | |
| } | |
| /** | |
| * Extract the ID which is given in URI form (typically in the @id tag). | |
| * | |
| * This is done by extracting the last part of the URI. | |
| * | |
| * @example | |
| * | |
| * uriIdFilter('/api/users/101') // "101" | |
| * uriIdFilter('/api/mandates/AaKxazRT') // "AaKxazRT" | |
| * uriIdFilter('/api/') // "" | |
| * | |
| * @param $uri | |
| * | |
| * @return string | |
| */ | |
| public function uriIdFilter($uri) | |
| { | |
| return substr(strrchr($uri, '/'), 1); | |
| } | |
| /** | |
| * Reformat role in a clean way. This filter assumes that the roles passed are known to {@see | |
| * RoleHierarchyHelper} and formatted following the ROLE_%s mask. | |
| * | |
| * @example | |
| * roleFilter(['ROLE_USER']) // "user" | |
| * roleFilter(['ROLE_ADMIN']) // "admin" | |
| * roleFilter(['ROLE_SUPER_ADMIN']) // "root" | |
| * | |
| * @param array $roles Array of valid Symfony roles. | |
| * | |
| * @return string Formatted top role if role known, empty string otherwise. | |
| */ | |
| public function userTopRoleFilter(array $roles) | |
| { | |
| $topRole = RoleHierarchyHelper::getTopLevelRole($roles); | |
| if (null === $topRole) { | |
| return ''; | |
| } | |
| if ('ROLE_SUPER_ADMIN' === $topRole) { | |
| return 'root'; | |
| } | |
| return strtolower(substr($topRole, 5)); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getName() | |
| { | |
| return 'front_extension'; | |
| } | |
| } |