Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add userid option to migrate:rollback #741

Merged
merged 2 commits into from
Nov 20, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 61 additions & 4 deletions src/Commands/IslandoraCommands.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,36 @@ public function optionsetImportUser($options = ['userid' => self::REQ]) {
}

/**
* Validate the provided userid.
* Add the userid option.
*
* @hook option migrate:rollback
* @option userid User ID to rollback the migration.
*/
public function optionsetRollbackUser($options = ['userid' => self::REQ]) {
}

/**
* Implement migrate import validate hook.
*
* @hook validate migrate:import
*/
public function validateUser(CommandData $commandData) {
public function validateUserImport(CommandData $commandData) {
$this->validateUser($commandData);;
}

/**
* Implement migrate rollback validate hook.
*
* @hook validate migrate:rollback
*/
public function validateUserRollback(CommandData $commandData) {
$this->validateUser($commandData);
}

/**
* Validate the provided userid.
*/
protected function validateUser(CommandData $commandData) {
$userid = $commandData->input()->getOption('userid');
if ($userid) {
$account = User::load($userid);
Expand All @@ -39,11 +64,27 @@ public function validateUser(CommandData $commandData) {
}

/**
* Switch the active user account to perform the import.
* Implement migrate import pre-command hook.
*
* @hook pre-command migrate:import
*/
public function preImport(CommandData $commandData) {
$this->switchUser($commandData);
}

/**
* Implement migrate rollback pre-command hook.
*
* @hook pre-command migrate:rollback
*/
public function preRollback(CommandData $commandData) {
$this->switchUser($commandData);
}

/**
* Switch the active user account using the provided userid.
*/
protected function switchUser(CommandData $commandData) {
$userid = $commandData->input()->getOption('userid');
if ($userid) {
$account = User::load($userid);
Expand All @@ -64,11 +105,27 @@ public function preImport(CommandData $commandData) {
}

/**
* Switch the user back once the migration is complete.
* Implement migrate import post-command hook.
*
* @hook post-command migrate:import
*/
public function postImport($result, CommandData $commandData) {
$this->switchUserBack($commandData);
}

/**
* Implement migrate rollback post-command hook.
*
* @hook post-command migrate:rollback
*/
public function postRollback($result, CommandData $commandData) {
$this->switchUserBack($commandData);
}

/**
* Switch the user back.
*/
protected function switchUserBack(CommandData $commandData) {
if ($commandData->input()->getOption('userid')) {
$accountSwitcher = \Drupal::service('account_switcher');
$this->logger()->notice(dt(
Expand Down