if ($bSuccess) { $DB->Commit(); } else { $DB->Rollback(); $arResult['ERROR_MESSAGE'] = !empty($arFields['RESULT_MESSAGE']) ? $arFields['RESULT_MESSAGE'] : GetMessage('UNKNOWN_ERROR'); } } if (empty($arResult['ERROR_MESSAGE'])) { if (!$CCrmBizProc->StartWorkflow($arResult['ELEMENT']['ID'], $arBizProcParametersValues)) { $arResult['ERROR_MESSAGE'] = $CCrmBizProc->LAST_ERROR; } } $ID = isset($arResult['ELEMENT']['ID']) ? $arResult['ELEMENT']['ID'] : 0; if (!empty($arResult['ERROR_MESSAGE'])) { ShowError($arResult['ERROR_MESSAGE']); $arResult['ELEMENT'] = CCrmComponentHelper::PrepareEntityFields(array_merge(array('ID' => $ID), $arFields), CCrmLead::GetFields()); } else { if (isset($_POST['apply'])) { if (CCrmLead::CheckUpdatePermission($ID)) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_LEAD_EDIT'], array('lead_id' => $ID))); } } elseif (isset($_POST['saveAndAdd'])) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_LEAD_EDIT'], array('lead_id' => 0))); } elseif (isset($_POST['saveAndView'])) { if (CCrmLead::CheckReadPermission($ID)) { LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_LEAD_SHOW'], array('lead_id' => $ID))); } } // save LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_LEAD_LIST'], array())); }
public function Add($data) { global $DB; if (($r = self::CheckAuth()) !== false) { return $r; } $arFieldsInfo = CCrmLead::GetFields(); $arFields = array(); $arEl = $data->elementsByName('Field'); foreach ($arEl as $child) { $children = $child->children(); $sFieldName = $child->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] = $child->content; } } CCrmFieldMulti::PrepareFields($arFields); $CCrmUserType = new CCrmUserType($GLOBALS['USER_FIELD_MANAGER'], CCrmLead::$sUFEntityID); $CCrmUserType->InternalizeFields($arFields, ','); $CCrmBizProc = new CCrmBizProc('LEAD'); if (false === $CCrmBizProc->CheckFields(false, true)) { return new CSoapFault('CCrmLead::Add Bizproc', htmlspecialcharsbx(strip_tags(nl2br($CCrmBizProc->LAST_ERROR)))); } $CCrmLead = new CCrmLead(); $DB->StartTransaction(); $ID = $CCrmLead->Add($arFields); if ($ID !== false && !$CCrmBizProc->StartWorkflow($ID)) { $DB->Rollback(); return new CSoapFault('CCrmLead::Add Bizproc', htmlspecialcharsbx(strip_tags(nl2br($CCrmBizProc->LAST_ERROR)))); } if ($ID === false) { $DB->Rollback(); return new CSoapFault('CCrmLead::Add', htmlspecialcharsbx(strip_tags(nl2br($arFields['RESULT_MESSAGE'])))); } $DB->Commit(); return 'ok'; }