Loading doc/unicaen/2024-11-migration-organisations-personnes.md +19 −0 Original line number Diff line number Diff line Loading @@ -253,6 +253,25 @@ WHERE UPDATE organizationperson SET origin = 'db' WHERE origin = 'rest'; ``` Définir dans le fichier person_db.yml la correspondance entre les rôles lus en DB et les rôles internes à OSCAR, par exemple : ```yml roles_correspondance: D30: Directeur de composante R00: Responsable R40: Directeur de composante P50: Directeur de composante T87: Informaticien T98: Gestionnaire de laboratoire A009: Gestion financière Gestionnaire financière des contrats de recherche: Gestion financière Gestionnaire financiere des contrats de recherche: Gestion financière Directrice: Directeur Directeur adjoint: Directeur Directrice adjointe: Directeur Responsable administrative: Responsable administratif ``` Enfin, lancer la synchronisation des personnes : ```bash Loading module/Oscar/src/Oscar/Connector/AbstractConnector.php +1 −1 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ abstract class AbstractConnector implements IConnector foreach ($paths as $path) { if( !isset($config[$path]) ) { if ( $default == null ){ if ( $default === null ){ throw new OscarException(sprintf( "La clef '%s' absente dans le fichier de configuration '%s'.", $key, Loading module/Oscar/src/Oscar/Connector/ConnectorOrganizationDB.php +10 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,16 @@ use Oscar\Service\OrganizationService; class ConnectorOrganizationDB extends AbstractConnector { private bool $editable = false; public function setEditable($editable){ $this->editable = $editable; } public function isEditable(){ return $this->editable; } /** * @param bool $force * @return ConnectorRepport Loading module/Oscar/src/Oscar/Connector/ConnectorPersonDB.php +13 −26 Original line number Diff line number Diff line Loading @@ -11,6 +11,16 @@ use Oscar\Exception\OscarException; class ConnectorPersonDB extends AbstractConnector { private bool $editable = false; public function setEditable($editable){ $this->editable = $editable; } public function isEditable(){ return $this->editable; } /** @var ConnectorPersonHydrator */ private $personHydrator = null; Loading Loading @@ -258,38 +268,15 @@ class ConnectorPersonDB extends AbstractConnector } $roles_json = $row['ROLES']; $correspondances = $this->getParameter('roles_correspondance', []); $oscar_roles = new \stdClass(); if ($roles_json != NULL) { $roles = json_decode($roles_json); foreach ($roles as $key => $values) { $oscar_role_for_structure = []; foreach ($values as $value) { if ($value == 'D30') { $oscar_role_for_structure[] = 'Directeur de composante'; } else if ($value == 'R00') { $oscar_role_for_structure[] = 'Responsable'; } else if ($value == 'R40') { $oscar_role_for_structure[] = 'Directeur de composante'; } else if ($value == 'P50') { $oscar_role_for_structure[] = 'Directeur de composante'; } else if ($value == 'T87') { $oscar_role_for_structure[] = 'Informaticien'; } else if ($value == 'T98') { $oscar_role_for_structure[] = 'Gestionnaire de laboratoire'; } else if ($value == 'A009') { $oscar_role_for_structure[] = 'Gestion financière'; } else if ($value == 'Gestionnaire financière des contrats de recherche') { $oscar_role_for_structure[] = 'Gestion financière'; } else if ($value == 'Gestionnaire financiere des contrats de recherche') { $oscar_role_for_structure[] = 'Gestion financière'; } else if ($value == 'Directrice') { $oscar_role_for_structure[] = 'Directeur'; } else if ($value == 'Directeur adjoint') { $oscar_role_for_structure[] = 'Directeur'; } else if ($value == 'Directrice adjointe') { $oscar_role_for_structure[] = 'Directeur'; } else if ($value == 'Responsable administrative') { $oscar_role_for_structure[] = 'Responsable administratif'; if (array_key_exists($value, $correspondances)) { $oscar_role_for_structure[] = $correspondances[$value]; } else { $oscar_role_for_structure[] = $value; } Loading Loading
doc/unicaen/2024-11-migration-organisations-personnes.md +19 −0 Original line number Diff line number Diff line Loading @@ -253,6 +253,25 @@ WHERE UPDATE organizationperson SET origin = 'db' WHERE origin = 'rest'; ``` Définir dans le fichier person_db.yml la correspondance entre les rôles lus en DB et les rôles internes à OSCAR, par exemple : ```yml roles_correspondance: D30: Directeur de composante R00: Responsable R40: Directeur de composante P50: Directeur de composante T87: Informaticien T98: Gestionnaire de laboratoire A009: Gestion financière Gestionnaire financière des contrats de recherche: Gestion financière Gestionnaire financiere des contrats de recherche: Gestion financière Directrice: Directeur Directeur adjoint: Directeur Directrice adjointe: Directeur Responsable administrative: Responsable administratif ``` Enfin, lancer la synchronisation des personnes : ```bash Loading
module/Oscar/src/Oscar/Connector/AbstractConnector.php +1 −1 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ abstract class AbstractConnector implements IConnector foreach ($paths as $path) { if( !isset($config[$path]) ) { if ( $default == null ){ if ( $default === null ){ throw new OscarException(sprintf( "La clef '%s' absente dans le fichier de configuration '%s'.", $key, Loading
module/Oscar/src/Oscar/Connector/ConnectorOrganizationDB.php +10 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,16 @@ use Oscar\Service\OrganizationService; class ConnectorOrganizationDB extends AbstractConnector { private bool $editable = false; public function setEditable($editable){ $this->editable = $editable; } public function isEditable(){ return $this->editable; } /** * @param bool $force * @return ConnectorRepport Loading
module/Oscar/src/Oscar/Connector/ConnectorPersonDB.php +13 −26 Original line number Diff line number Diff line Loading @@ -11,6 +11,16 @@ use Oscar\Exception\OscarException; class ConnectorPersonDB extends AbstractConnector { private bool $editable = false; public function setEditable($editable){ $this->editable = $editable; } public function isEditable(){ return $this->editable; } /** @var ConnectorPersonHydrator */ private $personHydrator = null; Loading Loading @@ -258,38 +268,15 @@ class ConnectorPersonDB extends AbstractConnector } $roles_json = $row['ROLES']; $correspondances = $this->getParameter('roles_correspondance', []); $oscar_roles = new \stdClass(); if ($roles_json != NULL) { $roles = json_decode($roles_json); foreach ($roles as $key => $values) { $oscar_role_for_structure = []; foreach ($values as $value) { if ($value == 'D30') { $oscar_role_for_structure[] = 'Directeur de composante'; } else if ($value == 'R00') { $oscar_role_for_structure[] = 'Responsable'; } else if ($value == 'R40') { $oscar_role_for_structure[] = 'Directeur de composante'; } else if ($value == 'P50') { $oscar_role_for_structure[] = 'Directeur de composante'; } else if ($value == 'T87') { $oscar_role_for_structure[] = 'Informaticien'; } else if ($value == 'T98') { $oscar_role_for_structure[] = 'Gestionnaire de laboratoire'; } else if ($value == 'A009') { $oscar_role_for_structure[] = 'Gestion financière'; } else if ($value == 'Gestionnaire financière des contrats de recherche') { $oscar_role_for_structure[] = 'Gestion financière'; } else if ($value == 'Gestionnaire financiere des contrats de recherche') { $oscar_role_for_structure[] = 'Gestion financière'; } else if ($value == 'Directrice') { $oscar_role_for_structure[] = 'Directeur'; } else if ($value == 'Directeur adjoint') { $oscar_role_for_structure[] = 'Directeur'; } else if ($value == 'Directrice adjointe') { $oscar_role_for_structure[] = 'Directeur'; } else if ($value == 'Responsable administrative') { $oscar_role_for_structure[] = 'Responsable administratif'; if (array_key_exists($value, $correspondances)) { $oscar_role_for_structure[] = $correspondances[$value]; } else { $oscar_role_for_structure[] = $value; } Loading