You are here

function forum_access_form_node_form_get_available_tids in Forum Access 8

Get list of available tids for specific account.

Parameters

\Drupal\Core\Session\AccountInterface $account: The user object for the user whose access is being checked.

\Drupal\node\NodeInterface $node: The node to check.

Return value

array List of available tids for specific account.

1 call to forum_access_form_node_form_get_available_tids()
forum_access_form_node_form_alter in ./forum_access.module
Implements hook_form_FORM_ID_alter() for node_form.

File

./forum_access.module, line 787
Contains forum_access.module.

Code

function forum_access_form_node_form_get_available_tids(AccountInterface $account, NodeInterface $node) {
  module_load_include('inc', 'forum_access', 'includes/forum_access.common');

  // We figure out what tids we want to show in form according
  // to the forum access settings.
  $forum_access_settings = forum_access_get_settings_by_roles($account
    ->getRoles(), 'create');
  $tids = [];
  foreach ($forum_access_settings as $setting) {
    $tids[$setting->tid] = $setting->tid;
  }

  // Also get all forums they happen to be able to moderate.
  $acl_access_settings = forum_access_get_settings_by_user('forum_access', $account
    ->id(), 'moderate');
  foreach ($acl_access_settings as $setting) {
    $tids[$setting->figure] = $setting->figure;
  }

  // Make available current forum for existed node.
  if (!empty($node)) {
    $forum_tid = forum_access_get_tid($node);
    $tids[$forum_tid] = $forum_tid;
  }
  return $tids;
}