quiz-6.0.0-alpha4/src/Plugin/Action/QuizAddQuestionAction.php
src/Plugin/Action/QuizAddQuestionAction.php
<?php
namespace Drupal\quiz\Plugin\Action;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Access\AccessResultInterface;
use Drupal\Core\Action\Attribute\Action;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\views_bulk_operations\Action\ViewsBulkOperationsActionBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Action description.
*/
#[Action(
id: 'quiz_add_question_to_quiz',
label: new TranslatableMarkup('Add questions to quiz'),
type: 'quiz_question'
)]
class QuizAddQuestionAction extends ViewsBulkOperationsActionBase implements ContainerFactoryPluginInterface {
use StringTranslationTrait;
/**
* Constructs a new QuizAddQuestionAction action.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin ID for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
* The entity type manager.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, protected EntityTypeManagerInterface $entityTypeManager) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition): static {
return new static($configuration, $plugin_id, $plugin_definition,
$container->get('entity_type.manager')
);
}
/**
* {@inheritdoc}
*/
public function execute($entity = NULL): TranslatableMarkup {
/** @var \Drupal\Core\Url $url */
$url = $this->context['redirect_url'];
$qid = $url->getRouteParameters()['quiz'];
$quiz = $this->entityTypeManager
->getStorage('quiz')
->load($qid);
$quiz->addQuestion($entity);
return $this->t('Added question to quiz.');
}
/**
* {@inheritdoc}
*/
public function access($object, ?AccountInterface $account = NULL, $return_as_object = FALSE): AccessResultInterface {
$access = TRUE;
if ($return_as_object === TRUE) {
$access = AccessResult::allowed();
}
return $access;
}
}
