mediawiki-extensions-Discus.../includes/ThreadItem/DatabaseThreadItem.php
Bartosz Dziewoński 880f9755e0 Separate ContentThreadItem and DatabaseThreadItem etc.
Rename ThreadItem to ContentThreadItem, then create a new ThreadItem
interface containing only the methods that we'll be able to implement
using only the persistently stored data (no parsing), then create a
DatabaseThreadItem. Do the same for CommentItem and HeadingItem.

ThreadItemSet gets a similar treatment, but it's basically only for
Phan's type checking. (This is sad.)

Change-Id: I1633049befe8ec169753b82eb876459af1f63fe8
2022-07-04 23:35:50 +02:00

102 lines
1.8 KiB
PHP

<?php
namespace MediaWiki\Extension\DiscussionTools\ThreadItem;
use JsonSerializable;
class DatabaseThreadItem implements JsonSerializable, ThreadItem {
use ThreadItemTrait;
/** @var string */
private $type;
/** @var string */
private $name;
/** @var string */
private $id;
/** @var DatabaseThreadItem|null */
private $parent;
/** @var DatabaseThreadItem[] */
private $replies = [];
/** @var string|bool */
private $transcludedFrom;
/** @var int */
private $level;
/**
* @param string $type
* @param string $name
* @param string $id
* @param DatabaseThreadItem|null $parent
* @param bool|string $transcludedFrom
* @param int $level
*/
public function __construct(
string $type, string $name, string $id, ?DatabaseThreadItem $parent, $transcludedFrom, int $level
) {
$this->name = $name;
$this->id = $id;
$this->type = $type;
$this->parent = $parent;
$this->transcludedFrom = $transcludedFrom;
$this->level = $level;
}
/**
* @inheritDoc
*/
public function getName(): string {
return $this->name;
}
/**
* @param DatabaseThreadItem $reply Reply comment
*/
public function addReply( DatabaseThreadItem $reply ): void {
$this->replies[] = $reply;
}
/**
* @inheritDoc
*/
public function getId(): string {
return $this->id;
}
/**
* @inheritDoc
*/
public function getType(): string {
return $this->type;
}
/**
* @inheritDoc
* @return DatabaseThreadItem|null
*/
public function getParent(): ?ThreadItem {
return $this->parent;
}
/**
* @inheritDoc
* @return DatabaseThreadItem[]
*/
public function getReplies(): array {
return $this->replies;
}
/**
* @inheritDoc
*/
public function getTranscludedFrom() {
return $this->transcludedFrom;
}
/**
* @inheritDoc
*/
public function getLevel(): int {
return $this->level;
}
}