Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/job-board.corals.io/Corals/modules/Directory/Models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/job-board.corals.io/Corals/modules/Directory/Models/Listing.php
<?php

namespace Corals\Modules\Directory\Models;

use Corals\Foundation\Models\BaseModel;
use Corals\Foundation\Search\Indexable;
use Corals\Foundation\Traits\ModelPropertiesTrait;
use Corals\Foundation\Transformers\PresentableTrait;
use Corals\Modules\Utility\Models\Address\Location;
use Corals\User\Models\User;
use Corals\Modules\Utility\Traits\Gallery\ModelHasGallery;
use Cviebrock\EloquentSluggable\Sluggable;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\MediaLibrary\InteractsWithMedia;
use Spatie\MediaLibrary\HasMedia;
use Corals\Modules\Utility\Traits\Tag\HasTags;
use Corals\Modules\Utility\Traits\Category\ModelHasCategory;
use Corals\Modules\Utility\Traits\Wishlist\Wishlistable;
use Corals\Modules\Utility\Traits\Rating\ReviewRateable as ReviewRateableTrait;
use Corals\Modules\Utility\Traits\Schedules\Scheduleable;


class Listing extends BaseModel implements HasMedia
{
    use Indexable, Sluggable, PresentableTrait, ModelHasGallery, LogsActivity, ModelHasCategory, ModelPropertiesTrait
        , HasTags, InteractsWithMedia , ReviewRateableTrait, Wishlistable, Scheduleable;

    public $galleryMediaCollection = 'directory-listing-gallery';
    /**
     *  Model configuration.
     * @var string
     */
    public $config = 'directory.models.listing';

    protected $casts = [
        'properties' => 'array',
        'is_featured' => 'boolean',
    ];

    public function getModuleName()
    {
        return 'Directory';
    }

    protected $guarded = [];

    protected $indexContentColumns = ['description', 'caption'];

    protected $indexTitleColumns = ['name', 'tags.name', 'tags.slug', 'categories.name'];

    protected $table = 'directory_listings';

    public function sluggable()
    {
        return [
            'slug' => [
                'source' => 'name'
            ]
        ];
    }

    public function location()
    {
        return $this->belongsTo(Location::class);
    }

    public function scopeVisible($query)
    {
        return $query->where('directory_listings.status', '<>', 'deleted');
    }

    public function scopeActive($query)
    {
        return $query->where('directory_listings.status', 'active');
    }

    public function scopeArchived($query)
    {
        return $query->where('directory_listings.status', 'archived');
    }


    public function scopeFeatured($query)
    {
        return $query->where('directory_listings.is_featured', true)->where('directory_listings.status', 'active');
    }

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function scopeCalculateDistanceFor($query, $lat, $long, $radius)
    {

        $haversine = "(6371 * acos(cos(radians(" . $lat . ")) 
                    * cos(radians(directory_listings.`lat`)) 
                    * cos(radians(directory_listings.`long`) 
                    - radians(" . $long . ")) 
                    + sin(radians(" . $lat . ")) 
                    * sin(radians(directory_listings.`lat`))))";

        return $query->select('*')
            ->selectRaw("{$haversine} AS distance")
            ->whereRaw("{$haversine} < ?", [$radius]);
    }

    public function scopeAuthUser($query)
    {
        return $query->where('user_id', user()->id);
    }


    public function getShowURL($id = null, $params = [])
    {
        return urlWithParameters("listings/{$this->slug}", $params);

    }

    public function getDisplayReference()
    {
        return $this->name;
    }

    public function owner()
    {
        if ($this->getAttributeValue('user_id')) {
            return $this->belongsTo(User::class, 'user_id');
        } else {
            return $this->belongsTo(User::class, 'created');

        }
    }
}

Spamworldpro Mini