social_lms_integrator-1.0.0-beta4/modules/social_lms_integrator_iteration_managers/src/Plugin/Action/IterationEnrollmentRequestDeclineAction.php
modules/social_lms_integrator_iteration_managers/src/Plugin/Action/IterationEnrollmentRequestDeclineAction.php
<?php
namespace Drupal\social_lms_integrator_iteration_managers\Plugin\Action;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Session\AccountInterface;
use Drupal\node\NodeInterface;
use Drupal\social_lms_integrator_enrollment\IterationEnrollmentInterface;
use Drupal\views_bulk_operations\Action\ViewsBulkOperationsActionBase;
/**
* Decline iteration enrollment entity action.
*
* @Action(
* id = "social_lms_integrator_iteration_managers_decline_iteration_enrollment_action",
* label = @Translation("Decline selected iteration enrollment entities"),
* type = "iteration_enrollment",
* view_id = "iteration_manage_enrollments",
* display_id = "page_manage_enrollments",
* confirm = TRUE,
* confirm_form_route_name = "social_lms_integrator_iteration_managers.request.vbo.confirm",
* )
*/
class IterationEnrollmentRequestDeclineAction extends ViewsBulkOperationsActionBase {
/**
* {@inheritdoc}
*/
public function execute($entity = NULL) {
/** @var \Drupal\social_lms_integrator_enrollment\IterationEnrollmentInterface $entity */
$entity->field_request_or_invite_status->value = IterationEnrollmentInterface::REQUEST_OR_INVITE_DECLINED;
$entity->save();
}
/**
* {@inheritdoc}
*/
public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) {
$access = AccessResult::forbidden();
if ($object instanceof IterationEnrollmentInterface) {
//$access = $object->access('delete', $account, TRUE);
$iteration_id = $object->getFieldValue('field_iteration', 'target_id');
$node = \Drupal::entityTypeManager()->getStorage('node')->load($iteration_id);
// Also Iteration organizers can do this.
if ($node instanceof NodeInterface && social_lms_integrator_enrollment_iteration_manager_or_organizer($node)) {
$access = AccessResult::allowedIf($object instanceof IterationEnrollmentInterface);
}
}
return $return_as_object ? $access : $access->isAllowed();
}
}
