protected function UserUpdate::beforeUserSave in Apigee Edge 8
Execute actions before the user gets saved.
Parameters
\Drupal\apigee_edge\Structure\DeveloperToUserConversionResult $result: Result of the entity conversion.
Throws
\Exception Can throw an exception to abort user save.
Overrides UserCreateUpdate::beforeUserSave
File
- src/
Job/ UserUpdate.php, line 33
Class
- UserUpdate
- A job to update a Drupal user based on an Apigee Edge developer.
Namespace
Drupal\apigee_edge\JobCode
protected function beforeUserSave(DeveloperToUserConversionResult $result) : void {
parent::beforeUserSave($result);
/** @var \Drupal\user\UserInterface $original_user */
$original_user = \Drupal::entityTypeManager()
->getStorage('user')
->loadUnchanged($result
->getUser()
->id());
// Even if the developer has been blocked in Apigee Edge we should not block
// its Drupal user automatically when syncing.
if ($original_user
->isActive() && $result
->getUser()
->isBlocked()) {
$result
->getUser()
->activate();
}
$context = [
'link' => $result
->getUser()
->toLink(t('View user'))
->toString(),
];
$this
->logConversionProblems($result
->getProblems(), $context);
// Rollback a synchronised field's value if the related attribute's value
// contained an incorrect field value.
if (count($result
->getProblems()) > 0) {
/** @var \Drupal\user\UserInterface $original_user */
foreach ($result
->getProblems() as $problem) {
// Do not apply rollback on base fields.
if ($problem instanceof DeveloperToUserConversationInvalidValueException && !in_array($problem
->getTarget(), $this
->userDeveloperConverter()::DEVELOPER_PROP_USER_BASE_FIELD_MAP, TRUE)) {
$result
->getUser()
->set($problem
->getTarget(), $original_user
->get($problem
->getTarget())
->getValue());
}
}
}
}