...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_quote.php
- Класс: \CAllCrmQuote
- Вызов: CAllCrmQuote::BuildSearchCard
static function BuildSearchCard($arQuote, $bReindex = false) { $arStatuses = array(); $arSite = array(); $sEntityType = 'QUOTE'; $sTitle = 'TITLE'; $sNumber = 'QUOTE_NUMBER'; $arSearchableFields = array( 'DATE_CREATE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_DATE_CREATE'), 'STATUS_ID' => GetMessage('CRM_QUOTE_SEARCH_FIELD_STATUS_ID_MSGVER_1'), 'BEGINDATE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_BEGINDATE'), 'CLOSEDATE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLOSEDATE'), 'OPPORTUNITY' => GetMessage('CRM_QUOTE_SEARCH_FIELD_OPPORTUNITY'), 'COMMENTS' => GetMessage('CRM_QUOTE_SEARCH_FIELD_COMMENTS'), 'CLIENT_TITLE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_TITLE'), 'CLIENT_ADDR' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_ADDR'), 'CLIENT_CONTACT' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_CONTACT'), 'CLIENT_EMAIL' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_EMAIL'), 'CLIENT_PHONE' => GetMessage('CRM_QUOTE_SEARCH_FIELD_CLIENT_PHONE'), 'CLIENT_TP_ID' => GetMessage('CRM_QUOTE_SEARCH_FIELD_TP_ID'), 'CLIENT_TPA_ID' => GetMessage('CRM_QUOTE_SEARCH_FIELD_TPA_ID') ); $sBody = $arQuote[$sNumber].', '.$arQuote[$sTitle]."\n"; $arField2status = array( 'STATUS_ID' => 'QUOTE_STATUS' ); $site = new CSite(); foreach (array_keys($arSearchableFields) as $k) { if (!isset($arQuote[$k])) continue; $v = $arQuote[$k]; if($k === 'COMMENTS') { $v = CSearch::KillTags($v); } $v = trim($v); if ($k === 'DATE_CREATE' || $k === 'BEGINDATE' || $k === 'CLOSEDATE') { $dateFormatShort = $site->GetDateFormat('SHORT'); if (!CheckDateTime($v, $dateFormatShort)) { $v = ConvertTimeStamp(strtotime($v), 'SHORT'); } if (CheckDateTime($v, $dateFormatShort)) { $v = FormatDate('SHORT', MakeTimeStamp($v, $dateFormatShort)); } else { $v = null; } } if (isset($arField2status[$k])) { if (!isset($arStatuses[$k])) $arStatuses[$k] = CCrmStatus::GetStatusList($arField2status[$k]); $v = $arStatuses[$k][$v]; } if ($k === 'OPPORTUNITY') $v = number_format(doubleval($v), 2, '.', ''); if (!empty($v) && (!is_numeric($v) || $k === 'OPPORTUNITY') && $v != 'N' && $v != 'Y') $sBody .= $arSearchableFields[$k].": $v\n"; } if ((isset($arQuote['ASSIGNED_BY_NAME']) && !empty($arQuote['ASSIGNED_BY_NAME'])) || (isset($arQuote['ASSIGNED_BY_LAST_NAME']) && !empty($arQuote['ASSIGNED_BY_LAST_NAME'])) || (isset($arQuote['ASSIGNED_BY_SECOND_NAME']) && !empty($arQuote['ASSIGNED_BY_SECOND_NAME']))) { $responsibleInfo = CUser::FormatName( $site->GetNameFormat(null, $arQuote['LID'] ?? null), array( 'LOGIN' => '', 'NAME' => isset($arQuote['ASSIGNED_BY_NAME']) ? $arQuote['ASSIGNED_BY_NAME'] : '', 'LAST_NAME' => isset($arQuote['ASSIGNED_BY_LAST_NAME']) ? $arQuote['ASSIGNED_BY_LAST_NAME'] : '', 'SECOND_NAME' => isset($arQuote['ASSIGNED_BY_SECOND_NAME']) ? $arQuote['ASSIGNED_BY_SECOND_NAME'] : '' ), false, false ); if (isset($arQuote['ASSIGNED_BY_EMAIL']) && !empty($arQuote['ASSIGNED_BY_EMAIL'])) $responsibleInfo .= ', '.$arQuote['ASSIGNED_BY_EMAIL']; if (isset($arQuote['ASSIGNED_BY_WORK_POSITION']) && !empty($arQuote['ASSIGNED_BY_WORK_POSITION'])) $responsibleInfo .= ', '.$arQuote['ASSIGNED_BY_WORK_POSITION']; if (!empty($responsibleInfo) && !is_numeric($responsibleInfo) && $responsibleInfo != 'N' && $responsibleInfo != 'Y') $sBody .= GetMessage('CRM_QUOTE_SEARCH_FIELD_ASSIGNED_BY_INFO').": $responsibleInfo\n"; } $sDetailURL = CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_'.mb_strtolower($sEntityType).'_show'), array( mb_strtolower($sEntityType).'_id' => $arQuote['ID'] ) ); $_arAttr = \Bitrix\Crm\Security\Manager::resolveController($sEntityType) ->getPermissionAttributes($sEntityType, [$arQuote['ID']]) ; if (empty($arSite)) { $rsSite = $site->GetList(); while ($_arSite = $rsSite->Fetch()) $arSite[] = $_arSite['ID']; } unset($site); $sattr_d = ''; $sattr_s = ''; $sattr_u = ''; $sattr_o = ''; $sattr2 = ''; $arAttr = array(); if (!isset($_arAttr[$arQuote['ID']])) $_arAttr[$arQuote['ID']] = array(); $arAttr[] = $sEntityType; // for perm X foreach ($_arAttr[$arQuote['ID']] as $_s) { if ($_s[0] == 'U') $sattr_u = $_s; else if ($_s[0] == 'D') $sattr_d = $_s; else if ($_s[0] == 'S') $sattr_s = $_s; else if ($_s[0] == 'O') $sattr_o = $_s; $arAttr[] = $sEntityType.'_'.$_s; } $sattr = $sEntityType.'_'.$sattr_u; if (!empty($sattr_d)) { $sattr .= '_'.$sattr_d; $arAttr[] = $sattr; } if (!empty($sattr_s)) { $sattr2 = $sattr.'_'.$sattr_s; $arAttr[] = $sattr2; $arAttr[] = $sEntityType.'_'.$sattr_s; // for perm X in status } if (!empty($sattr_o)) { $sattr .= '_'.$sattr_o; $sattr3 = $sattr2.'_'.$sattr_o; $arAttr[] = $sattr3; $arAttr[] = $sattr; } $arSitePath = array(); foreach ($arSite as $sSite) $arSitePath[$sSite] = $sDetailURL; $arResult = Array( 'LAST_MODIFIED' => $arQuote['DATE_MODIFY'], 'DATE_FROM' => $arQuote['DATE_CREATE'], 'TITLE' => GetMessage('CRM_'.$sEntityType).': '.$arQuote[$sNumber].', '.$arQuote[$sTitle], 'PARAM1' => $sEntityType, 'PARAM2' => $arQuote['ID'], 'SITE_ID' => $arSitePath, 'PERMISSIONS' => $arAttr, 'BODY' => $sBody, 'TAGS' => 'crm,'.mb_strtolower($sEntityType).','.GetMessage('CRM_'.$sEntityType) ); if ($bReindex) $arResult['ID'] = $sEntityType.'.'.$arQuote['ID']; return $arResult; }