diff --git a/.gitignore b/.gitignore index 7cff0134c..56bb89a6c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,6 @@ clover.xml # Profile pictures public/uploads/avatars/* -!public/uploads/avatars/user.jpg # vendor-views !resources/views/vendor diff --git a/app/Console/Commands/CleanUpProfilePictures.php b/app/Console/Commands/CleanUpProfilePictures.php new file mode 100644 index 000000000..977b6186c --- /dev/null +++ b/app/Console/Commands/CleanUpProfilePictures.php @@ -0,0 +1,26 @@ +distinct()->get()->pluck('avatar')->filter()->toArray(); + + $profilePictures = new \FilesystemIterator(public_path("uploads/avatars")); + foreach ($profilePictures as $profilePicture) { + if (!in_array(basename($profilePicture), $usedPictures)) { + File::delete($profilePicture); + $this->info('Deleted profile picture ' . basename($profilePicture)); + } + } + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 8212347bd..7e0ac1908 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -4,6 +4,7 @@ use App\Console\Commands\CacheLeaderboard; use App\Console\Commands\CacheYearInReview; +use App\Console\Commands\CleanUpProfilePictures; use App\Console\Commands\DatabaseCleaner\DatabaseCleaner; use App\Console\Commands\DatabaseCleaner\MastodonServers; use App\Console\Commands\HideStatus; @@ -42,6 +43,7 @@ protected function schedule(Schedule $schedule): void { //daily tasks $schedule->command(DatabaseCleaner::class)->daily(); + $schedule->command(CleanUpProfilePictures::class)->daily(); //weekly tasks $schedule->command(MastodonServers::class)->weekly(); diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 7b14d5dbc..90f58a6f6 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -5,6 +5,7 @@ use App\Enum\StatusVisibility; use App\Enum\User\FriendCheckinSetting; use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Hash; class UserFactory extends Factory @@ -35,23 +36,14 @@ private function getAvatar(): ?string { //sometimes we wanna users without avatar - so we can test this case too. return null; } - return $this->faker->randomElement([ - 'stock_146ic.png', - 'stock_146me.png', - 'stock_218.png', - 'stock_424.png', - 'stock_avg_et.png', - 'stock_cantus.png', - 'stock_enno.png', - 'stock_eurobahn.png', - 'stock_ic2.png', - 'stock_ice.png', - 'stock_sncf2.png', - 'stock_ssb.png', - 'stock_uestra.png', - 'stock_vy.png', - 'stock_wikopf_sandwich.png', - 'stock_schienenbus.png', - ]); + $image = $this->getAvatarImage(); + + File::copy($image, public_path('uploads/avatars/' . basename($image))); + return basename($image); + } + + private function getAvatarImage(): string { + $files = glob(base_path('tests/static/avatars/*')); + return $files[array_rand($files)]; } } diff --git a/public/uploads/avatars/.gitkeep b/public/uploads/avatars/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/public/uploads/avatars/user.jpg b/public/uploads/avatars/user.jpg deleted file mode 100644 index d1dc11c3c..000000000 Binary files a/public/uploads/avatars/user.jpg and /dev/null differ diff --git a/public/uploads/avatars/stock_146ic.png b/tests/static/avatars/stock_146ic.png similarity index 100% rename from public/uploads/avatars/stock_146ic.png rename to tests/static/avatars/stock_146ic.png diff --git a/public/uploads/avatars/stock_146me.png b/tests/static/avatars/stock_146me.png similarity index 100% rename from public/uploads/avatars/stock_146me.png rename to tests/static/avatars/stock_146me.png diff --git a/public/uploads/avatars/stock_218.png b/tests/static/avatars/stock_218.png similarity index 100% rename from public/uploads/avatars/stock_218.png rename to tests/static/avatars/stock_218.png diff --git a/public/uploads/avatars/stock_424.png b/tests/static/avatars/stock_424.png similarity index 100% rename from public/uploads/avatars/stock_424.png rename to tests/static/avatars/stock_424.png diff --git a/public/uploads/avatars/stock_avg_et.png b/tests/static/avatars/stock_avg_et.png similarity index 100% rename from public/uploads/avatars/stock_avg_et.png rename to tests/static/avatars/stock_avg_et.png diff --git a/public/uploads/avatars/stock_cantus.png b/tests/static/avatars/stock_cantus.png similarity index 100% rename from public/uploads/avatars/stock_cantus.png rename to tests/static/avatars/stock_cantus.png diff --git a/public/uploads/avatars/stock_eurobahn.png b/tests/static/avatars/stock_eurobahn.png similarity index 100% rename from public/uploads/avatars/stock_eurobahn.png rename to tests/static/avatars/stock_eurobahn.png diff --git a/public/uploads/avatars/stock_ic2.png b/tests/static/avatars/stock_ic2.png similarity index 100% rename from public/uploads/avatars/stock_ic2.png rename to tests/static/avatars/stock_ic2.png diff --git a/public/uploads/avatars/stock_ice.png b/tests/static/avatars/stock_ice.png similarity index 100% rename from public/uploads/avatars/stock_ice.png rename to tests/static/avatars/stock_ice.png diff --git a/public/uploads/avatars/stock_schienenbus.png b/tests/static/avatars/stock_schienenbus.png similarity index 100% rename from public/uploads/avatars/stock_schienenbus.png rename to tests/static/avatars/stock_schienenbus.png diff --git a/public/uploads/avatars/stock_sncf2.png b/tests/static/avatars/stock_sncf2.png similarity index 100% rename from public/uploads/avatars/stock_sncf2.png rename to tests/static/avatars/stock_sncf2.png diff --git a/public/uploads/avatars/stock_ssb.png b/tests/static/avatars/stock_ssb.png similarity index 100% rename from public/uploads/avatars/stock_ssb.png rename to tests/static/avatars/stock_ssb.png diff --git a/public/uploads/avatars/stock_uestra.png b/tests/static/avatars/stock_uestra.png similarity index 100% rename from public/uploads/avatars/stock_uestra.png rename to tests/static/avatars/stock_uestra.png diff --git a/public/uploads/avatars/stock_vy.png b/tests/static/avatars/stock_vy.png similarity index 100% rename from public/uploads/avatars/stock_vy.png rename to tests/static/avatars/stock_vy.png diff --git a/public/uploads/avatars/stock_wikopf_sandwich.png b/tests/static/avatars/stock_wikopf_sandwich.png similarity index 100% rename from public/uploads/avatars/stock_wikopf_sandwich.png rename to tests/static/avatars/stock_wikopf_sandwich.png