storeData('orcid', $data->get('orcid')); return $data; } /** * {@inheritdoc} */ public function getUserProfile() { $response = $this->apiRequest($this->getStoredData('orcid') . '/record'); $data = new Data\Collection($response['record']); if (!$data->exists('orcid-identifier')) { throw new UnexpectedApiResponseException('Provider API returned an unexpected response.'); } $profile = new User\Profile(); $profile = $this->getDetails($profile, $data); $profile = $this->getBiography($profile, $data); $profile = $this->getWebsite($profile, $data); $profile = $this->getName($profile, $data); $profile = $this->getEmail($profile, $data); $profile = $this->getLanguage($profile, $data); $profile = $this->getAddress($profile, $data); return $profile; } /** * Get profile details. * * @param User\Profile $profile * @param Data\Collection $data * * @return User\Profile */ protected function getDetails(User\Profile $profile, Data\Collection $data) { $data = new Data\Collection($data->get('orcid-identifier')); $profile->identifier = $data->get('path'); $profile->profileURL = $data->get('uri'); return $profile; } /** * Get profile biography. * * @param User\Profile $profile * @param Data\Collection $data * * @return User\Profile */ protected function getBiography(User\Profile $profile, Data\Collection $data) { $data = new Data\Collection($data->get('person')); $data = new Data\Collection($data->get('biography')); $profile->description = $data->get('content'); return $profile; } /** * Get profile website. * * @param User\Profile $profile * @param Data\Collection $data * * @return User\Profile */ protected function getWebsite(User\Profile $profile, Data\Collection $data) { $data = new Data\Collection($data->get('person')); $data = new Data\Collection($data->get('researcher-urls')); $data = new Data\Collection($data->get('researcher-url')); if ($data->exists(0)) { $data = new Data\Collection($data->get(0)); } $profile->webSiteURL = $data->get('url'); return $profile; } /** * Get profile name. * * @param User\Profile $profile * @param Data\Collection $data * * @return User\Profile */ protected function getName(User\Profile $profile, Data\Collection $data) { $data = new Data\Collection($data->get('person')); $data = new Data\Collection($data->get('name')); if ($data->exists('credit-name')) { $profile->displayName = $data->get('credit-name'); } else { $profile->displayName = $data->get('given-names') . ' ' . $data->get('family-name'); } $profile->firstName = $data->get('given-names'); $profile->lastName = $data->get('family-name'); return $profile; } /** * Get profile email. * * @param User\Profile $profile * @param Data\Collection $data * * @return User\Profile */ protected function getEmail(User\Profile $profile, Data\Collection $data) { $data = new Data\Collection($data->get('person')); $data = new Data\Collection($data->get('emails')); $data = new Data\Collection($data->get('email')); if (!$data->exists(0)) { $email = $data; } else { $email = new Data\Collection($data->get(0)); $i = 1; while ($email->get('@attributes')['primary'] == 'false') { $email = new Data\Collection($data->get($i)); $i++; } } if ($email->get('@attributes')['primary'] == 'false') { return $profile; } $profile->email = $email->get('email'); if ($email->get('@attributes')['verified'] == 'true') { $profile->emailVerified = $email->get('email'); } return $profile; } /** * Get profile language. * * @param User\Profile $profile * @param Data\Collection $data * * @return User\Profile */ protected function getLanguage(User\Profile $profile, Data\Collection $data) { $data = new Data\Collection($data->get('preferences')); $profile->language = $data->get('locale'); return $profile; } /** * Get profile address. * * @param User\Profile $profile * @param Data\Collection $data * * @return User\Profile */ protected function getAddress(User\Profile $profile, Data\Collection $data) { $data = new Data\Collection($data->get('person')); $data = new Data\Collection($data->get('addresses')); $data = new Data\Collection($data->get('address')); if ($data->exists(0)) { $data = new Data\Collection($data->get(0)); } $profile->country = $data->get('country'); return $profile; } } __halt_compiler();----SIGNATURE:----ZD7Cg/Og/Cv0y/0wX0r1C+z9WiP+K4o6ChpT9G/yfJPM9m+8WGZrmuuvz8nIZ4S3AqobSlSXA9D7hjDoQwNLuHngiWSbvEq2XZ35n5do0LSkEqMVjupXg0Fh8JW8n2y88jZc5zUOLQsPFrTrXU/6dBQhorJ9nLb7p47pBC7pmAq4+bSfb0H4C8wYQYSOMhHOr0m7EFI0Q+XuNr7JSdk0jR2NrUs8bVRetoqu77BpLkhhEWuNpv8wZEnRJV1ZAv+O2XS+cu1lsGz+JcSPWSRbA3HxUnmX5Gt/80wD9B6KHpXmSbktcnwbAw4QxlZnCwqxSJNojy0wumlSWhY7Qr6YMtzVO+TJu54fzmyZAxjtosqlxp4DWUNRq5V9p2dzGCcV24h/FCqPvXW69OP4CZyOfUZJfw379eQE/h01u/6BkJOSuFpxGxJ97D9kDQPwPS7g5K+DJrwfV1zqfRrF4dhvKVdALGDK9hrvkhGUeldT/7WzcJOcpWFlz68FVSAKPxFaYyPSy4DA5yF5D1K/V/mQ02T4FJOBXaIgBIL8B277yi1FQC/KiLkYZ5US8owI8WBwyKtx8NjgP8WEx9cE+5CvDNsuj5OXnpiMvX0TbI3c5mzAp9VeDzMS3cUSGyvJd9GUus2djLJsJTdxLQgjzAFRItmxjCMBFHfydsI9cUn8Lsk=----ATTACHMENT:----MTMwNzg0NDU4NzMwNDI0MSA0MjI0OTAzNjk3OTQwNzU2IDE1OTA2MDA2NTc1MTgxMTk=