Skip to content
Prev Previous commit
Next Next commit
Throw on missing type of rich subject parameter
Signed-off-by: Côme Chilliet <[email protected]>
  • Loading branch information
come-nc committed Dec 8, 2022
commit f676076482433da01ce7d60ea68f04fa84a33f86
12 changes: 7 additions & 5 deletions lib/private/Activity/Event.php
Original file line number Diff line number Diff line change
Expand Up @@ -276,19 +276,21 @@ public function setRichSubject(string $subject, array $parameters = []): IEvent
}

/**
* @throws \InvalidArgumentException if a parameter has no name
* @throws \InvalidArgumentException if a parameter has no name or no type
*/
private function richToParsed(string $message, array $parameters): string {
$placeholders = [];
$replacements = [];
foreach ($parameters as $placeholder => $parameter) {
$placeholders[] = '{' . $placeholder . '}';
if (!isset($parameter['name']) || !is_string($parameter['name'])) {
throw new \InvalidArgumentException('Invalid rich object, name field is missing');
foreach (['name','type'] as $requiredField) {
if (!isset($parameter[$requiredField]) || !is_string($parameter[$requiredField])) {
throw new \InvalidArgumentException("Invalid rich object, {$requiredField} field is missing");
}
}
if (($parameter['type'] ?? '') === 'user') {
if ($parameter['type'] === 'user') {
$replacements[] = '@' . $parameter['name'];
} elseif (($parameter['type'] ?? '') === 'file') {
} elseif ($parameter['type'] === 'file') {
$replacements[] = $parameter['path'] ?? $parameter['name'];
} else {
$replacements[] = $parameter['name'];
Expand Down
12 changes: 7 additions & 5 deletions lib/private/Notification/Notification.php
Original file line number Diff line number Diff line change
Expand Up @@ -303,19 +303,21 @@ public function setRichSubject(string $subject, array $parameters = []): INotifi
}

/**
* @throws \InvalidArgumentException if a parameter has no name
* @throws \InvalidArgumentException if a parameter has no name or no type
*/
private function richToParsed(string $message, array $parameters): string {
$placeholders = [];
$replacements = [];
foreach ($parameters as $placeholder => $parameter) {
$placeholders[] = '{' . $placeholder . '}';
if (!isset($parameter['name']) || !is_string($parameter['name'])) {
throw new \InvalidArgumentException('Invalid rich object, name field is missing');
foreach (['name','type'] as $requiredField) {
if (!isset($parameter[$requiredField]) || !is_string($parameter[$requiredField])) {
throw new \InvalidArgumentException("Invalid rich object, {$requiredField} field is missing");
}
}
if (($parameter['type'] ?? '') === 'user') {
if ($parameter['type'] === 'user') {
$replacements[] = '@' . $parameter['name'];
} elseif (($parameter['type'] ?? '') === 'file') {
} elseif ($parameter['type'] === 'file') {
$replacements[] = $parameter['path'] ?? $parameter['name'];
} else {
$replacements[] = $parameter['name'];
Expand Down