View source
<?php
namespace Drupal\payment\Plugin\Payment\LineItem;
use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Database\Connection;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\StringTranslation\TranslationInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class Basic extends PaymentLineItemBase implements ContainerFactoryPluginInterface {
protected $database;
public function __construct(array $configuration, $plugin_id, array $plugin_definition, TranslationInterface $string_translation, Connection $database) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->database = $database;
$this->stringTranslation = $string_translation;
}
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('string_translation'), $container
->get('database'));
}
public function defaultConfiguration() {
return parent::defaultConfiguration() + array(
'amount' => 0,
'currency_code' => NULL,
'description' => NULL,
);
}
public function setAmount($amount) {
$this->configuration['amount'] = $amount;
return $this;
}
public function getAmount() {
return $this->configuration['amount'];
}
public function getCurrencyCode() {
return $this->configuration['currency_code'];
}
public function setCurrencyCode($currency_code) {
$this->configuration['currency_code'] = $currency_code;
return $this;
}
function getDescription() {
return $this->configuration['description'];
}
function setDescription($description) {
$this->configuration['description'] = $description;
return $this;
}
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$elements = array(
'#input' => TRUE,
'#tree' => TRUE,
'#type' => 'container',
);
$elements['name'] = array(
'#type' => 'value',
'#value' => $this
->getName(),
);
$elements['amount'] = array(
'#type' => 'currency_amount',
'#title' => $this
->t('Amount'),
'#default_value' => array(
'amount' => $this
->getAmount(),
'currency_code' => $this
->getCurrencyCode(),
),
'#required' => TRUE,
);
$elements['quantity'] = array(
'#type' => 'number',
'#title' => $this
->t('Quantity'),
'#default_value' => $this
->getQuantity(),
'#min' => 1,
'#size' => 3,
'#required' => TRUE,
);
$elements['description'] = array(
'#type' => 'textfield',
'#title' => $this
->t('Description'),
'#default_value' => $this
->getDescription(),
'#required' => TRUE,
'#maxlength' => 255,
);
$elements['clear'] = array(
'#type' => 'markup',
'#markup' => '<div class="clear"></div>',
);
return $elements;
}
public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
$values = $form_state
->getValues();
$values = NestedArray::getValue($values, $form['#parents']);
$this
->setAmount($values['amount']['amount']);
$this
->setCurrencyCode($values['amount']['currency_code']);
$this
->setDescription($values['description']);
$this
->setName($values['name']);
$this
->setQuantity($values['quantity']);
}
}