Example #1
0
 /**
  * @param User $user
  * @return void
  */
 public function Update(User $user)
 {
     $userId = $user->Id();
     $db = ServiceLocator::GetDatabase();
     $updateUserCommand = new UpdateUserCommand($user->Id(), $user->StatusId(), $user->encryptedPassword, $user->passwordSalt, $user->FirstName(), $user->LastName(), $user->EmailAddress(), $user->Username(), $user->Homepage(), $user->Timezone(), $user->LastLogin(), $user->GetIsCalendarSubscriptionAllowed(), $user->GetPublicId(), $user->Language(), $user->GetDefaultScheduleId());
     $db->Execute($updateUserCommand);
     $removedPermissions = $user->GetRemovedPermissions();
     foreach ($removedPermissions as $resourceId) {
         $db->Execute(new DeleteUserResourcePermission($userId, $resourceId));
     }
     $addedPermissions = $user->GetAddedPermissions();
     foreach ($addedPermissions as $resourceId) {
         $db->Execute(new AddUserResourcePermission($userId, $resourceId));
     }
     if ($user->HaveAttributesChanged()) {
         $updateAttributesCommand = new UpdateUserAttributesCommand($userId, $user->GetAttribute(UserAttribute::Phone), $user->GetAttribute(UserAttribute::Organization), $user->GetAttribute(UserAttribute::Position));
         $db->Execute($updateAttributesCommand);
     }
     $removedPreferences = $user->GetRemovedEmailPreferences();
     foreach ($removedPreferences as $event) {
         $db->Execute(new DeleteEmailPreferenceCommand($userId, $event->EventCategory(), $event->EventType()));
     }
     $addedPreferences = $user->GetAddedEmailPreferences();
     foreach ($addedPreferences as $event) {
         $db->Execute(new AddEmailPreferenceCommand($userId, $event->EventCategory(), $event->EventType()));
     }
     foreach ($user->GetRemovedAttributes() as $removed) {
         $db->Execute(new RemoveAttributeValueCommand($removed->AttributeId, $user->Id()));
     }
     foreach ($user->GetAddedAttributes() as $added) {
         $db->Execute(new AddAttributeValueCommand($added->AttributeId, $added->Value, $user->Id(), CustomAttributeCategory::USER));
     }
     foreach ($user->GetPreferences()->AddedPreferences() as $added) {
         $db->Execute(new AddUserPreferenceCommand($user->Id(), $added, $user->GetPreference($added)));
     }
     foreach ($user->GetPreferences()->ChangedPreferences() as $updated) {
         $db->Execute(new UpdateUserPreferenceCommand($user->Id(), $updated, $user->GetPreference($updated)));
     }
     foreach ($user->GetRemovedGroups() as $removed) {
         $db->Execute(new DeleteUserGroupCommand($user->Id(), $removed->GroupId));
     }
     foreach ($user->GetAddedGroups() as $added) {
         $db->Execute(new AddUserGroupCommand($user->Id(), $added->GroupId));
     }
 }