$res = $CCrmFields->UpdateField($arResult['FIELD']['ID'], $arField); } if ($res) { //Save default value for 'SHOW_IN_LIST' if ($arResult['NEW_FIELD']) { $defaultShowInList = CUserOptions::GetOption('crm', 'uf_show_in_list', 'N'); if ($arField['SHOW_IN_LIST'] === 'N' && $defaultShowInList !== 'N') { CUserOptions::DeleteOption('crm', 'uf_show_in_list'); } elseif ($arField['SHOW_IN_LIST'] === 'Y' && $defaultShowInList !== 'Y') { CUserOptions::SetOption('crm', 'uf_show_in_list', 'Y'); } } //Register/Unregister fild in entity list --> $gridID = CCrmGridOptions::GetDefaultGrigID(CCrmOwnerType::ResolveIDByUFEntityID($arResult['ENTITY_ID'])); if ($arField['SHOW_IN_LIST'] === 'Y') { CCrmGridOptions::AddVisibleColumn($gridID, $arResult['FIELD_ID']); } else { CCrmGridOptions::RemoveVisibleColumn($gridID, $arResult['FIELD_ID']); } //<-- Register/Unregister fild in entity list //Clear components cache $GLOBALS['CACHE_MANAGER']->ClearByTag('crm_fields_list_' . $arResult['ENTITY_ID']); //And go to proper page if (isset($_POST['save'])) { LocalRedirect($arResult['~FIELDS_LIST_URL']); } elseif (isset($_POST['apply'])) { LocalRedirect(str_replace(array('#entity_id#', '#field_id#'), array($arResult['ENTITY_ID'], $arResult['FIELD_ID']), $arParams['~FIELD_EDIT_URL'])); } else { LocalRedirect($arResult['~FIELDS_LIST_URL']); } } else {
$fields['SETTINGS']['DEFAULT_VALUE']['VALUE'] = $data['DT_DEFAULT_VALUE']; } if (isset($data['DT_TYPE']) && $data['DT_TYPE'] !== '') { $fields['SETTINGS']['DEFAULT_VALUE']['TYPE'] = $data['DT_TYPE']; } break; } $fields['EDIT_FORM_LABEL'] = array(); $fields['LIST_COLUMN_LABEL'] = array(); $fields['LIST_FILTER_LABEL'] = array(); $langDbResult = CLanguage::GetList($by = '', $order = ''); while ($lang = $langDbResult->Fetch()) { $lid = $lang['LID']; $fields['EDIT_FORM_LABEL'][$lid] = $fields['LIST_COLUMN_LABEL'][$lid] = $fields['LIST_FILTER_LABEL'][$lid] = $formLabel; } global $USER_FIELD_MANAGER; $crmFields = new CCrmFields($USER_FIELD_MANAGER, $entityID); $fieldName = $fields['FIELD_NAME'] = $crmFields->GetNextFieldId(); $userField = new CUserTypeEntity(); $fieldID = $userField->Add($fields); if ($fieldID > 0) { CCrmGridOptions::AddVisibleColumn(CCrmGridOptions::GetDefaultGrigID(CCrmOwnerType::ResolveIDByUFEntityID($entityID)), $fieldName); //Clear components cache $GLOBALS['CACHE_MANAGER']->ClearByTag("crm_fields_list_{$entityID}"); __CrmConfigFieldEditEndResonse(array('RESULT' => array('ID' => $fieldID, 'FIELD_NAME' => $fieldName))); } else { __CrmConfigFieldEditEndResonse(array('ERROR' => "Could not create user feld.")); } } else { __CrmConfigFieldEditEndResonse(array('ERROR' => "Action '{$action}' is not supported in current context.")); }
//Sanitaizing foreach ($arPostField as $k => $v) { if (strpos($k, '~') === 0) { continue; } $arField[$k] = $v; } if (empty($arField)) { continue; } if (!$CCrmFields->UpdateField($ID, $arField)) { continue; } if (isset($arField['SHOW_IN_LIST']) && $arField['SHOW_IN_LIST'] !== $arPresetField['SHOW_IN_LIST']) { if ($arField['SHOW_IN_LIST'] === 'Y') { CCrmGridOptions::AddVisibleColumn($gridID, $arPresetField['FIELD_NAME']); } else { CCrmGridOptions::RemoveVisibleColumn($gridID, $arPresetField['FIELD_NAME']); } } } unset($arPostField); //Clear components cache $CACHE_MANAGER->ClearByTag('crm_fields_list_' . $arResult['ENTITY_ID']); } if ($_POST['action_all_rows_' . $arResult['GRID_ID']] == 'Y' && $_POST['action_button_' . $arResult['GRID_ID']] == 'delete') { $arFields = $CCrmFields->GetFields(); foreach ($arFields as $ID => $arField) { $CCrmFields->DeleteField($arField['ID']); } //Clear components cache