/** * Save user * * @param Illuminate\Http\Request $request * * @return response * * @throws \Exception */ public function save(Request $request) { if ($request->isMethod('POST')) { $edit = $request->has('id'); $user = $edit ? $this->_getUserById($request->get('id')) : $this->user; $rules = $this->user->rules(); $messages = $this->user->messages(); if ($edit && str_equal($user->username, $request->get('username'))) { $rules = remove_rules($rules, ['username.unique:users,username']); } if ($edit && str_equal($user->email, $request->get('email'))) { $rules = remove_rules($rules, ['email.unique:users,email']); } if ($edit) { $rules = remove_rules($rules, ['password.required']); } $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return back()->withInput()->withErrors($validator, 'all'); } try { $except = []; if ($request->password === '') { $except = ['password']; } $user = $this->bind($user, $request->all(), $except); if (!$edit) { $user->created_at = new \DateTime(); } $user->updated_at = new \DateTime(); //Upload avatar if ($request->hasFile('avatar')) { $avatarPath = config('back.avatar_path'); $file = $request->file('avatar'); $filename = new FileName($avatarPath, $file->getClientOriginalExtension()); $filename->avatar()->generate(); $filename->setPrefix(_const('AVATAR_PREFIX')); $filename->avatar()->group($this->_getAvatarGroup(), false); $upload = new Upload($file); $upload->setDirectory($avatarPath)->setName($filename->getName())->move(); $image = new Image($avatarPath . $upload->getName()); $image->setDirectory($avatarPath)->resizeGroup($filename->getGroup()); delete_file($avatarPath . $upload->getName()); $resizes = $image->getResizes(); $user->avatar = $resizes['small']; } $user->save(); } catch (Exception $ex) { throw new \Exception(_t('backend_common_opp') . $ex->getMessage()); } return redirect(route('backend_users'))->with('success', _t('backend_common_saved')); } }
/** * Change user avatar * * @param \Illuminate\Http\Request $request * * @return JSON */ public function ajaxChangeAvatar(Request $request) { if ($request->isMethod('POST')) { $rules = $this->_getAvatarRules(); $messages = $this->_getAvatarMessages(); $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 avatar images and upload image * 6. Save new info * */ try { // 1 $user = user(); $avatarPath = config('front.avatar_path'); $file = $request->file('__file'); // 2 $filename = new FileName($avatarPath, $file->getClientOriginalExtension()); $filename->avatar()->generate(); $filename->setPrefix(_const('AVATAR_PREFIX')); $filename->avatar()->group($this->_getAvatarGroup(), true); // 3 $upload = new Upload($file); $upload->setDirectory($avatarPath)->setName($filename->getName())->move(); // 4 $image = new Image($avatarPath . $upload->getName()); $image->setDirectory($avatarPath)->resizeGroup($filename->getGroup()); // 5 delete_file([$avatarPath . $upload->getName(), $avatarPath . $user->avatar_original, $avatarPath . $user->avatar_big, $avatarPath . $user->avatar_medium, $avatarPath . $user->avatar_small]); // 6 $resizes = $image->getResizes(); $user->avatar_original = $resizes['original']; $user->avatar_big = $resizes['big']; $user->avatar_medium = $resizes['medium']; $user->avatar_small = $resizes['small']; $user->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($avatarPath . $resizes['big']), 'medium' => asset($avatarPath . $resizes['medium']), 'small' => asset($avatarPath . $resizes['small'])]]); } }