Example #1
0
 /**
  * @param Group $group
  * @param int   $offset
  */
 private function syncGroupUsers(Group $group, $offset = 0)
 {
     $this->logger->info(' - Processing users for Group `' . $group->getName() . '` ' . $offset . ' to ' . ($offset + self::BATCH_SIZE) . '...');
     $ldapUsers = $this->ldap->findGroupUsers($group->getReference(), $offset, self::BATCH_SIZE);
     $grouphubUsers = $this->api->findGroupUsers($group, $offset, self::BATCH_SIZE);
     // Nothing to sync, or done syncing
     if (count($ldapUsers) === 0 && count($grouphubUsers) === 0) {
         $this->logger->info(' - Done syncing Group users!');
         return;
     }
     $index = $grouphubUsers->synchronize($ldapUsers, true);
     $this->logger->info(' -- Going to add ' . count($grouphubUsers->getAddedElements()) . ' users for Group to Grouphub...');
     foreach ($grouphubUsers->getAddedElements() as $element) {
         /** @var User $element */
         $user = $this->api->findUserByReference($element->getReference());
         if (!$user) {
             $this->logger->warning(' -- Skipping user with ref ' . $element->getReference() . ' because it cannot be found in the API?!?');
             continue;
         }
         try {
             $this->api->addGroupUser($group->getId(), $user->getId());
         } catch (\Exception $e) {
             $this->logger->warning(' -- Failed adding user with ref ' . $element->getReference() . ' message: ' . $e->getMessage());
         }
     }
     $this->logger->info(' -- Going to remove ' . count($grouphubUsers->getRemovedElements()) . ' users for Group from Grouphub...');
     foreach ($grouphubUsers->getRemovedElements() as $element) {
         /** @var User $element */
         $this->api->removeGroupUser($group->getId(), $element->getId());
     }
     $this->syncGroupUsers($group, $offset + $index + 1);
 }
Example #2
0
 /**
  * @param Group $group
  *
  * @return string
  */
 private function getAdminGroupReference(Group $group)
 {
     $pos = strpos($group->getReference(), ',');
     return substr($group->getReference(), 0, $pos) . '_admins,' . $this->adminGroupsDn;
 }
Example #3
0
 /**
  * @inheritdoc
  *
  * @param Group $other
  */
 public function compareTo($other)
 {
     $ref1 = strtoupper($this->getReference());
     $ref2 = strtoupper($other->getReference());
     $c = new \Collator('en');
     return $c->compare($ref1, $ref2);
 }
Example #4
0
 /**
  * @param Group $group
  *
  * @return array
  */
 public function normalizeGroup(Group $group)
 {
     return ['reference' => $group->getReference(), 'name' => $group->getName(), 'description' => $group->getDescription(), 'type' => $group->getType(), 'owner' => $group->getOwnerId(), 'parent' => $group->getParentId()];
 }