Completed
Branch feature/phpstanLevel3 (f0c768)
by Schlaefer
02:32
created

CurrentUser::ignores()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 1
dl 0
loc 8
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * Saito - The Threaded Web Forum
7
 *
8
 * @copyright Copyright (c) the Saito Project Developers
9
 * @link https://github.com/Schlaefer/Saito
10
 * @license http://opensource.org/licenses/MIT
11
 */
12
13
namespace Saito\User\CurrentUser;
14
15
use Bookmarks\Lib\Bookmarks;
16
use Saito\User\CurrentUser\CurrentUserInterface;
17
use Saito\User\LastRefresh\LastRefreshInterface;
18
use Saito\User\ReadPostings\ReadPostingsInterface;
19
use Saito\User\SaitoUser;
20
21
/**
22
 * Implements the current user visiting the forum
23
 */
24
class CurrentUser extends SaitoUser implements CurrentUserInterface
25
{
26
    /**
27
     * Bookmarks manager
28
     *
29
     * @var Bookmarks
30
     */
31
    private $bookmarks = null;
32
33
    /**
34
     * Manages the last refresh/mark entries as read for the current user
35
     *
36
     * @var LastRefreshInterface
37
     */
38
    private $lastRefresh = null;
39
40
    /**
41
     * @var ReadPostingsInterface
42
     */
43
    private $readPostings;
44
45
    /**
46
     * {@inheritDoc}
47
     */
48
    public function setLastRefresh(LastRefreshInterface $lastRefresh): CurrentUserInterface
49
    {
50
        $this->lastRefresh = $lastRefresh;
51
52
        return $this;
53
    }
54
55
    /**
56
     * {@inheritDoc}
57
     */
58
    public function getLastRefresh(): LastRefreshInterface
59
    {
60
        if ($this->lastRefresh === null) {
61
            throw new \RuntimeException(
62
                'CurrentUser has no LastRefresh. Set it before you get it.',
63
                1563704131
64
            );
65
        }
66
67
        return $this->lastRefresh;
68
    }
69
70
    /**
71
     * {@inheritDoc}
72
     */
73
    public function setReadPostings(ReadPostingsInterface $readPostings): CurrentUserInterface
74
    {
75
        $this->readPostings = $readPostings;
76
77
        return $this;
78
    }
79
80
    /**
81
     * {@inheritDoc}
82
     */
83
    public function getReadPostings(): ReadPostingsInterface
84
    {
85
        if ($this->readPostings === null) {
86
            throw new \RuntimeException(
87
                'CurrentUser has no ReadPostings. Set it before you get it.',
88
                1563704132
89
            );
90
        }
91
92
        return $this->readPostings;
93
    }
94
95
    /**
96
     * {@inheritDoc}
97
     */
98
    public function hasBookmarked($postingId)
99
    {
100
        if ($this->bookmarks === null) {
101
            $this->bookmarks = new Bookmarks($this);
102
        }
103
104
        return $this->bookmarks->isBookmarked($postingId);
105
    }
106
107
    /**
108
     * {@inheritDoc}
109
     */
110
    public function ignores($userId = null)
111
    {
112
        if (!$this->isLoggedIn()) {
113
            return false;
114
        }
115
116
        return isset($this->_settings['ignores'][$userId]);
117
    }
118
}
119