- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_search.php
- Класс: \CCrmSearch
- Вызов: CCrmSearch::OnSearchReindex
static function OnSearchReindex($NS = array(), $oCallback = null, $callback_method = '')
{
$arFilter = array();
$ENTITY_TYPE = 'LEAD';
if (isset($NS['ID']) && $NS['ID'] <> '' && preg_match('/^[A-Z]+\.\d+$/'.BX_UTF_PCRE_MODIFIER, $NS['ID']))
{
$arTemp = explode('.', $NS['ID']);
$ENTITY_TYPE = $arTemp[0];
//Start processing from next entity
$arFilter['>ID'] = intval($arTemp[1]);
}
self::$oCallback = $oCallback;
self::$callback_method = $callback_method;
self::$bReIndex = true;
$arAllResult = array();
if ($ENTITY_TYPE == 'LEAD')
{
$arResult = self::UpdateSearch($arFilter, 'LEAD');
if(is_array($arResult))
{
//Save leads and go to contacts
$arAllResult = array_merge($arAllResult, $arResult);
$ENTITY_TYPE = 'CONTACT';
if(!empty($arFilter))
{
$arFilter = array();
}
}
else
{
//Termination of process
self::$bReIndex = false;
self::$oCallback = null;
self::$callback_method = '';
return $arResult;
}
}
if ($ENTITY_TYPE == 'CONTACT')
{
$arResult = self::UpdateSearch($arFilter, 'CONTACT');
if (is_array($arResult))
{
//Save contacts and go to companies
$arAllResult = array_merge($arAllResult, $arResult);
$ENTITY_TYPE = 'COMPANY';
if(!empty($arFilter))
{
$arFilter = array();
}
}
else
{
//Termination of process
self::$bReIndex = false;
self::$oCallback = null;
self::$callback_method = '';
return $arResult;
}
}
if ($ENTITY_TYPE == 'COMPANY')
{
$arResult = self::UpdateSearch($arFilter, 'COMPANY');
if (is_array($arResult))
{
//Save companies and go to deals
$arAllResult = array_merge($arAllResult, $arResult);
$ENTITY_TYPE = 'DEAL';
if(!empty($arFilter))
{
$arFilter = array();
}
}
else
{
//Termination of process
self::$bReIndex = false;
self::$oCallback = null;
self::$callback_method = '';
return $arResult;
}
}
if ($ENTITY_TYPE == 'DEAL')
{
$arResult = self::UpdateSearch($arFilter, 'DEAL');
if (is_array($arResult))
{
//Save deals and go to invoices
$arAllResult = array_merge($arAllResult, $arResult);
$ENTITY_TYPE = 'INVOICE';
if(!empty($arFilter))
{
$arFilter = array();
}
}
else
{
self::$bReIndex = false;
self::$oCallback = null;
self::$callback_method = '';
return $arResult;
}
}
if ($ENTITY_TYPE == 'INVOICE')
{
$arResult = self::UpdateSearch($arFilter, 'INVOICE');
if (is_array($arResult))
{
//Save deals and go to quotes
$arAllResult = array_merge($arAllResult, $arResult);
$ENTITY_TYPE = 'QUOTE';
if(!empty($arFilter))
{
$arFilter = array();
}
}
else
{
self::$bReIndex = false;
self::$oCallback = null;
self::$callback_method = '';
return $arResult;
}
}
if ($ENTITY_TYPE == 'QUOTE')
{
$arResult = self::UpdateSearch($arFilter, 'QUOTE');
if (is_array($arResult))
{
$arAllResult = array_merge($arAllResult, $arResult);
}
else
{
self::$bReIndex = false;
self::$oCallback = null;
self::$callback_method = '';
return $arResult;
}
}
self::$bReIndex = false;
self::$oCallback = null;
self::$callback_method = '';
if($oCallback)
{
return false;
}
return $arAllResult;
}