function __CrmActivityListRenderItems($items, $showMode, $showTop, &$editorCfg) { $editorItems = array(); $count = count($items); $now = time() + CTimeZone::GetOffset(); $toolbarID = ''; if ($editorCfg['ENABLE_TOOLBAR']) { $toolbarID = $editorCfg['EDITOR_ID'] . '_toolbar'; ?> <ul id="<?php echo htmlspecialcharsbx($toolbarID); ?> " class="crm-view-actions"> <?php if ($editorCfg['ENABLE_TASK_ADD']) { ?> <li class="crm-activity-command-add-task"> <i></i> <span><?php echo htmlspecialcharsbx(GetMessage('CRM_ACTIVITY_LIST_ADD_TASK')); ?> </span> </li> <?php } ?> <?php if ($editorCfg['ENABLE_CALENDAR_EVENT_ADD']) { ?> <li class="crm-activity-command-add-call"> <i></i> <span><?php echo htmlspecialcharsbx(GetMessage('CRM_ACTIVITY_LIST_ADD_CALL')); ?> </span> </li> <li class="crm-activity-command-add-meeting"> <i></i> <span><?php echo htmlspecialcharsbx(GetMessage('CRM_ACTIVITY_LIST_ADD_MEETING')); ?> </span> </li> <?php } ?> <?php if ($editorCfg['ENABLE_EMAIL_ADD']) { ?> <li class="crm-activity-command-add-email"> <i></i> <span><?php echo htmlspecialcharsbx(GetMessage('CRM_ACTIVITY_LIST_ADD_EMAIL')); ?> </span> </li> <?php } ?> </ul> <?php } ?> <table class="crm-view-table crm-activity-table"> <thead> <tr class="crm-activity-table-head" style="<?php echo $count > 0 ? '' : 'display:none;'; ?> " > <td> </td> <td><?php echo htmlspecialcharsbx(GetMessage('CRM_ACTIVITY_ROW_COL_TTL_TYPE')); ?> </td> <td><?php echo htmlspecialcharsbx(GetMessage('CRM_ACTIVITY_ROW_COL_TTL_SUBJECT')); ?> </td> <td><?php echo htmlspecialcharsbx(GetMessage('CRM_ACTIVITY_ROW_COL_TTL_DEAD_LINE')); ?> </td> <td><?php echo htmlspecialcharsbx(GetMessage('CRM_ACTIVITY_ROW_COL_TTL_RESPONSIBLE')); ?> </td> </tr> </thead> <tbody> <?php $processed = 0; for ($i = 0; $i < $count; $i++) { $item =& $items[$i]; if ($showMode == 'NOT_COMPLETED' && $item['COMPLETED'] == 'Y' || $showMode == 'COMPLETED' && $item['COMPLETED'] == 'N') { continue; } $processed++; $commData = array(); if (isset($item['COMMUNICATIONS'])) { foreach ($item['COMMUNICATIONS'] as &$arComm) { CCrmActivity::PrepareCommunicationInfo($arComm); $commData[] = array('id' => $arComm['ID'], 'type' => $arComm['TYPE'], 'value' => $arComm['VALUE'], 'entityId' => $arComm['ENTITY_ID'], 'entityType' => CCrmOwnerType::ResolveName($arComm['ENTITY_TYPE_ID']), 'entityTitle' => $arComm['TITLE']); } unset($arComm); } $rowID = $editorCfg['PREFIX']; if ($rowID !== '') { $rowID .= '_'; } $rowID .= '_row_' . strval($processed); $editorItem = array('ID' => $item['~ID'], 'rowID' => $rowID, 'typeID' => $item['~TYPE_ID'], 'subject' => strval($item['~SUBJECT']), 'description' => strval($item['~DESCRIPTION']), 'direction' => intval($item['~DIRECTION']), 'location' => strval($item['~LOCATION']), 'start' => isset($item['~START_TIME']) ? ConvertTimeStamp(MakeTimeStamp($item['~START_TIME']), 'FULL', SITE_ID) : '', 'end' => isset($item['~END_TIME']) ? ConvertTimeStamp(MakeTimeStamp($item['~END_TIME']), 'FULL', SITE_ID) : '', 'deadline' => isset($item['~DEADLINE']) ? ConvertTimeStamp(MakeTimeStamp($item['~DEADLINE']), 'FULL', SITE_ID) : '', 'completed' => strval($item['~COMPLETED']) == 'Y', 'notifyType' => intval($item['~NOTIFY_TYPE']), 'notifyValue' => intval($item['~NOTIFY_VALUE']), 'priority' => intval($item['~PRIORITY']), 'responsibleID' => isset($item['~RESPONSIBLE_ID'][0]) ? intval($item['~RESPONSIBLE_ID']) : 0, 'responsibleName' => isset($item['~RESPONSIBLE_FULL_NAME'][0]) ? $item['~RESPONSIBLE_FULL_NAME'] : GetMessage('CRM_UNDEFINED_VALUE'), 'storageTypeID' => intval($item['STORAGE_TYPE_ID']), 'files' => $item['FILES'], 'webdavelements' => $item['WEBDAV_ELEMENTS'], 'associatedEntityID' => isset($item['~ASSOCIATED_ENTITY_ID']) ? intval($item['~ASSOCIATED_ENTITY_ID']) : 0, 'communications' => $commData); if (isset($item['OWNER_TYPE_ID']) && isset($item['OWNER_ID'])) { $editorItem['ownerType'] = CCrmOwnerType::ResolveName($item['OWNER_TYPE_ID']); $editorItem['ownerID'] = $item['OWNER_ID']; $editorItem['ownerTitle'] = CCrmOwnerType::GetCaption($item['OWNER_TYPE_ID'], $item['OWNER_ID']); $editorItem['ownerUrl'] = CCrmOwnerType::GetShowUrl($item['OWNER_TYPE_ID'], $item['OWNER_ID']); } $editorItems[] = $editorItem; $rowClass = 'crm-activity-row'; if ($processed % 2 === 0) { $rowClass .= ' crm-activity-row-even'; } if (intval($item['~PRIORITY']) === CCrmActivityPriority::High) { $rowClass .= ' crm-activity-row-important'; } ?> <tr id="<?php echo htmlspecialcharsbx($rowID); ?> " class="<?php echo htmlspecialcharsbx($rowClass); ?> " style="<?php echo $showTop > 0 && $processed > $showTop ? 'display:none;' : ''; ?> "> <td><!--Delete--> <?php if (!$arResult['READ_ONLY']) { ?> <span class="crm-view-table-column-delete"></span> <?php } ?> </td> <td> <!--Type--> <a class="crm-activity-type" href="#"><?php echo $item['TYPE_NAME']; ?> </a> </td> <td> <!--Subject--> <a class="crm-activity-subject" href="#"><?php echo $item['SUBJECT']; ?> </a> </td> <td> <!--End time--> <?php $deadline = isset($item['~DEADLINE']) ? MakeTimeStamp($item['~DEADLINE']) : null; ?> <span <?php echo $item['~COMPLETED'] !== 'Y' && $deadline !== null && $deadline < $now ? 'style="color:#ff0000;"' : ''; ?> > <?php echo $deadline !== null ? htmlspecialcharsbx(CCrmComponentHelper::TrimDateTimeString(FormatDate('FULL', $deadline))) : ''; ?> </span> </td> <td> <!--Responsible--> <span> <?php echo isset($item['RESPONSIBLE_FULL_NAME'][0]) ? $item['RESPONSIBLE_FULL_NAME'] : GetMessage('CRM_UNDEFINED_VALUE'); ?> </span> </td> </tr> <?php } unset($item); ?> </tbody> </table> <?php if ($showTop > 0 && $processed > $showTop) { ?> <div class="crm-activity-show-all-wrapper"> <a href="#" class="crm-activity-command-show-all" ><?php echo str_replace('#COUNT#', strval($processed), GetMessage('CRM_ACTIVITY_SHOW_ALL')); ?> </a> </div> <?php } $GLOBALS['APPLICATION']->IncludeComponent('bitrix:crm.activity.editor', '', array('CONTAINER_ID' => $editorCfg['CONTAINER_ID'], 'EDITOR_ID' => $editorCfg['EDITOR_ID'], 'EDITOR_TYPE' => $editorCfg['EDITOR_TYPE'], 'PREFIX' => $editorCfg['PREFIX'], 'OWNER_TYPE' => $editorCfg['OWNER_TYPE'], 'OWNER_ID' => $editorCfg['OWNER_ID'], 'ENABLE_TASK_ADD' => $editorCfg['ENABLE_TASK_ADD'], 'ENABLE_CALENDAR_EVENT_ADD' => $editorCfg['ENABLE_CALENDAR_EVENT_ADD'], 'ENABLE_EMAIL_ADD' => $editorCfg['ENABLE_EMAIL_ADD'], 'READ_ONLY' => $editorCfg['READ_ONLY'], 'ENABLE_UI' => $editorCfg['ENABLE_UI'], 'ENABLE_TOOLBAR' => $editorCfg['ENABLE_TOOLBAR'], 'TOOLBAR_ID' => $toolbarID, 'BUTTON_ID' => $editorCfg['BUTTON_ID'], 'EDITOR_ITEMS' => $editorItems), null, array('HIDE_ICONS' => 'Y')); }
function GetCrmEntityCommunications($entityType, $entityID, $communicationType) { $fullNameFormat = \Bitrix\Crm\Format\PersonNameFormatter::getFormat(); if ($entityType === 'LEAD') { $data = array('ownerEntityType' => 'LEAD', 'ownerEntityId' => $entityID, 'entityType' => 'LEAD', 'entityId' => $entityID, 'entityTitle' => "{$entityType}_{$entityID}", 'entityDescription' => '', 'tabId' => 'main', 'communications' => array()); $entity = CCrmLead::GetByID($entityID); if (!$entity) { return array('ERROR' => 'Invalid data'); } // Prepare title $name = isset($entity['NAME']) ? $entity['NAME'] : ''; $secondName = isset($entity['SECOND_NAME']) ? $entity['SECOND_NAME'] : ''; $lastName = isset($entity['LAST_NAME']) ? $entity['LAST_NAME'] : ''; if ($name !== '' || $secondName !== '' || $lastName !== '') { $data['entityTitle'] = CUser::FormatName($fullNameFormat, array('LOGIN' => '', 'NAME' => $name, 'SECOND_NAME' => $secondName, 'LAST_NAME' => $lastName), false, false); $data['entityDescription'] = isset($entity['TITLE']) ? $entity['TITLE'] : ''; } else { $data['entityTitle'] = isset($entity['TITLE']) ? $entity['TITLE'] : ''; $data['entityDescription'] = ''; } // Try to load entity communications if (!CCrmActivity::CheckReadPermission(CCrmOwnerType::ResolveID($entityType), $entityID)) { return array('ERROR' => GetMessage('CRM_PERMISSION_DENIED')); } if ($communicationType !== '') { $dbResFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $entityType, 'ELEMENT_ID' => $entityID, 'TYPE_ID' => $communicationType)); while ($arField = $dbResFields->Fetch()) { if (empty($arField['VALUE'])) { continue; } $comm = array('type' => $communicationType, 'value' => $arField['VALUE']); $data['communications'][] = $comm; } } return array('DATA' => array('TABS' => array(array('id' => 'lead', 'title' => GetMessage('CRM_COMMUNICATION_TAB_LEAD'), 'active' => true, 'items' => array($data))))); } elseif ($entityType === 'DEAL') { $entity = CCrmDeal::GetByID($entityID); if (!$entity) { return array('ERROR' => 'Invalid data'); } $dealData = array(); // Prepare company data $entityCompanyData = null; $entityCompanyID = isset($entity['COMPANY_ID']) ? intval($entity['COMPANY_ID']) : 0; $entityCompany = $entityCompanyID > 0 ? CCrmCompany::GetByID($entityCompanyID) : null; if (is_array($entityCompany)) { $entityCompanyData = array('ownerEntityType' => 'DEAL', 'ownerEntityId' => $entityID, 'entityType' => 'COMPANY', 'entityId' => $entityCompanyID, 'entityTitle' => isset($entityCompany['TITLE']) ? $entityCompany['TITLE'] : '', 'entityDescription' => '', 'communications' => array()); if ($communicationType !== '') { $entityCompanyComms = CCrmActivity::PrepareCommunications('COMPANY', $entityCompanyID, $communicationType); foreach ($entityCompanyComms as &$entityCompanyComm) { $comm = array('type' => $entityCompanyComm['TYPE'], 'value' => $entityCompanyComm['VALUE']); $entityCompanyData['communications'][] = $comm; } unset($entityCompanyComm); } } // Try to get contact of deal $entityContactID = isset($entity['CONTACT_ID']) ? intval($entity['CONTACT_ID']) : 0; if ($entityContactID > 0) { $entityContact = CCrmContact::GetByID($entityContactID); if (is_array($entityContact)) { $item = array('ownerEntityType' => 'DEAL', 'ownerEntityId' => $entityID, 'entityType' => 'CONTACT', 'entityId' => $entityContactID, 'entityTitle' => CUser::FormatName($fullNameFormat, array('LOGIN' => '', 'NAME' => $entityContact['NAME'], 'LAST_NAME' => $entityContact['LAST_NAME'], 'SECOND_NAME' => $entityContact['SECOND_NAME']), false, false), 'tabId' => 'deal', 'communications' => array()); $entityCompany = isset($entityContact['COMPANY_ID']) ? CCrmCompany::GetByID($entityContact['COMPANY_ID']) : null; if ($entityCompany && isset($entityCompany['TITLE'])) { $item['entityDescription'] = $entityCompany['TITLE']; } if ($communicationType !== '') { $entityContactComms = CCrmActivity::PrepareCommunications('CONTACT', $entityContactID, $communicationType); foreach ($entityContactComms as &$entityContactComm) { $comm = array('type' => $entityContactComm['TYPE'], 'value' => $entityContactComm['VALUE']); $item['communications'][] = $comm; } unset($entityContactComm); } if ($communicationType === '' || !empty($item['communications'])) { $dealData["CONTACT_{$entityContactID}"] = $item; } } } if ($entityCompanyData && !empty($entityCompanyData['communications'])) { $dealData['COMPANY_' . $entityCompanyID] = $entityCompanyData; $dealData['COMPANY_' . $entityCompanyID]['tabId'] = 'deal'; } // Try to get previous communications $entityComms = CCrmActivity::GetCommunicationsByOwner('DEAL', $entityID, $communicationType); foreach ($entityComms as &$entityComm) { CCrmActivity::PrepareCommunicationInfo($entityComm); $key = "{$entityComm['ENTITY_TYPE']}_{$entityComm['ENTITY_ID']}"; if (!isset($dealData[$key])) { $dealData[$key] = array('ownerEntityType' => 'DEAL', 'ownerEntityId' => $entityID, 'entityType' => CCrmOwnerType::ResolveName($entityComm['ENTITY_TYPE_ID']), 'entityId' => $entityComm['ENTITY_ID'], 'entityTitle' => isset($entityComm['TITLE']) ? $entityComm['TITLE'] : '', 'entityDescription' => isset($entityComm['DESCRIPTION']) ? $entityComm['DESCRIPTION'] : '', 'tabId' => 'deal', 'communications' => array()); } if ($communicationType !== '') { $commFound = false; foreach ($dealData[$key]['communications'] as &$comm) { if ($comm['value'] === $entityComm['VALUE']) { $commFound = true; break; } } unset($comm); if ($commFound) { continue; } $comm = array('type' => $entityComm['TYPE'], 'value' => $entityComm['VALUE']); $dealData[$key]['communications'][] = $comm; } } unset($entityComm); $companyData = array(); // Try to get contacts of company if ($entityCompany > 0) { $entityComms = CCrmActivity::GetCompanyCommunications($entityCompanyID, $communicationType); foreach ($entityComms as &$entityComm) { CCrmActivity::PrepareCommunicationInfo($entityComm); $key = "{$entityComm['ENTITY_TYPE']}_{$entityComm['ENTITY_ID']}"; if (!isset($companyData[$key])) { $companyData[$key] = array('ownerEntityType' => 'DEAL', 'ownerEntityId' => $entityID, 'entityType' => CCrmOwnerType::ResolveName($entityComm['ENTITY_TYPE_ID']), 'entityId' => $entityComm['ENTITY_ID'], 'entityTitle' => isset($entityComm['TITLE']) ? $entityComm['TITLE'] : '', 'entityDescription' => isset($entityComm['DESCRIPTION']) ? $entityComm['DESCRIPTION'] : '', 'tabId' => 'company', 'communications' => array()); } if ($communicationType !== '') { $comm = array('type' => $entityComm['TYPE'], 'value' => $entityComm['VALUE']); $companyData[$key]['communications'][] = $comm; } } unset($entityComm); } if ($entityCompanyData && !empty($entityCompanyData['communications'])) { $companyData['COMPANY_' . $entityCompanyID] = $entityCompanyData; $companyData['COMPANY_' . $entityCompanyID]['tabId'] = 'company'; } return array('DATA' => array('TABS' => array(array('id' => 'deal', 'title' => GetMessage('CRM_COMMUNICATION_TAB_DEAL'), 'active' => true, 'items' => array_values($dealData)), array('id' => 'company', 'title' => GetMessage('CRM_COMMUNICATION_TAB_COMPANY'), 'items' => array_values($companyData))))); } elseif ($entityType === 'COMPANY') { $companyData = array(); $entity = CCrmCompany::GetByID($entityID); if (!$entity) { return array('ERROR' => 'Invalid data'); } $companyItem = array('ownerEntityType' => 'COMPANY', 'ownerEntityId' => $entityID, 'entityType' => 'COMPANY', 'entityId' => $entityID, 'entityTitle' => isset($entity['TITLE']) ? $entity['TITLE'] : "{$entityType}_{$entityID}", 'entityDescription' => '', 'tabId' => 'company', 'communications' => array()); // Try to load entity communications if (!CCrmActivity::CheckReadPermission(CCrmOwnerType::ResolveID($entityType), $entityID)) { return array('ERROR' => GetMessage('CRM_PERMISSION_DENIED')); } if ($communicationType !== '') { $dbResFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $entityType, 'ELEMENT_ID' => $entityID, 'TYPE_ID' => $communicationType)); while ($arField = $dbResFields->Fetch()) { if (empty($arField['VALUE'])) { continue; } $comm = array('type' => $communicationType, 'value' => $arField['VALUE']); $companyItem['communications'][] = $comm; } } $companyData["{$entityType}_{$entityID}"] = $companyItem; if ($communicationType !== '') { $entityComms = CCrmActivity::GetCompanyCommunications($entityID, $communicationType, 50); foreach ($entityComms as &$entityComm) { CCrmActivity::PrepareCommunicationInfo($entityComm); $key = "{$entityComm['ENTITY_TYPE']}_{$entityComm['ENTITY_ID']}"; if (!isset($companyData[$key])) { $companyData[$key] = array('ownerEntityType' => 'COMPANY', 'ownerEntityId' => $entityID, 'entityType' => $entityComm['ENTITY_TYPE'], 'entityId' => $entityComm['ENTITY_ID'], 'entityTitle' => isset($entityComm['TITLE']) ? $entityComm['TITLE'] : '', 'entityDescription' => isset($entityComm['DESCRIPTION']) ? $entityComm['DESCRIPTION'] : '', 'tabId' => 'company', 'communications' => array()); } $comm = array('type' => $entityComm['TYPE'], 'value' => $entityComm['VALUE']); $companyData[$key]['communications'][] = $comm; } unset($entityComm); } return array('DATA' => array('TABS' => array(array('id' => 'company', 'title' => GetMessage('CRM_COMMUNICATION_TAB_COMPANY'), 'active' => true, 'items' => array_values($companyData))))); } elseif ($entityType === 'CONTACT') { $contactData = array(); $entity = CCrmContact::GetByID($entityID); if (!$entity) { return array('ERROR' => 'Invalid data'); } $entityCompany = isset($entity['COMPANY_ID']) ? CCrmCompany::GetByID($entity['COMPANY_ID']) : null; $contactItem = array('ownerEntityType' => 'CONTACT', 'ownerEntityId' => $entityID, 'entityType' => 'CONTACT', 'entityId' => $entityID, 'entityTitle' => CUser::FormatName($fullNameFormat, array('LOGIN' => '', 'NAME' => $entity['NAME'], 'LAST_NAME' => $entity['LAST_NAME'], 'SECOND_NAME' => $entity['SECOND_NAME']), false, false), 'entityDescription' => $entityCompany && isset($entityCompany['TITLE']) ? $entityCompany['TITLE'] : '', 'tabId' => 'contact', 'communications' => array()); // Try to load entity communications if (!CCrmActivity::CheckReadPermission(CCrmOwnerType::ResolveID($entityType), $entityID)) { return array('ERROR' => GetMessage('CRM_PERMISSION_DENIED')); } if ($communicationType !== '') { $dbResFields = CCrmFieldMulti::GetList(array('ID' => 'asc'), array('ENTITY_ID' => $entityType, 'ELEMENT_ID' => $entityID, 'TYPE_ID' => $communicationType)); while ($arField = $dbResFields->Fetch()) { if (empty($arField['VALUE'])) { continue; } $comm = array('type' => $communicationType, 'value' => $arField['VALUE']); $contactItem['communications'][] = $comm; } } $contactData["{$entityType}_{$entityID}"] = $contactItem; return array('DATA' => array('TABS' => array(array('id' => 'contact', 'title' => GetMessage('CRM_COMMUNICATION_TAB_CONTACT'), 'active' => true, 'items' => array_values($contactData))))); } return array('ERROR' => 'Invalid data'); }
$arSelect = $arResult['SELECTED_FIELDS']; if ($arResult['DISPLAY_CLIENT'] && (empty($arSelect) || in_array('CLIENT', $arSelect, true))) { $columnHtml = ''; $clientInfo = isset($item['CLIENT_INFO']) ? $item['CLIENT_INFO'] : null; if (is_array($clientInfo)) { $columnHtml = CCrmViewHelper::PrepareEntityBaloonHtml(array('ENTITY_TYPE_ID' => $clientInfo['ENTITY_TYPE_ID'], 'ENTITY_ID' => $clientInfo['ENTITY_ID'], 'PREFIX' => "{$arResult['UID']}_{$item['~ID']}_CLIENT", 'TITLE' => isset($clientInfo['TITLE']) ? $clientInfo['TITLE'] : '', 'SHOW_URL' => isset($clientInfo['SHOW_URL']) ? $clientInfo['SHOW_URL'] : '')); } $arRowData['columns']['CLIENT'] = $columnHtml; } $arResult['GRID_DATA'][] = $arRowData; // <-- Preparing grig row // Preparing activity editor item --> $commData = array(); if (!empty($communications)) { foreach ($communications as &$arComm) { CCrmActivity::PrepareCommunicationInfo($arComm); $commData[] = array('id' => $arComm['ID'], 'type' => $arComm['TYPE'], 'value' => $arComm['VALUE'], 'entityId' => $arComm['ENTITY_ID'], 'entityType' => CCrmOwnerType::ResolveName($arComm['ENTITY_TYPE_ID']), 'entityTitle' => $arComm['TITLE'], 'entityUrl' => CCrmOwnerType::GetShowUrl($arComm['ENTITY_TYPE_ID'], $arComm['ENTITY_ID'])); } unset($arComm); } $responsibleID = isset($item['~RESPONSIBLE_ID']) ? intval($item['~RESPONSIBLE_ID']) : 0; $responsibleUrl = isset($item['PATH_TO_RESPONSIBLE']) ? $item['PATH_TO_RESPONSIBLE'] : ''; if ($responsibleUrl === '') { $responsibleUrl = CComponentEngine::MakePathFromTemplate($arResult['PATH_TO_USER_PROFILE'], array('user_id' => $responsibleID)); } $editorItem = array('ID' => $item['~ID'], 'typeID' => $item['~TYPE_ID'], 'subject' => $item['~SUBJECT'], 'description' => isset($item['DESCRIPTION_RAW']) ? $item['DESCRIPTION_RAW'] : '', 'descriptionHtml' => isset($item['DESCRIPTION_HTML']) ? $item['DESCRIPTION_HTML'] : '', 'direction' => intval($item['~DIRECTION']), 'location' => $item['~LOCATION'], 'start' => isset($item['~START_TIME']) ? ConvertTimeStamp(MakeTimeStamp($item['~START_TIME']), 'FULL', SITE_ID) : '', 'end' => isset($item['~END_TIME']) ? ConvertTimeStamp(MakeTimeStamp($item['~END_TIME']), 'FULL', SITE_ID) : '', 'deadline' => isset($item['~DEADLINE']) ? ConvertTimeStamp(MakeTimeStamp($item['~DEADLINE']), 'FULL', SITE_ID) : '', 'completed' => $item['~COMPLETED'] == 'Y', 'notifyType' => intval($item['~NOTIFY_TYPE']), 'notifyValue' => intval($item['~NOTIFY_VALUE']), 'priority' => intval($item['~PRIORITY']), 'responsibleID' => $responsibleID, 'responsibleName' => isset($item['~RESPONSIBLE_FULL_NAME'][0]) ? $item['~RESPONSIBLE_FULL_NAME'] : GetMessage('CRM_UNDEFINED_VALUE'), 'responsibleUrl' => $responsibleUrl, 'storageTypeID' => intval($item['STORAGE_TYPE_ID']), 'files' => $item['FILES'], 'webdavelements' => $item['WEBDAV_ELEMENTS'], 'diskfiles' => $item['DISK_FILES'], 'associatedEntityID' => isset($item['~ASSOCIATED_ENTITY_ID']) ? intval($item['~ASSOCIATED_ENTITY_ID']) : 0); if (!$commLoaded) { $editorItem['communicationsLoaded'] = false; } else { $editorItem['communicationsLoaded'] = true; $editorItem['communications'] = $commData;
$contactComms = CCrmActivity::PrepareCommunications('CONTACT', $contactID, $commType); foreach ($contactComms as &$comm) { $item['COMMUNICATIONS'][] = array('TYPE' => $comm['TYPE'], 'VALUE' => $comm['VALUE']); } unset($comm); if (!empty($item['COMMUNICATIONS'])) { $items[$contactKey] =& $item; } unset($item); } } } // Try to get previous communications $invoiceComms = CCrmActivity::GetCommunicationsByOwner('INVOICE', $ownerID, $commType); foreach ($invoiceComms as &$comm) { if (!CCrmActivity::PrepareCommunicationInfo($comm)) { continue; } $commKey = "{$comm['ENTITY_TYPE']}_{$comm['ENTITY_ID']}"; if (!isset($items[$commKey])) { $items[$commKey] = array('OWNER_ID' => $ownerID, 'OWNER_TYPE_ID' => CCrmOwnerType::Invoice, 'TITLE' => $comm['TITLE'], 'DESCRIPTION' => $comm['DESCRIPTION'], 'IMAGE_URL' => '', 'COMMUNICATIONS' => array()); $commEntityType = $comm['ENTITY_TYPE']; if (!isset($imageless[$commEntityType])) { $imageless[$commEntityType] = array(); } $imageless[$commEntityType][] = $comm['ENTITY_ID']; } if ($commType !== 'PERSON') { $isFound = false; foreach ($items[$commKey]['COMMUNICATIONS'] as &$itemComm) { if ($comm['VALUE'] === $itemComm['VALUE']) {
$commType = isset($commData['TYPE']) ? strtoupper(strval($commData['TYPE'])) : ''; $commValue = isset($commData['VALUE']) ? strval($commData['VALUE']) : ''; $subject = isset($data['SUBJECT']) ? strval($data['SUBJECT']) : ''; if ($subject === '') { $msgID = 'CRM_ACTIVITY_EDIT_ACTION_DEFAULT_SUBJECT'; if ($typeID === CCrmActivityType::Call) { if ($direction === CCrmActivityDirection::Incoming) { $msgID = 'CRM_ACTIVITY_EDIT_INCOMING_CALL_ACTION_DEFAULT_SUBJECT_EXT'; } elseif ($direction === CCrmActivityDirection::Outgoing) { $msgID = 'CRM_ACTIVITY_EDIT_OUTGOING_CALL_ACTION_DEFAULT_SUBJECT_EXT'; } } elseif ($typeID === CCrmActivityType::Meeting) { $msgID = 'CRM_ACTIVITY_EDIT_MEETING_ACTION_DEFAULT_SUBJECT_EXT'; } $commInfo = array('ENTITY_ID' => $commEntityID, 'ENTITY_TYPE_ID' => CCrmOwnerType::ResolveID($commEntityType)); CCrmActivity::PrepareCommunicationInfo($commInfo); $subject = GetMessage($msgID, array('#DATE#' => ConvertTimeStamp($now, 'FULL', SITE_ID), '#TITLE#' => $commInfo['TITLE'], '#COMMUNICATION#' => $commValue)); } $fields = array('OWNER_ID' => $ownerID, 'OWNER_TYPE_ID' => $ownerTypeID, 'TYPE_ID' => $typeID, 'SUBJECT' => $subject, 'START_TIME' => ConvertTimeStamp($start, 'FULL', SITE_ID), 'END_TIME' => ConvertTimeStamp($end, 'FULL', SITE_ID), 'COMPLETED' => $completed, 'PRIORITY' => $priority, 'DESCRIPTION' => $descr, 'DESCRIPTION_TYPE' => CCrmContentType::PlainText, 'LOCATION' => $location, 'DIRECTION' => $direction, 'NOTIFY_TYPE' => CCrmActivityNotifyType::None, 'SETTINGS' => array()); $notify = isset($data['NOTIFY']) ? $data['NOTIFY'] : null; if (is_array($notify)) { $fields['NOTIFY_TYPE'] = isset($notify['TYPE']) ? intval($notify['TYPE']) : CCrmActivityNotifyType::Min; $fields['NOTIFY_VALUE'] = isset($notify['VALUE']) ? intval($notify['VALUE']) : 15; } $bindings = array(); if ($ownerTypeID === CCrmOwnerType::Deal) { $bindings["{$ownerTypeName}_{$ownerID}"] = array('OWNER_TYPE_ID' => $ownerTypeID, 'OWNER_ID' => $ownerID); } $comms = array(); if ($commEntityType !== '') { $comms[] = array('ID' => $commID, 'TYPE' => $commType, 'VALUE' => $commValue, 'ENTITY_ID' => $commEntityID, 'ENTITY_TYPE_ID' => CCrmOwnerType::ResolveID($commEntityType));
public static function PrepareActivityData(&$fields) { $typeID = isset($fields['TYPE_ID']) ? intval($fields['TYPE_ID']) : CCrmActivityType::Undefined; $direction = isset($fields['DIRECTION']) ? intval($fields['DIRECTION']) : CCrmActivityDirection::Undefined; $isCompleted = $fields['COMPLETED'] === 'Y'; $imageFileName = ''; if ($typeID === CCrmActivityType::Call) { $imageFileName = $direction === CCrmActivityDirection::Incoming ? 'call_in' : 'call_out'; } elseif ($typeID === CCrmActivityType::Email) { $imageFileName = $direction === CCrmActivityDirection::Incoming ? 'email_in' : 'email_out'; } elseif ($typeID === CCrmActivityType::Meeting) { $imageFileName = 'cont'; } elseif ($typeID === CCrmActivityType::Task) { $imageFileName = 'check'; } if ($imageFileName !== '' && $isCompleted) { $imageFileName .= '_disabled'; } $imageUrl = $imageFileName !== '' ? SITE_DIR . 'bitrix/templates/mobile_app/images/crm/' . $imageFileName . '.png?ver=1' : ''; $data = array('ID' => $fields['ID'], 'TYPE_ID' => $fields['TYPE_ID'], 'OWNER_ID' => $fields['OWNER_ID'], 'OWNER_TYPE' => CCrmOwnerType::ResolveName($fields['OWNER_TYPE_ID']), 'SUBJECT' => isset($fields['SUBJECT']) ? $fields['SUBJECT'] : '', 'DESCRIPTION' => isset($fields['DESCRIPTION']) ? $fields['DESCRIPTION'] : '', 'LOCATION' => isset($fields['LOCATION']) ? $fields['LOCATION'] : '', 'START_TIME' => isset($fields['START_TIME']) ? CCrmComponentHelper::RemoveSeconds(ConvertTimeStamp(MakeTimeStamp($fields['START_TIME']), 'FULL', SITE_ID)) : '', 'END_TIME' => isset($fields['END_TIME']) ? CCrmComponentHelper::RemoveSeconds(ConvertTimeStamp(MakeTimeStamp($fields['END_TIME']), 'FULL', SITE_ID)) : '', 'DEAD_LINE' => isset($fields['DEAD_LINE']) ? CCrmComponentHelper::RemoveSeconds(ConvertTimeStamp(MakeTimeStamp($fields['DEAD_LINE']), 'FULL', SITE_ID)) : '', 'COMPLETED' => isset($fields['COMPLETED']) ? $fields['COMPLETED'] === 'Y' : false, 'PRIORITY' => isset($fields['PRIORITY']) ? intval($fields['PRIORITY']) : CCrmActivityPriority::None, 'IS_IMPORTANT' => isset($fields['IS_IMPORTANT']) ? $fields['IS_IMPORTANT'] : false, 'IS_EXPIRED' => isset($fields['IS_EXPIRED']) ? $fields['IS_EXPIRED'] : false, 'OWNER_TITLE' => isset($fields['OWNER_TITLE']) ? $fields['OWNER_TITLE'] : '', 'SHOW_URL' => isset($fields['SHOW_URL']) ? $fields['SHOW_URL'] : '', 'LIST_IMAGE_URL' => $imageUrl, 'VIEW_IMAGE_URL' => $imageUrl, 'STORAGE_TYPE_ID' => $fields['STORAGE_TYPE_ID'], 'FILES' => isset($fields['FILES']) ? $fields['FILES'] : array(), 'WEBDAV_ELEMENTS' => isset($fields['WEBDAV_ELEMENTS']) ? $fields['WEBDAV_ELEMENTS'] : array()); //COMMUNICATIONS if (isset($fields['COMMUNICATIONS'])) { $communications = $fields['COMMUNICATIONS']; foreach ($communications as &$comm) { CCrmActivity::PrepareCommunicationInfo($comm); $comm['ENTITY_TYPE'] = CCrmOwnerType::ResolveName($comm['ENTITY_TYPE_ID']); unset($comm['ENTITY_TYPE_ID']); if (isset($comm['ENTITY_SETTINGS'])) { // entity settings is useless for client unset($comm['ENTITY_SETTINGS']); } } unset($comm); $data['COMMUNICATIONS'] = $communications; } return $data; }