You are here

function permissions_by_term_options_list_alter in Permissions by Term 8.2

Same name and namespace in other branches
  1. 8 permissions_by_term.module \permissions_by_term_options_list_alter()

Implements hook_options_list_alter().

File

./permissions_by_term.module, line 516
Allows access to terms in a vocabulary to be limited by user or role.

Code

function permissions_by_term_options_list_alter(array &$options, array $context) {
  $fieldDefinitionSettings = $context['fieldDefinition']
    ->getFieldStorageDefinition()
    ->getSettings();
  if (!empty($fieldDefinitionSettings['target_type']) && $fieldDefinitionSettings['target_type'] == 'taxonomy_term') {
    foreach ($options as $id => $names) {
      if ($id !== '_none') {

        /**
         * @var AccessCheck $accessCheck
         */
        $accessCheck = \Drupal::service('permissions_by_term.access_check');
        if (is_array($names)) {
          foreach ($names as $group_id => $name) {
            if (!$accessCheck
              ->isAccessAllowedByDatabase($group_id)) {
              unset($options[$id]);
            }
          }
        }
        elseif (is_string($names)) {
          if (!$accessCheck
            ->isAccessAllowedByDatabase($id)) {
            unset($options[$id]);
          }
        }
      }
    }
  }
}