Loading install/demo/persons.json +1 −1 Changes for install/demo/persons.json: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ "uid": "alberteinstein", "dateupdated": "2019-07-30", "roles": { "14": ["Responsable scientifique"] } }, { Loading module/Oscar/src/Oscar/Connector/ConnectorPersonHydrator.php +45 −0 Changes for module/Oscar/src/Oscar/Connector/ConnectorPersonHydrator.php: 45 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -118,7 +118,32 @@ class ConnectorPersonHydrator } /////////////////////////////////// /// Récupération des rôles synchronisés par organisation $syncRoles = []; /** @var OrganizationPerson $organizationperson */ foreach ($personOscar->getOrganizations() as $organizationperson) { if( $organizationperson->getOrigin() == $connectorName ){ $organizationCode = $organizationperson->getOrganization()->getCode(); if( !array_key_exists($organizationCode, $syncRoles) ){ $syncRoles[$organizationCode] = []; } if( !in_array($organizationperson->getRoleObj()->getRoleId(), $syncRoles[$organizationCode]) ){ $syncRoles[$organizationCode][] = $organizationperson->getRoleObj()->getRoleId(); } } } if( $syncRoles ){ // print_r($syncRoles); // Purge des rôles supprimés foreach ($syncRoles as $code=>$roles){ echo " - $personOscar : ". implode(",", $roles) . " dans $code \n"; } } if (property_exists($personData, 'roles')) { foreach ($personData->roles as $organizationCode => $roles) { try { Loading @@ -126,7 +151,13 @@ class ConnectorPersonHydrator $organization = $this->getOrganisationByCode($organizationCode); if ($organization) { foreach ($roles as $roleId) { if( array_key_exists($organizationCode, $syncRoles) ){ if( in_array($roleId, $syncRoles[$organizationCode]) ){ array_splice($syncRoles[$organizationCode], array_search($roleId, $syncRoles[$organizationCode]), 1); } } if (array_key_exists($roleId, $rolesOscar)) { if (!$organization->hasPerson($personOscar, $roleId)) { Loading Loading @@ -159,6 +190,20 @@ class ConnectorPersonHydrator } } // Purge des rôles supprimés foreach ($syncRoles as $code=>$roles){ /** @var OrganizationPerson $organizationPerson */ foreach ($personOscar->getOrganizations() as $organizationPerson) { if( $organizationPerson->getOrigin() == $connectorName && $organizationPerson->getOrganization()->getCode() == $code && in_array($organizationperson->getRoleObj()->getRoleId(), $roles)) { $this->repport->addremoved(sprintf("Suppression du rôle %s de %s dans %s", $organizationPerson->getRole(), $organizationPerson->getPerson(), $organizationPerson->getOrganization())); //$this->entityManager->remove($organizationPerson); } } } return $personOscar; } Loading module/Oscar/src/Oscar/Connector/ConnectorPersonREST.php +1 −1 Changes for module/Oscar/src/Oscar/Connector/ConnectorPersonREST.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -146,7 +146,7 @@ class ConnectorPersonREST implements IConnectorPerson, ServiceLocatorAwareInterf foreach( $personsDatas as $personData ){ if( ! property_exists($personData, 'uid') ){ $repport->addwarning(sprintf("Les donnèes %s n'ont pas d'UID.", print_r($personData->uid, true))); $repport->addwarning(sprintf("Les donnèes %s n'ont pas d'UID.", print_r($personData, true))); continue; } Loading module/Oscar/view/partials/person-enrolled-card.phtml +8 −1 Changes for module/Oscar/view/partials/person-enrolled-card.phtml: 8 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ $person = $enroll->getPerson(); <div class="role"><?= $enroll->getRole() ?></div> <?php endif; ?> <?php if( $enroll->getDateStart() ): ?> <small>Depuis le <?= $this->moment($enroll->getDateStart()) ?></small> <?php endif; ?> Loading @@ -44,9 +43,17 @@ $person = $enroll->getPerson(); <span class="email"><?= $person->getEmail() ?></span> <nav> <a href="<?= $this->url('person/show', ['id' => $person->getId()]) ?>" class="link-show"><i class="icon-zoom-in-outline"></i> Fiche</a> <?php if( $enroll->getOrigin() ): ?> <span class="cartouche primary" style="cursor: help" title="Ce rôle est issue de la synchronisation"> <i class="icon-plug"></i> <?= $enroll->getOrigin() ?></span> <?php else: ?> <a href="<?= $urlDelete ?>" class="link-show"><i class="icon-trash"></i> Supprimer ce rôle</a> <?php if( isset($urlClose) ):?> <button data-enrollid="<?= $enroll->getId() ?>">Résilier</button> <?php endif; ?> <?php endif; ?> </nav> </article> Loading
install/demo/persons.json +1 −1 Changes for install/demo/persons.json: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ "uid": "alberteinstein", "dateupdated": "2019-07-30", "roles": { "14": ["Responsable scientifique"] } }, { Loading
module/Oscar/src/Oscar/Connector/ConnectorPersonHydrator.php +45 −0 Changes for module/Oscar/src/Oscar/Connector/ConnectorPersonHydrator.php: 45 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -118,7 +118,32 @@ class ConnectorPersonHydrator } /////////////////////////////////// /// Récupération des rôles synchronisés par organisation $syncRoles = []; /** @var OrganizationPerson $organizationperson */ foreach ($personOscar->getOrganizations() as $organizationperson) { if( $organizationperson->getOrigin() == $connectorName ){ $organizationCode = $organizationperson->getOrganization()->getCode(); if( !array_key_exists($organizationCode, $syncRoles) ){ $syncRoles[$organizationCode] = []; } if( !in_array($organizationperson->getRoleObj()->getRoleId(), $syncRoles[$organizationCode]) ){ $syncRoles[$organizationCode][] = $organizationperson->getRoleObj()->getRoleId(); } } } if( $syncRoles ){ // print_r($syncRoles); // Purge des rôles supprimés foreach ($syncRoles as $code=>$roles){ echo " - $personOscar : ". implode(",", $roles) . " dans $code \n"; } } if (property_exists($personData, 'roles')) { foreach ($personData->roles as $organizationCode => $roles) { try { Loading @@ -126,7 +151,13 @@ class ConnectorPersonHydrator $organization = $this->getOrganisationByCode($organizationCode); if ($organization) { foreach ($roles as $roleId) { if( array_key_exists($organizationCode, $syncRoles) ){ if( in_array($roleId, $syncRoles[$organizationCode]) ){ array_splice($syncRoles[$organizationCode], array_search($roleId, $syncRoles[$organizationCode]), 1); } } if (array_key_exists($roleId, $rolesOscar)) { if (!$organization->hasPerson($personOscar, $roleId)) { Loading Loading @@ -159,6 +190,20 @@ class ConnectorPersonHydrator } } // Purge des rôles supprimés foreach ($syncRoles as $code=>$roles){ /** @var OrganizationPerson $organizationPerson */ foreach ($personOscar->getOrganizations() as $organizationPerson) { if( $organizationPerson->getOrigin() == $connectorName && $organizationPerson->getOrganization()->getCode() == $code && in_array($organizationperson->getRoleObj()->getRoleId(), $roles)) { $this->repport->addremoved(sprintf("Suppression du rôle %s de %s dans %s", $organizationPerson->getRole(), $organizationPerson->getPerson(), $organizationPerson->getOrganization())); //$this->entityManager->remove($organizationPerson); } } } return $personOscar; } Loading
module/Oscar/src/Oscar/Connector/ConnectorPersonREST.php +1 −1 Changes for module/Oscar/src/Oscar/Connector/ConnectorPersonREST.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -146,7 +146,7 @@ class ConnectorPersonREST implements IConnectorPerson, ServiceLocatorAwareInterf foreach( $personsDatas as $personData ){ if( ! property_exists($personData, 'uid') ){ $repport->addwarning(sprintf("Les donnèes %s n'ont pas d'UID.", print_r($personData->uid, true))); $repport->addwarning(sprintf("Les donnèes %s n'ont pas d'UID.", print_r($personData, true))); continue; } Loading
module/Oscar/view/partials/person-enrolled-card.phtml +8 −1 Changes for module/Oscar/view/partials/person-enrolled-card.phtml: 8 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ $person = $enroll->getPerson(); <div class="role"><?= $enroll->getRole() ?></div> <?php endif; ?> <?php if( $enroll->getDateStart() ): ?> <small>Depuis le <?= $this->moment($enroll->getDateStart()) ?></small> <?php endif; ?> Loading @@ -44,9 +43,17 @@ $person = $enroll->getPerson(); <span class="email"><?= $person->getEmail() ?></span> <nav> <a href="<?= $this->url('person/show', ['id' => $person->getId()]) ?>" class="link-show"><i class="icon-zoom-in-outline"></i> Fiche</a> <?php if( $enroll->getOrigin() ): ?> <span class="cartouche primary" style="cursor: help" title="Ce rôle est issue de la synchronisation"> <i class="icon-plug"></i> <?= $enroll->getOrigin() ?></span> <?php else: ?> <a href="<?= $urlDelete ?>" class="link-show"><i class="icon-trash"></i> Supprimer ce rôle</a> <?php if( isset($urlClose) ):?> <button data-enrollid="<?= $enroll->getId() ?>">Résilier</button> <?php endif; ?> <?php endif; ?> </nav> </article>