HEX
Server: LiteSpeed
System: Linux sv4.hami.host 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User: armgroup (1008)
PHP: 8.2.32
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, mail, socket_create, socket_create_listen, socket_create_pair, link, dl, openlog, syslog, stream_socket_server, curl_multi_init
Upload Files
File: //home/armgroup/libs/app/Models/Comment.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    use HasFactory;

    protected $guarded = ['id'];

    protected $casts = [
        'positive_points' => 'array',
        'negative_points' => 'array',
    ];

    public const STATUS_NOT_SPECIFIED = 0;

    public const STATUS_APPROVED = 1;

    public const STATUS_NOT_APPROVED = 2;

    public const STATUS_TRANSLATE = ['Not specified', 'Approved', 'Not approved'];

    public const STATUS_COLOR = ['secondary', 'success', 'danger'];

    public const TYPE = [
        [
            'name' => 'بلاگ',
            'show-name' => 'مطلب',
            'slug' => 'Article',
            'className' => Article::class,
        ],
        //        [
        //            'name' => 'صفحات',
        //            'show-name' => 'صفحه',
        //            'slug' => 'Page',
        //            'className' => Page::class,
        //        ],
        [
            'name' => 'محصولات',
            'show-name' => 'محصول',
            'slug' => 'Product',
            'className' => Product::class,
        ],
    ];

    public function getAvatarAttribute()
    {
        return asset('images/defaults/user.png');
    }

    public function getMiniAvatarAttribute()
    {
        return asset('images/defaults/user.png');
    }

    public function commentable()
    {
        return $this->morphTo();
    }

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

    public function children()
    {
        return $this->hasMany(Comment::class, 'parent_id');
    }

    public function activeChildren()
    {
        return $this->hasMany(Comment::class, 'parent_id')->where('status', self::STATUS_APPROVED);
    }

    public function parent()
    {
        return $this->belongsTo(Comment::class, 'parent_id');
    }

    public function getCommentType()
    {
        return collect(self::TYPE)->firstWhere('className', $this->commentable_type);
    }

    public function feedback()
    {
        return $this->morphMany(Feedback::class, 'feedbackable');
    }

    public function scores()
    {
        return $this->morphMany(Score::class, 'scorable');
    }
}