og-8.x-1.x-dev/src/Controller/OgAdminMembersController.php

src/Controller/OgAdminMembersController.php
<?php

declare(strict_types=1);

namespace Drupal\og\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Link;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\og\Entity\OgMembership;
use Drupal\og\OgMembershipInterface;
use Drupal\og\OgMembershipTypeInterface;
use Drupal\views\Views;

/**
 * Displays the members administration page.
 */
class OgAdminMembersController extends ControllerBase {

  /**
   * Display list of members that belong to the group.
   *
   * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
   *   The route match service.
   *
   * @return array
   *   The members overview View.
   */
  public function membersList(RouteMatchInterface $route_match) {
    $group_type_id = $route_match->getRouteObject()->getOption('_og_entity_type_id');
    $group = $route_match->getParameter($group_type_id);
    $arguments = [$group->getEntityTypeId(), $group->id()];
    $build = [];
    $view = Views::getView('og_members_overview');
    if ($view) {
      $build = $view->executeDisplay('default', $arguments);
    }
    return $build;
  }

  /**
   * Displays add membership links for available membership types.
   *
   * Returns default membership type if that's all that exists.
   *
   * @return array
   *   A render array for a list of the og membership types that can be added;
   *   however, if there is only one og membership type defined for the site,
   *   the function will return the default add member form.
   */
  public function addPage(RouteMatchInterface $route_match) {
    $entity_type_id = $route_match->getRouteObject()
      ->getOption('_og_entity_type_id');

    $group = $route_match->getParameter($entity_type_id);

    $membership_types = $this->entityTypeManager()
      ->getStorage('og_membership_type')
      ->loadMultiple();

    if ($membership_types && count($membership_types) == 1) {
      return $this->addForm($group, $membership_types[OgMembershipInterface::TYPE_DEFAULT]);
    }

    $build = [
      '#theme' => 'entity_add_list',
      '#bundles' => [],
    ];

    $build['#cache']['tags'] = $this->entityTypeManager()
      ->getDefinition('og_membership_type')
      ->getListCacheTags();

    $add_link_params = [
      'group' => $group->id(),
      'entity_type_id' => $group->getEntityType()->id(),
    ];

    foreach ($membership_types as $membership_type_id => $og_membership_type) {
      $add_link_params['og_membership_type'] = $membership_type_id;
      $build['#bundles'][$membership_type_id] = [
        'label' => $og_membership_type->label(),
        'description' => NULL,
        'add_link' => Link::createFromRoute($og_membership_type->label(), 'entity.og_membership.add_form', $add_link_params),
      ];
    }

    return $build;
  }

  /**
   * Provides the add member submission form.
   *
   * @param \Drupal\Core\Entity\EntityInterface $group
   *   The group entity.
   * @param \Drupal\og\OgMembershipTypeInterface $og_membership_type
   *   The membership type entity.
   *
   * @return array
   *   The member add form.
   */
  public function addForm(EntityInterface $group, OgMembershipTypeInterface $og_membership_type) {
    /** @var \Drupal\og\Entity\OgMembership $og_membership */
    $og_membership = OgMembership::create([
      'type' => $og_membership_type->id(),
      'entity_type' => $group->getEntityType()->id(),
      'entity_bundle' => $group->bundle(),
      'entity_id' => $group->id(),
    ]);

    return $this->entityFormBuilder()->getForm($og_membership, 'add');
  }

}

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

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