niobi-8.x-2.0-alpha4/modules/niobi_form/modules/niobi_app/src/Access/NiobiApplicationWorkflowEntityAccess.php

modules/niobi_form/modules/niobi_app/src/Access/NiobiApplicationWorkflowEntityAccess.php
<?php

namespace Drupal\niobi_app\Access;

use Drupal\Core\Access\AccessResult;
use Drupal\niobi_app\Entity\NiobiApplicationReviewerPool;
use Drupal\niobi_app\Entity\NiobiApplicationWorkflow;

/**
 * Class NiobiApplicationWorkflowEntityAccess
 *
 * @package Drupal\niobi_app\Access
 */
class NiobiApplicationWorkflowEntityAccess {
  public static function checkDoReviewAccess(NiobiApplicationWorkflow $niobi_application_workflow) {
    // if current user is in reviewer pool of the workflow, then users can do review in the workflow
    $stages = \Drupal::entityTypeManager()->getStorage('niobi_application_workflow_stage')
      ->loadByProperties(['field_parent_workflow' => $niobi_application_workflow->id()]);
    $reviewerPoolIds = [];
    foreach ($stages as $stage) {
      $v1 = $stage->field_reviewer_pools->getValue();
      $v2 = $stage->field_auto_assign_reviewer_pool->getValue();
      foreach ($v1 + $v2 as $v) {
        $reviewerPoolIds[] = $v['target_id'];
      }
    }

    $reviewPools = NiobiApplicationReviewerPool::loadMultiple($reviewerPoolIds);
    $user = \Drupal::currentUser();
    foreach ($reviewPools as $pool) {
      if ($pool->containUser($user)) {
        return AccessResult::allowed();
      }
    }

    return AccessResult::neutral();
  }
}

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

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