StatusDelete.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\Jobs\StatusPipeline;
  3. use App\{Media, StatusHashtag, Status};
  4. use Illuminate\Bus\Queueable;
  5. use Illuminate\Queue\SerializesModels;
  6. use Illuminate\Queue\InteractsWithQueue;
  7. use Illuminate\Contracts\Queue\ShouldQueue;
  8. use Illuminate\Foundation\Bus\Dispatchable;
  9. class StatusDelete implements ShouldQueue
  10. {
  11. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  12. protected $status;
  13. /**
  14. * Create a new job instance.
  15. *
  16. * @return void
  17. */
  18. public function __construct(Status $status)
  19. {
  20. $this->status = $status;
  21. }
  22. /**
  23. * Execute the job.
  24. *
  25. * @return void
  26. */
  27. public function handle()
  28. {
  29. $status = $this->status;
  30. $this->unlinkRemoveMedia($status);
  31. }
  32. public function unlinkRemoveMedia($status)
  33. {
  34. if($status->media()->count() == 0) {
  35. return;
  36. }
  37. foreach($status->media as $media) {
  38. $thumbnail = storage_path("app/{$media->thumbnail_path}");
  39. $photo = storage_path("app/{$media->media_path}");
  40. try {
  41. if(is_file($thumbnail)) {
  42. unlink($thumbnail);
  43. }
  44. if(is_file($photo)) {
  45. unlink($photo);
  46. }
  47. $media->delete();
  48. } catch (Exception $e) {
  49. }
  50. }
  51. $status->likes()->delete();
  52. StatusHashtag::whereStatusId($status->id)->delete();
  53. $status->delete();
  54. return true;
  55. }
  56. }