graphql_core_schema-1.0.x-dev/src/Plugin/GraphQL/DataProducer/Menu/FilterMenuLinks.php

src/Plugin/GraphQL/DataProducer/Menu/FilterMenuLinks.php
<?php

namespace Drupal\graphql_core_schema\Plugin\GraphQL\DataProducer\Menu;

use Drupal\Core\Menu\MenuLinkTreeElement;
use Drupal\graphql\Plugin\GraphQL\DataProducer\DataProducerPluginBase;

/**
 * Filter the given array of menu links.
 *
 * @DataProducer(
 *   id = "filter_menu_links",
 *   name = @Translation("Filter Menu Links"),
 *   description = @Translation("Filter the menu links to contain only accessible links."),
 *   produces = @ContextDefinition("list",
 *     label = @Translation("Filtered menu links"),
 *   ),
 *   consumes = {
 *     "links" = @ContextDefinition("list",
 *       label = @Translation("Menu links")
 *     ),
 *   }
 * )
 */
class FilterMenuLinks extends DataProducerPluginBase {

  /**
   * Resolver.
   *
   * @param array $links
   *   The links.
   *
   * @return mixed
   *   The filtered links.
   */
  public function resolve(array $links) {
    $links = array_filter($links, function ($link) {
      if ($link instanceof MenuLinkTreeElement) {
        return $link->access && $link->access->isAllowed();
      }

      // @todo Is this correct?
      return FALSE;
    });
    return $links;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc