if (is_array($arProductRows)) { foreach ($arProductRows as &$arProductRow) { $originID = $arProductRow['ORIGIN_ID']; $arProduct = CCrmProduct::GetByOriginID($originID, $catalogID); if (!is_array($arProduct)) { continue; } CCrmLead::SaveProductRows($leadID, array(array('PRODUCT_ID' => intval($arProduct['ID']), 'PRICE' => doubleval($arProduct['PRICE']), 'QUANTITY' => 1))); } } } // Add Contact require_once "contact.demo.php"; $CCrmContact = new CCrmContact(); foreach ($arContacts as $ID => $arParams) { $arContacts[$ID]['ID'] = $CCrmContact->Add($arParams); } // Add Company require_once "company.demo.php"; $CCrmCompany = new CCrmCompany(); foreach ($arCompany as $ID => $arParams) { $arCompany[$ID]['ID'] = $CCrmCompany->Add($arParams); } // Add Deal require_once "deal.demo.php"; $CCrmDeal = new CCrmDeal(); foreach ($arDeals as $ID => &$arParams) { $arProductRows = null; if (isset($arParams['PRODUCT_ROWS'])) { $arProductRows = $arParams['PRODUCT_ROWS']; unset($arParams['PRODUCT_ROWS']);
public function Add($data) { if (($r = self::CheckAuth()) !== false) { return $r; } $arFieldsInfo = CCrmContact::GetFields(); $arFields = array(); $arEl = $data->elementsByName('Field'); foreach ($arEl as $el) { $children = $el->children(); $sFieldName = $el->getAttribute('id'); // Fix for issue #40193 if (!isset($arFieldsInfo[$sFieldName])) { continue; } if (!is_null($children)) { $arFields[$sFieldName] = array(); foreach ($children as $child) { $arFields[$sFieldName][] = $child->content; } } else { $arFields[$sFieldName] = $el->content; } } CCrmFieldMulti::PrepareFields($arFields); if (isset($arFields['PHOTO'])) { $arFile = null; if (CCrmUrlUtil::HasScheme($arFields['PHOTO']) && CCrmUrlUtil::IsSecureUrl($arFields['PHOTO'])) { $arFile = CFile::MakeFileArray($arFields['PHOTO']); if (is_array($arFile)) { $arFile += array('MODULE_ID' => 'crm'); } } if (is_array($arFile)) { $arFields['PHOTO'] = $arFile; } else { unset($arFields['PHOTO']); } } $arUserFields = $GLOBALS['USER_FIELD_MANAGER']->GetUserFields(CCrmContact::$sUFEntityID); foreach ($arUserFields as $FIELD_NAME => $arUserField) { if ($arUserField['USER_TYPE']['BASE_TYPE'] == 'file') { if (!isset($arFields[$FIELD_NAME])) { continue; } if (is_array($arFields[$FIELD_NAME])) { $arFiles = array(); foreach ($arFields[$FIELD_NAME] as $sFilePath) { if (!(CCrmUrlUtil::HasScheme($sFilePath) && CCrmUrlUtil::IsSecureUrl($sFilePath))) { continue; } $arFile = CFile::MakeFileArray($sFilePath); if (is_array($arFile)) { $arFile += array('MODULE_ID' => 'crm'); $arFiles[] = $arFile; } } $arFields[$FIELD_NAME] = $arFiles; } else { $arFile = null; $sFilePath = $arFields[$FIELD_NAME]; if (CCrmUrlUtil::HasScheme($sFilePath) && CCrmUrlUtil::IsSecureUrl($sFilePath)) { $arFile = CFile::MakeFileArray($sFilePath); if (is_array($arFile)) { $arFile += array('MODULE_ID' => 'crm'); } } if (is_array($arFile)) { $arFields[$FIELD_NAME] = $arFile; } else { unset($arFields[$FIELD_NAME]); } } } } $CCrmContact = new CCrmContact(); return $CCrmContact->Add($arFields) ? 'ok' : new CSoapFault('CCrmLead::Add', htmlspecialcharsbx(strip_tags(nl2br($arFields['RESULT_MESSAGE'])))); }
private function SaveOrderDataContact($arOrder) { if (!isset($arOrder["CONTRACTOR"]) || !is_array($arOrder["CONTRACTOR"])) { return false; } $contactId = 0; $contactXmlId = $arOrder["CONTRACTOR"]["ID"]; if (isset($arOrder["CONTRACTOR"]["FIRST_NAME"]) && $arOrder["CONTRACTOR"]["FIRST_NAME"] != "") { $contactXmlId .= "|" . $arOrder["CONTRACTOR"]["FIRST_NAME"]; } if (isset($arOrder["CONTRACTOR"]["LAST_NAME"]) && $arOrder["CONTRACTOR"]["LAST_NAME"] != "") { $contactXmlId .= "|" . $arOrder["CONTRACTOR"]["LAST_NAME"]; } $dbContact = CCrmContact::GetList(array(), array("ORIGINATOR_ID" => $this->externalSaleId, "ORIGIN_ID" => $contactXmlId, "CHECK_PERMISSIONS" => "N")); if ($arContact = $dbContact->Fetch()) { $contactId = $arContact["ID"]; } $arFields = array('ORIGINATOR_ID' => $this->externalSaleId, 'ORIGIN_ID' => $contactXmlId, 'TYPE_ID' => 'CLIENT', 'OPENED' => 'Y'); $sources = CCrmStatus::GetStatusList('SOURCE'); if (isset($sources['WEB'])) { $arFields['SOURCE_ID'] = 'WEB'; } if (isset($arOrder["CONTRACTOR"]["FIRST_NAME"]) && $arOrder["CONTRACTOR"]["FIRST_NAME"] != "") { $arFields['NAME'] = $arOrder["CONTRACTOR"]["FIRST_NAME"]; } if (isset($arOrder["CONTRACTOR"]["LAST_NAME"]) && $arOrder["CONTRACTOR"]["LAST_NAME"] != "") { $arFields['LAST_NAME'] = $arOrder["CONTRACTOR"]["LAST_NAME"]; } if (isset($arOrder["CONTRACTOR"]["SECOND_NAME"]) && $arOrder["CONTRACTOR"]["SECOND_NAME"] != "") { $arFields['SECOND_NAME'] = $arOrder["CONTRACTOR"]["SECOND_NAME"]; } if (isset($arOrder["CONTRACTOR"]["BIRTHDAY"]) && $arOrder["CONTRACTOR"]["BIRTHDAY"] != "") { $arFields['BIRTHDATE'] = $arOrder["CONTRACTOR"]["BIRTHDAY"]; } if (isset($arOrder["CONTRACTOR"]["FULL_NAME"]) && $arOrder["CONTRACTOR"]["FULL_NAME"] != "") { $arFields['FULL_NAME'] = $arOrder["CONTRACTOR"]["FULL_NAME"]; } elseif (isset($arOrder["CONTRACTOR"]["NAME"]) && $arOrder["CONTRACTOR"]["NAME"] != "") { $arFields['FULL_NAME'] = $arOrder["CONTRACTOR"]["NAME"]; } if (is_array($arOrder["CONTRACTOR"]["ADDRESS"])) { foreach ($arOrder["CONTRACTOR"]["ADDRESS"] as $key => $val) { if ($key == "VIEW") { continue; } if (!empty($arFields["ADDRESS"])) { $arFields["ADDRESS"] .= ", "; } $arFields["ADDRESS"] .= $val; } if (isset($arOrder["CONTRACTOR"]["ADDRESS"]["VIEW"])) { if (!empty($arFields["ADDRESS"])) { $arFields["ADDRESS"] .= "\n"; } $arFields["ADDRESS"] .= $arOrder["CONTRACTOR"]["ADDRESS"]["VIEW"]; } } if (is_array($arOrder["CONTRACTOR"]["CONTACTS"])) { $arFields["FM"] = array(); if ($contactId > 0) { $dbCrmFieldMulti = CCrmFieldMulti::GetList(array(), array('ENTITY_ID' => 'CONTACT', 'ELEMENT_ID' => $contactId, "CHECK_PERMISSIONS" => "N")); while ($arCrmFieldMulti = $dbCrmFieldMulti->Fetch()) { $arFields["FM"][$arCrmFieldMulti["TYPE_ID"]][$arCrmFieldMulti["ID"]] = array("VALUE_TYPE" => $arCrmFieldMulti["VALUE_TYPE"], "VALUE" => $arCrmFieldMulti["VALUE"]); } } $arMapTmp = array("MAIL" => "EMAIL", "E-MAIL" => "EMAIL", "WORKPHONE" => "PHONE"); $arInc = array(); foreach ($arOrder["CONTRACTOR"]["CONTACTS"] as $val) { $t = strtoupper(preg_replace("/\\s/", "", $val["TYPE"])); if (!isset($arMapTmp[$t])) { continue; } $bFound = false; $tNew = $arMapTmp[$t]; if (isset($arFields["FM"][$tNew]) && is_array($arFields["FM"][$tNew])) { if (count($arFields["FM"][$tNew]) >= 50) { //Disable adding new communication after threshold is exceeded $bFound = true; } else { foreach ($arFields["FM"][$tNew] as $k => $v) { if ($v["VALUE"] == $val["VALUE"]) { $bFound = true; break; } } } } if (!$bFound) { $arInc[$tNew]++; $arFields["FM"][$tNew]["n" . $arInc[$tNew]] = array("VALUE_TYPE" => "WORK", "VALUE" => $val["VALUE"]); } } } $newContact = $contactId == 0; $obj = new CCrmContact(false); if ($contactId == 0) { if ((!isset($arFields['NAME']) || strlen($arFields['NAME']) <= 0) && (!isset($arFields['LAST_NAME']) || strlen($arFields['LAST_NAME']) <= 0)) { $arFields['LAST_NAME'] = $contactXmlId; } $res = $obj->Add($arFields, true, array('DISABLE_USER_FIELD_CHECK' => true)); if ($res > 0) { $contactId = (int) $res; $this->arImportResult->numberOfCreatedContacts++; } } else { $res = $obj->Update($contactId, $arFields, true, true, array('DISABLE_USER_FIELD_CHECK' => true)); if ($res) { $this->arImportResult->numberOfUpdatedContacts++; } } if (!$res) { if (($ex = $GLOBALS["APPLICATION"]->GetException()) !== false) { $this->AddError($ex->GetID(), $ex->GetString()); } else { $this->AddError("CCA", "Contact creation error"); } if (!empty($obj->LAST_ERROR)) { $this->AddError("CCA", $obj->LAST_ERROR); } return false; } return array($contactId, $newContact); }
} } if ($photoID > 0) { $fields['PHOTO'] = $photoID; } if (isset($data['FM']) && is_array($data['FM']) && !empty($data['FM'])) { $fields['FM'] = $data['FM']; } $entity = new CCrmContact(false); if (!$entity->CheckFields($fields, !$isNew ? $ID : false, array('DISABLE_USER_FIELD_CHECK' => true))) { __CrmMobileContactEditEndResonse(array('ERROR' => strip_tags(preg_replace("/<br[^>]*>/", "\n", $entity->LAST_ERROR)))); } else { //$DB->StartTransaction(); $successed = false; if ($isNew) { $ID = $entity->Add($fields, true, array('DISABLE_USER_FIELD_CHECK' => true, 'REGISTER_SONET_EVENT' => true)); $successed = $ID !== false; } else { $successed = $entity->Update($ID, $fields, true, true, array('DISABLE_USER_FIELD_CHECK' => true, 'REGISTER_SONET_EVENT' => true)); } if ($successed) { //$DB->Commit(); $errors = array(); CCrmBizProcHelper::AutoStartWorkflows(CCrmOwnerType::Contact, $ID, $isNew ? CCrmBizProcEventType::Create : CCrmBizProcEventType::Edit, $errors); $dbRes = CCrmContact::GetListEx(array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => 'N')); $currentItem = $dbRes->GetNext(); $formatParams = isset($_REQUEST['FORMAT_PARAMS']) ? $_REQUEST['FORMAT_PARAMS'] : array(); CCrmMobileHelper::PrepareContactItem($currentItem, $formatParams); __CrmMobileContactEditEndResonse(array('SAVED_ENTITY_ID' => $ID, 'SAVED_ENTITY_DATA' => CCrmMobileHelper::PrepareContactData($currentItem))); } else { //$DB->Rollback();
if (!empty($CCrmContact->LAST_ERROR)) { $arResult['ERROR_MESSAGE'] .= $CCrmContact->LAST_ERROR; } else { $arResult['ERROR_MESSAGE'] .= GetMessage('UNKNOWN_ERROR'); } } if ($arBizProcParametersValues = $CCrmBizProc->CheckFields($isEditMode ? $arResult['ELEMENT']['ID'] : false, false, $arResult['ELEMENT']['ASSIGNED_BY'], $isEditMode ? array($arResult['ELEMENT']['ID'] => $arEntityAttr[$arResult['ELEMENT']['ID']]) : null) === false) { $arResult['ERROR_MESSAGE'] .= $CCrmBizProc->LAST_ERROR; } if (empty($arResult['ERROR_MESSAGE'])) { $DB->StartTransaction(); $success = false; if ($isEditMode) { $success = $CCrmContact->Update($arResult['ELEMENT']['ID'], $arFields, true, true, array('REGISTER_SONET_EVENT' => true)); } else { $ID = $CCrmContact->Add($arFields, true, array('REGISTER_SONET_EVENT' => true)); $success = $ID !== false; if ($success) { $arResult['ELEMENT']['ID'] = $ID; } } if ($success) { $DB->Commit(); } else { $DB->Rollback(); $arResult['ERROR_MESSAGE'] = !empty($arFields['RESULT_MESSAGE']) ? $arFields['RESULT_MESSAGE'] : GetMessage('UNKNOWN_ERROR'); } } if (empty($arResult['ERROR_MESSAGE']) && !$CCrmBizProc->StartWorkflow($arResult['ELEMENT']['ID'], $arBizProcParametersValues)) { $arResult['ERROR_MESSAGE'] = $CCrmBizProc->LAST_ERROR; }
public function executePhase() { if ($this->currentPhase === LeadConversionPhase::COMPANY_CREATION || $this->currentPhase === LeadConversionPhase::CONTACT_CREATION || $this->currentPhase === LeadConversionPhase::DEAL_CREATION) { if ($this->currentPhase === LeadConversionPhase::COMPANY_CREATION) { $entityTypeID = \CCrmOwnerType::Company; } elseif ($this->currentPhase === LeadConversionPhase::CONTACT_CREATION) { $entityTypeID = \CCrmOwnerType::Contact; } else { $entityTypeID = \CCrmOwnerType::Deal; } $entityTypeName = \CCrmOwnerType::ResolveName($entityTypeID); $config = $this->config->getItem($entityTypeID); if (!$config->isActive()) { return false; } /** @var \CCrmPerms $permissions */ $permissions = $this->getUserPermissions(); $entityID = isset($this->contextData[$entityTypeName]) ? $this->contextData[$entityTypeName] : 0; if ($entityID > 0) { if ($entityTypeID === \CCrmOwnerType::Company) { if (!\CCrmCompany::Exists($entityID)) { throw new EntityConversionException(\CCrmOwnerType::Lead, \CCrmOwnerType::Company, EntityConversionException::TARG_DST, EntityConversionException::NOT_FOUND); } $entity = new \CCrmCompany(false); } elseif ($entityTypeID === \CCrmOwnerType::Contact) { if (!\CCrmContact::Exists($entityID)) { throw new EntityConversionException(\CCrmOwnerType::Lead, \CCrmOwnerType::Contact, EntityConversionException::TARG_DST, EntityConversionException::NOT_FOUND); } $entity = new \CCrmContact(false); } else { if (!\CCrmDeal::Exists($entityID)) { throw new EntityConversionException(\CCrmOwnerType::Lead, \CCrmOwnerType::Deal, EntityConversionException::TARG_DST, EntityConversionException::NOT_FOUND); } $entity = new \CCrmDeal(false); } if (!\CCrmAuthorizationHelper::CheckUpdatePermission($entityTypeName, $entityID, $permissions)) { throw new EntityConversionException(\CCrmOwnerType::Lead, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::UPDATE_DENIED); } $fields = array('LEAD_ID' => $this->entityID); $entity->Update($entityID, $fields); $this->resultData[$entityTypeName] = $entityID; return true; } if (!\CCrmAuthorizationHelper::CheckCreatePermission($entityTypeName, $permissions)) { throw new EntityConversionException(\CCrmOwnerType::Lead, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::CREATE_DENIED); } if (UserFieldSynchronizer::needForSynchronization(\CCrmOwnerType::Lead, $entityTypeID)) { throw new EntityConversionException(\CCrmOwnerType::Lead, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::NOT_SYNCHRONIZED); } if (!ConversionSettings::getCurrent()->isAutocreationEnabled()) { throw new EntityConversionException(\CCrmOwnerType::Lead, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::AUTOCREATION_DISABLED); } if (\CCrmBizProcHelper::HasAutoWorkflows($entityTypeID, \CCrmBizProcEventType::Create)) { throw new EntityConversionException(\CCrmOwnerType::Lead, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::HAS_WORKFLOWS); } /** @var LeadConversionMapper $mapper */ $mapper = $this->getMapper(); $map = self::prepareMap($entityTypeID); $fields = $mapper->map($map); if (empty($fields)) { throw new EntityConversionException(\CCrmOwnerType::Lead, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::EMPTY_FIELDS); } if ($entityTypeID === \CCrmOwnerType::Company) { $entity = new \CCrmCompany(false); $entityID = $entity->Add($fields); if ($entityID <= 0) { throw new EntityConversionException(\CCrmOwnerType::Lead, \CCrmOwnerType::Company, EntityConversionException::TARG_DST, EntityConversionException::CREATE_FAILED, $entity->LAST_ERROR); } //region BizProcess $arErrors = array(); \CCrmBizProcHelper::AutoStartWorkflows(\CCrmOwnerType::Company, $entityID, \CCrmBizProcEventType::Create, $arErrors); //endregion $this->resultData[\CCrmOwnerType::CompanyName] = $entityID; } elseif ($entityTypeID === \CCrmOwnerType::Contact) { if (isset($this->resultData[\CCrmOwnerType::CompanyName])) { $fields['COMPANY_ID'] = $this->resultData[\CCrmOwnerType::CompanyName]; } $entity = new \CCrmContact(false); if (!$entity->CheckFields($fields)) { throw new EntityConversionException(\CCrmOwnerType::Lead, $entityTypeID, EntityConversionException::TARG_DST, EntityConversionException::INVALID_FIELDS, $entity->LAST_ERROR); } $entityID = $entity->Add($fields); if ($entityID <= 0) { throw new EntityConversionException(\CCrmOwnerType::Lead, \CCrmOwnerType::Contact, EntityConversionException::TARG_DST, EntityConversionException::CREATE_FAILED, $entity->LAST_ERROR); } //region BizProcess $arErrors = array(); \CCrmBizProcHelper::AutoStartWorkflows(\CCrmOwnerType::Contact, $entityID, \CCrmBizProcEventType::Create, $arErrors); //endregion $this->resultData[\CCrmOwnerType::ContactName] = $entityID; } else { if (isset($this->resultData[\CCrmOwnerType::ContactName])) { $fields['CONTACT_ID'] = $this->resultData[\CCrmOwnerType::ContactName]; } if (isset($this->resultData[\CCrmOwnerType::CompanyName])) { $fields['COMPANY_ID'] = $this->resultData[\CCrmOwnerType::CompanyName]; } $productRows = isset($fields['PRODUCT_ROWS']) && is_array($fields['PRODUCT_ROWS']) ? $fields['PRODUCT_ROWS'] : array(); if (!empty($productRows)) { $result = \CCrmProductRow::CalculateTotalInfo('D', 0, false, $fields, $productRows); $fields['OPPORTUNITY'] = isset($result['OPPORTUNITY']) ? $result['OPPORTUNITY'] : 1.0; $fields['TAX_VALUE'] = isset($result['TAX_VALUE']) ? $result['TAX_VALUE'] : 0.0; } $entity = new \CCrmDeal(false); $entityID = $entity->Add($fields); if ($entityID <= 0) { throw new EntityConversionException(\CCrmOwnerType::Lead, \CCrmOwnerType::Deal, EntityConversionException::TARG_DST, EntityConversionException::CREATE_FAILED, $entity->LAST_ERROR); } if (!empty($productRows)) { \CCrmDeal::SaveProductRows($entityID, $productRows, false, false, false); } //region BizProcess $arErrors = array(); \CCrmBizProcHelper::AutoStartWorkflows(\CCrmOwnerType::Deal, $entityID, \CCrmBizProcEventType::Create, $arErrors); //endregion $this->resultData[\CCrmOwnerType::DealName] = $entityID; } return true; } elseif ($this->currentPhase === LeadConversionPhase::FINALIZATION) { $result = \CCrmLead::GetListEx(array(), array('=ID' => $this->entityID, 'CHECK_PERMISSIONS' => 'N'), false, false, array('STATUS_ID')); $presentFields = is_object($result) ? $result->Fetch() : null; if (is_array($presentFields)) { $fields = array(); $statusID = isset($presentFields['STATUS_ID']) ? $presentFields['STATUS_ID'] : ''; if ($statusID !== 'CONVERTED') { $fields['STATUS_ID'] = 'CONVERTED'; } if (isset($this->resultData[\CCrmOwnerType::CompanyName])) { $fields['COMPANY_ID'] = $this->resultData[\CCrmOwnerType::CompanyName]; } if (isset($this->resultData[\CCrmOwnerType::ContactName])) { $fields['CONTACT_ID'] = $this->resultData[\CCrmOwnerType::ContactName]; } if (!empty($fields)) { $entity = new \CCrmLead(false); if ($entity->Update($this->entityID, $fields)) { //region BizProcess $arErrors = array(); \CCrmBizProcHelper::AutoStartWorkflows(\CCrmOwnerType::Lead, $this->entityID, \CCrmBizProcEventType::Edit, $arErrors); //endregion } } } return true; } return false; }
private static function TryImportVCard(&$fileData) { $CCrmVCard = new CCrmVCard(); $arContact = $CCrmVCard->ReadCard(false, $fileData); if (empty($arContact['NAME']) && empty($arContact['LAST_NAME'])) { return false; } $arFilter = array(); if (!empty($arContact['NAME'])) { $arFilter['NAME'] = $arContact['NAME']; } if (!empty($arContact['LAST_NAME'])) { $arFilter['LAST_NAME'] = $arContact['LAST_NAME']; } if (!empty($arContact['SECOND_NAME'])) { $arFilter['SECOND_NAME'] = $arContact['SECOND_NAME']; } $arFilter['CHECK_PERMISSIONS'] = 'N'; $dbContact = CCrmContact::GetListEx(array(), $arFilter, false, false, array('ID')); if ($dbContact->Fetch()) { return false; } $arContact['SOURCE_ID'] = 'EMAIL'; $arContact['TYPE_ID'] = 'SHARE'; if (!empty($arContact['COMPANY_TITLE'])) { $dbCompany = CCrmCompany::GetListEx(array(), array('TITLE' => $arContact['COMPANY_TITLE'], 'CHECK_PERMISSIONS' => 'N'), false, false, array('ID')); if (($arCompany = $dbCompany->Fetch()) !== false) { $arContact['COMPANY_ID'] = $arCompany['ID']; } else { if (!empty($arContact['COMMENTS'])) { $arContact['COMMENTS'] .= PHP_EOL; } $arContact['COMMENTS'] .= GetMessage('CRM_MAIL_COMPANY_NAME', array('%TITLE%' => $arContact['COMPANY_TITLE'])); } } $CCrmContact = new CCrmContact(false); $CCrmContact->Add($arContact, true, array('DISABLE_USER_FIELD_CHECK' => true)); return true; }
public static function CreateDocument($parentDocumentId, $arFields) { global $DB; $arDocumentID = self::GetDocumentInfo($parentDocumentId); if ($arDocumentID == false) { $arDocumentID['TYPE'] = $parentDocumentId; } $arDocumentFields = self::GetDocumentFields($arDocumentID['TYPE']); $arKeys = array_keys($arFields); foreach ($arKeys as $key) { if (!array_key_exists($key, $arDocumentFields)) { //Fix for issue #40374 unset($arFields[$key]); continue; } $fieldType = $arDocumentFields[$key]["Type"]; if (in_array($fieldType, array("phone", "email", "im", "web"), true)) { CCrmDocument::PrepareEntityMultiFields($arFields, strtoupper($fieldType)); continue; } $arFields[$key] = is_array($arFields[$key]) && !CBPHelper::IsAssociativeArray($arFields[$key]) ? $arFields[$key] : array($arFields[$key]); if ($arDocumentFields[$key]["Type"] == "user") { $ar = array(); foreach ($arFields[$key] as $v1) { if (substr($v1, 0, strlen("user_")) == "user_") { $ar[] = substr($v1, strlen("user_")); } else { $a1 = self::GetUsersFromUserGroup($v1, "CONTACT_0"); foreach ($a1 as $a11) { $ar[] = $a11; } } } $arFields[$key] = $ar; } elseif ($fieldType == "select" && substr($key, 0, 3) == "UF_") { self::InternalizeEnumerationField('CRM_CONTACT', $arFields, $key); } elseif ($fieldType == "file") { $arFileOptions = array('ENABLE_ID' => true); foreach ($arFields[$key] as &$value) { //Issue #40380. Secure URLs and file IDs are allowed. $file = false; CCrmFileProxy::TryResolveFile($value, $file, $arFileOptions); $value = $file; } unset($value); } elseif ($fieldType == "S:HTML") { foreach ($arFields[$key] as &$value) { $value = array("VALUE" => $value); } unset($value); } if (!$arDocumentFields[$key]["Multiple"] && is_array($arFields[$key])) { if (count($arFields[$key]) > 0) { $a = array_values($arFields[$key]); $arFields[$key] = $a[0]; } else { $arFields[$key] = null; } } } if (isset($arFields['COMMENTS'])) { if (preg_match('/<[^>]+[\\/]?>/i', $arFields['COMMENTS']) === 1) { $arFields['COMMENTS'] = htmlspecialcharsbx($arFields['COMMENTS']); } $arFields['COMMENTS'] = str_replace(array("\r\n", "\r", "\n"), "<br>", $arFields['COMMENTS']); } $DB->StartTransaction(); $CCrmEntity = new CCrmContact(false); $id = $CCrmEntity->Add($arFields); if (!$id || $id <= 0) { $DB->Rollback(); throw new Exception($CCrmEntity->LAST_ERROR); } if (COption::GetOptionString("crm", "start_bp_within_bp", "N") == "Y") { $CCrmBizProc = new CCrmBizProc('CONTACT'); if (false === $CCrmBizProc->CheckFields(false, true)) { throw new Exception($CCrmBizProc->LAST_ERROR); } if ($id && $id > 0 && !$CCrmBizProc->StartWorkflow($id)) { $DB->Rollback(); throw new Exception($CCrmBizProc->LAST_ERROR); $id = false; } } if ($id && $id > 0) { $DB->Commit(); } return $id; }
*/ if (empty($arResult['ERROR_MESSAGE'])) { if ($bConvertCompany) { $iCompanyId = $CCrmCompany->Add($arFields['COMPANY'], true, array('REGISTER_SONET_EVENT' => true)); if ($iCompanyId > 0) { $CCrmCompanyBizProc = new CCrmBizProc('COMPANY'); $arCompanyBizProcParams = $CCrmCompanyBizProc->CheckFields(false, false, $arFields['COMPANY']['ASSIGNED_BY_ID'], null); if ($arCompanyBizProcParams !== false) { $CCrmCompanyBizProc->StartWorkflow($iCompanyId, $arCompanyBizProcParams); } } } $arFields['CONTACT']['COMPANY_ID'] = $iCompanyId; $arFields['DEAL']['COMPANY_ID'] = $iCompanyId; if ($bConvertContact) { $iContactId = $CCrmContact->Add($arFields['CONTACT'], true, array('REGISTER_SONET_EVENT' => true)); if ($iContactId > 0) { $CCrmEvent = new CCrmEvent(); $CCrmEvent->Share(array('ENTITY_TYPE' => 'LEAD', 'ENTITY_ID' => $arParams['ELEMENT_ID']), array(array('ENTITY_TYPE' => 'CONTACT', 'ENTITY_ID' => $iContactId)), 'MESSAGE'); $CCrmContactBizProc = new CCrmBizProc('CONTACT'); $arContactBizProcParams = $CCrmContactBizProc->CheckFields(false, false, $arFields['CONTACT']['ASSIGNED_BY_ID'], null); if ($arContactBizProcParams !== false) { $CCrmContactBizProc->StartWorkflow($iContactId, $arContactBizProcParams); } } } $arFields['DEAL']['CONTACT_ID'] = $iContactId; if (!$CrmPerms->HavePerm('DEAL', BX_CRM_PERM_NONE, 'ADD')) { if ($bConvertDeal) { $arDealFields = $arFields['DEAL']; $iDealId = $CCrmDeal->Add($arDealFields, true, array('REGISTER_SONET_EVENT' => true));
} $phone = isset($data['phone']) ? $data['phone'] : ''; if ($phone !== '') { if (!isset($arFields['FM'])) { $arFields['FM'] = array(); } $arFields['FM']['PHONE'] = array('n0' => array('VALUE_TYPE' => 'WORK', 'VALUE' => $phone)); } $CrmContact = new CCrmContact(); if ($ID > 0) { if ($CrmContact->Update($ID, $arFields, true, array('DISABLE_USER_FIELD_CHECK' => true, 'REGISTER_SONET_EVENT' => true))) { $info = CCrmEntitySelectorHelper::PrepareEntityInfo('CONTACT', $ID); echo CUtil::PhpToJSObject(array('DATA' => $data, 'INFO' => array('title' => $info['TITLE'], 'url' => $info['URL']))); } } else { $ID = $CrmContact->Add($arFields, true, array('DISABLE_USER_FIELD_CHECK' => true, 'REGISTER_SONET_EVENT' => true)); if (is_int($ID) && $ID > 0) { $data['id'] = $ID; $info = CCrmEntitySelectorHelper::PrepareEntityInfo('CONTACT', $ID, array('NAME_TEMPLATE' => isset($_POST['NAME_TEMPLATE']) ? $_POST['NAME_TEMPLATE'] : '')); echo CUtil::PhpToJSObject(array('DATA' => $data, 'INFO' => array('title' => $info['TITLE'], 'url' => $info['URL']))); } else { echo CUtil::PhpToJSObject(array('ERROR' => $CrmContact->LAST_ERROR)); } } } elseif ($action === 'ENABLE_SONET_SUBSCRIPTION') { $userID = CCrmSecurityHelper::GetCurrentUserID(); $entityTypeName = isset($_POST['ENTITY_TYPE']) ? strtoupper($_POST['ENTITY_TYPE']) : ''; $entityID = isset($_POST['ENTITY_ID']) ? intval($_POST['ENTITY_ID']) : 0; if ($userID > 0 && $entityTypeName === CCrmOwnerType::ContactName && $entityID > 0 && CCrmContact::CheckReadPermission($entityID)) { $isEnabled = CCrmSonetSubscription::IsRelationRegistered(CCrmOwnerType::Contact, $entityID, CCrmSonetSubscriptionType::Observation, $userID); $enable = isset($_POST['ENABLE']) && strtoupper($_POST['ENABLE']) === 'Y';