class BatchManager in Workbench Moderation to Content Moderation 8
Manages communication between Batch API and the migration manager.
Hierarchy
- class \Drupal\wbm2cm\BatchManager
Expanded class hierarchy of BatchManager
1 string reference to 'BatchManager'
1 service uses BatchManager
File
- src/
BatchManager.php, line 12
Namespace
Drupal\wbm2cmView source
class BatchManager {
/**
* Processing operations should be stopped.
*
* @var bool
*/
protected $isProcessingStopped = FALSE;
/**
* The migration manager.
*
* @var \Drupal\wbm2cm\MigrateManager
*/
protected $manager;
/**
* The key value store for the wbm2cm module.
*
* @var \Drupal\Core\KeyValueStore\KeyValueStoreInterface
*/
protected $keyValueStore;
/**
* Logger service.
*
* @var \Drupal\Core\Logger\LoggerChannelInterface
*/
protected $logger;
/**
* Instantiate BatchManager.
*
* @param \Drupal\wbm2cm\MigrateManager $manager
* The migration manager.
* @param \Drupal\Core\KeyValueStore\KeyValueFactoryInterface $key_value_factory
* The key value store factory.
* @param \Psr\Log\LoggerInterface $logger
* A logger instance.
*/
public function __construct(MigrateManager $manager, KeyValueFactoryInterface $key_value_factory, LoggerInterface $logger) {
$this->manager = $manager;
$this->batchStore = $key_value_factory
->get('wbm2cm_batch');
$this->logger = $logger;
}
/**
* Determine if a particular step is complete.
*
* @param string $step
* The name of the step, e.g. "step1".
*
* @return bool
* True if complete and no action needs taken, else false.
*/
public function isStepComplete($step) {
if ($this->batchStore
->has($step)) {
return 'complete' == $this->batchStore
->get($step);
}
return FALSE;
}
/**
* Set a particular step to complete.
*
* @param string $step
* The name of the step, e.g. "step1".
*/
public function setStepComplete($step) {
$this->batchStore
->set($step, 'complete');
}
/**
* Set a particular step to incomplete.
*
* @param string $step
* The name of the step, e.g. "step1".
*/
public function setStepIncomplete($step) {
$this->batchStore
->set($step, 'incomplete');
}
/**
* Stop processing operations.
*/
protected function stopProcessing() {
$this->isProcessingStopped = TRUE;
}
/**
* Determine if operations should stop processing.
*
* @return bool
* True if operations should not be processed, else false.
*/
protected function isProcessingStopped() {
return $this->isProcessingStopped;
}
/**
* Determine if a particular step can be processed.
*
* @return bool
* True if it can be processed, else false.
*/
public function isStepSkipped($step) {
if ($this
->isProcessingStopped()) {
$this->logger
->info('Step %step is skipped because: %reason', [
'%step' => $step,
'%reason' => 'Processing is stopped',
]);
return TRUE;
}
if ($this
->isStepComplete($step)) {
$this->logger
->info('Step %step is skipped because: %reason', [
'%step' => $step,
'%reason' => 'Step is complete',
]);
return TRUE;
}
$this->logger
->info('Step %step is NOT skipped', [
'%step' => $step,
]);
return FALSE;
}
/**
* States and transitions are stored in key value (i.e. the Workflow entity is created).
*/
public function step1(&$context) {
if ($this
->isStepSkipped('step1')) {
return;
}
$this->manager
->saveWorkbenchModerationStatesAndTransitions();
$this
->setStepComplete('step1');
$context['message'] = 'Saving Workbench Moderation states and transitions to key value storage.';
}
/**
* Entity state maps are stored in key value.
*/
public function step2(&$context) {
if ($this
->isStepSkipped('step2')) {
return;
}
$this->manager
->saveWorkbenchModerationSateMap();
$context['message'] = 'Saving Workbench Moderation entity states to key value storage.';
}
/**
* WBM uninstalled.
*/
public function step3(&$context) {
if ($this
->isStepSkipped('step3')) {
return;
}
$this->manager
->uninstallWorkbenchModeration();
$this
->setStepComplete('step3');
$context['message'] = 'Uninstalling Workbench Moderation.';
}
/**
* Workflows installed.
*/
public function step4(&$context) {
if ($this
->isStepSkipped('step4')) {
return;
}
$this->manager
->installWorkflows();
$this
->setStepComplete('step4');
$context['message'] = 'Installing Workflows module.';
}
/**
* CM installed.
*/
public function step5(&$context) {
if ($this
->isStepSkipped('step5')) {
return;
}
$this->manager
->installContentModeration();
$this
->setStepComplete('step5');
$context['message'] = 'Installing Content Moderation module.';
}
/**
* States and transitions are migrated (i.e. the Workflow entity is created).
*/
public function step6(&$context) {
if ($this
->isStepSkipped('step6')) {
return;
}
$this->manager
->recreateWorkbenchModerationWorkflow();
$this
->setStepComplete('step6');
$context['message'] = 'Importing states and transitions from key value storage to Workflows.';
}
/**
* Entity state maps are migrated.
*/
public function step7(&$context) {
if ($this
->isStepSkipped('step7')) {
return;
}
$this->manager
->recreateModerationStatesOnEntities();
$this
->setStepComplete('step7');
$context['message'] = 'Importing entity moderation states from key value storage to Content Moderation.';
}
/**
* All keyvalue temporary state is cleaned up except for progress state.
*/
public function step8(&$context) {
if ($this
->isStepSkipped('step8')) {
return;
}
$this->manager
->cleanupKeyValue();
$this
->setStepComplete('step8');
// This is the last step, so set the migration as finished.
$this->manager
->setFinished();
$context['message'] = 'Clean up key value storage.';
}
/**
* Finalize the batch process.
*/
public function finished($success, $results, $operations) {
if ($success) {
$message = t('Migration complete. You can now uninstall this module.');
}
else {
// @todo change this to useful error message
$message = t('Finished with an error.');
}
drupal_set_message($message);
return new RedirectResponse(\Drupal::url('wbm2cm.overview', [], [
'absolute' => TRUE,
]));
}
/**
* Purge all key value stores used by the batch manager.
*
* Note: this should only be used during the module's uninstall.
*/
public function purgeAllKeyValueStores() {
$this->batchStore
->deleteAll();
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BatchManager:: |
protected | property | Processing operations should be stopped. | |
BatchManager:: |
protected | property | The key value store for the wbm2cm module. | |
BatchManager:: |
protected | property | Logger service. | |
BatchManager:: |
protected | property | The migration manager. | |
BatchManager:: |
public | function | Finalize the batch process. | |
BatchManager:: |
protected | function | Determine if operations should stop processing. | |
BatchManager:: |
public | function | Determine if a particular step is complete. | |
BatchManager:: |
public | function | Determine if a particular step can be processed. | |
BatchManager:: |
public | function | Purge all key value stores used by the batch manager. | |
BatchManager:: |
public | function | Set a particular step to complete. | |
BatchManager:: |
public | function | Set a particular step to incomplete. | |
BatchManager:: |
public | function | States and transitions are stored in key value (i.e. the Workflow entity is created). | |
BatchManager:: |
public | function | Entity state maps are stored in key value. | |
BatchManager:: |
public | function | WBM uninstalled. | |
BatchManager:: |
public | function | Workflows installed. | |
BatchManager:: |
public | function | CM installed. | |
BatchManager:: |
public | function | States and transitions are migrated (i.e. the Workflow entity is created). | |
BatchManager:: |
public | function | Entity state maps are migrated. | |
BatchManager:: |
public | function | All keyvalue temporary state is cleaned up except for progress state. | |
BatchManager:: |
protected | function | Stop processing operations. | |
BatchManager:: |
public | function | Instantiate BatchManager. |