social_lms_integrator-1.0.0-beta4/modules/social_lms_integrator_application/src/WorkflowHelper.php
modules/social_lms_integrator_application/src/WorkflowHelper.php
<?php
namespace Drupal\social_lms_integrator_application;
use Drupal\Component\Plugin\PluginInspectionInterface;
use Drupal\Core\Entity\FieldableEntityInterface;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Session\AccountProxyInterface;
use Drupal\state_machine\Plugin\Workflow\WorkflowInterface;
use Drupal\state_machine\Plugin\Workflow\WorkflowTransition;
/**
* Contains helper methods to retrieve workflow related data from entities.
*/
class WorkflowHelper {
/**
* The current user proxy.
*
* @var \Drupal\Core\Session\AccountProxyInterface
*/
protected $currentUser;
/**
* Constructs a WorkflowHelper.
*
* @param \Drupal\Core\Session\AccountProxyInterface $currentUser
* The service that contains the current user.
*/
public function __construct(AccountProxyInterface $currentUser) {
$this->currentUser = $currentUser;
}
/**
* {@inheritdoc}
*/
public function isWorkflowStateEnrollment($state_id, WorkflowInterface $workflow) {
// We rely on being able to inspect the plugin definition. Throw an error if
// this is not the case.
if (!$workflow instanceof PluginInspectionInterface) {
$label = $workflow->getLabel();
throw new \InvalidArgumentException("The '$label' workflow is not plugin based.");
}
// Retrieve the raw plugin definition, as all additional plugin settings
// are stored there.
$raw_workflow_definition = $workflow->getPluginDefinition();
return !empty($raw_workflow_definition['states'][$state_id]['enrollment']);
}
/**
* {@inheritdoc}
*/
public function isWorkflowStateEmail($state_id, WorkflowInterface $workflow) {
// We rely on being able to inspect the plugin definition. Throw an error if
// this is not the case.
if (!$workflow instanceof PluginInspectionInterface) {
$label = $workflow->getLabel();
throw new \InvalidArgumentException("The '$label' workflow is not plugin based.");
}
// Retrieve the raw plugin definition, as all additional plugin settings
// are stored there.
$raw_workflow_definition = $workflow->getPluginDefinition();
return !empty($raw_workflow_definition['states'][$state_id]['email']);
}
}
