CommentEventHandler::handle()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 21
rs 9.584
c 0
b 0
f 0
cc 4
nc 4
nop 1
1
<?php
2
/**
3
 * @copyright Copyright (c) 2018 Julius Härtl <[email protected]>
4
 *
5
 * @author Julius Härtl <[email protected]>
6
 *
7
 * @license GNU AGPL version 3 or any later version
8
 *
9
 * This program is free software: you can redistribute it and/or modify
10
 * it under the terms of the GNU Affero General Public License as
11
 * published by the Free Software Foundation, either version 3 of the
12
 * License, or (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 * GNU Affero General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU Affero General Public License
20
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21
 *
22
 */
23
24
namespace OCA\Deck\Activity;
25
26
use OCA\Deck\Db\CardMapper;
27
use OCA\Deck\Notification\NotificationHelper;
28
use OCP\Comments\CommentsEvent;
29
use OCP\Comments\IComment;
30
use \OCP\Comments\ICommentsEventHandler;
31
32
class CommentEventHandler implements ICommentsEventHandler {
33
34
	/** @var ActivityManager */
35
	private $activityManager;
36
37
	/** @var NotificationHelper */
38
	private $notificationHelper;
39
40
	/** @var CardMapper */
41
	private $cardMapper;
42
43
	public function __construct(ActivityManager $activityManager, NotificationHelper $notificationHelper, CardMapper $cardMapper) {
44
		$this->notificationHelper = $notificationHelper;
45
		$this->activityManager = $activityManager;
46
		$this->cardMapper = $cardMapper;
47
	}
48
49
	/**
50
	 * @param CommentsEvent $event
51
	 */
52
	public function handle(CommentsEvent $event) {
53
		if($event->getComment()->getObjectType() !== 'deckCard') {
54
			return;
55
		}
56
57
		$eventType = $event->getEvent();
58
		if( $eventType === CommentsEvent::EVENT_ADD
59
		) {
60
			$this->notificationHandler($event);
61
			$this->activityHandler($event);
62
			return;
63
		}
64
65
		$applicableEvents = [
66
			CommentsEvent::EVENT_UPDATE
67
		];
68
		if(in_array($eventType, $applicableEvents)) {
69
			$this->notificationHandler($event);
70
			return;
71
		}
72
	}
73
74
	/**
75
	 * @param CommentsEvent $event
76
	 */
77
	private function activityHandler(CommentsEvent $event) {
78
		/** @var IComment $comment */
79
		$comment = $event->getComment();
80
		$card = $this->cardMapper->find($comment->getObjectId());
81
		$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $card, ActivityManager::SUBJECT_CARD_COMMENT_CREATE, ['comment' => $comment]);
82
83
	}
84
85
	/**
86
	 * @param CommentsEvent $event
87
	 */
88
	private function notificationHandler(CommentsEvent $event) {
89
		$this->notificationHelper->sendMention($event->getComment());
90
	}
91
}
92