HasLikes::likes()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 1
b 0
f 0
1
<?php
2
3
namespace Usamamuneerchaudhary\Commentify\Scopes;
4
5
use Illuminate\Database\Eloquent\Relations\HasMany;
6
use Usamamuneerchaudhary\Commentify\Models\CommentLike;
7
use Usamamuneerchaudhary\Commentify\Models\User;
8
9
trait HasLikes
10
{
11
    /**
12
     * @return HasMany
13
     */
14
    public function likes(): HasMany
15
    {
16
        return $this->hasMany(CommentLike::class);
0 ignored issues
show
Bug introduced by
It seems like hasMany() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

16
        return $this->/** @scrutinizer ignore-call */ hasMany(CommentLike::class);
Loading history...
17
    }
18
19
    /**
20
     * @return bool
21
     */
22
    public function isLiked(): bool
23
    {
24
        $ip = request()->ip();
25
        $userAgent = request()->userAgent();
26
        if (auth()->user()) {
27
            return $this->likes()->where('user_id', auth()->user()->id)->exists();
28
        }
29
30
        if ($ip && $userAgent) {
31
            return $this->likes()->forIp($ip)->forUserAgent($userAgent)->exists();
32
        }
33
34
        return false;
35
    }
36
37
    /**
38
     * @return bool
39
     */
40
    public function removeLike(): bool
41
    {
42
        $ip = request()->ip();
43
        $userAgent = request()->userAgent();
44
        if (auth()->user()) {
45
            return $this->likes()->where('user_id', auth()->user()->id)->where('comment_id', $this->id)->delete();
46
        }
47
48
        if ($ip && $userAgent) {
49
            return $this->likes()->forIp($ip)->forUserAgent($userAgent)->delete();
50
        }
51
52
        return false;
53
    }
54
}
55