You are here

class AutobanTestForm in Automatic IP ban (Autoban) 8

Test autoban rule.

Hierarchy

Expanded class hierarchy of AutobanTestForm

1 string reference to 'AutobanTestForm'
autoban.routing.yml in ./autoban.routing.yml
autoban.routing.yml

File

src/Form/AutobanTestForm.php, line 17

Namespace

Drupal\autoban\Form
View source
class AutobanTestForm extends FormBase {

  /**
   * The autoban object.
   *
   * @var \Drupal\autoban\Controller\AutobanController
   */
  protected $autoban;

  /**
   * Construct the AutobanTestForm.
   *
   * @param \Drupal\autoban\Controller\AutobanController $autoban
   *   Autoban object.
   */
  public function __construct(AutobanController $autoban) {
    $this->autoban = $autoban;
  }

  /**
   * Factory method for AutobanTestForm.
   */
  public static function create(ContainerInterface $container) {
    return new static($container
      ->get('autoban'));
  }

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'autoban_test_form';
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state, $rule = '') {
    $from_analyze = FALSE;
    if (AutobanUtils::isFromAnalyze($rule)) {
      $params = $this
        ->getRequest()->query
        ->all();
      $from_analyze = !empty($params['type']) && !empty($params['message']);
    }
    else {
      $params = [];
    }
    $header = [
      $this
        ->t('Count'),
      $this
        ->t('Ip address'),
    ];
    $controller = $this->autoban;
    if ($from_analyze) {
      $result = $controller
        ->getBannedIp($rule, $params);
      $ips_arr = [];
    }
    else {
      $result = $controller
        ->getBannedIp($rule);
      $header[] = $this
        ->t('Ban status');
    }
    $rows = [];
    $build = [];
    $ips_arr = [];
    if (!empty($result)) {
      $banManager = NULL;
      if (!$from_analyze) {
        $banManagerData = $controller
          ->getBanManagerDataRule($rule);
        if ($banManagerData) {
          $banManager = $banManagerData['ban_manager'];
        }
      }

      // Rows collect.
      foreach ($result as $item) {
        $data = [
          $item->hcount,
          $item->hostname,
        ];
        if ($from_analyze) {
          $ips_arr[] = $item->hostname;
        }
        else {
          $data[] = $banManager ? $banManager
            ->isBanned($item->hostname) ? $this
            ->t('Banned') : $this
            ->t('Not banned') : '?';
        }
        $rows[] = [
          'data' => $data,
        ];
      }

      // Add action buttons.
      $buttons = [];
      $destination = [
        'destination' => Url::fromRoute('<current>', $params)
          ->toString(),
      ];
      if (!$from_analyze && !empty($banManagerData)) {
        $entity = Autoban::load($rule);
        $url = Url::fromRoute('autoban.ban', [
          'rule' => $entity
            ->id(),
        ], [
          'query' => $destination,
          'attributes' => [
            'class' => 'button button-action button--primary button--small',
          ],
        ]);
        $text = $this
          ->t('Ban IP (@name @type)', [
          '@name' => $banManagerData['ban_name'],
          '@type' => $banManagerData['ban_type'],
        ]);
        $buttons['ban'] = Link::fromTextAndUrl($text, $url)
          ->toString();
      }
      else {
        if (count($ips_arr)) {
          $banManagerList = $controller
            ->getBanProvidersList();
          if (!empty($banManagerList)) {
            $ips = implode(',', $ips_arr);
            foreach ($banManagerList as $id => $item) {
              $url = Url::fromRoute('autoban.direct_ban', [
                'ips' => $ips,
                'provider' => $id,
              ], [
                'query' => $destination,
                'attributes' => [
                  'class' => 'button button-action button--primary button--small',
                ],
              ]);
              $buttons[$id] = Link::fromTextAndUrl($item['name'], $url)
                ->toString();
            }
          }
        }
      }
      $build['buttons'] = [
        '#theme' => 'item_list',
        '#items' => $buttons,
        '#attributes' => [
          'class' => 'action-links',
        ],
      ];
    }
    $build['test_table'] = [
      '#type' => 'table',
      '#header' => $header,
      '#rows' => $rows,
      '#empty' => $this
        ->t('No hostnames was found.'),
    ];
    return $build;
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
  }

}

Members

Namesort descending Modifiers Type Description Overrides
AutobanTestForm::$autoban protected property The autoban object.
AutobanTestForm::buildForm public function Form constructor. Overrides FormInterface::buildForm
AutobanTestForm::create public static function Factory method for AutobanTestForm. Overrides FormBase::create
AutobanTestForm::getFormId public function Returns a unique string identifying the form. Overrides FormInterface::getFormId
AutobanTestForm::submitForm public function Form submission handler. Overrides FormInterface::submitForm
AutobanTestForm::__construct public function Construct the AutobanTestForm.
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
FormBase::$configFactory protected property The config factory. 1
FormBase::$requestStack protected property The request stack. 1
FormBase::$routeMatch protected property The route match.
FormBase::config protected function Retrieves a configuration object.
FormBase::configFactory protected function Gets the config factory for this form. 1
FormBase::container private function Returns the service container.
FormBase::currentUser protected function Gets the current user.
FormBase::getRequest protected function Gets the request object.
FormBase::getRouteMatch protected function Gets the route match.
FormBase::logger protected function Gets the logger for a specific channel.
FormBase::redirect protected function Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait::redirect
FormBase::resetConfigFactory public function Resets the configuration factory.
FormBase::setConfigFactory public function Sets the config factory for this form.
FormBase::setRequestStack public function Sets the request stack object to use.
FormBase::validateForm public function Form validation handler. Overrides FormInterface::validateForm 62
LinkGeneratorTrait::$linkGenerator protected property The link generator. 1
LinkGeneratorTrait::getLinkGenerator Deprecated protected function Returns the link generator.
LinkGeneratorTrait::l Deprecated protected function Renders a link to a route given a route name and its parameters.
LinkGeneratorTrait::setLinkGenerator Deprecated public function Sets the link generator service.
LoggerChannelTrait::$loggerFactory protected property The logger channel factory service.
LoggerChannelTrait::getLogger protected function Gets the logger for a specific channel.
LoggerChannelTrait::setLoggerFactory public function Injects the logger channel factory.
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
RedirectDestinationTrait::$redirectDestination protected property The redirect destination service. 1
RedirectDestinationTrait::getDestinationArray protected function Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url.
RedirectDestinationTrait::getRedirectDestination protected function Returns the redirect destination service.
RedirectDestinationTrait::setRedirectDestination public function Sets the redirect destination service.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
UrlGeneratorTrait::$urlGenerator protected property The url generator.
UrlGeneratorTrait::getUrlGenerator Deprecated protected function Returns the URL generator service.
UrlGeneratorTrait::setUrlGenerator Deprecated public function Sets the URL generator service.
UrlGeneratorTrait::url Deprecated protected function Generates a URL or path for a specific route based on the given parameters.