/** * @param UpdateAccountRequest $request * @return \Illuminate\Http\RedirectResponse */ public function updateDetails(UpdateAccountRequest $request) { $account = Auth::user()->account; $this->accountRepo->save($request->input(), $account); /* Logo image file */ if ($uploaded = Input::file('logo')) { $path = Input::file('logo')->getRealPath(); $disk = $account->getLogoDisk(); if ($account->hasLogo()) { $disk->delete($account->logo); } $extension = strtolower($uploaded->getClientOriginalExtension()); if (empty(Document::$types[$extension]) && !empty(Document::$extraExtensions[$extension])) { $documentType = Document::$extraExtensions[$extension]; } else { $documentType = $extension; } if (!in_array($documentType, ['jpeg', 'png', 'gif'])) { Session::flash('warning', 'Unsupported file type'); } else { $documentTypeData = Document::$types[$documentType]; $filePath = $uploaded->path(); $size = filesize($filePath); if ($size / 1000 > MAX_DOCUMENT_SIZE) { Session::flash('warning', 'File too large'); } else { if ($documentType != 'gif') { $account->logo = $account->account_key . '.' . $documentType; $imageSize = getimagesize($filePath); $account->logo_width = $imageSize[0]; $account->logo_height = $imageSize[1]; $account->logo_size = $size; // make sure image isn't interlaced if (extension_loaded('fileinfo')) { $image = Image::make($path); $image->interlace(false); $imageStr = (string) $image->encode($documentType); $disk->put($account->logo, $imageStr); $account->logo_size = strlen($imageStr); } else { $stream = fopen($filePath, 'r'); $disk->getDriver()->putStream($account->logo, $stream, ['mimetype' => $documentTypeData['mime']]); fclose($stream); } } else { if (extension_loaded('fileinfo')) { $image = Image::make($path); $image->resize(200, 120, function ($constraint) { $constraint->aspectRatio(); }); $account->logo = $account->account_key . '.png'; $image = Image::canvas($image->width(), $image->height(), '#FFFFFF')->insert($image); $imageStr = (string) $image->encode('png'); $disk->put($account->logo, $imageStr); $account->logo_size = strlen($imageStr); $account->logo_width = $image->width(); $account->logo_height = $image->height(); } else { Session::flash('warning', 'Warning: To support gifs the fileinfo PHP extension needs to be enabled.'); } } } } $account->save(); } event(new UserSettingsChanged()); Session::flash('message', trans('texts.updated_settings')); return Redirect::to('settings/' . ACCOUNT_COMPANY_DETAILS); }