*/
protected static function loadTemplate(string $workflowName, bool $isTest, int $messageTemplateID = NULL, $groupName = NULL, ?array $messageTemplateOverride = NULL, ?string $subjectOverride = NULL, ?string $language = NULL): array {
$base = ['msg_subject' => NULL, 'msg_text' => NULL, 'msg_html' => NULL, 'pdf_format_id' => NULL];
- if (!$workflowName && !$messageTemplateID) {
- throw new CRM_Core_Exception(ts("Message template's option value or ID missing."));
+ if (!$workflowName && !$messageTemplateID && !$messageTemplateOverride) {
+ throw new CRM_Core_Exception(ts("Message template not specified. No option value, ID, or template content."));
}
$apiCall = MessageTemplate::get(FALSE)
if ($messageTemplateID) {
$apiCall->addWhere('id', '=', (int) $messageTemplateID);
+ $result = $apiCall->execute();
}
- else {
+ elseif ($workflowName) {
$apiCall->addWhere('workflow_name', '=', $workflowName);
+ $result = $apiCall->execute();
+ }
+ else {
+ // Don't bother with query. We know there's nothing.
+ $result = new \Civi\Api4\Generic\Result();
}
- $result = $apiCall->execute();
$messageTemplate = array_merge($base, $result->first() ?: [], $messageTemplateOverride ?: []);
if (empty($messageTemplate['id']) && empty($messageTemplateOverride)) {
if ($messageTemplateID) {