certificate-4.0.0-alpha1/modules/quiz_certificate/quiz_certificate.module

modules/quiz_certificate/quiz_certificate.module
<?php

use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Session\AccountInterface;

/**
 * Implements hook_entity_access().
 */
function quiz_certificate_entity_access(EntityInterface $entity, $operation, AccountInterface $user) {
  if ($operation == 'certificate') {
    if (is_a($entity, \Drupal\quiz\Entity\Quiz::class)) {
      $qrids = \Drupal::entityQuery('quiz_result')
        ->condition('uid', $user->id())
        ->condition('qid', $entity->id())
        ->condition('is_evaluated', 1)
        ->execute();
      $results = \Drupal::entityTypeManager()->getStorage('quiz_result')->loadMultiple($qrids);
      foreach ($results as $result) {
        if ($result->score->value >= $entity->pass_rate->value) {
          return \Drupal\Core\Access\AccessResult::allowed();
        }
      }

      return \Drupal\Core\Access\AccessResult::forbidden();
    }
  }
}

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

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