Only pass valid subject parameters when commenting
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
@@ -51,7 +51,8 @@ class ActivityService {
|
|||||||
for (let index in this.toEnhanceWithComments) {
|
for (let index in this.toEnhanceWithComments) {
|
||||||
if (this.toEnhanceWithComments.hasOwnProperty(index)) {
|
if (this.toEnhanceWithComments.hasOwnProperty(index)) {
|
||||||
let item = this.toEnhanceWithComments[index];
|
let item = this.toEnhanceWithComments[index];
|
||||||
item.commentModel = this.commentCollection.get(item.subject_rich[1].comment);
|
let commentId = Array.isArray(item.subject_rich[1].comment) ? item.subject_rich[1].comment.id : item.subject_rich[1].comment;
|
||||||
|
item.commentModel = this.commentCollection.get(commentId);
|
||||||
if (typeof item.commentModel !== 'undefined') {
|
if (typeof item.commentModel !== 'undefined') {
|
||||||
this.toEnhanceWithComments = this.toEnhanceWithComments.filter((entry) => entry.activity_id !== item.activity_id);
|
this.toEnhanceWithComments = this.toEnhanceWithComments.filter((entry) => entry.activity_id !== item.activity_id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -158,18 +158,19 @@ class DeckProvider implements IProvider {
|
|||||||
* @param array $parameters
|
* @param array $parameters
|
||||||
*/
|
*/
|
||||||
protected function setSubjects(IEvent $event, $subject, array $parameters) {
|
protected function setSubjects(IEvent $event, $subject, array $parameters) {
|
||||||
$placeholders = $replacements = [];
|
$placeholders = $replacements = $richParameters = [];
|
||||||
foreach ($parameters as $placeholder => $parameter) {
|
foreach ($parameters as $placeholder => $parameter) {
|
||||||
$placeholders[] = '{' . $placeholder . '}';
|
$placeholders[] = '{' . $placeholder . '}';
|
||||||
if (is_array($parameter) && array_key_exists('name', $parameter)) {
|
if (is_array($parameter) && array_key_exists('name', $parameter)) {
|
||||||
$replacements[] = $parameter['name'];
|
$replacements[] = $parameter['name'];
|
||||||
|
$richParameters[$placeholder] = $parameter;
|
||||||
} else {
|
} else {
|
||||||
$replacements[] = '';
|
$replacements[] = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$event->setParsedSubject(str_replace($placeholders, $replacements, $subject))
|
$event->setParsedSubject(str_replace($placeholders, $replacements, $subject))
|
||||||
->setRichSubject($subject, $parameters);
|
->setRichSubject($subject, $richParameters);
|
||||||
$event->setSubject($subject, $parameters);
|
$event->setSubject($subject, $parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -284,7 +285,11 @@ class DeckProvider implements IProvider {
|
|||||||
$event->setParsedMessage($comment->getMessage());
|
$event->setParsedMessage($comment->getMessage());
|
||||||
} catch (NotFoundException $e) {
|
} catch (NotFoundException $e) {
|
||||||
}
|
}
|
||||||
$params['comment'] = $subjectParams['comment'];
|
$params['comment'] =[
|
||||||
|
'type' => 'highlight',
|
||||||
|
'id' => $subjectParams['comment'],
|
||||||
|
'name' => $comment->getMessage()
|
||||||
|
];
|
||||||
}
|
}
|
||||||
return $params;
|
return $params;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -465,7 +465,7 @@ class DeckProviderTest extends TestCase {
|
|||||||
|
|
||||||
public function testParseParamForComment() {
|
public function testParseParamForComment() {
|
||||||
$comment = $this->createMock(IComment::class);
|
$comment = $this->createMock(IComment::class);
|
||||||
$comment->expects($this->once())
|
$comment->expects($this->any())
|
||||||
->method('getMessage')
|
->method('getMessage')
|
||||||
->willReturn('Comment content');
|
->willReturn('Comment content');
|
||||||
$this->commentsManager->expects($this->once())
|
$this->commentsManager->expects($this->once())
|
||||||
@@ -481,7 +481,11 @@ class DeckProviderTest extends TestCase {
|
|||||||
'comment' => 123
|
'comment' => 123
|
||||||
];
|
];
|
||||||
$expected = [
|
$expected = [
|
||||||
'comment' => 123,
|
'comment' => [
|
||||||
|
'type' => 'highlight',
|
||||||
|
'id' => 123,
|
||||||
|
'name' => 'Comment content'
|
||||||
|
]
|
||||||
];
|
];
|
||||||
$actual = $this->invokePrivate($this->provider, 'parseParamForComment', [$subjectParams, $params, $event]);
|
$actual = $this->invokePrivate($this->provider, 'parseParamForComment', [$subjectParams, $params, $event]);
|
||||||
$this->assertEquals($expected, $actual);
|
$this->assertEquals($expected, $actual);
|
||||||
|
|||||||
Reference in New Issue
Block a user