media_avportal-8.x-1.0-beta10/src/Commands/AvPortalCommands.php

src/Commands/AvPortalCommands.php
<?php

declare(strict_types=1);

namespace Drupal\media_avportal\Commands;

use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\media_avportal\AvPortalMediaUpdater;
use Drush\Commands\DrushCommands;

/**
 * Drush integration for the Media AV Portal module.
 */
class AvPortalCommands extends DrushCommands {

  use StringTranslationTrait;

  /**
   * The AV Portal pull media service.
   *
   * @var \Drupal\media_avportal\AvPortalMediaUpdater
   */
  protected $avPortalMediaUpdater;

  /**
   * Media AV Portal commands constructor.
   *
   * @param \Drupal\media_avportal\AvPortalMediaUpdater $avPortalMediaUpdater
   *   The service that update existing media.
   */
  public function __construct(AvPortalMediaUpdater $avPortalMediaUpdater) {
    parent::__construct();

    $this->avPortalMediaUpdater = $avPortalMediaUpdater;
  }

  /**
   * Refresh from the source all the mapped fields of AV Portal medias.
   *
   * @param array $options
   *   Command options.
   *
   * @command media-avportal:refresh-mapped-fields
   * @option mids A comma-separated list of media ids to update. If omitted, all av portal medias will be updated.
   * @validate-module-enabled media_avportal
   */
  public function runRefreshMappedFields(array $options = ['mids' => self::OPT]): void {
    $mids = $options['mids'] ? $options['mids'] : [];

    // Build operations for updating avportal medias with remote data.
    $operations = [];
    foreach ($mids as $mid) {
      $operations[] = [
        [$this->avPortalMediaUpdater, 'refreshMappedFields'],
        [$mid],
      ];
    }

    $operations = $operations ? $operations : [
      [
        [$this->avPortalMediaUpdater, 'refreshMappedFields'],
        [NULL],
      ],
    ];

    $batch = [
      'operations' => $operations,
      'title' => $this->t('Update AVPortal medias.'),
      'progress_message' => '',
      'error_message' => $this->t('Error on updating avportal medias'),
    ];

    batch_set($batch);

    drush_backend_batch_process();
  }

}

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

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