Merge branch 'develop' of github.com:hillelcoren/invoice-ninja into develop

This commit is contained in:
Hillel Coren 2016-04-17 12:22:51 +03:00
commit 7d08a7cddd
3 changed files with 87 additions and 35 deletions

View File

@ -19,6 +19,7 @@ use App\Models\License;
use App\Models\Invoice; use App\Models\Invoice;
use App\Models\User; use App\Models\User;
use App\Models\Account; use App\Models\Account;
use App\Models\Document;
use App\Models\Gateway; use App\Models\Gateway;
use App\Models\InvoiceDesign; use App\Models\InvoiceDesign;
use App\Models\TaxRate; use App\Models\TaxRate;
@ -802,39 +803,77 @@ class AccountController extends BaseController
$this->accountRepo->save($request->input(), $account); $this->accountRepo->save($request->input(), $account);
/* Logo image file */ /* Logo image file */
if ($file = Input::file('logo')) { if ($uploaded = Input::file('logo')) {
$path = Input::file('logo')->getRealPath(); $path = Input::file('logo')->getRealPath();
File::delete('logo/'.$account->account_key.'.jpg');
File::delete('logo/'.$account->account_key.'.png');
$mimeType = $file->getMimeType(); $disk = $account->getLogoDisk();
if ($account->hasLogo()) {
$disk->delete($account->logo);
}
if ($mimeType == 'image/jpeg') { $extension = strtolower($uploaded->getClientOriginalExtension());
$path = 'logo/'.$account->account_key.'.jpg'; if(empty(Document::$types[$extension]) && !empty(Document::$extraExtensions[$extension])){
$file->move('logo/', $account->account_key.'.jpg'); $documentType = Document::$extraExtensions[$extension];
} elseif ($mimeType == 'image/png') { }
$path = 'logo/'.$account->account_key.'.png'; else{
$file->move('logo/', $account->account_key.'.png'); $documentType = $extension;
}
if(!in_array($documentType, array('jpeg', 'png', 'gif'))){
Session::flash('warning', 'Unsupported file type');
} else { } else {
if (extension_loaded('fileinfo')) { $documentTypeData = Document::$types[$documentType];
$image = Image::make($path);
$image->resize(200, 120, function ($constraint) { $filePath = $uploaded->path();
$constraint->aspectRatio(); $size = filesize($filePath);
});
$path = 'logo/'.$account->account_key.'.jpg'; if($size/1000 > MAX_DOCUMENT_SIZE){
Image::canvas($image->width(), $image->height(), '#FFFFFF') Session::flash('warning', 'File too large');
->insert($image)->save($path);
} else { } else {
Session::flash('warning', 'Warning: To support gifs the fileinfo PHP extension needs to be enabled.'); 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.');
}
}
} }
} }
// make sure image isn't interlaced $account->save();
if (extension_loaded('fileinfo')) {
$img = Image::make($path);
$img->interlace(false);
$img->save();
}
} }
event(new UserSettingsChanged()); event(new UserSettingsChanged());
@ -900,10 +939,18 @@ class AccountController extends BaseController
public function removeLogo() public function removeLogo()
{ {
File::delete('logo/'.Auth::user()->account->account_key.'.jpg'); $account = Auth::user()->account;
File::delete('logo/'.Auth::user()->account->account_key.'.png'); if ($account->hasLogo()) {
$account->getLogoDisk()->delete($account->logo);
Session::flash('message', trans('texts.removed_logo')); $account->logo = null;
$account->logo_size = null;
$account->logo_width = null;
$account->logo_height = null;
$account->save();
Session::flash('message', trans('texts.removed_logo'));
}
return Redirect::to('settings/'.ACCOUNT_COMPANY_DETAILS); return Redirect::to('settings/'.ACCOUNT_COMPANY_DETAILS);
} }

View File

@ -6,9 +6,9 @@ use Session;
use DateTime; use DateTime;
use Event; use Event;
use Cache; use Cache;
use Document;
use App; use App;
use File; use File;
use App\Models\Document;
use App\Events\UserSettingsChanged; use App\Events\UserSettingsChanged;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
@ -426,7 +426,7 @@ class Account extends Eloquent
return $disk->get($this->logo); return $disk->get($this->logo);
} }
public function getLogoURL() public function getLogoURL($cachebuster = false)
{ {
if(!$this->hasLogo()){ if(!$this->hasLogo()){
return null; return null;
@ -438,12 +438,17 @@ class Account extends Eloquent
if($adapter instanceof \League\Flysystem\Adapter\Local) { if($adapter instanceof \League\Flysystem\Adapter\Local) {
// Stored locally // Stored locally
$logo_url = str_replace(public_path(), url('/'), $adapter->applyPathPrefix($this->logo), $count); $logo_url = str_replace(public_path(), url('/'), $adapter->applyPathPrefix($this->logo), $count);
if ($cachebuster) {
$logo_url .= '?no_cache='.time();
}
if($count == 1){ if($count == 1){
return str_replace(DIRECTORY_SEPARATOR, '/', $logo_url); return str_replace(DIRECTORY_SEPARATOR, '/', $logo_url);
} }
} }
Document::getDirectFileUrl($this->logo, $this->getDisk()); return Document::getDirectFileUrl($this->logo, $this->getLogoDisk());
} }
public function getToken($name) public function getToken($name)

View File

@ -51,8 +51,8 @@
<div class="form-group"> <div class="form-group">
<div class="col-lg-4 col-sm-4"></div> <div class="col-lg-4 col-sm-4"></div>
<div class="col-lg-8 col-sm-8"> <div class="col-lg-8 col-sm-8">
<a href="{{ $account->getLogoUrl().'?no_cache='.time() }}" target="_blank"> <a href="{{ $account->getLogoUrl(true) }}" target="_blank">
{!! HTML::image($account->getLogoUrl().'?no_cache='.time(), 'Logo', ['style' => 'max-width:300px']) !!} {!! HTML::image($account->getLogoUrl(true), 'Logo', ['style' => 'max-width:300px']) !!}
</a> &nbsp; </a> &nbsp;
<a href="#" onclick="deleteLogo()">{{ trans('texts.remove_logo') }}</a> <a href="#" onclick="deleteLogo()">{{ trans('texts.remove_logo') }}</a>
</div> </div>