original_string: public function get_userinfo() {
          $url = $this->get_issuer()->get_endpoint_url('userinfo');
          $response = $this->get($url);
          if (!$response) {
              return false;
          }
          $userinfo = new stdClass();
          try {
              $userinfo = json_decode($response);
          } catch (\Exception $e) {
              return false;
          }
  
          $map = $this->get_userinfo_mapping();
  
          $user = new stdClass();
          foreach ($map as $openidproperty => $moodleproperty) {
              // We support nested objects via a-b-c syntax.
              $getfunc = function($obj, $prop) use (&$getfunc) {
                  $proplist = explode('-', $prop, 2);
                  if (empty($proplist[0]) || empty($obj->{$proplist[0]})) {
                      return false;
                  }
                  $obj = $obj->{$proplist[0]};
  
                  if (count($proplist) > 1) {
                      return $getfunc($obj, $proplist[1]);
                  }
                  return $obj;
              };
  
              $resolved = $getfunc($userinfo, $openidproperty);
              if (!empty($resolved)) {
                  $user->$moodleproperty = $resolved;
              }
          }
  
          if (empty($user->username) && !empty($user->email)) {
              $user->username = $user->email;
          }
  
          if (!empty($user->picture)) {
              $user->picture = download_file_content($user->picture, null, null, false, 10, 10, true, null, false);
          } else {
              $pictureurl = $this->issuer->get_endpoint_url('userpicture');
              if (!empty($pictureurl)) {
                  $user->picture = $this->get($pictureurl);
              }
          }
  
          if (!empty($user->picture)) {
              // If it doesn't look like a picture lets unset it.
              if (function_exists('imagecreatefromstring')) {
                  $img = @imagecreatefromstring($user->picture);
                  if (empty($img)) {
                      unset($user->picture);
                  } else {
                      imagedestroy($img);
                  }
              }
          }
  
          return (array)$user;
      }
code: public function get_userinfo() {
          $url = $this->get_issuer()->get_endpoint_url('userinfo');
          $response = $this->get($url);
          if (!$response) {
              return false;
          }
          $userinfo = new stdClass();
          try {
              $userinfo = json_decode($response);
          } catch (\Exception $e) {
              return false;
          }
  
          $map = $this->get_userinfo_mapping();
  
          $user = new stdClass();
          foreach ($map as $openidproperty => $moodleproperty) {
              // We support nested objects via a-b-c syntax.
              $getfunc = function($obj, $prop) use (&$getfunc) {
                  $proplist = explode('-', $prop, 2);
                  if (empty($proplist[0]) || empty($obj->{$proplist[0]})) {
                      return false;
                  }
                  $obj = $obj->{$proplist[0]};
  
                  if (count($proplist) > 1) {
                      return $getfunc($obj, $proplist[1]);
                  }
                  return $obj;
              };
  
              $resolved = $getfunc($userinfo, $openidproperty);
              if (!empty($resolved)) {
                  $user->$moodleproperty = $resolved;
              }
          }
  
          if (empty($user->username) && !empty($user->email)) {
              $user->username = $user->email;
          }
  
          if (!empty($user->picture)) {
              $user->picture = download_file_content($user->picture, null, null, false, 10, 10, true, null, false);
          } else {
              $pictureurl = $this->issuer->get_endpoint_url('userpicture');
              if (!empty($pictureurl)) {
                  $user->picture = $this->get($pictureurl);
              }
          }
  
          if (!empty($user->picture)) {
              // If it doesn't look like a picture lets unset it.
              if (function_exists('imagecreatefromstring')) {
                  $img = @imagecreatefromstring($user->picture);
                  if (empty($img)) {
                      unset($user->picture);
                  } else {
                      imagedestroy($img);
                  }
              }
          }
  
          return (array)$user;
      }
code_tokens: public function get_userinfo ( ) { $ url = $ this -> get_issuer ( ) -> get_endpoint_url ( 'userinfo' ) ; $ response = $ this -> get ( $ url ) ; if ( ! $ response ) { return false ; } $ userinfo = new stdClass ( ) ; try { $ userinfo = json_decode ( $ response ) ; } catch ( \ Exception $ e ) { return false ; } $ map = $ this -> get_userinfo_mapping ( ) ; $ user = new stdClass ( ) ; foreach ( $ map as $ openidproperty => $ moodleproperty ) { // We support nested objects via a-b-c syntax. $ getfunc = function ( $ obj , $ prop ) use ( & $ getfunc ) { $ proplist = explode ( '-' , $ prop , 2 ) ; if ( empty ( $ proplist [ 0 ] ) || empty ( $ obj -> { $ proplist [ 0 ] } ) ) { return false ; } $ obj = $ obj -> { $ proplist [ 0 ] } ; if ( count ( $ proplist ) > 1 ) { return $ getfunc ( $ obj , $ proplist [ 1 ] ) ; } return $ obj ; } ; $ resolved = $ getfunc ( $ userinfo , $ openidproperty ) ; if ( ! empty ( $ resolved ) ) { $ user -> $ moodleproperty = $ resolved ; } } if ( empty ( $ user -> username ) && ! empty ( $ user -> email ) ) { $ user -> username = $ user -> email ; } if ( ! empty ( $ user -> picture ) ) { $ user -> picture = download_file_content ( $ user -> picture , null , null , false , 10 , 10 , true , null , false ) ; } else { $ pictureurl = $ this -> issuer -> get_endpoint_url ( 'userpicture' ) ; if ( ! empty ( $ pictureurl ) ) { $ user -> picture = $ this -> get ( $ pictureurl ) ; } } if ( ! empty ( $ user -> picture ) ) { // If it doesn't look like a picture lets unset it. if ( function_exists ( 'imagecreatefromstring' ) ) { $ img = @ imagecreatefromstring ( $ user -> picture ) ; if ( empty ( $ img ) ) { unset ( $ user -> picture ) ; } else { imagedestroy ( $ img ) ; } } } return ( array ) $ user ; }
docstring: Fetch the user info from the user info endpoint and map all
  the fields back into moodle fields.
  
  @return array|false Moodle user fields for the logged in user (or false if request failed)
docstring_tokens: Fetch the user info from the user info endpoint and map all the fields back into moodle fields .