You are here

class LeaveReviewAccessCheck in Reviews 1.0.x

Checks access for displaying reviews pages.

Hierarchy

Expanded class hierarchy of LeaveReviewAccessCheck

1 string reference to 'LeaveReviewAccessCheck'
reviews.services.yml in ./reviews.services.yml
reviews.services.yml
1 service uses LeaveReviewAccessCheck
reviews.leave_review.access_checker in ./reviews.services.yml
Drupal\reviews\Access\LeaveReviewAccessCheck

File

src/Access/LeaveReviewAccessCheck.php, line 12

Namespace

Drupal\reviews\Access
View source
class LeaveReviewAccessCheck implements AccessInterface {

  /**
   * Drupal EntityTypeManager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManager
   */
  protected $entityTypeManager;

  /**
   * ReviewsAccessCheck constructor.
   *
   * @param \Drupal\Core\Entity\EntityTypeManager $entity_type_manager
   *   Entity Type Manager.
   */
  public function __construct(EntityTypeManager $entity_type_manager) {
    $this->entityTypeManager = $entity_type_manager;
  }

  /**
   * Access check to determine if reviews are enabled and accessible.
   *
   * @return \Drupal\Core\Access\AccessResultInterface
   *   The access result.
   */
  public function access() {

    // Get the node ID being viewed.
    $node = \Drupal::routeMatch()
      ->getParameter('node');
    $config = \Drupal::config('reviews.settings');
    $reviews_enabled = $config
      ->get('reviews.enabled');

    // Check if multiple reviews are allowed and if not
    // check if the user has already reviewed this node.
    $previous_review = FALSE;
    if (!$config
      ->get('reviews.multiple') && $node instanceof \Drupal\node\NodeInterface) {
      $query = \Drupal::entityQuery('review')
        ->condition('node_id', $node
        ->id(), '=')
        ->condition('user_id', \Drupal::currentUser()
        ->id(), '=')
        ->execute();
      $previous_review = (bool) count($query);
    }

    // Return access allowed only if reviews are enabled and
    // the type (bundle) of the node being viewed is included
    // in the reviewable node types.
    return AccessResult::allowedif($reviews_enabled && !$previous_review);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
LeaveReviewAccessCheck::$entityTypeManager protected property Drupal EntityTypeManager.
LeaveReviewAccessCheck::access public function Access check to determine if reviews are enabled and accessible.
LeaveReviewAccessCheck::__construct public function ReviewsAccessCheck constructor.