• Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/classes/general/stateservice.php
  • Класс: CBPStateService
  • Вызов: CBPStateService::setStatePermissions
public function setStatePermissions($workflowId, $arStatePermissions = array(), $bRewrite = true)
{
	global $DB;

	$workflowId = trim($workflowId);
	if ($workflowId == '')
		throw new Exception("workflowId");

	// @TODO: add new logic to CBPSetPermissionsMode::Rewrite
	if (!is_array($bRewrite) && $bRewrite == true
		|| is_array($bRewrite) && isset($bRewrite['setMode']) && $bRewrite['setMode'] == CBPSetPermissionsMode::Clear)
	{
		$DB->Query(
			"DELETE FROM b_bp_workflow_permissions ".
			"WHERE WORKFLOW_ID = '".$DB->ForSql($workflowId)."' "
		);
	}
	$arState = self::GetWorkflowState($workflowId);
	$documentService = $this->runtime->GetService("DocumentService");
	$documentService->SetPermissions($arState["DOCUMENT_ID"], $workflowId, $arStatePermissions, $bRewrite);
	$documentType = $documentService->GetDocumentType($arState["DOCUMENT_ID"]);
	if ($documentType)
		$arStatePermissions = $documentService->toInternalOperations($documentType, $arStatePermissions);

	foreach ($arStatePermissions as $permission => $arObjects)
	{
		foreach ($arObjects as $object)
		{
			$DB->Query(
				"INSERT INTO b_bp_workflow_permissions (WORKFLOW_ID, OBJECT_ID, PERMISSION) ".
				"VALUES ('".$DB->ForSql($workflowId)."', '".$DB->ForSql($object)."', '".$DB->ForSql($permission)."')"
			);
		}
	}
}