if (isset($_REQUEST['MODIFY_BY_ID_name']) && $_REQUEST['MODIFY_BY_ID_name'] === '') { $_REQUEST['MODIFY_BY_ID'] = $_GET['MODIFY_BY_ID'] = array(); } if (isset($_REQUEST['ASSIGNED_BY_ID_name']) && $_REQUEST['ASSIGNED_BY_ID_name'] === '') { $_REQUEST['ASSIGNED_BY_ID'] = $_GET['ASSIGNED_BY_ID'] = array(); } } if (intval($arParams['CONTACT_COUNT']) <= 0) { $arParams['CONTACT_COUNT'] = 20; } $arNavParams = array('nPageSize' => $arParams['CONTACT_COUNT']); $arNavigation = CDBResult::GetNavParams($arNavParams); $CGridOptions = new CCrmGridOptions($arResult['GRID_ID'], $arResult['FILTER_PRESETS']); $arNavParams = $CGridOptions->GetNavParams($arNavParams); $arNavParams['bShowAll'] = false; $arFilter += $CGridOptions->GetFilter($arResult['FILTER']); $USER_FIELD_MANAGER->AdminListAddFilter(CCrmContact::$sUFEntityID, $arFilter); // converts data from filter if (isset($arFilter['FIND_list']) && !empty($arFilter['FIND'])) { $arFilter[strtoupper($arFilter['FIND_list'])] = $arFilter['FIND']; unset($arFilter['FIND_list'], $arFilter['FIND']); } CCrmEntityHelper::PrepareMultiFieldFilter($arFilter); $arImmutableFilters = array('FM', 'ID', 'COMPANY_ID', 'ASSIGNED_BY_ID', 'CREATED_BY_ID', 'MODIFY_BY_ID', 'TYPE_ID', 'SOURCE_ID'); foreach ($arFilter as $k => $v) { if (in_array($k, $arImmutableFilters, true)) { continue; } $arMatch = array(); if ($k === 'ORIGINATOR_ID') { // HACK: build filter by internal entities
$exists = intval($locID > 0) && is_array(CCrmLocations::GetByID($locID)); } ######################## ######################## ######################## // LIST if ($arParams['TYPE'] == 'list') { $parentId = false; // STEP UP IN LIST if (CSaleLocation::isLocationProEnabled()) { $filterParentId = false; if (isset($_REQUEST['PARENT_ID'])) { $filterParentId = intval($_REQUEST['PARENT_ID']); } else { $gridOpts = new CCrmGridOptions('CRM_LOC_LIST'); $filter = $gridOpts->GetFilter(array()); if (isset($filter['PARENT_ID'])) { $filterParentId = intval($filter['PARENT_ID']); } } if ($filterParentId !== false) { $res = Location\LocationTable::getByID($filterParentId)->fetch(); if (!!$res['ID']) { $parentId = intval($res['PARENT_ID']); $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_LOC_STEP_UP'), 'TITLE' => GetMessage('CRM_LOC_STEP_UP_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_LOCATIONS_LIST'], array()) . '?PARENT_ID=' . $parentId, 'ICON' => 'btn-list'); } } } // ADD IN LIST if ($locAdd) { $arResult['BUTTONS'][] = array('TEXT' => GetMessage('CRM_LOC_ADD'), 'TITLE' => GetMessage('CRM_LOC_ADD_TITLE'), 'LINK' => CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_LOCATIONS_ADD'], array()) . ($filterParentId ? '?PARENT_ID=' . $filterParentId : ''), 'ICON' => 'btn-new');
if ($itemPerPage <= 0) { $itemPerPage = 20; } $arParams['ITEM_PER_PAGE'] = $itemPerPage; $sort = array('LAST_NAME' => 'ASC', 'NAME' => 'ASC'); $filter = array(); $navParams = array('nPageSize' => $itemPerPage, 'iNumPage' => $enablePaging ? false : 1, 'bShowAll' => false); $select = array('ID', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'POST', 'PHOTO', 'ASSIGNED_BY_ID', 'ASSIGNED_BY_LOGIN', 'ASSIGNED_BY_NAME', 'ASSIGNED_BY_SECOND_NAME', 'ASSIGNED_BY_LAST_NAME', 'COMPANY_ID', 'COMPANY_TITLE', 'COMMENTS'); $navigation = CDBResult::GetNavParams($navParams); $CGridOptions = new CCrmGridOptions($arResult['UID']); $navParams = $CGridOptions->GetNavParams($navParams); $navParams['bShowAll'] = false; $arResult['GRID_FILTER_ID'] = ''; $arResult['GRID_FILTER_NAME'] = ''; if ($enableSearch) { $filter += $CGridOptions->GetFilter($arResult['FILTER']); if (empty($filter)) { $enableSearch = $arResult['ENABLE_SEARCH'] = false; $arResult['GRID_FILTER_NAME'] = GetMessage('M_CRM_DEAL_LIST_FILTER_NONE'); } else { if (isset($filter['GRID_FILTER_APPLIED']) && $filter['GRID_FILTER_APPLIED'] && isset($filter['GRID_FILTER_ID'])) { $filterID = $filter['GRID_FILTER_ID']; $arResult['GRID_FILTER_ID'] = $filterID; $arResult['GRID_FILTER_NAME'] = isset($arResult['FILTER_PRESETS'][$filterID]) ? $arResult['FILTER_PRESETS'][$filterID]['name'] : GetMessage('M_CRM_CONTACT_LIST_FILTER_CUSTOM'); } else { $arResult['GRID_FILTER_NAME'] = GetMessage('M_CRM_CONTACT_LIST_FILTER_CUSTOM'); } if (isset($filter['FULL_NAME'])) { $filter['%FULL_NAME'] = $filter['FULL_NAME']; unset($filter['FULL_NAME']); }
$filter = array('CATALOG_ID' => $catalogID); if ($activeSectionID > 0) { $filter['SECTION_ID'] = $activeSectionID; } $itemPerPage = isset($arParams['ITEM_PER_PAGE']) ? intval($arParams['ITEM_PER_PAGE']) : 0; if ($itemPerPage <= 0) { $itemPerPage = 20; } $arParams['ITEM_PER_PAGE'] = $itemPerPage; $navParams = array('nPageSize' => $itemPerPage, 'iNumPage' => $enablePaging ? false : 1, 'bShowAll' => false); $navigation = CDBResult::GetNavParams($navParams); $CGridOptions = new CCrmGridOptions($arResult['UID']); $navParams = $CGridOptions->GetNavParams($navParams); $navParams['bShowAll'] = !$enablePaging; if ($enableSearch) { $filter += $CGridOptions->GetFilter(array(array('id' => 'NAME'))); if (!empty($filter)) { if (isset($filter['NAME'])) { $filter['%NAME'] = $filter['NAME']; unset($filter['NAME']); } } else { $enableSearch = $arResult['ENABLE_SEARCH'] = false; } } $arResult['PRODUCTS'] = array(); $arPricesSelect = $arVatsSelect = array(); $select = CCrmProduct::DistributeProductSelect($select, $arPricesSelect, $arVatsSelect); $dbProducts = CCrmProduct::GetList($sort, $filter, $select, $navParams); $dbProducts->NavStart($navParams['nPageSize'], false); $arResult['PAGE_NAVNUM'] = intval($dbProducts->NavNum);
foreach ($arEntityID as $entityID) { $isPermitted = CCrmActivity::CheckReadPermission(CCrmOwnerType::ResolveID($entityType), $entityID, $userPermissions); if (!$isPermitted) { break; } } } if (!$isPermitted) { echo CUtil::PhpToJSObject(array('ERROR' => GetMessage('CRM_PERMISSION_DENIED'))); die; } // <--PERMISSIONS CHECK if (empty($arEntityID) && $gridID !== '') { //Apply grid filter if ids is not defined $gridOptions = new CCrmGridOptions($gridID); $gridFilter = $gridOptions->GetFilter(array()); //Clear service fields if (isset($gridFilter['GRID_FILTER_APPLIED'])) { unset($gridFilter['GRID_FILTER_APPLIED']); } if (isset($gridFilter['GRID_FILTER_ID'])) { unset($gridFilter['GRID_FILTER_ID']); } if (is_array($gridFilter) && !empty($gridFilter)) { $dbEntities = null; if ($entityType === 'LEAD') { CCrmLead::PrepareFilter($gridFilter); $dbEntities = CCrmLead::GetListEx(array(), $gridFilter, false, false, array('ID')); } elseif ($entityType === 'DEAL') { CCrmDeal::PrepareFilter($gridFilter); $dbEntities = CCrmDeal::GetListEx(array(), $gridFilter, false, false, array('ID'));
if (strlen($sEmailFrom) === 0) { // Using current user email $userName = $USER->GetFullName(); $sEmailFrom = strlen($userName) > 0 ? $USER->GetFullName() . ' <' . $USER->GetEmail() . '>' : $USER->GetEmail(); } $arResult['EMAIL_FROM'] = $sEmailFrom; $arResult['COMMENTS'] = COption::GetOptionString('crm', 'email_template'); if ($arResult['ENTITY_ID'] == 'all') { $eventPage = isset($_REQUEST['EVENT_PAGE']) ? $_REQUEST['EVENT_PAGE'] : ''; if ($eventPage !== '') { // HACK: for filter unique id $arUrl = parse_url($eventPage); $GLOBALS['APPLICATION']->SetCurPage($arUrl['path']); } $CGridOptions = new CCrmGridOptions('CRM_' . $arResult['ENTITY_TYPE'] . '_LIST'); $arFilter = $CGridOptions->GetFilter(is_array($arResult['FILTER']) ? $arResult['FILTER'] : array()); // converts data from filter if (isset($arFilter['FIND_list']) && !empty($arFilter['FIND'])) { $arFilter[strtoupper($arFilter['FIND_list'])] = $arFilter['FIND']; unset($arFilter['FIND_list'], $arFilter['FIND']); } // Preparing to filter by entity multi fields CCrmEntityHelper::PrepareMultiFieldFilter($arFilter); $arImmutableFilters = array('FM', 'ID', 'COMPANY_ID', 'CURRENCY_ID', 'CONTACT_ID', 'ASSIGNED_BY_ID', 'CREATED_BY_ID', 'MODIFY_BY_ID', 'PRODUCT_ROW_PRODUCT_ID'); $arFilter2logic = array('TITLE', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'POST', 'ADDRESS', 'COMMENTS', 'BANKING_DETAILS', 'COMPANY_TITLE'); foreach ($arFilter as $k => $v) { if (in_array($k, $arImmutableFilters, true)) { continue; } $arMatch = array(); if ($k === 'ORIGINATOR_ID') {
$actionData['AJAX_CALL'] = false; if (isset($_GET['AJAX_CALL'])) { $actionData['AJAX_CALL'] = true; // Must be transfered to main.interface.grid //unset($_GET['AJAX_CALL'], $_REQUEST['AJAX_CALL']); } } } } // <-- Try to extract user action data $arNavParams = array('nPageSize' => $arParams['PRODUCT_COUNT']); $arNavigation = CDBResult::GetNavParams($arParams['PRODUCT_COUNT']); $CGridOptions = new CCrmGridOptions($arResult['GRID_ID']); $arNavParams = $CGridOptions->GetNavParams($arNavParams); $arNavParams['bShowAll'] = false; $arFilter = $gridFilter = $CGridOptions->GetFilter($arResult['FILTER']); $arFilter['CATALOG_ID'] = $catalogID; $sectionID = isset($arParams['~SECTION_ID']) ? intval($arParams['~SECTION_ID']) : 0; $bFilterSection = $bTree || !isset($arFilter['GRID_FILTER_APPLIED']) || !$arFilter['GRID_FILTER_APPLIED'] || isset($arFilter['LIST_SECTION_ID']) && $arFilter['LIST_SECTION_ID'] !== ''; if ($bFilterSection) { if (!$bTree && isset($arFilter['GRID_FILTER_APPLIED']) && $arFilter['GRID_FILTER_APPLIED'] && isset($arFilter['LIST_SECTION_ID'])) { $sectionID = intval($arFilter['LIST_SECTION_ID']); } $arFilter['SECTION_ID'] = $sectionID; } // reset section filter HACK if (!is_array($_SESSION['main.interface.grid'])) { $_SESSION['main.interface.grid'] = array(); } if (!is_array($_SESSION['main.interface.grid'][$arResult['GRID_ID']])) { $_SESSION['main.interface.grid'][$arResult['GRID_ID']] = array();
$dbRes = new CDBResult(); $dbRes->InitNavStartVars(); } else { $dataUid = $uid . '_' . strtolower(CCrmOwnerType::CompanyName); $arResult['ENTITY_DATA'][CCrmOwnerType::CompanyName] = array('UID' => $dataUid, 'ITEMS' => array()); $sort = $companySort; $select = $companySelect; $filter = array(); $filterFields = array(array('id' => 'ID'), array('id' => 'TITLE'), array('id' => 'CONTACT_ID')); $navParams = array('nPageSize' => $itemPerPage, 'iNumPage' => $enablePaging ? false : 1, 'bShowAll' => false); $navigation = CDBResult::GetNavParams($navParams); $CGridOptions = new CCrmGridOptions($dataUid); $navParams = $CGridOptions->GetNavParams($navParams); $navParams['bShowAll'] = false; if ($enableSearch) { $filter += $CGridOptions->GetFilter($filterFields); if (!empty($filter)) { if (isset($filter['CONTACT_ID'])) { //HACK: Geting contact company. $dbRes = CCrmContact::GetListEx($contactSort, array('=ID' => $filter['CONTACT_ID']), false, false, array('COMPANY_ID')); $contact = $item = $dbRes->Fetch(); if (is_array($contact)) { $filter['=ID'] = $contact['COMPANY_ID']; } unset($filter['CONTACT_ID']); } if (isset($filter['TITLE'])) { $filter['%TITLE'] = $filter['TITLE']; unset($filter['TITLE']); } } else {