diff --git a/app/Jobs/AvatarPipeline/CreateAvatar.php b/app/Jobs/AvatarPipeline/CreateAvatar.php new file mode 100644 index 000000000..2393b96a9 --- /dev/null +++ b/app/Jobs/AvatarPipeline/CreateAvatar.php @@ -0,0 +1,103 @@ +user = $user; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $username = $this->user->profile->username; + $email = $this->user->email; + + $generator = new RingsGenerator(); + $generator->setBackgroundColor(Color::parseHex('#FFFFFF')); + + $identicon = new Identicon(new HashPreprocessor('sha1'), $generator); + + $hash = $username . str_random(12) . $email; + $icon = $identicon->getIcon($hash); + + try { + $prefix = $this->user->profile->id; + $padded = str_pad($prefix, 12, 0, STR_PAD_LEFT); + $parts = str_split($padded, 3); + foreach($parts as $k => $part) { + if($k == 0) { + $prefix = storage_path('app/public/avatars/'.$parts[0]); + if(!is_dir($prefix)) { + mkdir($prefix); + } + } + if($k == 1) { + $prefix = storage_path('app/public/avatars/'.$parts[0].'/'.$parts[1]); + if(!is_dir($prefix)) { + mkdir($prefix); + } + } + if($k == 2) { + $prefix = storage_path('app/public/avatars/'.$parts[0].'/'.$parts[1].'/'.$parts[2]); + if(!is_dir($prefix)) { + mkdir($prefix); + } + } + if($k == 3) { + $avatarpath = 'public/avatars/'.$parts[0].'/'.$parts[1].'/'.$parts[2].'/'.$parts[3]; + $prefix = storage_path('app/'.$avatarpath); + if(!is_dir($prefix)) { + mkdir($prefix); + } + } + } + $dir = storage_path('app/'.$avatarpath); + //$dir = storage_path('app/public/avatars/'.$prefix); + if(!is_dir($dir)) { + mkdir($dir); + } + //$path = 'public/avatars/' . $prefix . '/avatar.svg'; + $path = $avatarpath . '/avatar.svg'; + $basePath = storage_path('app/' . $path); + file_put_contents($basePath, $icon); + } catch (Exception $e) { + + } + + $avatar = new Avatar; + $avatar->profile_id = $this->user->profile->id; + $avatar->media_path = $path; + $avatar->thumb_path = $path; + $avatar->change_count = 0; + $avatar->last_processed_at = \Carbon\Carbon::now(); + $avatar->save(); + + } +}