Exemple #1
0
 public static function AddDocumentField($documentType, $arFields)
 {
     if (strpos($documentType, '_') === false) {
         $documentType .= '_0';
     }
     $arDocumentID = self::GetDocumentInfo($documentType);
     if (empty($arDocumentID)) {
         throw new CBPArgumentNullException('documentId');
     }
     if (strpos($arFields['type'], 'UF:') === 0) {
         $arFields['type'] = substr($arFields['type'], 3);
     }
     $arFieldsTmp = array('USER_TYPE_ID' => $arFields['type'], 'FIELD_NAME' => 'UF_CRM_' . strtoupper($arFields['code']), 'ENTITY_ID' => 'CRM_' . $arDocumentID['TYPE'], 'SORT' => 150, 'MULTIPLE' => $arFields['multiple'] == 'Y' ? 'Y' : 'N', 'MANDATORY' => $arFields['required'] == 'Y' ? 'Y' : 'N', 'SHOW_FILTER' => 'E');
     $arFieldsTmp['EDIT_FORM_LABEL'][LANGUAGE_ID] = $arFields['name'];
     $arFieldsTmp['LIST_COLUMN_LABEL'][LANGUAGE_ID] = $arFields['name'];
     $arFieldsTmp['LIST_FILTER_LABEL'][LANGUAGE_ID] = $arFields['name'];
     if (array_key_exists('additional_type_info', $arFields)) {
         $arField['SETTINGS']['IBLOCK_ID'] = intval($arFields['additional_type_info']);
     }
     switch ($arFields['type']) {
         case 'select':
         case 'enumeration':
             $arFieldsTmp['USER_TYPE_ID'] = 'enumeration';
             if (!is_array($arFieldsTmp['LIST'])) {
                 $arFieldsTmp['LIST'] = array();
             }
             $options = isset($arFields['options']) && is_array($arFields['options']) ? $arFields['options'] : array();
             if (!empty($options)) {
                 $i = 10;
                 foreach ($options as $k => $v) {
                     $arFieldsTmp['LIST']['n' . $i] = array('XML_ID' => $k, 'VALUE' => $v, 'DEF' => 'N', 'SORT' => $i);
                     $i = $i + 10;
                 }
             }
             break;
         case 'text':
             $arFieldsTmp['USER_TYPE_ID'] = 'string';
             break;
         case 'iblock_section':
         case 'iblock_element':
             $options = isset($arFields['options']) && is_string($arFields['options']) ? $arFields['options'] : '';
             if ($options !== '') {
                 $arFieldsTmp['SETTINGS']['IBLOCK_ID'] = $options;
             }
             break;
         case 'crm_status':
             $options = isset($arFields['options']) && is_string($arFields['options']) ? $arFields['options'] : '';
             if ($options !== '') {
                 $arFieldsTmp['SETTINGS']['ENTITY_TYPE'] = $options;
             }
             break;
         case 'crm':
             $options = isset($arFields['options']) && is_array($arFields['options']) ? $arFields['options'] : array();
             $arFieldsTmp['SETTINGS']['LEAD'] = isset($options['LEAD']) && strtoupper($options['LEAD']) === 'Y' ? 'Y' : 'N';
             $arFieldsTmp['SETTINGS']['CONTACT'] = isset($options['CONTACT']) && strtoupper($options['CONTACT']) === 'Y' ? 'Y' : 'N';
             $arFieldsTmp['SETTINGS']['COMPANY'] = isset($options['COMPANY']) && strtoupper($options['COMPANY']) === 'Y' ? 'Y' : 'N';
             $arFieldsTmp['SETTINGS']['DEAL'] = isset($options['DEAL']) && strtoupper($options['DEAL']) === 'Y' ? 'Y' : 'N';
             break;
         case 'employee':
             $arFieldsTmp['SHOW_FILTER'] = 'I';
             break;
     }
     $crmFields = new CCrmFields($GLOBALS['USER_FIELD_MANAGER'], 'CRM_' . $arDocumentID['TYPE']);
     $crmFields->AddField($arFieldsTmp);
     $GLOBALS['CACHE_MANAGER']->ClearByTag('crm_fields_list_' . $arFieldsTmp['FIELD_NAME']);
     return $arFieldsTmp['FIELD_NAME'];
 }
Exemple #2
0
         $arField['SETTINGS']['DEAL'] = $_POST['ENTITY_TYPE_DEAL'];
         break;
     case 'employee':
         if ($arField['SHOW_FILTER'] !== 'N') {
             $arField['SHOW_FILTER'] = 'I';
             // Force exact match for 'USER' field type
         }
         break;
     default:
         $arField['SHOW_FILTER'] = 'N';
         break;
 }
 if (!$strError) {
     if ($arResult['NEW_FIELD']) {
         $arResult['FIELD_ID'] = $arField['FIELD_NAME'] = $CCrmFields->GetNextFieldId();
         $res = $CCrmFields->AddField($arField);
     } else {
         $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']));