You are here

function webform_views_menu_local_tasks_alter in Webform Views Integration 8.5

Implements hook_menu_local_tasks_alter().

File

./webform_views.module, line 160
Webform integration with views.

Code

function webform_views_menu_local_tasks_alter(&$data, $route_name) {
  $webform = \Drupal::routeMatch()
    ->getParameter('webform');
  if ($webform && \Drupal::routeMatch()
    ->getRouteName() == $route_name) {

    // We have all the necessary data: we are manipulating current request and
    // we know which webform is invoked. So we can safely hide the webform views
    // tabs that relate to the webforms that are not the current one.
    foreach ($data['tabs'] as $level => $tabs_per_level) {
      foreach ($tabs_per_level as $k => $tab) {
        if (substr($k, 0, strlen('webform_view:')) == 'webform_view:') {
          $tab_webform = webform_views_webform_id_from_path($tab['#link']['url']
            ->getInternalPath());
          if ($tab_webform != $webform
            ->id()) {
            $data['tabs'][$level][$k]['#access'] = new AccessResultForbidden();
          }
        }
      }
    }
  }
}