Example #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'];
 }
Example #2
0
<?php

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) {
    die;
}
if (!CModule::IncludeModule('crm')) {
    return false;
}
$arEntityIds = CCrmFields::GetEntityTypes();
$arEntity = array();
foreach ($arEntityIds as $key => $ar) {
    $arEntity[$key] = $ar['NAME'];
}
$arComponentParameters = array('GROUPS' => array(), 'PARAMETERS' => array('FIELS_ENTITY_ID' => array('PARENT' => 'ADDITIONAL_SETTINGS', 'NAME' => GetMessage('CRM_FIELS_EDIT_ENTITY_ID'), 'TYPE' => 'LIST', 'VALUES' => $arEntity, 'DEFAULT' => 'CRM_LEAD', 'REFRESH' => 'Y'), 'FIELS_FIELD_ID' => array('PARENT' => 'ADDITIONAL_SETTINGS', 'NAME' => GetMessage('CRM_FIELS_EDIT_FIELD_ID'), 'TYPE' => 'STRING', "DEFAULT" => '={$_REQUEST["field_id"]}'), 'ENTITY_LIST_URL' => array('PARENT' => 'URL_TEMPLATES', 'NAME' => GetMessage('CRM_ENTITY_LIST_URL'), 'TYPE' => 'STRING', 'DEFAULT' => 'field.php'), 'FIELDS_LIST_URL' => array('PARENT' => 'URL_TEMPLATES', 'NAME' => GetMessage('CRM_FIELDS_LIST_URL'), 'TYPE' => 'STRING', 'DEFAULT' => 'field.list.php?entity_id=#entity_id#'), 'FIELD_EDIT_URL' => array('PARENT' => 'URL_TEMPLATES', 'NAME' => GetMessage('CRM_FIELD_EDIT_URL'), 'TYPE' => 'STRING', 'DEFAULT' => 'field.edit.php?entity_id=#entity_id#&field_id=#field_id#')));
Example #3
0
                $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."));
}
Example #4
0
<?php

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) {
    die;
}
if (!CModule::IncludeModule('crm')) {
    ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED'));
    return;
}
$CrmPerms = new CCrmPerms($USER->GetID());
if (!$CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE')) {
    ShowError(GetMessage('CRM_PERMISSION_DENIED'));
    return;
}
$arTypes = CCrmFields::GetEntityTypes();
foreach ($arTypes as $key => $ar) {
    $arResult['ROWS'][$ar['ID']] = $ar;
    $arResult['ROWS'][$ar['ID']]['LINK_LIST'] = str_replace('#entity_id#', $ar['ID'], $arParams['~FIELDS_LIST_URL']);
    $arResult['ROWS'][$ar['ID']]['LINK_ADD'] = str_replace(array('#entity_id#', '#field_id#'), array($ar['ID'], 0), $arParams['~FIELD_EDIT_URL']);
}
$this->IncludeComponentTemplate();
$APPLICATION->AddChainItem(GetMessage('CRM_FIELDS_ENTITY_LIST'), $arResult['~ENTITY_LIST_URL']);
Example #5
0
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
if (!CModule::IncludeModule('crm')) {
    ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED'));
    return;
}
$CrmPerms = new CCrmPerms($USER->GetID());
if (!$CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE')) {
    ShowError(GetMessage('CRM_PERMISSION_DENIED'));
    return;
}
$arResult['ENTITY_ID'] = isset($_REQUEST['entity_id']) ? $_REQUEST['entity_id'] : $arParams['FIELS_ENTITY_ID'];
$arResult['FIELD_ID'] = isset($_REQUEST['field_id']) ? $_REQUEST['field_id'] : $arParams['FIELS_FIELD_ID'];
global $USER_FIELD_MANAGER;
$CCrmFields = new CCrmFields($USER_FIELD_MANAGER, $arResult['ENTITY_ID']);
if ($CCrmFields->CheckError()) {
    $ex = $APPLICATION->GetException();
    ShowError($ex->GetString());
    return;
}
$arResult['DISABLE_MULTIPLE'] = false;
$arResult['NEW_FIELD'] = false;
if (!$arResult['FIELD_ID']) {
    $arResult['NEW_FIELD'] = true;
}
$arResult['FIELD'] = array();
if (!$arResult['NEW_FIELD'] && !($arResult['FIELD'] = $CCrmFields->GetByName($arResult['FIELD_ID']))) {
    ShowError(GetMessage('CRM_FIELDS_EDIT_WRONG_FIELD'));
    return;
}
Example #6
0
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) {
    die;
}
if (!CModule::IncludeModule('crm')) {
    ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED'));
    return;
}
$CrmPerms = new CCrmPerms($USER->GetID());
if (!$CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'WRITE')) {
    ShowError(GetMessage('CRM_PERMISSION_DENIED'));
    return;
}
$arResult['ENTITY_ID'] = isset($_REQUEST['entity_id']) ? $_REQUEST['entity_id'] : $arParams['FIELS_ENTITY_ID'];
global $USER_FIELD_MANAGER;
$CCrmFields = new CCrmFields($USER_FIELD_MANAGER, $arResult['ENTITY_ID']);
if ($CCrmFields->CheckError()) {
    $ex = $APPLICATION->GetException();
    ShowError($ex->GetString());
    return;
}
$arEntityIds = CCrmFields::GetEntityTypes();
$arResult['ENTITY_NAME'] = $arEntityIds[$arResult['ENTITY_ID']]['NAME'];
$arResult['GRID_ID'] = 'fields_list';
$arResult['~ENTITY_LIST_URL'] = $arParams['~ENTITY_LIST_URL'];
$arResult['ENTITY_LIST_URL'] = htmlspecialcharsbx($arResult['~ENTITY_LIST_URL']);
$arResult['~FIELDS_LIST_URL'] = str_replace('#entity_id#', $arResult['ENTITY_ID'], $arParams['~FIELDS_LIST_URL']);
$arResult['FIELDS_LIST_URL'] = htmlspecialcharsbx($arResult['~FIELDS_LIST_URL']);
$arResult['~FIELD_EDIT_URL'] = str_replace(array('#entity_id#', '#field_id#'), array($arResult['ENTITY_ID'], '0'), $arParams['~FIELD_EDIT_URL']);
$arResult['FIELD_EDIT_URL'] = htmlspecialcharsbx($arResult['~FIELD_EDIT_URL']);
$APPLICATION->SetTitle(GetMessage('CRM_FIELDS_LIST_TITLE_EDIT', array('#NAME#' => $arResult['ENTITY_NAME'])));
Example #7
0
 function UnInstallDB($arParams = array())
 {
     global $DB, $APPLICATION, $stackCacheManager, $USER_FIELD_MANAGER;
     $this->errors = false;
     if (!array_key_exists('savedata', $arParams) || $arParams['savedata'] != 'Y') {
         // delete extra fields for all entities
         require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/crm/include.php';
         $arEntityIds = CCrmFields::GetEntityTypes();
         foreach ($arEntityIds as $entityId => $ar) {
             $CCrmFields = new CCrmFields($USER_FIELD_MANAGER, $entityId);
             $arFields = $CCrmFields->GetFields();
             foreach ($arFields as $arField) {
                 $CCrmFields->DeleteField($arField['ID']);
             }
         }
         $this->errors = $DB->RunSQLBatch($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/crm/install/db/' . strtolower($DB->type) . '/uninstall.sql');
         if (CModule::IncludeModule('socialnetwork')) {
             $dbRes = CSocNetLog::GetList(array(), array("ENTITY_TYPE" => CCrmLiveFeedEntity::GetAll()), false, false, array("ID"));
             if ($dbRes) {
                 while ($arRes = $dbRes->Fetch()) {
                     CSocNetLog::Delete($arRes["ID"]);
                 }
             }
         }
     }
     $stackCacheManager->Clear('b_crm_status');
     $stackCacheManager->Clear('b_crm_perms');
     COption::RemoveOption('crm');
     UnRegisterModuleDependences('mail', 'OnGetFilterList', 'crm', 'CCrmEMail', 'OnGetFilterList');
     UnRegisterModuleDependences('main', 'OnUserTypeBuildList', 'crm', 'CUserTypeCrm', 'GetUserTypeDescription');
     UnRegisterModuleDependences('main', 'OnUserTypeBuildList', 'crm', 'CUserTypeCrmStatus', 'GetUserTypeDescription');
     UnRegisterModuleDependences('search', 'OnReindex', 'crm', 'CCrmSearch', 'OnSearchReindex');
     UnRegisterModuleDependences('search', 'OnSearchCheckPermissions', 'crm', 'CCrmSearch', 'OnSearchCheckPermissions');
     UnRegisterModuleDependences('report', 'OnReportAdd', 'crm', 'CCrmReportHelper', 'clearMenuCache');
     UnRegisterModuleDependences('report', 'OnReportUpdate', 'crm', 'CCrmReportHelper', 'clearMenuCache');
     UnRegisterModuleDependences('report', 'OnReportDelete', 'crm', 'CCrmReportHelper', 'clearMenuCache');
     UnRegisterModuleDependences('iblock', 'OnIBlockDelete', 'crm', 'CCrmCatalog', 'OnIBlockDelete');
     UnRegisterModuleDependences('iblock', 'OnAfterIBlockElementDelete', 'crm', 'CAllCrmProduct', 'OnIBlockElementDelete');
     UnRegisterModuleDependences('iblock', 'OnAfterIBlockElementDelete', 'crm', 'CCrmProduct', 'OnIBlockElementDelete');
     UnRegisterModuleDependences("socialnetwork", "OnFillSocNetLogEvents", "crm", "CCrmExternalSaleImport", "OnFillSocNetLogEvents");
     UnRegisterModuleDependences('tasks', 'OnBeforeTaskAdd', 'crm', 'CAllCrmActivity', 'OnBeforeTaskAdd');
     UnRegisterModuleDependences('tasks', 'OnTaskAdd', 'crm', 'CAllCrmActivity', 'OnTaskAdd');
     UnRegisterModuleDependences('tasks', 'OnTaskUpdate', 'crm', 'CAllCrmActivity', 'OnTaskUpdate');
     UnRegisterModuleDependences('tasks', 'OnTaskDelete', 'crm', 'CAllCrmActivity', 'OnTaskDelete');
     UnRegisterModuleDependences('webdav', 'OnFileDelete', 'crm', 'CCrmWebDavHelper', 'OnWebDavFileDelete');
     UnRegisterModuleDependences('subscribe', 'BeforePostingSendMail', 'crm', 'CCrmEMail', 'BeforeSendMail');
     UnRegisterModuleDependences('calendar', 'OnAfterCalendarEventEdit', 'crm', 'CAllCrmActivity', 'OnCalendarEventEdit');
     UnRegisterModuleDependences('calendar', 'OnAfterCalendarEventDelete', 'crm', 'CAllCrmActivity', 'OnCalendarEventDelete');
     UnRegisterModuleDependences('crm', 'OnCrmStatusGetList', 'crm', 'CCrmStatusInvoice', 'getStatusList');
     UnRegisterModuleDependences('crm', 'OnGetEntityTypes', 'crm', 'CCrmStatusInvoice', 'onGetEntityTypes');
     UnRegisterModuleDependences('crm', 'OnBeforeCrmStatusCreate', 'crm', 'CCrmStatusInvoice', 'createCrmStatus');
     UnRegisterModuleDependences('rest', 'onRestServiceBuildDescription', 'crm', 'CCrmRestService', 'onRestServiceBuildDescription');
     UnRegisterModuleDependences('socialnetwork', 'OnFillSocNetAllowedSubscribeEntityTypes', 'crm', 'CCrmLiveFeed', 'OnFillSocNetAllowedSubscribeEntityTypes');
     UnRegisterModuleDependences('socialnetwork', 'OnFillSocNetLogEvents', 'crm', 'CCrmLiveFeed', 'OnFillSocNetLogEvents');
     UnRegisterModuleDependences('socialnetwork', 'OnFillSocNetLogFields', 'crm', 'CCrmLiveFeed', 'OnFillSocNetLogFields');
     UnRegisterModuleDependences('socialnetwork', 'OnBuildSocNetLogFilter', 'crm', 'CCrmLiveFeed', 'OnBuildSocNetLogFilter');
     UnRegisterModuleDependences('socialnetwork', 'OnBuildSocNetLogOrder', 'crm', 'CCrmLiveFeed', 'OnBuildSocNetLogOrder');
     UnRegisterModuleDependences('socialnetwork', 'OnSocNetLogFormatDestination', 'crm', 'CCrmLiveFeed', 'OnSocNetLogFormatDestination');
     UnRegisterModuleDependences('socialnetwork', 'OnBuildSocNetLogPerms', 'crm', 'CCrmLiveFeed', 'OnBuildSocNetLogPerms');
     UnRegisterModuleDependences('socialnetwork', 'OnBeforeSocNetLogRightsAdd', 'crm', 'CCrmLiveFeed', 'OnBeforeSocNetLogRightsAdd');
     UnRegisterModuleDependences('socialnetwork', 'OnBeforeSocNetLogCommentCounterIncrement', 'crm', 'CCrmLiveFeed', 'OnBeforeSocNetLogCommentCounterIncrement');
     UnRegisterModuleDependences('socialnetwork', 'OnAfterSocNetLogEntryCommentAdd', 'crm', 'CCrmLiveFeed', 'OnAfterSocNetLogEntryCommentAdd');
     UnRegisterModuleDependences('socialnetwork', 'OnBeforeSocNetLogEntryGetRights', 'crm', 'CCrmLiveFeed', 'OnBeforeSocNetLogEntryGetRights');
     UnRegisterModuleDependences("socialnetwork", "OnSendMentionGetEntityFields", "crm", "CCrmLiveFeed", "OnSendMentionGetEntityFields");
     UnRegisterModuleDependences('main', 'OnAddRatingVote', 'crm', 'CCrmLiveFeed', 'OnAddRatingVote');
     UnRegisterModuleDependences('forum', 'OnAfterCommentAdd', 'crm', 'CCrmLiveFeed', 'onAfterCommentAdd');
     UnRegisterModuleDependences('disk', 'onAfterDeleteFile', 'crm', '\\Bitrix\\Crm\\Integration\\DiskManager', 'OnDiskFileDelete');
     if (CModule::IncludeModule('search')) {
         CSearch::DeleteIndex('crm');
     }
     UnRegisterModule('crm');
     if ($this->errors !== false) {
         $APPLICATION->ThrowException(implode('<br />', $this->errors));
         return false;
     }
     return true;
 }