Drupal: 列出所有 USER PERMISSION

大家都知道透過 hook_permission 可以自定一個使用者權限,在管理權限頁面可以看到相關設置。但如果你是開發者,看到權限列表中友善權限名,實會不滿意吧 ?

我想要的是 Machine Name !!

難道每次要 SEARCH 所有檔案嗎 ??
當然不是啦,你可以透過 user_permission_get_modules 取得

不過還不滿足,自寫一段:

function upm($module = NULL, $print = TRUE, $dfunction = FALSE) {
  $permissions = array();

  if($dfunction == FALSE) {
    if($module) {
      $perms = module_invoke($module, 'permission');
      foreach ($perms as $key => $value) {
        $m[$module][] = $key;
      }
    }
    else{
      foreach (module_implements('permission') as $module) {
        $perms = module_invoke($module, 'permission');
        foreach ($perms as $key => $value) {
          $m[$module][] = $key;
        }
      }
    }
  }
  else {
    $m = user_permission_get_modules();
  }

  if($print) {
    if(function_exists('dpm')) {
      dpm($m);
    }
    else {
      debug($m);
    }
  }
  else {
    return $m;
  }
}

使用方法:

// 簡單 
upm();

// 只顯示某一個模組
upm('block');

// 使用原有 CORE Function
upm(0,1,1);

// PHP 你會的......

額外

Devel 中的 Devel node access 也很好用的,打開後去 BLOCK 設置畫面能找到相關設置,不妨一試。

寫下您的回覆

電子郵件不會公開