Commit 387419e4 authored by Stéphane Bouvry's avatar Stéphane Bouvry
Browse files

Merge branch 'upgrade-connector-key' into callahan

parents 1123f313 4933a179
Loading
Loading
Loading
Loading
+72 −0
Changes for doc/connectors.md: 72 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -72,6 +72,9 @@ url_person: 'https://rest.service.tld/api/person/%s'

Les URL correspondent à l'API REST qui devra retourner un JSON standard, pour la liste un tableau d'objet, pour l'accès unitaire un objet simple sous la forme :

**Remarque** : Depuis la version *2.7 "Lewis"*, Oscar accepte un objet contenant une clef `persons` contenant le tableau d'objet afin de simplifier sa synchronisation avec les outils tel que **Talend ESB**.


```JSON
{
   "uid": "p00000237*",
@@ -161,6 +164,27 @@ Pour l'URL "liste", le service REST doit retourner un tableau composé d'objets
]
```

ou

```JSON
{ 
  "persons" : [
      {  
        "uid": "person1",
        "login": "etc..." 
      },
      {
        "uid": "person2",
       "login": "etc..." 
      },
      { 
        "uid": "person3",
        "login": "etc..." 
      }
  ]
}
```

### Clef ROLES

Cette clef permet d'affecter automatiquement une personne (**Person**) à une organisation (**Organization**) avec un ou plusieurs rôles.
@@ -239,6 +263,54 @@ Données minimales attendues :

> Conernant le CODE. Le champs CODE permet dans la version actuelle d'établir la liaison entre une personne et une organisation. Dans les prochaines versions, cette liaison sera probablement découplée du reste (un nouveau connecteur sera dédié à gérer cette relation) et utilisera l'UID plutôt que le code.

Forme attendue : 

```JSON
[
    {  
        "uid" : "ED209",
        "code" : "ED209",
        "shortname" : "OCP",
        "longname" : "Omni Consumer Product",
        "dateupdated" : "etc..."
    },
    {
        "uid": "ORG2",
        "code": "ORG2 etc ..." 
    },
    { 
        "uid": "ORG3",
        "code": "ORG3 etc ..." 
    }
]
``` 

**Remarque** : Depuis la version *2.7 "Lewis"*, Oscar accepte un objet contenant une clef `organizations` contenant le tableau d'objet afin de simplifier sa synchronisation avec les outils tel que **Talend ESB**.

```JSON
{ 
  "organization" : [
      {  
        "uid" : "ED209",
        "code" : "ED209",
        "shortname" : "OCP",
        "longname" : "Omni Consumer Product",
        "dateupdated" : "etc..."
      },
      {
        "uid": "ORG2",
        "code": "ORG2 etc ..." 
      },
      { 
        "uid": "ORG3",
        "code": "ORG3 etc ..." 
      }
  ]
}
``` 



## Importer des activités (Installation initiale)

Oscar dispose d'un utilitaire en ligne de commande pour importer des activités depuis un fichier CSV ou JSON.
+13 −1
Changes for module/Oscar/src/Oscar/Connector/ConnectorOrganizationREST.php: 13 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -125,7 +125,19 @@ class ConnectorOrganizationREST implements ServiceLocatorAwareInterface
        }

        if( count($return) > 0 ){
            foreach( json_decode($return) as $data ){

            /////////////////////////////////////
            ////// Patch 2.7 "Lewis" GIT#286 ////
            $json = json_decode($return);
            $jsonDatas = null;
            if( property_exists($json, 'organizations') ){
                $jsonDatas = $json->organizations;
            } else {
                $jsonDatas = $json;
            }
            ////////////////////////////////////

            foreach( $jsonDatas as $data ){

                try {
                    /** @var Person $personOscar */
+12 −1
Changes for module/Oscar/src/Oscar/Connector/ConnectorPersonREST.php: 12 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -121,7 +121,18 @@ class ConnectorPersonREST implements IConnectorPerson, ServiceLocatorAwareInterf
        }
        curl_close($curl);

        foreach( json_decode($return) as $personData ){
        /////////////////////////////////////
        ////// Patch 2.7 "Lewis" GIT#286 ////
        $json = json_decode($return);
        $personsDatas = null;
        if( property_exists($json, 'persons') ){
            $personsDatas = $json->persons;
        } else {
            $personsDatas = $json;
        }
        ////////////////////////////////////

        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)));