xmrmemes/app/Models/Meme.php
dev 821fb9b1ed Finish rough draft of website
Update the payment code so everything is working now

Improve DB structure

Improve design

Add API

Validate XMR Address upon registration

And Much More...

Still Need to work on:

- SEO
- Dropdown in menu (bug, not dropping down)
2021-08-06 13:06:07 -07:00

75 lines
1.9 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Storage;
use Illuminate\Database\Eloquent\SoftDeletes;
class Meme extends Model
{
use HasFactory;
use SoftDeletes;
protected $guarded = ['id'];
protected $appends = ['meme_tips_total', 'image_url'];
protected $hidden = [
'payment_pending',
'account_index',
'is_approved',
'deleted_at',
];
protected static function booted()
{
static::addGlobalScope('approved', function (Builder $builder) {
$builder->where('is_approved', 1);
});
}
public function user()
{
return $this->belongsTo(User::class);
}
public function tips()
{
return $this->hasMany(Tip::class)->orderByDesc('created_at');
}
public function getMemeTipsTotalAttribute()
{
return $this->tips->where('is_deposit', 1)->sum('amount_formatted');
}
public function getImageUrlAttribute()
{
return url($this->image);
}
public function setImageAttribute($value)
{
$attribute_name = "image";
$disk = "uploads";
$destination_path = "uploads/memes";
$image = \Image::make($value)->encode($value->extension(), 90);
$fix_rotation_issues = $image->orientate();
$filename = md5($value.time()) . '.' . $value->extension();
if ($value->extension() == 'gif') {
// Work around to get GIFs to work
copy($value->getRealPath(), $destination_path.'/'.$filename);
$image->destroy();
}
else {
\Storage::disk($disk)->put($destination_path.'/'.$filename, $image->stream());
}
$this->attributes[$attribute_name] = $destination_path.'/'.$filename;
}
}