murmurations-1.0.0-alpha1/src/Commands/MurmurationsCommands.php

src/Commands/MurmurationsCommands.php
<?php

namespace Drupal\murmurations\Commands;

use Drush\Commands\DrushCommands;
use Drupal\murmurations\MurmurationsPluginManager;

/**
 * Drush commands for murmurations module
 *
 * @package Drupal\murmurations
 */
class MurmurationsCommands extends DrushCommands {

  /**
   * @var MurmurationsPluginManager
   */
  private array $plugins;

  /**
   *
   * @param MurmurationsPluginManager $murms_plugin_manager
   */
  public function __construct(MurmurationsPluginManager $murms_plugin_manager) {
    $this->plugins = $murms_plugin_manager->allInstances();
  }

  /**
   * De-index all murmurations entries
   *
   * @command murmurations:wipe
   * @aliases mrm-wipe
   * @usage murmurations:wipe --plugin=organisation
   * @description De-index all murmurations entries. Optionally specify a plugin id.
   * @arguments
   *   plugin: The id of a murmurations plugin. (optional)
   */
  public function murmurations_wipe($plugin_id = '', $url = '') {
    if ($plugin_id) {
      $batch_definition = [
        'title' => "Deindexing $plugin_id",
        'operations' => murmurations_deindex_plugin_operations($this->plugins[$plugin_id])
      ];
    }
    else {
      foreach ($this->plugins as $plugin_id => $plugin) {
        $batch_definition = [
          'title' => 'deindexing all murmurations items',
          'operations' => murmurations_deindex_plugin_operations($plugin)
        ];
      }
    }
    batch_set($batch_definition);
    drush_backend_batch_process();
    $this->output()->writeLn('Batch executed');
  }

  /**
   * Re-index all murmurations entries
   *
   * @command murmurations:write
   * @aliases mrm-write
   * @usage murmurations:write --plugin=organisation
   * @description Insert/update all murmurations references
   * @arguments
   *   plugin: The id of a murmurations plugin. (optional)
   *
   * If drush not working, do this:
   * @code
   * $plugins = \Drupal::service('plugin.manager.murmurations')->allInstances();
   * foreach ($plugins as $plugin_id => $plugin) {
   *   $batch_definition = [
   *     'title' => 'Reindexing all murmurations items',
   *     'operations' => murmurations_reindex_plugin_operations($plugin)
   *   ];
   * }
   * batch_set($batch_definition);
   * @endcode
   */
  public function murmurations_write($plugin_id = '') {
    if ($plugin_id) {
      $batch_definition = [
        'title' => "Reindexing $plugin_id",
        'operations' => murmurations_reindex_plugin_operations($this->plugins[$plugin_id])
      ];
    }
    else {
      foreach ($this->plugins as $plugin_id => $plugin) {
        $batch_definition = [
          'title' => 'Reindexing all murmurations items',
          'operations' => murmurations_reindex_plugin_operations($plugin)
        ];
      }
    }
    batch_set($batch_definition);
    drush_backend_batch_process();
  }

}

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

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