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;
    }
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;
    }
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 ; }
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)
Fetch the user info from the user info endpoint and map all the fields back into moodle fields .