Your IP : 18.116.12.245


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/activities/bitrix/codeactivity/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/activities/bitrix/codeactivity/codeactivity.php

<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

class CBPCodeActivity
	extends CBPActivity
{
	public function __construct($name)
	{
		parent::__construct($name);
		$this->arProperties = array("Title" => "", "ExecuteCode" => "");
	}

	public function Execute()
	{
		if ($this->ExecuteCode <> '')
			@eval($this->ExecuteCode);

		return CBPActivityExecutionStatus::Closed;
	}

	public static function ValidateProperties($arTestProperties = array(), CBPWorkflowTemplateUser $user = null)
	{
		$arErrors = array();

		if ($user == null || !$user->isAdmin())
		{
			$arErrors[] = array(
				"code" => "perm",
				"message" => GetMessage("BPCA_NO_PERMS"),
			);
		}

		if ($arTestProperties["ExecuteCode"] == '')
		{
			$arErrors[] = array(
				"code" => "emptyCode",
				"message" => GetMessage("BPCA_EMPTY_CODE"),
			);
		}

		return array_merge($arErrors, parent::ValidateProperties($arTestProperties, $user));
	}

	public static function GetPropertiesDialog($documentType, $activityName, $arWorkflowTemplate, $arWorkflowParameters, $arWorkflowVariables, $arCurrentValues = null, $formName = "")
	{
		$runtime = CBPRuntime::GetRuntime();

		if (!is_array($arWorkflowParameters))
			$arWorkflowParameters = array();
		if (!is_array($arWorkflowVariables))
			$arWorkflowVariables = array();

		if (!is_array($arCurrentValues))
		{
			$arCurrentValues = array("execute_code" => ""); 

			$arCurrentActivity = &CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName);
			if (is_array($arCurrentActivity["Properties"]))
				$arCurrentValues["execute_code"] = $arCurrentActivity["Properties"]["ExecuteCode"];
		}

		return $runtime->ExecuteResourceFile(
			__FILE__,
			"properties_dialog.php",
			array(
				"arCurrentValues" => $arCurrentValues,
				"formName" => $formName,
			)
		);
	}

	public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors)
	{
		$arErrors = array();

		$runtime = CBPRuntime::GetRuntime();

		$arProperties = array("ExecuteCode" => $arCurrentValues["execute_code"]);

		$arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser));
		if (count($arErrors) > 0)
			return false;

		$arCurrentActivity = &CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName);
		$arCurrentActivity["Properties"] = $arProperties;

		return true;
	}
}