CCrmBizProc::CheckFields

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmBizProc
  4. CheckFields
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_bizproc.php
  • Класс: \CCrmBizProc
  • Вызов: CCrmBizProc::CheckFields
public function CheckFields($ID = false, $bAutoExec = false, $CreatedBy = 0, $arEntityAttr = array())
{
	global $USER;

	$this->LAST_ERROR = '';

	if(!CModule::IncludeModule('bizproc') || !CBPRuntime::isFeatureEnabled())
		return true;

	$this->arDocumentStates = CBPDocument::GetDocumentStates(
		array('crm', $this->sDocument, $this->sEntityType),
		$ID == false ? null : array('crm', $this->sDocument, $this->sEntityType.'_'.$ID)
	);

	$arCurrentUserGroups = $this->arCurrentUserGroups;

	if (is_object($USER))
	{
		$params = array(
			'UserIsAdmin' => $USER->IsAdmin(),
			'DocumentStates' => $this->arDocumentStates
		);

		if ($ID == false)
		{
			$arCurrentUserGroups[] = 'Author';
			$params['AllUserGroups'] = $arCurrentUserGroups;

			if($this->sEntityType === CCrmOwnerType::DealName && $this->HasParam('DealCategoryId'))
			{
				$params['DealCategoryId'] = $this->GetParam('DealCategoryId');
			}

			$bCanWrite = CBPDocument::CanUserOperateDocumentType(
				CBPCanUserOperateOperation::WriteDocument,
				$USER->GetID(),
				array('crm', $this->sDocument, $this->sEntityType),
				$params
			);
		}
		else
		{
			if ($USER->GetID() == $CreatedBy)
				$arCurrentUserGroups[] = 'Author';

			$params['AllUserGroups'] = $arCurrentUserGroups;
			$params['CreatedBy'] = $CreatedBy != 0 ? $CreatedBy : 0;
			$params['CRMEntityAttr'] = $arEntityAttr;

			$bCanWrite = CBPDocument::CanUserOperateDocument(
				CBPCanUserOperateOperation::WriteDocument,
				$USER->GetID(),
				array('crm', $this->sDocument, $this->sEntityType.'_'.$ID),
				$params
			);
		}
	}
	else
	{
		$bCanWrite = true;
	}

	if (!$bCanWrite)
	{
		$this->LAST_ERROR =  GetMessage('CRM_PERMISSION_DENIED');
		return false;
	}

	$arBizProcParametersValues = array();
	foreach ($this->arDocumentStates as $arDocumentState)
	{
		if ($arDocumentState['ID'] == '')
		{
			if ($bAutoExec)
			{
				foreach ($arDocumentState['TEMPLATE_PARAMETERS'] as $parameterKey => $arParam)
				{
					if ($arParam['Required'] && !isset($_REQUEST['bizproc'.$arDocumentState['TEMPLATE_ID'].'_'.$parameterKey]) && $arParam['Default'] <> '')
						$_REQUEST['bizproc'.$arDocumentState['TEMPLATE_ID'].'_'.$parameterKey] = $arParam['Default'];
				}
			}

			$arErrorsTmp = array();
			$arBizProcParametersValues[$arDocumentState['TEMPLATE_ID']] = CBPDocument::StartWorkflowParametersValidate(
				$arDocumentState['TEMPLATE_ID'],
				$arDocumentState['TEMPLATE_PARAMETERS'],
				array('crm', $this->sDocument, $ID == false ? $this->sEntityType : $this->sEntityType.'_'.$ID),
				$arErrorsTmp
			);

			if (count($arErrorsTmp) > 0)
			{
				$this->LAST_ERROR = '';
				foreach ($arErrorsTmp as $e)
					$this->LAST_ERROR .= $e['message'].'
'; return false; } } } return $arBizProcParametersValues; }

Добавить комментарий