Чужие permissions

Пермишны, создаваемые в чужих модулях, иногда приходятся к месту. Скажем, когда пишешь дополнение и проще воспользоваться уже имеющимся правом (типа access content), чем организовывать свое.

Однако новая система вывода пермишнов в семерке — как будто издевается над разработчиком, предлагая, во-первых, display title вместо реального (подставляемого в user_access()) названия пермишна, а во-вторых — еще и подставляя перевод этого тайтла. Поиск оригинального названия пермишна иногда [censored] в [censored] немного утомляет.

А вот простой выход:

$modules = array();
foreach (module_implements('permission') as $module) {
  $modules[$module] = $module_info[$module]['name'];
}
asort($modules);
$perms = array();
foreach ($modules as $module => $display_name) {
  $perms[$module] = array();
  if ($permissions = module_invoke($module, 'permission')) {
    $perms[$module] = $permissions;
  }
}
dpm($perms);

Текст вставляется в php-код любой страницы или блока, и выводит сгруппированный по модулям список настоящих (подходящих для user_access()) пермишнов.

Комментарии