profile = $profile; } /** * Execute the job. * * @return void */ public function handle() { $profile = $this->profile; if(config_cache('pixelfed.cloud_storage') !== true) { return 1; } if($profile->domain == null || $profile->private_key) { return 1; } $avatar = Avatar::firstOrCreate([ 'profile_id' => $profile->id ]); if($avatar->media_path == null && $avatar->remote_url == null) { $avatar->media_path = 'public/avatars/default.jpg'; $avatar->is_remote = true; $avatar->save(); } $person = Helpers::fetchFromUrl($profile->remote_url); if(!$person || !isset($person['@context'])) { return 1; } if( !isset($person['icon']) || !isset($person['icon']['type']) || !isset($person['icon']['url']) ) { return 1; } if($person['icon']['type'] !== 'Image') { return 1; } if(!Helpers::validateUrl($person['icon']['url'])) { return 1; } $icon = $person['icon']; $avatar->remote_url = $icon['url']; $avatar->save(); MediaStorageService::avatar($avatar); return 1; } }