...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/sip_helper.php
- Класс: \CCrmSipHelper
- Вызов: CCrmSipHelper::getEntityFields
static function getEntityFields($entityTypeID, $entityID, $params = array()) { $fields = null; $userID = isset($params['USER_ID']) ? intval($params['USER_ID']) : 0; if ($userID <= 0) { $userID = CCrmPerms::GetCurrentUserID(); } $isAdmin = CCrmPerms::IsAdmin($userID); $userPermissions = CCrmPerms::GetUserPermissions($userID); $enableExtendedMode = isset($params['ENABLE_EXTENDED_MODE']) ? (bool)$params['ENABLE_EXTENDED_MODE'] : true; if ($entityTypeID === CCrmOwnerType::Contact) { $contactFactory = Container::getInstance()->getFactory(\CCrmOwnerType::Contact); if (!$contactFactory) { return null; } $contactItem = $contactFactory->getItem($entityID); if (!$contactItem) { return null; } $companyId = $contactItem->getCompanyId(); $fields = [ 'ID' => $contactItem->getId(), 'FORMATTED_NAME' => $contactItem->getHeading() ?? '', 'PHOTO' => $contactItem->get(Item\Contact::FIELD_NAME_PHOTO) ?? 0, 'COMPANY_ID' => $companyId ?? 0, 'COMPANY_TITLE' => static::getCompanyTitle($companyId) ?? '', 'POST' => $contactItem->getPost() ?? '', 'ASSIGNED_BY_ID' => $contactItem->getAssignedById() ?? 0, 'CAN_READ' => CCrmContact::CheckReadPermission($entityID, $userPermissions) ]; if ($fields['CAN_READ'] && $enableExtendedMode) { self::setFieldsEntities($fields, $entityTypeID, $entityID, $userID, $isAdmin); $invoiceIds = \Bitrix\Crm\Binding\EntityContactTable::getEntityIds(\CCrmOwnerType::SmartInvoice, $entityID); if (!empty($invoiceIds)) { $fields['SMART_INVOICES'] = static::loadSmartInvoices([ '@ID' => $invoiceIds, ]); } } } elseif ($entityTypeID === CCrmOwnerType::Company) { $companyFactory = Container::getInstance()->getFactory(\CCrmOwnerType::Company); if (!$companyFactory) { return null; } $companyItem = $companyFactory->getItem($entityID); if (!$companyItem) { return null; } $companyTitle = $companyItem->getTitle(); $companyLogo = $companyItem->get(Item\Company::FIELD_NAME_LOGO); $companyAssignedBy = $companyItem->getAssignedById(); $fields = [ 'ID' => $companyItem->getId(), 'TITLE' => $companyTitle ?? '', 'LOGO' => $companyLogo ?? 0, 'ASSIGNED_BY_ID' => $companyAssignedBy ?? 0, 'CAN_READ' => CCrmCompany::CheckReadPermission($entityID, $userPermissions) ]; if ($fields['CAN_READ'] && $enableExtendedMode) { self::setFieldsEntities($fields, $entityTypeID, $entityID, $userID, $isAdmin); $fields['SMART_INVOICES'] = static::loadSmartInvoices([ '=COMPANY_ID' => $entityID, ]); } } elseif ($entityTypeID === CCrmOwnerType::Lead) { $leadFactory = Container::getInstance()->getFactory(\CCrmOwnerType::Lead); if (!$leadFactory) { return null; } $leadItem = $leadFactory->getItem($entityID); if (!$leadItem) { return null; } $companyId = $leadItem->getCompanyId(); $fields = [ 'ID' => $leadItem->getId(), 'TITLE' => $leadItem->getTitle() ?? '', 'FORMATTED_NAME' => $leadItem->getHeading() ?? '', 'COMPANY_TITLE' => static::getCompanyTitle($companyId) ?? '', 'POST' => $leadItem->getPost() ?? '', 'ASSIGNED_BY_ID' => $leadItem->getAssignedById() ?? 0, 'CAN_READ' => CCrmLead::CheckReadPermission($entityID, $userPermissions), 'IS_FINAL' => \Bitrix\Crm\PhaseSemantics::isFinal(CCrmLead::GetSemanticID($leadItem->get(Item\Lead::FIELD_NAME_STATUS_ID))), 'STATUS_TEXT' => static::getStatusText(\CCrmOwnerType::Lead, $leadItem->getIsReturnCustomer(), false), 'STATUS_COLOR' => static::getStatusColor(\CCrmOwnerType::Lead), 'LEAD' => static::getLeadData($leadItem, $leadFactory), ]; } if (!is_array($fields)) { return null; } if ($fields['CAN_READ'] && $enableExtendedMode) { $showUrl = $fields['SHOW_URL'] = CCrmOwnerType::GetEntityShowPath($entityTypeID, $entityID); $defaultFormId = ''; switch ($entityTypeID) { case CCrmOwnerType::Lead: $defaultFormId = CCrmLead::DEFAULT_FORM_ID; break; case CCrmOwnerType::Contact: $defaultFormId = CCrmContact::DEFAULT_FORM_ID; break; case CCrmOwnerType::Company: $defaultFormId = CCrmCompany::DEFAULT_FORM_ID; break; } if ($showUrl !== '' && $defaultFormId != '') { $fields['ACTIVITY_LIST_URL'] = CCrmUrlUtil::AddUrlParams( $showUrl, array("{$defaultFormId}_active_tab" => 'tab_activity') ); $fields['INVOICE_LIST_URL'] = CCrmUrlUtil::AddUrlParams( $showUrl, array("{$defaultFormId}_active_tab" => 'tab_invoice') ); if ($entityTypeID === CCrmOwnerType::Contact || $entityTypeID === CCrmOwnerType::Company) { $fields['DEAL_LIST_URL'] = CCrmUrlUtil::AddUrlParams( $showUrl, array("{$defaultFormId}_active_tab" => 'tab_deal') ); } } $activities = array(); // We can skip permissions check, because user should be able to read activities, // bound to the entity, that he is able to read (see $fields['CAN_READ']) $dbActivity = CCrmActivity::GetList( array('DEADLINE' => 'ASC'), array( 'COMPLETED' => 'N', 'BINDINGS' => array(array('OWNER_TYPE_ID' => $entityTypeID, 'OWNER_ID' => $entityID)), 'CHECK_PERMISSIONS' => 'N' ), false, array('nTopCount' => 4), array('ID', 'SUBJECT', 'START_TIME', 'END_TIME', 'DEADLINE'), array('PERMS' => $userPermissions) ); if (is_object($dbActivity)) { while ($activityFields = $dbActivity->Fetch()) { $activityFields['SHOW_URL'] = CCrmOwnerType::GetEntityShowPath(CCrmOwnerType::Activity, $activityFields['ID']); if(CCrmDateTimeHelper::IsMaxDatabaseDate($activityFields['DEADLINE'])) { $activityFields['DEADLINE'] = ''; } $activities[] = &$activityFields; unset($activityFields); } } $fields['ACTIVITIES'] = &$activities; unset($activities); } return $fields; }