/** * @param int $offset */ public function syncUsers($offset = 0) { $this->logger->info('Processing users ' . $offset . ' to ' . ($offset + self::BATCH_SIZE) . '...'); $ldapUsers = $this->ldap->findUsers($offset, self::BATCH_SIZE); $grouphubUsers = $this->api->findUsers(null, 'reference', $offset, self::BATCH_SIZE); if (count($ldapUsers) === 0 && count($grouphubUsers) === 0) { $this->logger->info('Done syncing users!'); return; } $index = $grouphubUsers->synchronize($ldapUsers, true); $this->logger->info(' - Going to add ' . count($grouphubUsers->getAddedElements()) . ' users to Grouphub...'); foreach ($grouphubUsers->getAddedElements() as $element) { $this->logger->info(' -- Adding ' . $element->getReference()); /** @var User $element */ $this->api->addUser($element); } $this->logger->info(' - Going to update ' . count($grouphubUsers->getUpdatedElements()) . ' users in Grouphub...'); foreach ($grouphubUsers->getUpdatedElements() as $element) { $this->logger->info(' -- Updating ' . $element['new']->getReference()); /** @var User[] $element */ $this->api->updateUser($element['old']->getId(), $element['new']); } $this->logger->info(' - Going to remove ' . count($grouphubUsers->getRemovedElements()) . ' users from Grouphub...'); foreach ($grouphubUsers->getRemovedElements() as $element) { $this->logger->info(' -- Removing ' . $element->getReference()); /** @var User $element */ $this->api->removeUser($element->getId()); } $this->syncUsers($offset + $index + 1); }