Beispiel #1
0
	/**
	* Метод собирает и проверяет значения параметров запуска рабочего потока, заданных в форме метода StartWorkflowParametersShow.
	*
	* @param int $templateId - код шаблона кабочего потока.
	* @param array $arWorkflowParameters - массив параметров запуска рабочего потока.
	* @param array $arErrors - массив ошибок, которые произошли при выполнении в виде array(array("code" => код_ошибки, "message" => сообщение, "parameter" => название_параметра, "file" => путь_к_файлу), ...).
	* @return array - массив корректных значений параметров запуска рабочего потока в виде array(код_параметра => значение, ...)
	*/
	public static function StartWorkflowParametersValidate($templateId, $arWorkflowParameters, $documentType, &$arErrors)
	{
		$arErrors = array();

		$templateId = intval($templateId);
		if ($templateId <= 0)
		{
			$arErrors[] = array(
				"code" => "",
				"message" => GetMessage("BPCGDOC_EMPTY_WD_ID"),
			);
			return array();
		}

		if (!isset($arWorkflowParameters) || !is_array($arWorkflowParameters))
			$arWorkflowParameters = array();

		$arWorkflowParametersValues = array();

		$arRequest = $_REQUEST;
		foreach ($_FILES as $k => $v)
		{
			if (array_key_exists("name", $v))
			{
				if (is_array($v["name"]))
				{
					$ks = array_keys($v["name"]);
					for ($i = 0, $cnt = count($ks); $i < $cnt; $i++)
					{
						$ar = array();
						foreach ($v as $k1 => $v1)
							$ar[$k1] = $v1[$ks[$i]];

						$arRequest[$k][] = $ar;
					}
				}
				else
				{
					$arRequest[$k] = $v;
				}
			}
		}

		if (count($arWorkflowParameters) > 0)
		{
			$arErrorsTmp = array();
			$ar = array();

			foreach ($arWorkflowParameters as $parameterKey => $arParameter)
				$ar[$parameterKey] = $arRequest["bizproc".$templateId."_".$parameterKey];

			$arWorkflowParametersValues = CBPWorkflowTemplateLoader::CheckWorkflowParameters(
				$arWorkflowParameters,
				$ar,
				$documentType,
				$arErrors
			);
		}

		return $arWorkflowParametersValues;
	}
Beispiel #2
0
         if (array_key_exists("name", $v)) {
             if (is_array($v["name"])) {
                 $ks = array_keys($v["name"]);
                 for ($i = 0, $cnt = count($ks); $i < $cnt; $i++) {
                     $ar = array();
                     foreach ($v as $k1 => $v1) {
                         $ar[$k1] = $v1[$ks[$i]];
                     }
                     $arRequest[$k][] = $ar;
                 }
             } else {
                 $arRequest[$k] = $v;
             }
         }
     }
     $arWorkflowParameters = CBPWorkflowTemplateLoader::CheckWorkflowParameters($workflowTemplate["PARAMETERS"], $arRequest, $documentParameters["DOCUMENT_TYPE"], $arErrorsTmp);
     if (count($arErrorsTmp) > 0) {
         $bCanStartWorkflow = false;
         foreach ($arErrorsTmp as $e) {
             $arError[] = array("id" => "CheckWorkflowParameters", "text" => $e["message"]);
         }
     } else {
         $bCanStartWorkflow = true;
     }
 }
 if ($bCanStartWorkflow) {
     $arErrorsTmp = array();
     $wfId = CBPDocument::StartWorkflow($arParams["TEMPLATE_ID"], $documentParameters["DOCUMENT_ID"], array_merge($arWorkflowParameters, array("TargetUser" => "user_" . intval($GLOBALS["USER"]->GetID()))), $arErrorsTmp);
     if (count($arErrorsTmp) > 0) {
         $arResult["SHOW_MODE"] = "StartWorkflowError";
         foreach ($arErrorsTmp as $e) {
Beispiel #3
0
         if (array_key_exists("name", $v)) {
             if (is_array($v["name"])) {
                 $ks = array_keys($v["name"]);
                 for ($i = 0, $cnt = count($ks); $i < $cnt; $i++) {
                     $ar = array();
                     foreach ($v as $k1 => $v1) {
                         $ar[$k1] = $v1[$ks[$i]];
                     }
                     $arRequest[$k][] = $ar;
                 }
             } else {
                 $arRequest[$k] = $v;
             }
         }
     }
     $arWorkflowParameters = CBPWorkflowTemplateLoader::CheckWorkflowParameters($arWorkflowTemplate["PARAMETERS"], $arRequest, $documentType, $arErrorsTmp);
     if (count($arErrorsTmp) > 0) {
         $bCanStartWorkflow = false;
         foreach ($arErrorsTmp as $e) {
             $errorMessage .= $e["message"] . "<br />";
         }
     } else {
         $bCanStartWorkflow = true;
     }
 }
 if ($bCanStartWorkflow) {
     $arErrorsTmp = array();
     $wfId = CBPDocument::StartWorkflow($workflowTemplateId, $documentId, $arWorkflowParameters, $arErrorsTmp);
     if (count($arErrorsTmp) > 0) {
         $showMode = "StartWorkflowError";
         foreach ($arErrorsTmp as $e) {