/** * Upload cover image. * * @param Request $request * * @return AJAX */ function uploadCover(Request $request) { if ($request->isMethod('POST')) { $rules = $this->_getCoverRules(); $messages = $this->_getCoverMessages(); $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return file_pong(['messages' => $validator->errors()->first()], _error(), 403); } if ($request->file('__file')->isValid()) { $avatar = $request->file('__file'); $storagePath = config('frontend.coversFolder'); $mediumSizeW = (int) config('frontend.coverMediumW'); $mediumSizeH = (int) config('frontend.coverMediumH'); $mediumName = generate_filename($storagePath, $avatar->getClientOriginalExtension(), ['prefix' => 'cover_', 'suffix' => "_{$mediumSizeW}x{$mediumSizeH}"]); $avatar->move($storagePath, $mediumName); $image = ImageIntervention::make($storagePath . '/' . $mediumName)->orientate(); $image->fit($mediumSizeW, $mediumSizeH, function ($constraint) { $constraint->upsize(); }); $image->save(); $userProfile = user()->userProfile; if (is_null($userProfile)) { $userProfile = new UserProfile(); $userProfile->user_id = user()->id; } else { $avatarImg = unserialize($userProfile->cover_image); if (isset($avatarImg[$mediumSizeW])) { delete_file($storagePath . '/' . $avatarImg[$mediumSizeW]); } } $userProfile->cover_image = serialize(array($mediumSizeW => $mediumName)); $userProfile->save(); return file_pong(['cover_medium' => $storagePath . '/' . $mediumName]); } return file_pong(['messages' => _t('opps')], _error(), 403); } }
/** * Upload product image * * @param Illuminate\Http\Request $request * * return JSON */ public function ajaxUploadProductImage(Request $request) { if ($request->isMethod('POST')) { $order = (int) $request->get('order'); $rules = $this->_getProductImageRules(); $messages = $this->_getProductImageMessages(); $validator = Validator::make($request->all(), $rules, $messages); // Check does the product image's order exist if (!$this->_checkProductImageOrder($order)) { $validator->after(function ($validator) { $validator->errors()->add('__product', _t('product_order_wrong')); }); } if ($validator->fails()) { return file_pong(['status' => _const('AJAX_ERROR'), 'messages' => $validator->errors()->first()], 403); } try { $file = $request->file('__product'); $currentImage = $request->get('current_image'); $upload = $this->_uploadProductImage($file, $currentImage); } catch (Exception $ex) { $validator->errors()->add('__product', _t('opp')); return file_pong(['status' => _const('AJAX_ERROR'), 'messages' => $validator->errors()->first()], 500); } $resizes = $upload['image']->getResizes(); return file_pong(['status' => _const('AJAX_OK'), 'messages' => _t('saved_info'), 'data' => ['original' => $upload['filename']->getName(), 'thumb' => asset($upload['temp_path'] . $resizes['thumb']), 'order' => $order]]); } }
public function ajaxChangeCover(Request $request) { if ($request->isMethod('POST')) { $rules = $this->_getCoverRules(); $messages = $this->_getCoverMessages(); $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return file_pong(['status' => _const('AJAX_ERROR'), 'messages' => $validator->errors()->first()], 403); } /** * 1. Get file, path and info * 2. Generate file name * 3. Upload * 4. Resize * 5. Delete old cover images and upload image * 6. Save new info */ try { // 1 $store = store(); $coverPath = config('front.cover_path'); $file = $request->file('__file'); // 2 $filename = new FileName($coverPath, $file->getClientOriginalExtension()); $filename->cover()->generate(); $filename->setPrefix(_const('COVER_PREFIX')); $filename->cover()->group($this->_getCoverGroup(), true); // 3 $upload = new Upload($file); $upload->setDirectory($coverPath)->setName($filename->getName())->move(); // 4 $image = new Image($coverPath . $upload->getName()); $image->setDirectory($coverPath)->resizeGroup($filename->getGroup()); // 5 delete_file([$coverPath . $upload->getName(), $coverPath . $store->cover_original, $coverPath . $store->cover_big, $coverPath . $store->cover_medium, $coverPath . $store->cover_small]); // 5 $resizes = $image->getResizes(); $store->cover_original = $resizes['original']; $store->cover_big = $resizes['big']; $store->cover_medium = $resizes['medium']; $store->cover_small = $resizes['small']; $store->update(); } catch (Exception $ex) { $validator->errors()->add('__file', _t('opp')); return file_pong(['status' => _const('AJAX_OK'), 'messages' => $validator->errors()->first()], 500); } return file_pong(['status' => _const('AJAX_OK'), 'messages' => _t('saved_info'), 'data' => ['big' => asset($coverPath . $resizes['big']), 'medium' => asset($coverPath . $resizes['medium']), 'small' => asset($coverPath . $resizes['small'])]]); } }