- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/integration/bizproc/document/task.php
- Класс: BitrixTasksIntegrationBizprocDocumentTask
- Вызов: Task::convertFieldsToDocument
static function convertFieldsToDocument(array &$fields)
{
$fields['IS_IMPORTANT'] = ($fields['PRIORITY'] > Priority::AVERAGE) ? 'Y' : 'N';
$documentFields = self::getDocumentFields(null);
foreach ($fields as $fieldName => $fieldValue)
{
if(($documentFields[$fieldName]['Type'] ?? null) === 'bool')
{
$fields[$fieldName] = self::resolveBoolType($fieldValue);
}
}
//users
foreach (['RESPONSIBLE_ID', 'CREATED_BY', 'CHANGED_BY', 'CLOSED_BY'] as $userKey)
{
$fields[$userKey] = $fields[$userKey] > 0 ?sprintf('user_%d', $fields[$userKey]) : null;
}
foreach ($fields['ACCOMPLICES'] as $i => $userId)
{
$fields['ACCOMPLICES'][$i] = sprintf('user_%d', $userId);
}
foreach ($fields['AUDITORS'] as $i => $userId)
{
$fields['AUDITORS'][$i] = sprintf('user_%d', $userId);
}
//$fields['TAGS'] - nothing to do.
$fields['STATUS'] = $fields['REAL_STATUS'];
$fields['IS_EXPIRED'] = 'N';
if (!empty($fields['DEADLINE']))
{
$closedDateTs = time();
if ($fields['STATUS'] >= Status::SUPPOSEDLY_COMPLETED && !empty($fields['CLOSED_DATE']))
{
$closedDateTs = DateTime::createFromUserTime($fields['CLOSED_DATE'])->getTimestamp();
}
$deadlineTs = DateTime::createFromUserTime($fields['DEADLINE'])->getTimestamp();
if ($deadlineTs <= $closedDateTs)
{
$fields['IS_EXPIRED'] = 'Y';
}
}
$fields['GROUP_ID_PRINTABLE'] = Loc::getMessage('TASKS_BP_DOCUMENT_GROUP_ID_PRINTABLE_DEFAULT');
if ($fields['GROUP_ID'] > 0)
{
$fields['GROUP_ID_PRINTABLE'] = $fields['GROUP_ID'];
if (MainLoader::includeModule('socialnetwork'))
{
$res = BitrixSocialnetworkWorkgroupTable::getList(
['filter' => ['=ID' => $fields['GROUP_ID']], 'select' => ['NAME']]
);
if ($row = $res->fetch())
{
$fields['GROUP_ID_PRINTABLE'] = $row['NAME'];
}
}
}
else
{
$fields['GROUP_ID'] = null;
}
if ((int)$fields['PARENT_ID'] <= 0) // issue: 0155930
{
$fields['PARENT_ID'] = null;
}
if (is_array($fields['COMMENT_RESULT']))
{
$results = [];
/** @var BitrixTasksInternalsTaskResultResult $result */
foreach ($fields['COMMENT_RESULT'] as $result)
{
$results[] = htmlspecialcharsback($result->getText()); //$result->getFormattedText();
}
$fields['COMMENT_RESULT'] = array_reverse($results);
unset($results, $result);
}
if (is_array($fields['COMMENT_RESULT_LAST']))
{
$fields['COMMENT_RESULT_LAST'] = htmlspecialcharsback($fields['COMMENT_RESULT_LAST']['TEXT']);
}
}