PageRenderTime 26ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/app/Http/Controllers/ChangeImageProfileController.php

https://gitlab.com/phumaster/uploadImage
PHP | 148 lines | 134 code | 12 blank | 2 comment | 18 complexity | 33991f6284a3e8359627cbfea9c108de MD5 | raw file
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Http\Requests;
  5. use App\Http\Controllers\Controller;
  6. // use requests
  7. use App\Http\Requests\UpdateProfilePictureRequest;
  8. use App\Http\Requests\UpdateCoverPhotoRequest;
  9. // use models
  10. use App\User;
  11. use App\Album;
  12. use App\Image;
  13. class ChangeImageProfileController extends Controller
  14. {
  15. private $user;
  16. private $folder;
  17. public function __construct(Request $request) {
  18. $this->middleware('auth');
  19. $this->user = User::find($request->user() ? $request->user()->id : NULL);
  20. $this->folder = substr(md5($this->user->name), 0, 10);
  21. if(!file_exists(public_path().'/upload')) {
  22. mkdir(public_path().'/upload');
  23. }
  24. if(!file_exists(public_path().'/upload/images/')) {
  25. mkdir(public_path().'/upload/images');
  26. }
  27. }
  28. public function changeProfilePicture($user, UpdateProfilePictureRequest $request) {
  29. if($request->hasFile('image')) {
  30. $file = $request->file('image');
  31. $album = Album::where(['album_name' => 'Profile picture', 'user_id' => $this->user->id])->get()->first();
  32. if(count($album)) {
  33. $albumId = $album->id;
  34. }else{
  35. if($newAlbum = Album::create([
  36. 'album_name' => 'Profile picture',
  37. 'album_title' => 'Profile picture',
  38. 'album_description' => '',
  39. 'user_id' => $this->user->id
  40. ])) {
  41. $albumId = $newAlbum->id;
  42. }else{
  43. return response('Unexpected error!', 422);
  44. }
  45. }
  46. $destination = public_path().'/upload/images/'.$this->user->id.'_'.$this->folder.'/avatar';
  47. if(!file_exists(public_path().'/upload/images/'.$this->user->id.'_'.$this->folder)) {
  48. mkdir(public_path().'/upload/images/'.$this->user->id.'_'.$this->folder);
  49. }
  50. if(!file_exists($destination)) {
  51. mkdir($destination);
  52. }
  53. $imageName = date('d-m-Y_h-i-s').'_'.$this->user->id.'_'.$file->getClientOriginalName();
  54. $imageUrl = 'upload/images/'.$this->user->id.'_'.$this->folder.'/avatar/'.$imageName;
  55. $imageArr = [
  56. 'image_name' => $imageName,
  57. 'fullsize_url' => $imageUrl,
  58. 'image_size' => $file->getSize(),
  59. 'image_caption' => '',
  60. 'user_id' => $this->user->id,
  61. 'album_id' => $albumId,
  62. 'make_as_profile_picture' => 1
  63. ];
  64. $changeImage = Image::find($this->hasProfilePicture($this->user->id));
  65. if(!is_null($changeImage)) {
  66. $changeImage->make_as_profile_picture = 0;
  67. $changeImage->save();
  68. }
  69. if($file->move($destination, $imageName) && Image::create($imageArr)) {
  70. $data['errors'] = 0;
  71. $data['msg'] = 'Your profile picture has been change!';
  72. $data['imageUrl'] = url($imageUrl);
  73. return json_encode($data);
  74. }
  75. return response('Unexpected error while changging your profile picture!', 422);
  76. }
  77. }
  78. public function changeCoverPhoto($user, UpdateCoverPhotoRequest $request) {
  79. if($request->hasFile('image')) {
  80. $file = $request->file('image');
  81. $album = Album::where(['album_name' => 'Cover photos', 'user_id' => $this->user->id])->get()->first();
  82. if(count($album)) {
  83. $albumId = $album->id;
  84. }else{
  85. if($newAlbum = Album::create([
  86. 'album_name' => 'Cover photos',
  87. 'album_title' => 'Cover photos',
  88. 'album_description' => '',
  89. 'user_id' => $this->user->id
  90. ])) {
  91. $albumId = $newAlbum->id;
  92. }else{
  93. return response('Unexpected error!', 422);
  94. }
  95. }
  96. $destination = public_path().'/upload/images/'.$this->user->id.'_'.$this->folder.'/cover';
  97. if(!file_exists(public_path().'/upload/images/'.$this->user->id.'_'.$this->folder)) {
  98. mkdir(public_path().'/upload/images/'.$this->user->id.'_'.$this->folder);
  99. }
  100. if(!file_exists($destination)) {
  101. mkdir($destination);
  102. }
  103. $imageName = date('d-m-Y_h-i-s').'_'.$this->user->id.'_'.$file->getClientOriginalName();
  104. $imageUrl = 'upload/images/'.$this->user->id.'_'.$this->folder.'/cover/'.$imageName;
  105. $imageArr = [
  106. 'image_name' => $imageName,
  107. 'fullsize_url' => $imageUrl,
  108. 'image_size' => $file->getSize(),
  109. 'image_caption' => '',
  110. 'user_id' => $this->user->id,
  111. 'album_id' => $albumId,
  112. 'make_as_cover_photo' => 1
  113. ];
  114. $changeImage = Image::find($this->hasCoverPhoto($this->user->id));
  115. if(!is_null($changeImage)) {
  116. $changeImage->make_as_cover_photo = 0;
  117. $changeImage->save();
  118. }
  119. if($file->move($destination, $imageName) && Image::create($imageArr)) {
  120. $data['errors'] = 0;
  121. $data['msg'] = 'Your cover photo has been change!';
  122. $data['imageUrl'] = url($imageUrl);
  123. return json_encode($data);
  124. }
  125. return response('Unexpected error while changging your cover photo!', 422);
  126. }
  127. }
  128. private function hasProfilePicture($user_id) {
  129. $need = Image::where(['user_id' => $user_id, 'make_as_profile_picture' => 1])->get()->first();
  130. return ($need) ? $need->id : null;
  131. }
  132. private function hasCoverPhoto($user_id) {
  133. $need = Image::where(['user_id' => $user_id, 'make_as_cover_photo' => 1])->get()->first();
  134. return ($need) ? $need->id : null;
  135. }
  136. }