You are here

class MolliePaymentDeriver in Mollie Payment 8.2

Derives payment method plugin definitions based on configuration entities.

Hierarchy

Expanded class hierarchy of MolliePaymentDeriver

See also

\Drupal\mollie_payment\Plugin\Payment\Method\MolliePayment

File

src/Plugin/Payment/Method/MolliePaymentDeriver.php, line 16

Namespace

Drupal\mollie_payment\Plugin\Payment\Method
View source
class MolliePaymentDeriver extends DeriverBase implements ContainerDeriverInterface {

  /**
   * The payment method configuration manager.
   *
   * @var \Drupal\payment\Plugin\Payment\MethodConfiguration\PaymentMethodConfigurationManagerInterface
   */
  protected $paymentMethodConfigurationManager;

  /**
   * The payment method configuration storage.
   *
   * @var \Drupal\Core\Entity\EntityStorageInterface
   */
  protected $paymentMethodConfigurationStorage;

  /**
   * Constructs a new instance.
   */
  public function __construct(EntityStorageInterface $payment_method_configuration_storage, PaymentMethodConfigurationManagerInterface $payment_method_configuration_manager) {
    $this->paymentMethodConfigurationStorage = $payment_method_configuration_storage;
    $this->paymentMethodConfigurationManager = $payment_method_configuration_manager;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, $base_plugin_id) {

    /** @var \Drupal\Core\Entity\EntityManagerInterface $entity_manager */
    $entity_manager = $container
      ->get('entity.manager');
    return new static($entity_manager
      ->getStorage('payment_method_configuration'), $container
      ->get('plugin.manager.payment.method_configuration'));
  }

  /**
   * {@inheritdoc}
   */
  public function getDerivativeDefinitions($base_plugin_definition) {

    /** @var \Drupal\payment\Entity\PaymentMethodConfigurationInterface[] $payment_methods */
    $payment_methods = $this->paymentMethodConfigurationStorage
      ->loadMultiple();
    foreach ($payment_methods as $payment_method) {
      if ($payment_method
        ->getPluginId() == 'mollie_payment') {

        /** @var \Drupal\payment\Plugin\Payment\MethodConfiguration\Basic $configuration_plugin */
        $configuration_plugin = $this->paymentMethodConfigurationManager
          ->createInstance($payment_method
          ->getPluginId(), $payment_method
          ->getPluginConfiguration());
        $this->derivatives[$payment_method
          ->id()] = [
          'id' => $base_plugin_definition['id'] . ':' . $payment_method
            ->id(),
          'active' => $payment_method
            ->status(),
          'label' => $configuration_plugin
            ->getBrandLabel() ? $configuration_plugin
            ->getBrandLabel() : $payment_method
            ->label(),
          'profile' => $configuration_plugin
            ->getProfile() ? $configuration_plugin
            ->getProfile() : '',
          'message_text' => $configuration_plugin
            ->getMessageText(),
          'message_text_format' => $configuration_plugin
            ->getMessageTextFormat(),
          'execute_status_id' => $configuration_plugin
            ->getExecuteStatusId(),
          'capture' => $configuration_plugin
            ->getCapture(),
          'capture_status_id' => $configuration_plugin
            ->getCaptureStatusId(),
          'refund' => $configuration_plugin
            ->getRefund(),
          'refund_status_id' => $configuration_plugin
            ->getRefundStatusId(),
        ] + $base_plugin_definition;
      }
    }
    return $this->derivatives;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DeriverBase::$derivatives protected property List of derivative definitions. 1
DeriverBase::getDerivativeDefinition public function Gets the definition of a derivative plugin. Overrides DeriverInterface::getDerivativeDefinition
MolliePaymentDeriver::$paymentMethodConfigurationManager protected property The payment method configuration manager.
MolliePaymentDeriver::$paymentMethodConfigurationStorage protected property The payment method configuration storage.
MolliePaymentDeriver::create public static function Creates a new class instance. Overrides ContainerDeriverInterface::create
MolliePaymentDeriver::getDerivativeDefinitions public function Gets the definition of all derivatives of a base plugin. Overrides DeriverBase::getDerivativeDefinitions
MolliePaymentDeriver::__construct public function Constructs a new instance.