gcsfs-1.0.0-beta2/src/Commands/Refresh.php

src/Commands/Refresh.php
<?php

namespace Drupal\gcsfs\Commands;

use Drupal\Core\Batch\BatchBuilder;
use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\gcsfs\BucketManagerInterface;
use Drush\Commands\DrushCommands;

/**
 * Refresh metadata class.
 */
class Refresh extends DrushCommands {

  /**
   * Bucket manager service.
   *
   * @var \Drupal\gcsfs\BucketManagerInterface
   */
  protected BucketManagerInterface $bucketManager;

  /**
   * Extension list service.
   *
   * @var \Drupal\Core\Extension\ModuleExtensionList
   */
  protected ModuleExtensionList $extensionList;

  /**
   * Constructor.
   *
   * @param \Drupal\gcsfs\BucketManagerInterface $bucket_manager
   *   The bucket manager service.
   * @param \Drupal\Core\Extension\ModuleExtensionList $extension_list
   *   The extension list service.
   */
  public function __construct(BucketManagerInterface $bucket_manager, ModuleExtensionList $extension_list) {
    $this->bucketManager = $bucket_manager;
    $this->extensionList = $extension_list;
  }

  /**
   * Refresh metadata from Google Cloud Storage bucket.
   *
   * @command gcsfs-refresh
   * @usage Standard example
   *   drush gcsfs-refresh
   * @aliases gcsfsr
   */
  public function refreshMetadata() {
    if ($this->bucketManager->bucketExists()) {

      // Set up the batch.
      $batch = new BatchBuilder();
      $batch->setTitle(new TranslatableMarkup('Refreshing metadata from Google Cloud Storage bucket.'));
      $batch->setFile($this->extensionList->getPath('gcsfs') . '/gcsfs.batch.inc');
      $batch->setFinishCallback('_gcsfs_metadata_refresh_batch_finished');
      $batch->addOperation('_gcsfs_metadata_refresh_batch_get_metadata', []);
      $batch->addOperation('_gcsfs_metadata_refresh_batch_update_metadata', []);
      batch_set($batch->toArray());

      drush_backend_batch_process();

      $this->logger()->notice(dt('Metadata refresh completed successfully.'));
    }
  }

}

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

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