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'; | |
} | |
} |