Passed
Push — master ( 350d02...42b98d )
by Joas
23:24 queued 09:28
created
lib/private/Comments/Manager.php 1 patch
Indentation   +1589 added lines, -1589 removed lines patch added patch discarded remove patch
@@ -47,1593 +47,1593 @@
 block discarded – undo
47 47
 
48 48
 class Manager implements ICommentsManager {
49 49
 
50
-	/** @var  IDBConnection */
51
-	protected $dbConn;
52
-
53
-	/** @var  LoggerInterface */
54
-	protected $logger;
55
-
56
-	/** @var IConfig */
57
-	protected $config;
58
-
59
-	/** @var ITimeFactory */
60
-	protected $timeFactory;
61
-
62
-	/** @var EmojiHelper */
63
-	protected $emojiHelper;
64
-
65
-	/** @var IInitialStateService */
66
-	protected $initialStateService;
67
-
68
-	/** @var IComment[] */
69
-	protected $commentsCache = [];
70
-
71
-	/** @var  \Closure[] */
72
-	protected $eventHandlerClosures = [];
73
-
74
-	/** @var  ICommentsEventHandler[] */
75
-	protected $eventHandlers = [];
76
-
77
-	/** @var \Closure[] */
78
-	protected $displayNameResolvers = [];
79
-
80
-	public function __construct(IDBConnection $dbConn,
81
-								LoggerInterface $logger,
82
-								IConfig $config,
83
-								ITimeFactory $timeFactory,
84
-								EmojiHelper $emojiHelper,
85
-								IInitialStateService $initialStateService) {
86
-		$this->dbConn = $dbConn;
87
-		$this->logger = $logger;
88
-		$this->config = $config;
89
-		$this->timeFactory = $timeFactory;
90
-		$this->emojiHelper = $emojiHelper;
91
-		$this->initialStateService = $initialStateService;
92
-	}
93
-
94
-	/**
95
-	 * converts data base data into PHP native, proper types as defined by
96
-	 * IComment interface.
97
-	 *
98
-	 * @param array $data
99
-	 * @return array
100
-	 */
101
-	protected function normalizeDatabaseData(array $data) {
102
-		$data['id'] = (string)$data['id'];
103
-		$data['parent_id'] = (string)$data['parent_id'];
104
-		$data['topmost_parent_id'] = (string)$data['topmost_parent_id'];
105
-		$data['creation_timestamp'] = new \DateTime($data['creation_timestamp']);
106
-		if (!is_null($data['latest_child_timestamp'])) {
107
-			$data['latest_child_timestamp'] = new \DateTime($data['latest_child_timestamp']);
108
-		}
109
-		$data['children_count'] = (int)$data['children_count'];
110
-		$data['reference_id'] = $data['reference_id'] ?? null;
111
-		if ($this->supportReactions()) {
112
-			$list = json_decode($data['reactions'], true);
113
-			// Ordering does not work on the database with group concat and Oracle,
114
-			// So we simply sort on the output.
115
-			if (is_array($list)) {
116
-				uasort($list, static function ($a, $b) {
117
-					if ($a === $b) {
118
-						return 0;
119
-					}
120
-					return ($a > $b) ? -1 : 1;
121
-				});
122
-			}
123
-			$data['reactions'] = $list;
124
-		}
125
-		return $data;
126
-	}
127
-
128
-
129
-	/**
130
-	 * @param array $data
131
-	 * @return IComment
132
-	 */
133
-	public function getCommentFromData(array $data): IComment {
134
-		return new Comment($this->normalizeDatabaseData($data));
135
-	}
136
-
137
-	/**
138
-	 * prepares a comment for an insert or update operation after making sure
139
-	 * all necessary fields have a value assigned.
140
-	 *
141
-	 * @param IComment $comment
142
-	 * @return IComment returns the same updated IComment instance as provided
143
-	 *                  by parameter for convenience
144
-	 * @throws \UnexpectedValueException
145
-	 */
146
-	protected function prepareCommentForDatabaseWrite(IComment $comment) {
147
-		if (!$comment->getActorType()
148
-			|| $comment->getActorId() === ''
149
-			|| !$comment->getObjectType()
150
-			|| $comment->getObjectId() === ''
151
-			|| !$comment->getVerb()
152
-		) {
153
-			throw new \UnexpectedValueException('Actor, Object and Verb information must be provided for saving');
154
-		}
155
-
156
-		if ($comment->getVerb() === 'reaction' && !$this->emojiHelper->isValidEmoji($comment->getMessage())) {
157
-			// 4 characters: laptop + person + gender + skin color => "
Please login to merge, or discard this patch.