Проблемы с заменой токенов CiviCRM в API

В настоящее время я разрабатываю расширение CiviCRM, где мне нужно заменить CiviCRM-токены (используемые при генерации PDF и почтовых сообщений) в HTML-коде.

Я провел небольшое исследование основных файлов и попытался воссоздать поведение в PDFLetterCommon.php (/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php) где он заменяет токены в функции postProcess.

Вот оригинальный код CiviCRM:

list($formValues, $categories, $html_message, $messageToken, $returnProperties) = self::processMessageTemplate($form);

$skipOnHold = isset($form->skipOnHold) ? $form->skipOnHold : FALSE;
$skipDeceased = isset($form->skipDeceased) ? $form->skipDeceased : TRUE;

foreach ($form->_contactIds as $item => $contactId) {
$params = array('contact_id' => $contactId);

list($contact) = CRM_Utils_Token::getTokenDetails($params,
$returnProperties,
$skipOnHold,
$skipDeceased,
NULL,
$messageToken,
'CRM_Contact_Form_Task_PDFLetterCommon'
);

...

}

И вот моя версия для тестирования:

(этот код находится внутри функции API в моем расширении)

$messageToken = CRM_Utils_Token::getTokens($params["html"]);

$returnProperties = array();
if (isset($messageToken['contact'])) {
foreach ($messageToken['contact'] as $key => $value) {
$returnProperties[$value] = 1;
}
}

$skipOnHold = FALSE;
$skipDeceased = TRUE;
$tokenParams = array("contact_id" => 67450);

list($contact) = CRM_Utils_Token::getTokenDetails($tokenParams,
$returnProperties,
$skipOnHold,
$skipDeceased,
NULL,
$messageToken,
'CRM_Contact_Form_Task_PDFLetterCommon'
);

Я использую значения по умолчанию для $skipOnHold (ложно) и $skipDeceased (true), а также просто передать один (существующий) идентификатор пользователя в $params массив ($tokenParams в моем коде).

Вот моя проблема:

мой $messageToken а также $returnProperties переменные заполняются правильно через основные функции CiviCRM, но когда я передаю их все в CRM_Utils_Token::getTokenDetails() возвращенный $contact переменная содержит пустой массив.

У меня действительно нет идей, я искал в CRM/Utils/Token.php где getTokenDetails() находится, но не удалось найти проблему с моим кодом.

Заранее благодарю за любую помощь!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …