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();
}
}
}
