Commit 2e8453fb authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Correction pour que ça fonctionne avec le nouveau format de résultat (persons => resources).

Inclusion du WSDL dans le projet (extension .dist ajoutée).
parent 889189ed
Loading
Loading
Loading
Loading
+728 −0

File added.

Preview size limit exceeded, changes collapsed.

+37 −32
Original line number Diff line number Diff line
@@ -33,18 +33,32 @@ class PhotoService implements SoapClientAwareInterface
    {
        $result = $this->soapClient->getDroitUtilisationPhoto($identifiant);

        // suite à une mise à jour du SGC, le format du résultat se complique...
        $this->normalizeResult($result);
        if (! isset($result->return->resources)) {
            throw new NotFoundException("Aucune ressource trouvée");
        }

        $resource = $this->extractDroitUtilisationPhotoResource($result);

        if (! isset($result->return->persons)) {
            throw new NotFoundException("Requête infructueuse");
        if ($resource === null) {
            throw new NotFoundException("Aucun droit photo trouvé");
        }

        $string = $result->return->persons->data->value->stringValue;
        $string = $resource->data->value->stringValue;

        return $string === self::UTILISATION_PHOTO_AUTORISEE;
    }

    /**
     * @param object $result
     * @return object|null
     */
    protected function extractDroitUtilisationPhotoResource($result)
    {
        $resources = (array) $result->return->resources;

        return array_shift($resources);
    }

    /**
     * Retourne la photo pour l'identifiant spécifié.
     *
@@ -56,48 +70,39 @@ class PhotoService implements SoapClientAwareInterface
        /** @var \stdClass $result */
        $result =  $this->soapClient->getPhoto($identifiant);

        // suite à une mise à jour du SGC, le format du résultat se complique...
        $this->normalizeResult($result);
        if (! isset($result->return->resources)) {
            throw new NotFoundException("Aucune ressource trouvée");
        }

        $resource = $this->extractPhotoResource($result);

        if (! isset($result->return->persons)) {
            throw new NotFoundException("Requête infructueuse");
        if ($resource === null) {
            throw new NotFoundException("Aucune photo trouvée");
        }

        // c'est le contenu "binaire" de la photo qui est retourné par le WS
        $imgData = $result->return->persons->data->value->imageValue;
        $imgData = $resource->data->value->imageValue;

        return $imgData;
    }

    /**
     * Normalise le format du résultat de la requête.
     * Autre chemin possible : "->return->resources".
     *
     * @param object $result
     * @return object|null
     */
    protected function normalizeResult(&$result)
    protected function extractPhotoResource($result)
    {
        if (! isset($result->return->resources)) {
            return;
        }
        $resources = (array) $result->return->resources;

        $data = $result->return->resources;

        if (is_array($data)) {
        $found = null;
            foreach ($data as $item) {
                if (isset($item->id) && $item->id > 0) {
                    $found = $item;
        foreach ($resources as $resource) {
            if (isset($resource->id) && $resource->id > 0) {
                $found = $resource;
                break;
            }
        }
            if ($found !== null) {
                $result->return->persons = $found;
            }
        }
        else {
            $result->return->persons = $data;
        }

        return $found;
    }

    /**