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:----X7DAsMCweNwtaGOUimma/wcZ4ZvAk9xKRlPTNllYuMdQyTZRwY1MKFHMSPGzKbtWjk+L/PT8xBg15aYZ8II8z4A8Xfaj5NptNLTwkTf3TzNLslO6RsMu36/lZDZraSoOd3SSMyztrPEF01OPEYXO+DMVy4EhJLCd1BHkBN3zNfY8C6/wUx552vMGXFVfvVgIWwVUdyIhkpwKjm608teBvWB6NfKLiPtaRaVODk4RiLl44qdn1x7GmYSbgY3Sk94XhvMkiViTxSyXSi485/IPWPSu0itiMAx2mmrScBqBI/Q0zvPNAEIBZwoKxaP/iXXrMjSm5nTAmgeiycYtSNaI5m6ilYsyjvEcyiG3eQGjBFj6/Rvt+VLmPnjTxWaPx2JTcBCOFy4eD/ZNQzZqyN+X9pzjFFt6cTyJ0MTploN7V1NhAN6WGe1xkb7PYhd7r80WGLP/0NUXCOr3l362gKAJKC+tPmR0u/sz+3EGSrrA8X2/9uoErgWpTqbYLo+vqbstgwLjwjp6UZUt9yYCr/mXlxLZNVMLRGGuo9ncjgJt6IMC1ldqEMq4Cp3ZA1cnzyiu3E2uTJ5dEk3v18R7RJP+uMDxJP+x67nq2RqS1tUxQ7J3g3vtxONT2T8QxDqjUptwKV94wBxvcLf1kJyZ0hcKIazYc4OtzVdFVtP4Ehc9QvE=----ATTACHMENT:----NDc4ODI4NTg0MTY1MTIyNSA0OTg3NTM0NzcyMTM2ODEzIDc1NDY3Nzg5MDQ4NDQ0OTc=