public static function PrepareActivityItem(&$item, &$params, $options = null) { if (!is_array($options)) { $options = array(); } $itemID = intval($item['ID']); if (!isset($item['SUBJECT'])) { $item['SUBJECT'] = ''; } if (!isset($item['DESCRIPTION'])) { $item['DESCRIPTION'] = ''; } if (!isset($item['LOCATION'])) { $item['LOCATION'] = ''; } $typeID = isset($item['TYPE_ID']) ? intval($item['TYPE_ID']) : CCrmActivityType::Undefined; $item['TYPE_ID'] = $typeID; $direction = isset($item['DIRECTION']) ? intval($item['DIRECTION']) : CCrmActivityDirection::Undefined; $item['DIRECTION'] = $direction; $priority = isset($item['PRIORITY']) ? intval($item['PRIORITY']) : CCrmActivityPriority::None; $item['PRIORITY'] = $priority; $item['IS_IMPORTANT'] = $priority === CCrmActivityPriority::High; $completed = isset($item['COMPLETED']) ? $item['COMPLETED'] === 'Y' : false; $item['COMPLETED'] = $completed ? 'Y' : 'N'; if ($typeID === CCrmActivityType::Task) { $taskID = isset($item['ASSOCIATED_ENTITY_ID']) ? intval($item['ASSOCIATED_ENTITY_ID']) : 0; $item['SHOW_URL'] = $taskID > 0 && isset($params['TASK_SHOW_URL_TEMPLATE']) ? CComponentEngine::MakePathFromTemplate($params['TASK_SHOW_URL_TEMPLATE'], array('user_id' => isset($params['USER_ID']) ? $params['USER_ID'] : CCrmSecurityHelper::GetCurrentUserID(), 'task_id' => $taskID)) : ''; $item['DEAD_LINE'] = isset($item['DEADLINE']) ? $item['DEADLINE'] : (isset($item['END_TIME']) ? $item['END_TIME'] : ''); } else { if (isset($params['ACTIVITY_SHOW_URL_TEMPLATE'])) { $item['SHOW_URL'] = CComponentEngine::makePathFromTemplate($params['ACTIVITY_SHOW_URL_TEMPLATE'], array('activity_id' => $itemID)); } $item['DEAD_LINE'] = isset($item['DEADLINE']) ? $item['DEADLINE'] : (isset($item['START_TIME']) ? $item['START_TIME'] : ''); } //OWNER_TITLE $ownerTitle = ''; $ownerID = isset($item['OWNER_ID']) ? intval($item['OWNER_ID']) : 0; $item['OWNER_ID'] = $ownerID; $ownerTypeID = isset($item['OWNER_TYPE_ID']) ? intval($item['OWNER_TYPE_ID']) : 0; $item['OWNER_TYPE_ID'] = $ownerTypeID; if ($ownerID > 0 && $ownerTypeID > 0) { $ownerTitle = CCrmOwnerType::GetCaption($ownerTypeID, $ownerID); } $item['OWNER_TITLE'] = $ownerTitle; //OWNER_SHOW_URL $ownerShowUrl = ''; if ($ownerID > 0) { if ($ownerTypeID === CCrmOwnerType::Lead) { $ownerShowUrl = isset($params['LEAD_SHOW_URL_TEMPLATE']) ? CComponentEngine::makePathFromTemplate($params['LEAD_SHOW_URL_TEMPLATE'], array('lead_id' => $ownerID)) : ''; } elseif ($ownerTypeID === CCrmOwnerType::Contact) { $ownerShowUrl = isset($params['CONTACT_SHOW_URL_TEMPLATE']) ? CComponentEngine::makePathFromTemplate($params['CONTACT_SHOW_URL_TEMPLATE'], array('contact_id' => $ownerID)) : ''; } elseif ($ownerTypeID === CCrmOwnerType::Company) { $ownerShowUrl = isset($params['COMPANY_SHOW_URL_TEMPLATE']) ? CComponentEngine::makePathFromTemplate($params['COMPANY_SHOW_URL_TEMPLATE'], array('company_id' => $ownerID)) : ''; } elseif ($ownerTypeID === CCrmOwnerType::Deal) { $ownerShowUrl = isset($params['DEAL_SHOW_URL_TEMPLATE']) ? CComponentEngine::makePathFromTemplate($params['DEAL_SHOW_URL_TEMPLATE'], array('deal_id' => $ownerID)) : ''; } } $item['OWNER_SHOW_URL'] = $ownerShowUrl; //IS_EXPIRED if ($item['COMPLETED'] === 'Y') { $item['IS_EXPIRED'] = false; } else { $time = isset($item['DEAD_LINE']) ? MakeTimeStamp($item['DEAD_LINE']) : 0; $item['IS_EXPIRED'] = $time !== 0 && $time <= time() + CTimeZone::GetOffset(); } $responsibleID = isset($item['RESPONSIBLE_ID']) ? intval($item['RESPONSIBLE_ID']) : 0; $item['RESPONSIBLE_ID'] = $responsibleID; $item['RESPONSIBLE_SHOW_URL'] = $responsibleID > 0 ? CComponentEngine::MakePathFromTemplate($params['USER_PROFILE_URL_TEMPLATE'], array('user_id' => $responsibleID)) : ''; $item['RESPONSIBLE_FORMATTED_NAME'] = $responsibleID > 0 && isset($params['NAME_TEMPLATE']) ? CUser::FormatName($params['NAME_TEMPLATE'], array('LOGIN' => isset($item['RESPONSIBLE_LOGIN']) ? $item['RESPONSIBLE_LOGIN'] : '', 'NAME' => isset($item['RESPONSIBLE_NAME']) ? $item['RESPONSIBLE_NAME'] : '', 'LAST_NAME' => isset($item['RESPONSIBLE_LAST_NAME']) ? $item['RESPONSIBLE_LAST_NAME'] : '', 'SECOND_NAME' => isset($item['RESPONSIBLE_SECOND_NAME']) ? $item['RESPONSIBLE_SECOND_NAME'] : ''), true, false) : ''; //COMMUNICATIONS if ($itemID > 0 && isset($options['ENABLE_COMMUNICATIONS']) && $options['ENABLE_COMMUNICATIONS'] && !isset($item['COMMUNICATIONS'])) { $item['COMMUNICATIONS'] = CCrmActivity::GetCommunications($itemID); } $storageTypeID = isset($item['STORAGE_TYPE_ID']) ? intval($item['STORAGE_TYPE_ID']) : CCrmActivityStorageType::Undefined; if ($storageTypeID === CCrmActivityStorageType::Undefined || !CCrmActivityStorageType::IsDefined($storageTypeID)) { $storageTypeID = CCrmActivity::GetDefaultStorageTypeID(); } $item['STORAGE_TYPE_ID'] = $storageTypeID; $item['FILES'] = array(); $item['DISK_FILES'] = array(); $item['WEBDAV_ELEMENTS'] = array(); if (isset($options['ENABLE_FILES']) && $options['ENABLE_FILES']) { CCrmActivity::PrepareStorageElementIDs($item); CCrmActivity::PrepareStorageElementInfo($item); } }
$ID = isset($_POST['ID']) ? intval($_POST['ID']) : 0; $arFields = CCrmActivity::GetByID($ID); if (!is_array($arFields)) { echo CUtil::PhpToJsObject(array('ERROR' => 'NOT FOUND')); die; } $commData = array(); $communications = CCrmActivity::GetCommunications($ID); foreach ($communications as &$arComm) { CCrmActivity::PrepareCommunicationInfo($arComm); $commData[] = array('type' => $arComm['TYPE'], 'value' => $arComm['VALUE'], 'entityId' => $arComm['ENTITY_ID'], 'entityType' => CCrmOwnerType::ResolveName($arComm['ENTITY_TYPE_ID']), 'entityTitle' => $arComm['TITLE']); } unset($arComm); $storageTypeID = isset($arFields['STORAGE_TYPE_ID']) ? intval($arFields['STORAGE_TYPE_ID']) : CCrmActivityStorageType::Undefined; CCrmActivity::PrepareStorageElementIDs($arFields); CCrmActivity::PrepareStorageElementInfo($arFields); echo CUtil::PhpToJSObject(array('ACTIVITY' => array('ID' => $ID, 'typeID' => $arFields['TYPE_ID'], 'associatedEntityID' => isset($arFields['ASSOCIATED_ENTITY_ID']) ? $arFields['ASSOCIATED_ENTITY_ID'] : '0', 'ownerID' => $arFields['OWNER_ID'], 'ownerType' => CCrmOwnerType::ResolveName($arFields['OWNER_TYPE_ID']), 'ownerTitle' => CCrmOwnerType::GetCaption($arFields['OWNER_TYPE_ID'], $arFields['OWNER_ID']), 'ownerUrl' => CCrmOwnerType::GetShowUrl($arFields['OWNER_TYPE_ID'], $arFields['OWNER_ID']), 'subject' => $arFields['SUBJECT'], 'description' => $arFields['DESCRIPTION'], 'location' => $arFields['LOCATION'], 'direction' => intval($arFields['DIRECTION']), 'start' => $arFields['START_TIME'], 'end' => $arFields['END_TIME'], 'completed' => isset($arFields['COMPLETED']) && $arFields['COMPLETED'] === 'Y', 'notifyType' => intval($arFields['NOTIFY_TYPE']), 'notifyValue' => intval($arFields['NOTIFY_VALUE']), 'priority' => intval($arFields['PRIORITY']), 'responsibleName' => CCrmViewHelper::GetFormattedUserName(isset($arFields['RESPONSIBLE_ID']) ? intval($arFields['RESPONSIBLE_ID']) : 0), 'storageTypeID' => $storageTypeID, 'files' => isset($arFields['FILES']) ? $arFields['FILES'] : array(), 'webdavelements' => isset($arFields['WEBDAV_ELEMENTS']) ? $arFields['WEBDAV_ELEMENTS'] : array(), 'diskfiles' => isset($arFields['DISK_FILES']) ? $arFields['DISK_FILES'] : array(), 'communications' => $commData))); } elseif ($action == 'GET_ENTITY_COMMUNICATIONS') { $entityType = isset($_POST['ENTITY_TYPE']) ? strtoupper(strval($_POST['ENTITY_TYPE'])) : ''; $entityID = isset($_POST['ENTITY_ID']) ? intval($_POST['ENTITY_ID']) : 0; $communicationType = isset($_POST['COMMUNICATION_TYPE']) ? strval($_POST['COMMUNICATION_TYPE']) : ''; if ($entityType === '' || $entityID <= 0) { echo CUtil::PhpToJSObject(array('ERROR' => 'Invalid data')); die; } $result = GetCrmEntityCommunications($entityType, $entityID, $communicationType); echo CUtil::PhpToJSObject($result); } elseif ($action == 'SEARCH_COMMUNICATIONS') { $entityType = isset($_POST['ENTITY_TYPE']) ? strtoupper(strval($_POST['ENTITY_TYPE'])) : ''; $entityID = isset($_POST['ENTITY_ID']) ? intval($_POST['ENTITY_ID']) : 0; $communicationType = isset($_POST['COMMUNICATION_TYPE']) ? strval($_POST['COMMUNICATION_TYPE']) : '';
$arRes['RESPONSIBLE'] = false; $arRes['RESPONSIBLE_FULL_NAME'] = ''; $arRes['PATH_TO_RESPONSIBLE'] = ''; } elseif (!in_array($responsibleID, $responsibleIDs, true)) { $responsibleIDs[] = $responsibleID; } $storageTypeID = isset($arRes['STORAGE_TYPE_ID']) ? intval($arRes['STORAGE_TYPE_ID']) : CCrmActivityStorageType::Undefined; if ($storageTypeID === CCrmActivityStorageType::Undefined || !CCrmActivityStorageType::IsDefined($storageTypeID)) { $storageTypeID = $arRes['STORAGE_TYPE_ID'] = $arRes['~STORAGE_TYPE_ID'] = CCrmActivity::GetDefaultStorageTypeID(); } $arRes['FILES'] = array(); $arRes['WEBDAV_ELEMENTS'] = array(); $arRes['DISK_FILES'] = array(); if (!$skipFiles) { CCrmActivity::PrepareStorageElementIDs($arRes); CCrmActivity::PrepareStorageElementInfo($arRes); } //$arRes['SETTINGS'] = (isset($arRes['~SETTINGS']) && $arRes['~SETTINGS'] !== '') ? unserialize($arRes['~SETTINGS']) : array(); //Lazy communications loading //$arRes['COMMUNICATIONS'] = CCrmActivity::GetCommunications($itemID); $arRes['COMMUNICATIONS_LOADED'] = false; $description = isset($arRes['~DESCRIPTION']) ? $arRes['~DESCRIPTION'] : ''; $descriptionType = isset($arRes['DESCRIPTION_TYPE']) ? intval($arRes['DESCRIPTION_TYPE']) : CCrmContentType::PlainText; if ($descriptionType === CCrmContentType::BBCode) { $arRes['DESCRIPTION_HTML'] = $bbCodeParser->convertText($description); $arRes['DESCRIPTION_RAW'] = strip_tags(preg_replace('/(<br[^>]*>)+/is' . BX_UTF_PCRE_MODIFIER, "\n", $arRes['DESCRIPTION_HTML'])); $arRes['ENABLE_DESCRIPTION_CUT'] = false; } elseif ($descriptionType === CCrmContentType::Html) { //Already sanitaized $arRes['DESCRIPTION_HTML'] = $description; $arRes['DESCRIPTION_RAW'] = html_entity_decode(strip_tags(preg_replace('/(<br[^>]*>)+/is' . BX_UTF_PCRE_MODIFIER, "\n", $description)));