paid_ads-8.x-1.x-dev/src/PaidService.php

src/PaidService.php
<?php

namespace Drupal\paid_ads;

use Drupal\Component\Plugin\Exception\PluginException;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Logger\LoggerChannelInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\paid_ads\Plugin\PaidGatewaysPluginManager;

/**
 * Class PaidService.
 */
class PaidService {

  use StringTranslationTrait;

  /**
   * PaidGatewaysPluginManager injection.
   *
   * @var \Drupal\paid_ads\Plugin\PaidGatewaysPluginManager
   */
  private $pluginManager;

  /**
   * Drupal logger.
   *
   * @var \Drupal\Core\Logger\LoggerChannel
   */
  protected $logger;

  /**
   * PaidService constructor.
   *
   * @param \Drupal\paid_ads\Plugin\PaidGatewaysPluginManager $pluginManager
   *   PluginManager instance.
   * @param \Drupal\Core\Logger\LoggerChannelInterface $logger
   *   Injected Drupal logger channel factory.
   */
  public function __construct(PaidGatewaysPluginManager $pluginManager, LoggerChannelInterface $logger) {
    $this->pluginManager = $pluginManager;
    $this->logger = $logger;
  }

  /**
   * Gets list of PaidGateways plugins.
   *
   * @return array
   *   Return list of plugins.
   */
  public function getPluginsList(): iterable {
    $plugins = [];
    foreach ($this->pluginManager->getDefinitions() as $plugin) {
      $plugins[$plugin['id']] = $plugin['label']->render();
    }
    return $plugins;
  }

  /**
   * Request display form from plugin.
   *
   * @param string $pluginId
   *   Id of plugin.
   * @param array $options
   *   Options for form.
   *
   * @return array
   *   Render form array.
   */
  public function buildFormByPluginId($pluginId, array $options) {
    $plugin = $this->getInstance($pluginId);
    if ($plugin) {
      return $plugin->getForm($options);
    }
    return [];
  }

  /**
   * Request configuration form from plugin.
   *
   * @param string $pluginId
   *   Id of plugin.
   * @param array $form
   *   Form array.
   * @param \Drupal\Core\Form\FormStateInterface $formState
   *   FormState instance.
   *
   * @return array
   *   Render form array.
   */
  public function buildConfigFormByPluginId($pluginId, array $form, FormStateInterface $formState) {
    $plugin = $this->getInstance($pluginId);
    if ($plugin) {
      return $plugin->getConfigForm($form, $formState);
    }
    return [];
  }

  /**
   * Gets PaidGatewaysPlugin instance by plugin id.
   *
   * @param string $pluginId
   *   Id of plugin.
   *
   * @return \Drupal\paid_ads\Plugin\PaidGatewaysPluginBase|null
   *   PaidGatewaysPlugin instance.
   */
  public function getInstance($pluginId) {
    try {
      if ($this->pluginManager->hasDefinition($pluginId)) {
        /* @var $plugin \Drupal\paid_ads\Plugin\PaidGatewaysPluginBase */
        $plugin = $this->pluginManager->createInstance($pluginId);
        return $plugin;
      }
      else {
        $this->logger->warning($this->t('Could not find a plugin with id: @id', ['@id' => $pluginId]));
        return NULL;
      }
    }
    catch (PluginException $e) {
      $this->logger->error($this->t('Plugin exception raised with message: @msg on retrieving plugin @name', [
        '@msg' => $e->getMessage(),
        '@name' => $pluginId,
      ]));
      return NULL;
    }
  }

  /**
   * Get amount by field type class.
   *
   * @param string $class
   *   Class namespace.
   * @param array $options
   *   Options for callback.
   *
   * @return string
   *   Amount.
   */
  public function getAmountByFieldClass($class, array $options) {
    return call_user_func([$class, 'getAmounts'], $options);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc