-
Notifications
You must be signed in to change notification settings - Fork 146
Expand file tree
/
Copy pathCommentArticleDiscussionProvider.class.php
More file actions
95 lines (84 loc) · 3.18 KB
/
Copy pathCommentArticleDiscussionProvider.class.php
File metadata and controls
95 lines (84 loc) · 3.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
namespace wcf\system\article\discussion;
use wcf\data\article\Article;
use wcf\data\article\content\ArticleContent;
use wcf\data\article\content\ArticleContentEditor;
use wcf\data\object\type\ObjectTypeCache;
use wcf\system\comment\CommentHandler;
use wcf\system\WCF;
/**
* The built-in discussion provider using the native comment system.
*
* @author Alexander Ebert
* @copyright 2001-2019 WoltLab GmbH
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
*/
class CommentArticleDiscussionProvider extends AbstractArticleDiscussionProvider
{
#[\Override]
public function getDiscussionCount()
{
return $this->articleContent ? $this->articleContent->comments : $this->article->getArticleContent()->comments;
}
#[\Override]
public function getDiscussionCountPhrase()
{
return WCF::getLanguage()->getDynamicVariable('wcf.article.articleComments', [
'articleContent' => $this->articleContent ?: $this->article->getArticleContent(),
'article' => $this->article, // kept line for backward compatibility in 3rd party translations
]);
}
#[\Override]
public function getDiscussionLink()
{
return $this->articleContent->getLink() . '#comments';
}
#[\Override]
public function renderDiscussions()
{
$commentCanAdd = WCF::getSession()->getPermission('user.article.canAddComment');
$commentObjectTypeID = CommentHandler::getInstance()->getObjectTypeID('com.woltlab.wcf.articleComment');
$commentManager = CommentHandler::getInstance()->getObjectType($commentObjectTypeID)->getProcessor();
$commentList = CommentHandler::getInstance()->getCommentList(
$commentManager,
$commentObjectTypeID,
$this->articleContent->articleContentID
);
return WCF::getTPL()->render('wcf', 'articleComments', [
'commentCanAdd' => $commentCanAdd,
'commentList' => $commentList,
'commentObjectTypeID' => $commentObjectTypeID,
'lastCommentTime' => $commentList->getMinCommentTime(),
'likeData' => (MODULE_LIKE) ? $commentList->getLikeData() : [],
]);
}
#[\Override]
public function migrateDiscussions(ArticleContent $oldContent, ArticleContent $newContent): void
{
$objectTypeID = ObjectTypeCache::getInstance()->getObjectTypeIDByName(
'com.woltlab.wcf.comment.commentableContent',
'com.woltlab.wcf.articleComment',
);
\assert($objectTypeID !== null);
$sql = "UPDATE wcf1_comment
SET objectID = ?
WHERE objectTypeID = ?
AND objectID = ?";
$statement = WCF::getDB()->prepare($sql);
$statement->execute([
$newContent->articleContentID,
$objectTypeID,
$oldContent->articleContentID,
]);
(new ArticleContentEditor($newContent))->update([
'comments' => $oldContent->comments,
]);
}
/**
* @inheritDoc
*/
public static function isResponsible(Article $article)
{
return !!$article->enableComments;
}
}