You are here

function workbench_email_determine_valid_roles in Workbench Email 7

Same name and namespace in other branches
  1. 7.3 workbench_email.module \workbench_email_determine_valid_roles()

Determines the valid roles for a given moderation task and content type(s).

Return value

valid_roles Returns the valid roles or an empty array

3 calls to workbench_email_determine_valid_roles()
theme_workbench_email_transitions_form in ./workbench_email.admin.inc
Transforms the email transitions administration form into a table.
workbench_email_transitions_form in ./workbench_email.admin.inc
Administration form to create and delete email transitions.
workbench_email_transitions_form_submit in ./workbench_email.admin.inc
Form submit handler for email transitions.

File

./workbench_email.module, line 315
Code for the Workbench Email Module.

Code

function workbench_email_determine_valid_roles() {
  $valid_roles = array();
  $types = drupal_map_assoc(workbench_moderation_moderate_node_types());
  $all_types = node_type_get_types();
  foreach ($types as $type) {
    $types[$type] = $all_types[$type]->name;
  }
  $moderation_permissions = wv_workflow_determine_moderation_permissions();
  $roles = user_roles();
  foreach ($roles as $rid => $role) {

    // Get a full list of this role's permissions.
    $actual_permissions_set = array();
    $actual_permissions_set = user_role_permissions(array_filter(array(
      $rid => TRUE,
      DRUPAL_AUTHENTICATED_RID => $rid != DRUPAL_ANONYMOUS_RID,
    )));
    $valid_permissions = array();
    foreach ($actual_permissions_set as $role_rid => $actual_permissions) {
      foreach ($actual_permissions as $permission => $value) {
        if (array_key_exists($permission, $moderation_permissions)) {
          $valid_permissions[] = $permission;
        }
      }
    }
    if ($valid_permissions) {
      $valid_roles[$rid] = $role;
    }
  }
  return $valid_roles;
}