Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 8
CRAP
0.00% covered (danger)
0.00%
0 / 1
SubscriptionItem
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 8
72
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
 getUserIdentity
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getItemName
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLinkTarget
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getCreatedTimestamp
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getNotificationTimestamp
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getState
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 isMuted
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace MediaWiki\Extension\DiscussionTools;
4
5use MediaWiki\Linker\LinkTarget;
6use MediaWiki\User\UserIdentity;
7
8/**
9 * Representation of a subscription to a given topic.
10 */
11class SubscriptionItem {
12    private UserIdentity $user;
13    private string $itemName;
14    private LinkTarget $linkTarget;
15    private int $state;
16    private ?string $createdTimestamp;
17    private ?string $notifiedTimestamp;
18
19    /**
20     * @param UserIdentity $user
21     * @param string $itemName
22     * @param LinkTarget $linkTarget
23     * @param int $state One of SubscriptionStore::STATE_* constants
24     * @param string|null $createdTimestamp When the subscription was created
25     * @param string|null $notifiedTimestamp When the item subscribed to last tried to trigger
26     *                                       a notification (even if muted).
27     */
28    public function __construct(
29        UserIdentity $user,
30        string $itemName,
31        LinkTarget $linkTarget,
32        int $state,
33        ?string $createdTimestamp,
34        ?string $notifiedTimestamp
35    ) {
36        $this->user = $user;
37        $this->itemName = $itemName;
38        $this->linkTarget = $linkTarget;
39        $this->state = $state;
40        $this->createdTimestamp = $createdTimestamp;
41        $this->notifiedTimestamp = $notifiedTimestamp;
42    }
43
44    public function getUserIdentity(): UserIdentity {
45        return $this->user;
46    }
47
48    public function getItemName(): string {
49        return $this->itemName;
50    }
51
52    public function getLinkTarget(): LinkTarget {
53        return $this->linkTarget;
54    }
55
56    /**
57     * Get the creation timestamp of this entry.
58     */
59    public function getCreatedTimestamp(): ?string {
60        return $this->createdTimestamp;
61    }
62
63    /**
64     * Get the notification timestamp of this entry.
65     */
66    public function getNotificationTimestamp(): ?string {
67        return $this->notifiedTimestamp;
68    }
69
70    /**
71     * Get the subscription status of this entry.
72     *
73     * @return int One of SubscriptionStore::STATE_* constants
74     */
75    public function getState(): int {
76        return $this->state;
77    }
78
79    /**
80     * Check if the notification is muted
81     */
82    public function isMuted(): bool {
83        return $this->state === SubscriptionStore::STATE_UNSUBSCRIBED;
84    }
85}