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");
}