culturefeed-1.0.2/modules/culturefeed_user/src/CultureFeedCurrentUser.php

modules/culturefeed_user/src/CultureFeedCurrentUser.php
<?php

namespace Drupal\culturefeed_user;

use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\culturefeed_api\CultureFeedUserContextManagerInterface;
use Drupal\culturefeed_api\DrupalCultureFeedClient;

/**
 * Intermediate service for fetching user information.
 */
class CultureFeedCurrentUser implements CultureFeedCurrentUserInterface {

  const CULTURE_FEED_PAGE_MEMBERSHIP_MEMBER = 'MEMBER';
  const CULTURE_FEED_PAGE_MEMBERSHIP_ADMIN = 'ADMIN';

  /**
   * CultureFeed "UiTID" user context manager service.
   *
   * @var \Drupal\culturefeed_api\CultureFeedUserContextManagerInterface
   */
  protected $cultureFeedUserContextManager;

  /**
   * CultureFeed client.
   *
   * @var \Drupal\culturefeed_api\DrupalCultureFeedClient
   */
  protected $cultureFeedClient;

  /**
   * The CultureFeed configuration.
   *
   * @var \Drupal\Core\Config\ImmutableConfig
   */
  protected $cultureFeedConfig;

  /**
   * CultureFeedCurrentUser constructor.
   *
   * @param \Drupal\culturefeed_api\CultureFeedUserContextManagerInterface $cultureFeedUserContextManager
   *   "CultureFeed" user context manager service.
   * @param \Drupal\culturefeed_api\DrupalCultureFeedClient $cultureFeedClient
   *   The "CultureFeed" client.
   * @param \Drupal\Core\Config\ConfigFactoryInterface $configFactory
   *   The config factory.
   */
  public function __construct(CultureFeedUserContextManagerInterface $cultureFeedUserContextManager, DrupalCultureFeedClient $cultureFeedClient, ConfigFactoryInterface $configFactory) {
    $this->cultureFeedUserContextManager = $cultureFeedUserContextManager;
    $this->cultureFeedClient = $cultureFeedClient;
    $this->cultureFeedConfig = $configFactory->get('culturefeed_api.settings');
  }

  /**
   * {@inheritdoc}
   */
  public function isCultureFeedUser() {
    return (bool) $this->cultureFeedUserContextManager->getUserId();
  }

  /**
   * {@inheritdoc}
   */
  public function getUserId() {
    return $this->cultureFeedUserContextManager->getUserId();
  }

  /**
   * {@inheritdoc}
   */
  public function getUser(bool $reset = FALSE) {
    return $this->getUserId() ? $this->cultureFeedClient->getUser($this->getUserId(), TRUE, TRUE, $reset) : NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getName() {
    $user = $this->getUser();
    return !empty($user->givenName) ? $user->givenName . ' ' . $user->familyName : $user->nick;
  }

  /**
   * {@inheritdoc}
   */
  public function getAdminPages(string $category = NULL, bool $reset = FALSE) {
    /** @var \CultureFeed_User $user */
    $user = $this->getUser($reset);
    $pages = [];

    /** @var \CultureFeed_Pages_Membership $pageMembership */
    if (!empty($user->pageMemberships)) {
      foreach ($user->pageMemberships as $pageMembership) {
        if ($pageMembership->role == $this::CULTURE_FEED_PAGE_MEMBERSHIP_ADMIN) {
          if (empty($category) || in_array($category, $pageMembership->page->getCategories())) {
            $pages[] = $pageMembership;
          }
        }
      }
    }

    return $pages;
  }

  /**
   * {@inheritdoc}
   */
  public function isAdminOfPage(\CultureFeed_Cdb_Item_Page $page) {
    /** @var \CultureFeed_User $user */
    $user = $this->getUser();

    /** @var \CultureFeed_Pages_Membership $pageMembership */
    if (!empty($user->pageMemberships)) {
      foreach ($user->pageMemberships as $pageMembership) {
        if ($page->getId() === $pageMembership->page->getId() && $pageMembership->role == $this::CULTURE_FEED_PAGE_MEMBERSHIP_ADMIN) {
          return TRUE;
        }
      }
    }

    return FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function getLastUsedCacheTags() {
    return $this->cultureFeedClient->getLastUsedCacheTags();
  }

}

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

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