html_importer-8.x-2.x-dev/src/Form/DeleteHtmlImportFileForm.php

src/Form/DeleteHtmlImportFileForm.php
<?php

namespace Drupal\html_importer\Form;

use Drupal\Core\Form\ConfirmFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Logger\LoggerChannelFactory;
use Drupal\Core\Messenger\MessengerInterface;
use Drupal\Core\Url;
use Drupal\file\Entity\File;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Delete imported HTML files.
 *
 * @package Drupal\html_importer.
 */
class DeleteHtmlImportFileForm extends ConfirmFormBase {

  /**
   * Flag to delete file by string or int.
   *
   * @var string|int
   */
  protected $source;

  /**
   * Logger service object.
   *
   * @var \Drupal\Core\Logger\LoggerChannelFactory
   */
  protected  $loggerFactory;

  /**
   * Message service object.
   *
   * @var \Drupal\Core\Messenger\MessengerInterface
   */
  protected  $messenger;

  /**
   * Constructs ImportBatchManager object.
   *
   * @param \Drupal\Core\Logger\LoggerChannelFactory $logger_factory
   *   Drupal Logger Factory service.
   * @param \Drupal\Core\Messenger\MessengerInterface $messenger
   *   Drupal message services.
   */
  public function __construct(LoggerChannelFactory $logger_factory, MessengerInterface $messenger) {
    $this->loggerFactory = $logger_factory;
    $this->messenger = $messenger;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('logger.factory'),
      $container->get('messenger')
    );
  }

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

  /**
   * {@inheritdoc}
   */
  public function getQuestion() {
    return $this->t('Are you sure you want to delete %source ?', ['%source' => $this->source]);
  }

  /**
   * {@inheritdoc}
   */
  public function getCancelUrl() {
    return new Url('nodeDashboard.settings');
  }

  /**
   * {@inheritdoc}
   */
  public function getConfirmText() {
    return $this->t('Delete');
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state, $source = '') {
    $this->source = $source;
    return parent::buildForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    // Load files.
    if ($file = File::load($this->source)) {
      $file->delete();
    }
    else {
      $uri = \Drupal::config('system.file')->get('default_scheme') . "://html_file/";
      $extract_details = explode('-', $this->source);
      if (strpos($uri, current($extract_details)) == FALSE) {
        $dir = file_scan_directory($uri . "/" . current($extract_details), '/.*\\.html/');
        foreach ($dir as $value) {
          if ($value->name == end($extract_details)) {
            // Delete files from folder.
            unlink($value->uri);
            break;
          }
        }
      }
    }

    // Log message for file delete.
    $this->loggerFactory->get('html_importer')->info(
      $this->t('File deleted successfully')
    );
    $this->messenger->addMessage($this->t('File deleted successfully.'));

    $form_state->setRedirect('nodeDashboard.settings');
  }

}

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

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