$arResult['ITEMS'] = array(); $dbRes = CCrmActivity::GetList($sort, $filter, false, $navParams, $select); $dbRes->NavStart($navParams['nPageSize'], false); $arResult['PAGE_NAVNUM'] = intval($dbRes->NavNum); // pager index $arResult['PAGE_NUMBER'] = intval($dbRes->NavPageNomer); // current page index $arResult['PAGE_NAVCOUNT'] = intval($dbRes->NavPageCount); // page count $arResult['PAGER_PARAM'] = "PAGEN_{$arResult['PAGE_NAVNUM']}"; $arResult['PAGE_NEXT_NUMBER'] = $arResult['PAGE_NUMBER'] + 1; while ($item = $dbRes->Fetch()) { $itemID = intval($item['ID']); $ownerID = intval($item['OWNER_ID']); $ownerTypeID = intval($item['OWNER_TYPE_ID']); CCrmMobileHelper::PrepareActivityItem($item, $arParams, array('ENABLE_COMMUNICATIONS' => false)); $arResult['ITEMS'][] =& $item; unset($item); } if ($arResult['PAGE_NEXT_NUMBER'] > $arResult['PAGE_NAVCOUNT']) { $arResult['NEXT_PAGE_URL'] = ''; } else { $arResult['NEXT_PAGE_URL'] = $APPLICATION->GetCurPageParam('AJAX_CALL=Y&PAGING=Y&FORMAT=json&' . $arResult['PAGER_PARAM'] . '=' . $arResult['PAGE_NEXT_NUMBER'], array('AJAX_CALL', 'PAGING', 'FORMAT', 'SEARCH', $arResult['PAGER_PARAM'])); } $arResult['SEARCH_PAGE_URL'] = $APPLICATION->GetCurPageParam('AJAX_CALL=Y&SEARCH=Y&FORMAT=json&apply_filter=Y&save=Y', array('AJAX_CALL', 'SEARCH', 'FORMAT', 'save', 'apply_filter', 'clear_filter')); $arResult['SERVICE_URL'] = SITE_DIR . 'bitrix/components/bitrix/mobile.crm.activity.list/ajax.php?siteID=' . SITE_ID . '&' . bitrix_sessid_get(); $arResult['IS_FILTERED'] = !empty($filter); $arResult['CREATE_CALL_URL'] = $arParams['ACTIVITY_CREATE_URL_TEMPLATE'] !== '' ? CComponentEngine::makePathFromTemplate($arParams['ACTIVITY_CREATE_URL_TEMPLATE'], array('owner_type' => $entityTypeName, 'owner_id' => $entityID, 'type_id' => CCrmActivityType::Call)) : ''; $arResult['CREATE_MEETING_URL'] = $arParams['ACTIVITY_CREATE_URL_TEMPLATE'] !== '' ? CComponentEngine::makePathFromTemplate($arParams['ACTIVITY_CREATE_URL_TEMPLATE'], array('owner_type' => $entityTypeName, 'owner_id' => $entityID, 'type_id' => CCrmActivityType::Meeting)) : ''; $arResult['CREATE_EMAIL_URL'] = $arParams['ACTIVITY_CREATE_URL_TEMPLATE'] !== '' ? CComponentEngine::makePathFromTemplate($arParams['ACTIVITY_CREATE_URL_TEMPLATE'], array('owner_type' => $entityTypeName, 'owner_id' => $entityID, 'type_id' => CCrmActivityType::Email)) : ''; $arResult['RELOAD_URL'] = $APPLICATION->GetCurPageParam('AJAX_CALL=Y&FORMAT=json', array('AJAX_CALL', 'SEARCH', 'FORMAT', 'save', 'apply_filter', 'clear_filter'));
} if (empty($comms) && $companyID > 0 && CCrmActivity::CheckUpdatePermission(CCrmOwnerType::Company, $companyID, $userPerms)) { $commValue = CCrmActivity::GetDefaultCommunicationValue(CCrmOwnerType::Company, $companyID, $commType); if ($commValue !== '') { $comms[] = array('TYPE' => $commType, 'VALUE' => $commValue, 'ENTITY_TYPE_ID' => CCrmOwnerType::Company, 'ENTITY_ID' => $companyID, 'ENTITY_SETTINGS' => array('COMPANY_TITLE' => isset($deal['COMPANY_TITLE']) ? $deal['COMPANY_TITLE'] : '')); } } } } $arFields['COMMUNICATIONS'] =& $comms; unset($comms); } } } } CCrmMobileHelper::PrepareActivityItem($arFields, $arParams, array('ENABLE_COMMUNICATIONS' => true, 'ENABLE_FILES' => true)); //Trim seconds $arFields['START_TIME'] = CCrmComponentHelper::TrimDateTimeString(FormatDate('FULL', $arFields['START_TIME_STAMP'])); $arFields['END_TIME'] = CCrmComponentHelper::TrimDateTimeString(FormatDate('FULL', $arFields['END_TIME_STAMP'])); $arResult['ENTITY'] = $arFields; unset($arFields); if ($typeID === CCrmActivityType::Call || $typeID === CCrmActivityType::Meeting) { $arResult['NOTIFY_TYPES'] = CCrmActivityNotifyType::PrepareListItems(); } elseif ($typeID === CCrmActivityType::Email) { $arResult['CRM_EMAIL'] = CCrmMailHelper::ExtractEmail(COption::GetOptionString('crm', 'mail', '')); $lastEmailAddresser = CUserOptions::GetOption('crm', 'activity_email_addresser', ''); if ($lastEmailAddresser === '') { $arResult['USER_LAST_USED_NAME'] = ''; $arResult['USER_LAST_USED_EMAIL'] = ''; } else { $info = CCrmMailHelper::ParseEmail($lastEmailAddresser);
$data = isset($_REQUEST['ENTITY_DATA']) && is_array($_REQUEST['ENTITY_DATA']) ? $_REQUEST['ENTITY_DATA'] : array(); if (count($data) == 0) { __CrmMobileActivityEditEndResonse(array('ERROR' => GetMessage('CRM_ENTITY_DATA_NOT_FOUND'))); } $ID = isset($data['ID']) ? intval($data['ID']) : 0; if ($ID <= 0) { __CrmMobileActivityEditEndResonse(array('ERROR' => GetMessage('CRM_ENTITY_ID_NOT_FOUND'))); } $dbItem = CCrmActivity::GetList(array(), array('=ID' => $ID), false, false, array('OWNER_TYPE_ID', 'OWNER_ID')); $item = $dbItem->Fetch(); if (!is_array($item)) { __CrmMobileActivityEditEndResonse(array('ERROR' => GetMessage('CRM_ACTIVITY_NOT_FOUND', array('#ID#' => $ID)))); } $ownerTypeID = isset($item['OWNER_TYPE_ID']) ? intval($item['OWNER_TYPE_ID']) : 0; $ownerID = isset($item['OWNER_ID']) ? intval($item['OWNER_ID']) : 0; if (!CCrmActivity::CheckUpdatePermission($ownerTypeID, $ownerID)) { __CrmMobileActivityEditEndResonse(array('ERROR' => 'Access denied.')); } $completed = (isset($data['COMPLETED']) ? intval($data['COMPLETED']) : 0) > 0; if (CCrmActivity::Complete($ID, $completed, array('REGISTER_SONET_EVENT' => true))) { $dbRes = CCrmActivity::GetList(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => 'N')); $currentItem = $dbRes->Fetch(); $formatParams = isset($_REQUEST['FORMAT_PARAMS']) ? $_REQUEST['FORMAT_PARAMS'] : array(); CCrmMobileHelper::PrepareActivityItem($currentItem, $formatParams, array('ENABLE_COMMUNICATIONS' => true)); __CrmMobileActivityEditEndResonse(array('SAVED_ENTITY_ID' => $ID, 'SAVED_ENTITY_DATA' => CCrmMobileHelper::PrepareActivityData($currentItem))); } else { __CrmMobileActivityEditEndResonse(array('ERROR' => CCrmActivity::GetLastErrorMessage())); } } else { __CrmMobileActivityEditEndResonse(array('ERROR' => 'Action is not supported in current context.')); }
if (!$arFields) { ShowError(GetMessage('CRM_ACTIVITY_VIEW_NOT_FOUND', array('#ID#' => $arParams['ENTITY_ID']))); return; } $ownerTypeID = intval($arFields['OWNER_TYPE_ID']); $ownerID = intval($arFields['OWNER_ID']); if (!CCrmActivity::CheckReadPermission($ownerTypeID, $ownerID, $userPerms)) { ShowError(GetMessage('CRM_PERMISSION_DENIED')); return; } $typeID = isset($arFields['TYPE_ID']) ? intval($arFields['TYPE_ID']) : CCrmActivityType::Undefined; //Permissions --> $canChange = CCrmActivity::CheckUpdatePermission($ownerTypeID, $ownerID, $userPerms); $arResult['PERMISSIONS'] = array('EDIT' => $canChange && $typeID !== CCrmActivityType::Email, 'DELETE' => $canChange); //<-- Permissions CCrmMobileHelper::PrepareActivityItem($arFields, $arParams); //COMMUNICATION $arFields['CLIENT_TITLE'] = ''; $arFields['CLIENT_SHOW_URL'] = ''; $arFields['CLIENT_IMAGE_URL'] = ''; $arFields['CLIENT_LEGEND'] = ''; $arFields['CLIENT_COMPANY_TITLE'] = ''; $arFields['CLIENT_COMPANY_SHOW_URL'] = ''; $arFields['CLIENT_COMMUNICATION_VALUE'] = ''; $comm = is_array($arFields['COMMUNICATIONS']) && isset($arFields['COMMUNICATIONS'][0]) ? $arFields['COMMUNICATIONS'][0] : null; if ($comm) { $arFields['CLIENT_COMMUNICATION_VALUE'] = isset($comm['VALUE']) ? $comm['VALUE'] : ''; $commOwnerTypeID = isset($comm['ENTITY_TYPE_ID']) ? intval($comm['ENTITY_TYPE_ID']) : 0; $commOwnerID = isset($comm['ENTITY_ID']) ? intval($comm['ENTITY_ID']) : 0; if ($commOwnerTypeID === CCrmOwnerType::Company) { $dbRes = CCrmCompany::GetListEx(array(), array('=ID' => $commOwnerID), false, false, array('TITLE', 'LOGO'));