示例#1
0
 /**
  * @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);
 }