public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); $arProperties = array("Permission" => array(), "Rewrite" => true); $documentService = $runtime->GetService("DocumentService"); $arAllowableOperations = $documentService->GetAllowableOperations($documentType); foreach ($arAllowableOperations as $operationKey => $operationValue) { $arProperties["Permission"][$operationKey] = CBPHelper::UsersStringToArray($arCurrentValues["permission_" . $operationKey], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } } $arProperties["Rewrite"] = $arCurrentValues["rewrite"] == "Y" ? "Y" : "N"; $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; return true; }
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); $arMap = array("message_user_from" => "MessageUserFrom", "message_user_to" => "MessageUserTo", "message_text" => "MessageText"); $arProperties = array(); foreach ($arMap as $key => $value) { if ($key == "message_user_from" || $key == "message_user_to") { continue; } $arProperties[$value] = $arCurrentValues[$key]; } global $USER; if ($USER->IsAdmin() || CModule::IncludeModule("bitrix24") && CBitrix24::IsPortalAdmin($USER->GetID())) { $arProperties["MessageUserFrom"] = CBPHelper::UsersStringToArray($arCurrentValues["message_user_from"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } } else { $arProperties["MessageUserFrom"] = "user_" . $USER->GetID(); } //global $USER; //if (!$USER->IsAdmin()) // $arProperties["MessageUserFrom"] = "user_".$USER->GetID(); $arProperties["MessageUserTo"] = CBPHelper::UsersStringToArray($arCurrentValues["message_user_to"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; return true; }
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); $arMap = array("review_users" => "Users", "approve_type" => "ApproveType", "review_overdue_date" => "OverdueDate", "review_name" => "Name", "review_description" => "Description", "review_parameters" => "Parameters", "status_message" => "StatusMessage", "set_status_message" => "SetStatusMessage", "task_button_message" => "TaskButtonMessage", "comment_label_message" => "CommentLabelMessage", "show_comment" => "ShowComment", "timeout_duration" => "TimeoutDuration", "timeout_duration_type" => "TimeoutDurationType", "access_control" => "AccessControl"); $arProperties = array(); foreach ($arMap as $key => $value) { if ($key == "review_users") { continue; } $arProperties[$value] = $arCurrentValues[$key]; } $arProperties["Users"] = CBPHelper::UsersStringToArray($arCurrentValues["review_users"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; return true; }
public static function GetFieldInputValue($documentType, $arFieldType, $arFieldName, $arRequest, &$arErrors) { $result = array(); if ($arFieldType["Type"] == "user") { $value = $arRequest[$arFieldName["Field"]]; if (strlen($value) > 0) { $result = CBPHelper::UsersStringToArray($value, $documentType, $arErrors); if (count($arErrors) > 0) { foreach ($arErrors as $e) { $arErrors[] = $e; } } } } elseif (array_key_exists($arFieldName["Field"], $arRequest) || array_key_exists($arFieldName["Field"] . "_text", $arRequest)) { $arValue = array(); if (array_key_exists($arFieldName["Field"], $arRequest)) { $arValue = $arRequest[$arFieldName["Field"]]; if (!is_array($arValue) || is_array($arValue) && CBPHelper::IsAssociativeArray($arValue)) { $arValue = array($arValue); } } if (array_key_exists($arFieldName["Field"] . "_text", $arRequest)) { $arValue[] = $arRequest[$arFieldName["Field"] . "_text"]; } foreach ($arValue as $value) { if (!preg_match("#^\\{=[a-z0-9_]+:[a-z0-9_]+\\}\$#i", trim($value)) && substr(trim($value), 0, 1) != "=") { if ($arFieldType["Type"] == "int") { if (strlen($value) > 0) { $value = str_replace(" ", "", $value); if ($value . "|" == intval($value) . "|") { $value = intval($value); } else { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID1"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } elseif ($arFieldType["Type"] == "double") { if (strlen($value) > 0) { $value = str_replace(" ", "", str_replace(",", ".", $value)); if ($value . "|" == doubleval($value) . "|") { $value = doubleval($value); } else { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID11"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } elseif ($arFieldType["Type"] == "select") { if (!is_array($arFieldType["Options"]) || count($arFieldType["Options"]) <= 0 || strlen($value) <= 0) { $value = null; } elseif (!array_key_exists($value, $arFieldType["Options"])) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID35"), "parameter" => $arFieldName["Field"]); } } elseif ($arFieldType["Type"] == "bool") { if ($value !== "Y" && $value !== "N") { if ($value === true) { $value = "Y"; } elseif ($value === false) { $value = "N"; } elseif (strlen($value) > 0) { $value = strtolower($value); if (in_array($value, array("y", "yes", "true", "1"))) { $value = "Y"; } elseif (in_array($value, array("n", "no", "false", "0"))) { $value = "N"; } else { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID45"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } } elseif ($arFieldType["Type"] == "file") { if (array_key_exists("name", $value) && strlen($value["name"]) > 0) { if (!array_key_exists("MODULE_ID", $value) || strlen($value["MODULE_ID"]) <= 0) { $value["MODULE_ID"] = "bizproc"; } $value = CFile::SaveFile($value, "bizproc_wf", true, true); if (!$value) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID915"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } else { if (!is_array($value) && strlen($value) <= 0) { $value = null; } } } if ($value != null) { $result[] = $value; } } } if (!$arFieldType["Multiple"]) { if (count($result) > 0) { $result = $result[0]; } else { $result = null; } } return $result; }
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $arMap = array("group_name" => "GroupName", "owner_id" => "OwnerId", "users" => "Users"); $arProperties = array(); foreach ($arMap as $key => $value) { if ($key == "owner_id" || $key == "users") { continue; } $arProperties[$value] = $arCurrentValues[$key]; } $arProperties["OwnerId"] = CBPHelper::UsersStringToArray($arCurrentValues["owner_id"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arProperties["Users"] = CBPHelper::UsersStringToArray($arCurrentValues["users"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; return true; }
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); $arMap = array("requested_users" => "Users", "requested_overdue_date" => "OverdueDate", "requested_name" => "Name", "requested_description" => "Description", "requested_parameters" => "Parameters", "requested_information" => "RequestedInformation", "task_button_message" => "TaskButtonMessage", "comment_label_message" => "CommentLabelMessage", "show_comment" => "ShowComment", "status_message" => "StatusMessage", "set_status_message" => "SetStatusMessage", 'access_control' => 'AccessControl', "timeout_duration" => "TimeoutDuration", "timeout_duration_type" => "TimeoutDurationType"); $arProperties = array(); foreach ($arMap as $key => $value) { if ($key == "requested_users") { continue; } $arProperties[$value] = $arCurrentValues[$key]; } $arProperties["Users"] = CBPHelper::UsersStringToArray($arCurrentValues["requested_users"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $ar = array(); $j = -1; if (array_key_exists("RequestedInformation", $arProperties) && is_array($arProperties["RequestedInformation"])) { foreach ($arProperties["RequestedInformation"] as $arRI) { if (strlen($arRI["Name"]) <= 0) { continue; } $j++; $ar[$j] = $arRI; $ar[$j]["Required"] = $arRI["Required"] == "Y"; $ar[$j]["Multiple"] = $arRI["Multiple"] == "Y"; } } $arProperties["RequestedInformation"] = $ar; $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; if (is_array($arProperties["RequestedInformation"])) { foreach ($arProperties["RequestedInformation"] as $v) { $arWorkflowVariables[$v["Name"]] = $v; $arWorkflowVariables[$v["Name"]]["Name"] = $v["Title"]; } } return true; }
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); $arMap = array("mail_user_from" => "MailUserFrom", "mail_user_to" => "MailUserTo", "mail_subject" => "MailSubject", "mail_text" => "MailText", "mail_message_type" => "MailMessageType", "mail_charset" => "MailCharset", "dirrect_mail" => "DirrectMail", "mail_site" => "MailSite"); $arProperties = array(); foreach ($arMap as $key => $value) { if ($key == "mail_user_from" || $key == "mail_user_to") { continue; } $arProperties[$value] = $arCurrentValues[$key]; } if (strlen($arProperties["MailSite"]) <= 0) { $arProperties["MailSite"] = $arCurrentValues["mail_site_x"]; } list($mailUserFromArray, $mailUserFrom) = CBPHelper::UsersStringToArray($arCurrentValues["mail_user_from"], $documentType, $arErrors, array(__CLASS__, "CheckEmailUserValue")); if (count($arErrors) > 0) { return false; } $arProperties["MailUserFrom"] = implode(", ", $mailUserFrom); $arProperties["MailUserFromArray"] = $mailUserFromArray; list($mailUserToArray, $mailUserTo) = CBPHelper::UsersStringToArray($arCurrentValues["mail_user_to"], $documentType, $arErrors, array(__CLASS__, "CheckEmailUserValue")); if (count($arErrors) > 0) { return false; } $arProperties["MailUserTo"] = implode(", ", $mailUserTo); $arProperties["MailUserToArray"] = $mailUserToArray; $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; return true; }
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); $arProperties = array(); if (!isset($arCurrentValues["user_type"]) || !in_array($arCurrentValues["user_type"], array("boss", "random"))) { $arCurrentValues["user_type"] = "random"; } $arProperties["UserType"] = $arCurrentValues["user_type"]; if (!isset($arCurrentValues["max_level"]) || $arCurrentValues["max_level"] < 1 || $arCurrentValues["max_level"] > 10) { $arCurrentValues["max_level"] = 1; } $arProperties["MaxLevel"] = $arCurrentValues["max_level"]; $arProperties["UserParameter"] = CBPHelper::UsersStringToArray($arCurrentValues["user_parameter"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arProperties["ReserveUserParameter"] = CBPHelper::UsersStringToArray($arCurrentValues["reserve_user_parameter"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } if (!isset($arCurrentValues["skip_absent"]) || !in_array($arCurrentValues["skip_absent"], array("Y", "N"))) { $arCurrentValues["skip_absent"] = "Y"; } $arProperties["SkipAbsent"] = $arCurrentValues["skip_absent"]; $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; return true; }
} else { $op = ""; $newKey = $key; } if (array_key_exists($newKey, $arDocumentFields) && $arDocumentFields[$newKey]["Filterable"]) { if ($arDocumentFields[$newKey]["BaseType"] == "select") { $db = CIBlockProperty::GetPropertyEnum(substr($newKey, strlen("PROPERTY_")), array(), array("XML_ID" => $value, "IBLOCK_ID" => $arParams["BLOCK_ID"])); while ($ar = $db->Fetch()) { $value = $ar["ID"]; } } elseif ($arDocumentFields[$newKey]["BaseType"] == "string" || $arDocumentFields[$newKey]["BaseType"] == "text") { if ($op == "") { $op = "?"; } } elseif ($arDocumentFields[$newKey]["BaseType"] == "user") { $value = CBPHelper::UsersStringToArray($value, $documentType, $arErrors); if (is_array($value) && count($value) > 0) { $value = $value[0]; } if (substr($value, 0, strlen("user_")) == "user_") { $value = substr($value, strlen("user_")); } } elseif ($arDocumentFields[$newKey]["BaseType"] == "datetime" && strlen($value) > 0 && CheckDateTime($value)) { $isShort = strlen(trim($value)) <= 10; $appendTime = $op == '<=' ? '23:59:59' : '00:00:00'; if (strpos($newKey, 'PROPERTY_') === 0) { if ($timeZoneOffset != 0) { $value = date("Y-m-d " . ($isShort ? $appendTime : 'H:i:s'), MakeTimeStamp($value, CLang::GetDateFormat("FULL")) - $timeZoneOffset); } else { $value = CDatabase::FormatDate($value, CLang::GetDateFormat("FULL"), "YYYY-MM-DD " . ($isShort ? $appendTime : 'HH:MI:SS')); }
$canWrite = CBPDocument::CanUserOperateDocumentType(CBPCanUserOperateOperation::CreateWorkflow, $GLOBALS["USER"]->GetID(), array(MODULE_ID, ENTITY, $_POST['document_type'])); } catch (Exception $e) { $canWrite = false; } if (!$canWrite || !check_bitrix_sessid()) { ShowError(GetMessage("ACCESS_DENIED")); die; } if ($_POST["save"] == "Y") { $perms = array(); if (!isset($arErrors)) { $arErrors = array(); } if (is_array($_POST['perm'])) { foreach ($_POST['perm'] as $t => $v) { $perms[$t] = CBPHelper::UsersStringToArray($v, array(MODULE_ID, ENTITY, $_POST['document_type']), $arErrors); } } echo CUtil::PhpToJSObject($perms, false); die; } $APPLICATION->ShowTitle(GetMessage("BIZPROC_WFS_TITLE")); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; $runtime = CBPRuntime::GetRuntime(); $runtime->StartRuntime(); $documentService = $runtime->GetService("DocumentService"); echo $documentService->GetJSFunctionsForFields(array(MODULE_ID, ENTITY, $_POST['document_type']), "objFields"); $arAllowableOperations = $documentService->GetAllowableOperations(array(MODULE_ID, ENTITY, $_POST['document_type'])); if (defined('DISABLE_BIZPROC_PERMISSIONS') && DISABLE_BIZPROC_PERMISSIONS) { $arAllowableOperations = array(); }
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $arProperties = array("Fields" => array()); $arTaskPriority = array(0, 1, 2); foreach ($arTaskPriority as $k => $v) { $arTaskPriority[$v] = GetMessage("TASK_PRIORITY_" . $v); } $arGroups = array(GetMessage("TASK_EMPTY_GROUP")); if (CModule::IncludeModule("socialnetwork")) { $db = CSocNetGroup::GetList(array("NAME" => "ASC"), array("ACTIVE" => "Y"), false, false, array("ID", "NAME")); while ($ar = $db->GetNext()) { $arGroups[$ar["ID"]] = "[" . $ar["ID"] . "]" . $ar["NAME"]; } } $arDF = self::__GetFields(); foreach (static::$arAllowedTasksFieldNames as $field) { $r = null; if (in_array($field, array("CREATED_BY", "RESPONSIBLE_ID", "ACCOMPLICES", "AUDITORS"))) { $value = $arCurrentValues[$field]; if (strlen($value) > 0) { $arErrorsTmp = array(); $r = CBPHelper::UsersStringToArray($value, $documentType, $arErrorsTmp); if (count($arErrorsTmp) > 0) { $arErrors = array_merge($arErrors, $arErrorsTmp); } } } elseif (array_key_exists($field, $arCurrentValues) || array_key_exists($field . "_text", $arCurrentValues)) { $arValue = array(); if (array_key_exists($field, $arCurrentValues)) { $arValue = $arCurrentValues[$field]; if (!is_array($arValue) || is_array($arValue) && CBPHelper::IsAssociativeArray($arValue)) { $arValue = array($arValue); } } if (array_key_exists($field . "_text", $arCurrentValues)) { $arValue[] = $arCurrentValues[$field . "_text"]; } foreach ($arValue as $value) { $value = trim($value); if (!preg_match("#^\\{=[a-z0-9_]+:[a-z0-9_]+\\}\$#i", $value) && substr($value, 0, 1) !== "=") { if ($field == "PRIORITY") { if (strlen($value) <= 0) { $value = null; } if ($value != null && !array_key_exists($value, $arTaskPriority)) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => "Priority is empty", "parameter" => $field); } } elseif ($field == "GROUP_ID") { if (strlen($value) <= 0) { $value = null; } if ($value != null && !array_key_exists($value, $arGroups)) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => "Group is empty", "parameter" => $field); } } elseif (in_array($field, array("ALLOW_CHANGE_DEADLINE", "TASK_CONTROL", "ADD_IN_REPORT", 'ALLOW_TIME_TRACKING'))) { if (strtoupper($value) == "Y" || $value === true || $value . "!" == "1!") { $value = "Y"; } elseif (strtoupper($value) == "N" || $value === false || $value . "!" == "0!") { $value = "N"; } else { $value = null; } } else { if (!is_array($value) && strlen($value) <= 0) { $value = null; } } } if ($value != null) { $r[] = $value; } } } $r_orig = $r; if (!in_array($field, array("ACCOMPLICES", "AUDITORS"))) { if (count($r) > 0) { $r = $r[0]; } else { $r = null; } } if (in_array($field, array("TITLE", "CREATED_BY", "RESPONSIBLE_ID")) && ($r == null || is_array($r) && count($r) <= 0)) { $arErrors[] = array("code" => "emptyRequiredField", "message" => str_replace("#FIELD#", $arDF[$field]["Name"], GetMessage("BPCDA_FIELD_REQUIED"))); } $arProperties["Fields"][$field] = $r; if (array_key_exists($field . "_text", $arCurrentValues) && isset($r_orig[1])) { $arProperties["Fields"][$field . '_text'] = $r_orig[1]; } } $arUserFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("TASKS_TASK", 0, LANGUAGE_ID); foreach ($arUserFields as $field) { $r = $arCurrentValues[$field["FIELD_NAME"]]; if ($field["MULTIPLE"] == "Y" && (!$r || is_array($r) && count($r) <= 0)) { $arErrors[] = array("code" => "emptyRequiredField", "message" => str_replace("#FIELD#", $field["EDIT_FORM_LABEL"], GetMessage("BPCDA_FIELD_REQUIED"))); } $arProperties["Fields"][$field["FIELD_NAME"]] = $r; } $arProperties["HoldToClose"] = strtoupper($arCurrentValues["HOLD_TO_CLOSE"]) == "Y" ? true : false; $arProperties["AUTO_LINK_TO_CRM_ENTITY"] = strtoupper($arCurrentValues["AUTO_LINK_TO_CRM_ENTITY"]) == "Y" ? true : false; if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; return true; }
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); $arMap = array("absence_user" => "AbsenceUser", "absence_name" => "AbsenceName", "absence_desrc" => "AbsenceDesrc", "absence_from" => "AbsenceFrom", "absence_to" => "AbsenceTo", "absence_state" => "AbsenceState", "absence_finish_state" => "AbsenceFinishState", "absence_type" => "AbsenceType"); $arProperties = array(); foreach ($arMap as $key => $value) { if ($key == "absence_user") { continue; } $arProperties[$value] = $arCurrentValues[$key]; } $arProperties["AbsenceUser"] = CBPHelper::UsersStringToArray($arCurrentValues["absence_user"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; return true; }
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); $arMap = array("calendar_user" => "CalendarUser", "calendar_name" => "CalendarName", "calendar_desrc" => "CalendarDesrc", "calendar_from" => "CalendarFrom", "calendar_to" => "CalendarTo", "calendar_type" => "CalendarType", "calendar_owner_id" => "CalendarOwnerId", "calendar_section" => "CalendarSection"); $arProperties = array(); foreach ($arMap as $key => $value) { if ($key == "calendar_user") { continue; } $arProperties[$value] = $arCurrentValues[$key]; } $arProperties["CalendarUser"] = CBPHelper::UsersStringToArray($arCurrentValues["calendar_user"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; return true; }
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); $arProperties = array(); $arProperties["Permission"] = CBPHelper::UsersStringToArray($arCurrentValues["permission"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; $currentParent =& CBPWorkflowTemplateLoader::FindParentActivityByName($arWorkflowTemplate, $activityName); $c = count($currentParent['Children']); if ($c == 1) { if ($arCurrentValues["setstate"] != '') { $currentParent['Children'][] = array('Type' => 'SetStateActivity', 'Name' => md5(uniqid(mt_rand(), true)), 'Properties' => array('TargetStateName' => $arCurrentValues["setstate"]), 'Children' => array()); } } elseif ($currentParent['Children'][$c - 1]["Type"] == 'SetStateActivity') { if ($arCurrentValues["setstate"] != '') { $currentParent['Children'][$c - 1]["Properties"]['TargetStateName'] = $arCurrentValues["setstate"]; } else { unset($currentParent['Children'][$c - 1]); } } return true; }
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $arMap = array("owner_id" => "OwnerId", "users_to" => "UsersTo", "post_title" => "PostTitle", "post_message" => "PostMessage", 'post_message_type' => "PostMessageType", 'post_site' => "PostSite"); $arProperties = array(); foreach ($arMap as $key => $value) { if ($key == "owner_id" || $key == "users_to") { continue; } $arProperties[$value] = $arCurrentValues[$key]; } if (strlen($arProperties["PostSite"]) <= 0) { $arProperties["PostSite"] = $arCurrentValues["post_site_x"]; } $arProperties["OwnerId"] = CBPHelper::UsersStringToArray($arCurrentValues["owner_id"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arProperties["UsersTo"] = CBPHelper::UsersStringToArray($arCurrentValues["users_to"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; return true; }
function GetFieldInputValue($documentType, $arFieldType, $arFieldName, $arRequest, &$arErrors) { $v = substr($documentType, strlen("type_")); if (intval($v)."!" != $v."!") return null; $iblockId = intval($v); $result = array(); if ($arFieldType["Type"] == "S:UserID") { $value = $arRequest[$arFieldName["Field"]]; if (strlen($value) > 0) { $arErrorsTmp1 = array(); $result = CBPHelper::UsersStringToArray($value, array("bizproc", "CBPVirtualDocument", $documentType), $arErrorsTmp1); if (count($arErrorsTmp1) > 0) { foreach ($arErrorsTmp1 as $e) $arErrors[] = $e; } } } elseif (array_key_exists($arFieldName["Field"], $arRequest) || array_key_exists($arFieldName["Field"]."_text", $arRequest)) { $arValue = array(); if (array_key_exists($arFieldName["Field"], $arRequest)) { $arValue = $arRequest[$arFieldName["Field"]]; if (!is_array($arValue) || is_array($arValue) && CBPHelper::IsAssociativeArray($arValue)) $arValue = array($arValue); } if (array_key_exists($arFieldName["Field"]."_text", $arRequest)) $arValue[] = $arRequest[$arFieldName["Field"]."_text"]; foreach ($arValue as $value) { if (is_array($value) || !is_array($value) && (!preg_match("#^\{=[a-z0-9_]+:[a-z0-9_]+\}$#i", trim($value)) && (substr(trim($value), 0, 1) != "="))) { if ($arFieldType["Type"] == "N") { if (strlen($value) > 0) { $value = str_replace(" ", "", str_replace(",", ".", $value)); if (is_numeric($value)) { $value = doubleval($value); } else { $value = null; $arErrors[] = array( "code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID1N"), "parameter" => $arFieldName["Field"], ); } } else { $value = null; } } elseif ($arFieldType["Type"] == "L") { if (!is_array($arFieldType["Options"]) || count($arFieldType["Options"]) <= 0 || strlen($value) <= 0) { $value = null; } else { $ar = array_values($arFieldType["Options"]); if (is_array($ar[0])) { $b = false; foreach ($ar as $a) { if ($a[0] == $value) { $b = true; break; } } if (!$b) { $value = null; $arErrors[] = array( "code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID3N"), "parameter" => $arFieldName["Field"], ); } } else { if (!array_key_exists($value, $arFieldType["Options"])) { $value = null; $arErrors[] = array( "code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID3N"), "parameter" => $arFieldName["Field"], ); } } } } elseif ($arFieldType["Type"] == "B") { if ($value !== "Y" && $value !== "N") { if ($value === true) { $value = "Y"; } elseif ($value === false) { $value = "N"; } elseif (strlen($value) > 0) { $value = strtolower($value); if (in_array($value, array("y", "yes", "true", "1"))) { $value = "Y"; } elseif (in_array($value, array("n", "no", "false", "0"))) { $value = "N"; } else { $value = null; $arErrors[] = array( "code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID4N"), "parameter" => $arFieldName["Field"], ); } } else { $value = null; } } } elseif ($arFieldType["Type"] == "F") { if (array_key_exists("name", $value) && strlen($value["name"]) > 0) { if (!array_key_exists("MODULE_ID", $value)) $value["MODULE_ID"] = "bizproc"; $value = CFile::SaveFile($value, "bizproc_wf", true, true); if (!$value) { $value = null; $arErrors[] = array( "code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID9N"), "parameter" => $arFieldName["Field"], ); } } else { $value = null; } } elseif (strpos($arFieldType["Type"], ":") !== false) { $arCustomType = CIBlockProperty::GetUserType(substr($arFieldType["Type"], 2)); if (array_key_exists("GetLength", $arCustomType)) { if (call_user_func_array( $arCustomType["GetLength"], array( array("LINK_IBLOCK_ID" => $arFieldType["Options"]), array("VALUE" => $value) ) ) <= 0) { $value = null; } } else { if (!is_array($value) && (strlen($value) == 0) || is_array($value) && (count($value) == 0 || count($value) == 1 && isset($value["VALUE"]) && !is_array($value["VALUE"]) && strlen($value["VALUE"]) == 0)) $value = null; } if (($value !== null) && array_key_exists("CheckFields", $arCustomType)) { $arErrorsTmp1 = call_user_func_array( $arCustomType["CheckFields"], array( array("LINK_IBLOCK_ID" => $arFieldType["Options"]), array("VALUE" => $value) ) ); if (count($arErrorsTmp1) > 0) { $value = null; foreach ($arErrorsTmp1 as $e) $arErrors[] = array( "code" => "ErrorValue", "message" => $e, "parameter" => $arFieldName["Field"], ); } } if (($value !== null) && ($arFieldType["Type"] == "S:employee") && COption::GetOptionString("bizproc", "employee_compatible_mode", "N") != "Y") { $value = "user_".$value; } } else { if (!is_array($value) && strlen($value) <= 0) $value = null; } } if ($value !== null) $result[] = $value; } } if (!$arFieldType["Multiple"]) { if (count($result) > 0) $result = $result[0]; else $result = null; } return $result; }
function GetFieldInputValue($documentType, $arFieldType, $arFieldName, $arRequest, &$arErrors) { if ($storage = self::needProxyToDiskByDocType($documentType)) { return self::proxyToDisk(__FUNCTION__, array(\Bitrix\Disk\BizProcDocumentCompatible::generateDocumentType($storage->getId()), $arFieldType, $arFieldName, $arRequest, &$arErrors)); } $result = array(); if ($arFieldType["Type"] == "user") { $value = $arRequest[$arFieldName["Field"]]; if (strlen($value) > 0) { $result = CBPHelper::UsersStringToArray($value, array("webdav", "CIBlockDocumentWebdavSocnet", $documentType), $arErrors); if (count($arErrors) > 0) { foreach ($arErrors as $e) { $arErrors[] = $e; } } } } elseif (array_key_exists($arFieldName["Field"], $arRequest) || array_key_exists($arFieldName["Field"] . "_text", $arRequest)) { $arValue = array(); if (array_key_exists($arFieldName["Field"], $arRequest)) { $arValue = $arRequest[$arFieldName["Field"]]; if (!is_array($arValue) || is_array($arValue) && CBPHelper::IsAssociativeArray($arValue)) { $arValue = array($arValue); } } if (array_key_exists($arFieldName["Field"] . "_text", $arRequest)) { $arValue[] = $arRequest[$arFieldName["Field"] . "_text"]; } foreach ($arValue as $value) { if (is_array($value) || !is_array($value) && !preg_match("#^\\{=[a-z0-9_]+:[a-z0-9_]+\\}\$#i", trim($value))) { if ($arFieldType["Type"] == "int") { if (strlen($value) > 0) { $value = str_replace(" ", "", $value); if ($value . "|" == intval($value) . "|") { $value = intval($value); } else { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID1"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } elseif ($arFieldType["Type"] == "double") { if (strlen($value) > 0) { $value = str_replace(" ", "", str_replace(",", ".", $value)); if ($value . "|" == doubleval($value) . "|") { $value = doubleval($value); } else { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID11"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } elseif ($arFieldType["Type"] == "select") { if (!is_array($arFieldType["Options"]) || count($arFieldType["Options"]) <= 0 || strlen($value) <= 0) { $value = null; } else { $ar = array_values($arFieldType["Options"]); if (is_array($ar[0])) { $b = false; foreach ($ar as $a) { if ($a[0] == $value) { $b = true; break; } } if (!$b) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID35"), "parameter" => $arFieldName["Field"]); } } else { if (!array_key_exists($value, $arFieldType["Options"])) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID35"), "parameter" => $arFieldName["Field"]); } } } } elseif ($arFieldType["Type"] == "bool") { if ($value !== "Y" && $value !== "N") { if ($value === true) { $value = "Y"; } elseif ($value === false) { $value = "N"; } elseif (strlen($value) > 0) { $value = strtolower($value); if (in_array($value, array("y", "yes", "true", "1"))) { $value = "Y"; } elseif (in_array($value, array("n", "no", "false", "0"))) { $value = "N"; } else { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID45"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } } elseif ($arFieldType["Type"] == "file") { if (is_array($value) && array_key_exists("name", $value) && strlen($value["name"]) > 0) { if (!array_key_exists("MODULE_ID", $value) || strlen($value["MODULE_ID"]) <= 0) { $value["MODULE_ID"] = "bizproc"; } $value = CFile::SaveFile($value, "bizproc_wf", true, true); if (!$value) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID915"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } elseif (strpos($arFieldType["Type"], ":") !== false) { $arCustomType = CIBlockProperty::GetUserType(substr($arFieldType["Type"], 2)); if (array_key_exists("GetLength", $arCustomType)) { if (call_user_func_array($arCustomType["GetLength"], array(array("LINK_IBLOCK_ID" => $arFieldType["Options"]), array("VALUE" => $value))) <= 0) { $value = null; } } if ($value != null && array_key_exists("CheckFields", $arCustomType)) { $arErrorsTmp1 = call_user_func_array($arCustomType["CheckFields"], array(array("LINK_IBLOCK_ID" => $arFieldType["Options"]), array("VALUE" => $value))); if (count($arErrorsTmp1) > 0) { $value = null; foreach ($arErrorsTmp1 as $e) { $arErrors[] = array("code" => "ErrorValue", "message" => $e, "parameter" => $arFieldName["Field"]); } } } } else { if (!is_array($value) && strlen($value) <= 0) { $value = null; } } } if ($value != null) { $result[] = $value; } } } if (!$arFieldType["Multiple"]) { if (count($result) > 0) { $result = $result[0]; } else { $result = null; } } return $result; }
public static function GetFieldInputValue($documentType, $arFieldType, $arFieldName, $arRequest, &$arErrors) { if (strpos($documentType, '_') === false) { $documentType .= '_0'; } $arDocumentID = self::GetDocumentInfo($documentType); if (empty($arDocumentID)) { throw new CBPArgumentNullException('documentId'); } $result = array(); if ($arFieldType["Type"] == "user") { $value = array_key_exists($arFieldName["Field"], $arRequest) ? $arRequest[$arFieldName["Field"]] : ''; if ($value !== '') { $arErrorsTmp1 = array(); $result = CBPHelper::UsersStringToArray($value, $arDocumentID["DOCUMENT_TYPE"], $arErrorsTmp1); if (count($arErrorsTmp1) > 0) { foreach ($arErrorsTmp1 as $e) { $arErrors[] = $e; } } } elseif (array_key_exists($arFieldName["Field"] . "_text", $arRequest)) { $result[] = $arRequest[$arFieldName["Field"] . "_text"]; } } elseif (array_key_exists($arFieldName["Field"], $arRequest) || array_key_exists($arFieldName["Field"] . "_text", $arRequest)) { $arValue = array(); if (array_key_exists($arFieldName["Field"], $arRequest)) { $arValue = $arRequest[$arFieldName["Field"]]; if (!is_array($arValue) || is_array($arValue) && CBPHelper::IsAssociativeArray($arValue)) { $arValue = array($arValue); } } if (array_key_exists($arFieldName["Field"] . "_text", $arRequest)) { $arValue[] = $arRequest[$arFieldName["Field"] . "_text"]; } foreach ($arValue as $value) { if (is_array($value) || !is_array($value) && !CBPDocument::IsExpression(trim($value))) { if ($arFieldType['Type'] == 'email' || $arFieldType['Type'] == 'im' || $arFieldType['Type'] == 'web' || $arFieldType['Type'] == 'phone') { if (is_array($value)) { $keys1 = array_keys($value); foreach ($keys1 as $key1) { if (is_array($value[$key1])) { $keys2 = array_keys($value[$key1]); foreach ($keys2 as $key2) { if (!isset($value[$key1][$key2]["VALUE"]) || empty($value[$key1][$key2]["VALUE"])) { unset($value[$key1][$key2]); } } if (count($value[$key1]) <= 0) { unset($value[$key1]); } } else { unset($value[$key1]); } } if (count($value) <= 0) { $value = null; } } else { $value = null; } } elseif ($arFieldType["Type"] == "int") { if (strlen($value) > 0) { $value = str_replace(" ", "", $value); if ($value . "|" == intval($value) . "|") { $value = intval($value); } else { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID1"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } elseif ($arFieldType["Type"] == "double") { if (strlen($value) > 0) { $value = str_replace(" ", "", str_replace(",", ".", $value)); if (is_numeric($value)) { $value = doubleval($value); } else { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID11"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } elseif ($arFieldType["Type"] == "select") { if (!is_array($arFieldType["Options"]) || count($arFieldType["Options"]) <= 0 || strlen($value) <= 0) { $value = null; } else { $ar = array_values($arFieldType["Options"]); if (is_array($ar[0])) { $b = false; foreach ($ar as $a) { if ($a[0] == $value) { $b = true; break; } } if (!$b) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID35"), "parameter" => $arFieldName["Field"]); } } else { if (!array_key_exists($value, $arFieldType["Options"])) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID35"), "parameter" => $arFieldName["Field"]); } } } } elseif ($arFieldType["Type"] == "bool") { if ($value !== "Y" && $value !== "N") { if ($value === true) { $value = "Y"; } elseif ($value === false) { $value = "N"; } elseif (strlen($value) > 0) { $value = strtolower($value); if (in_array($value, array("y", "yes", "true", "1"))) { $value = "Y"; } elseif (in_array($value, array("n", "no", "false", "0"))) { $value = "N"; } else { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID45"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } } elseif ($arFieldType["Type"] == "file") { if (is_array($value) && array_key_exists("name", $value) && strlen($value["name"]) > 0) { if (!array_key_exists("MODULE_ID", $value) || strlen($value["MODULE_ID"]) <= 0) { $value["MODULE_ID"] = "bizproc"; } $value = CFile::SaveFile($value, "bizproc_wf", true, true); if (!$value) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID915"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } elseif (strpos($arFieldType["Type"], ":") !== false) { $customTypeID = str_replace('UF:', '', $arFieldType['Type']); $arCustomType = $GLOBALS["USER_FIELD_MANAGER"]->GetUserType($customTypeID); if ($customTypeID === 'crm' && $value === '') { //skip empty crm entity references $value = null; } elseif ($value !== null && array_key_exists("CheckFields", $arCustomType)) { $arErrorsTmp1 = call_user_func_array($arCustomType["CheckFields"], array(array("LINK_IBLOCK_ID" => $arFieldType["Options"]), array("VALUE" => $value))); if (count($arErrorsTmp1) > 0) { $value = null; foreach ($arErrorsTmp1 as $e) { $arErrors[] = array("code" => "ErrorValue", "message" => $e, "parameter" => $arFieldName["Field"]); } } } if (!is_array($value) && strlen($value) == 0 || is_array($value) && (count($value) == 0 || count($value) == 1 && isset($value["VALUE"]) && !is_array($value["VALUE"]) && strlen($value["VALUE"]) == 0)) { $value = null; } } else { if (!is_array($value) && strlen($value) <= 0) { $value = null; } } } if ($value !== null) { $result[] = $value; } } } $qty = count($result); if ($arFieldType["Type"] === "UF:boolean") { //Boolean is not multiple. Last value is actual. $result = $qty > 0 ? $result[$qty - 1] : null; } elseif (!$arFieldType["Multiple"]) { $result = $qty !== 0 ? $result[0] : null; } return $result; }
function GetFieldInputValue($documentType, $arFieldType, $arFieldName, $arRequest, &$arErrors) { $iblockId = intval(substr($documentType, strlen("iblock_"))); if ($iblockId <= 0) { throw new CBPArgumentOutOfRangeException("documentType", $documentType); } $result = array(); if ($arFieldType["Type"] == "user") { $value = $arRequest[$arFieldName["Field"]]; if (strlen($value) > 0) { $result = CBPHelper::UsersStringToArray($value, array("iblock", "CIBlockDocument", $documentType), $arErrors); if (count($arErrors) > 0) { foreach ($arErrors as $e) { $arErrors[] = $e; } } } } elseif (array_key_exists($arFieldName["Field"], $arRequest) || array_key_exists($arFieldName["Field"] . "_text", $arRequest)) { $arValue = array(); if (array_key_exists($arFieldName["Field"], $arRequest)) { $arValue = $arRequest[$arFieldName["Field"]]; if (!is_array($arValue) || is_array($arValue) && CBPHelper::IsAssociativeArray($arValue)) { $arValue = array($arValue); } } if (array_key_exists($arFieldName["Field"] . "_text", $arRequest)) { $arValue[] = $arRequest[$arFieldName["Field"] . "_text"]; } foreach ($arValue as $value) { if (is_array($value) || !is_array($value) && !preg_match("#^\\{=[a-z0-9_]+:[a-z0-9_]+\\}\$#i", trim($value)) && substr(trim($value), 0, 1) != "=") { if ($arFieldType["Type"] == "int") { if (strlen($value) > 0) { $value = str_replace(" ", "", $value); if ($value . "|" == intval($value) . "|") { $value = intval($value); } else { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID1"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } elseif ($arFieldType["Type"] == "double") { if (strlen($value) > 0) { $value = str_replace(" ", "", str_replace(",", ".", $value)); if (is_numeric($value)) { $value = doubleval($value); } else { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID11"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } elseif ($arFieldType["Type"] == "select") { if (!is_array($arFieldType["Options"]) || count($arFieldType["Options"]) <= 0 || strlen($value) <= 0) { $value = null; } else { $ar = array_values($arFieldType["Options"]); if (is_array($ar[0])) { $b = false; foreach ($ar as $a) { if ($a[0] == $value) { $b = true; break; } } if (!$b) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID35"), "parameter" => $arFieldName["Field"]); } } else { if (!array_key_exists($value, $arFieldType["Options"])) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID35"), "parameter" => $arFieldName["Field"]); } } } } elseif ($arFieldType["Type"] == "bool") { if ($value !== "Y" && $value !== "N") { if ($value === true) { $value = "Y"; } elseif ($value === false) { $value = "N"; } elseif (strlen($value) > 0) { $value = strtolower($value); if (in_array($value, array("y", "yes", "true", "1"))) { $value = "Y"; } elseif (in_array($value, array("n", "no", "false", "0"))) { $value = "N"; } else { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID45"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } } elseif ($arFieldType["Type"] == "file") { if (is_array($value) && array_key_exists("name", $value) && strlen($value["name"]) > 0) { if (!array_key_exists("MODULE_ID", $value) || strlen($value["MODULE_ID"]) <= 0) { $value["MODULE_ID"] = "bizproc"; } $value = CFile::SaveFile($value, "bizproc_wf", true, true); if (!$value) { $value = null; $arErrors[] = array("code" => "ErrorValue", "message" => GetMessage("BPCGWTL_INVALID915"), "parameter" => $arFieldName["Field"]); } } else { $value = null; } } elseif (strpos($arFieldType["Type"], ":") !== false) { $arCustomType = CIBlockProperty::GetUserType(substr($arFieldType["Type"], 2)); if (array_key_exists("GetLength", $arCustomType)) { if (call_user_func_array($arCustomType["GetLength"], array(array("LINK_IBLOCK_ID" => $arFieldType["Options"]), array("VALUE" => $value))) <= 0) { $value = null; } } if ($value != null && array_key_exists("CheckFields", $arCustomType)) { $arErrorsTmp1 = call_user_func_array($arCustomType["CheckFields"], array(array("LINK_IBLOCK_ID" => $arFieldType["Options"]), array("VALUE" => $value))); if (count($arErrorsTmp1) > 0) { $value = null; foreach ($arErrorsTmp1 as $e) { $arErrors[] = array("code" => "ErrorValue", "message" => $e, "parameter" => $arFieldName["Field"]); } } } if ($value !== null && $arFieldType["Type"] == "S:employee" && COption::GetOptionString("bizproc", "employee_compatible_mode", "N") != "Y") { $value = "user_" . $value; } } else { if (!is_array($value) && strlen($value) <= 0) { $value = null; } } } if ($value !== null) { $result[] = $value; } } } if (!$arFieldType["Multiple"]) { if (count($result) > 0) { $result = $result[0]; } else { $result = null; } } return $result; }
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); $arMap = array("task_type" => "TaskType", "task_owner_id" => "TaskOwnerId", "task_created_by" => "TaskCreatedBy", "task_active_from" => "TaskActiveFrom", "task_active_to" => "TaskActiveTo", "task_name" => "TaskName", "task_detail_text" => "TaskDetailText", "task_priority" => "TaskPriority", "task_assigned_to" => "TaskAssignedTo", "task_trackers" => "TaskTrackers", "task_forum_id" => "TaskForumId"); $arProperties = array(); foreach ($arMap as $key => $value) { if ($key == "task_created_by" || $key == "task_assigned_to" || $key == "task_trackers") { continue; } $arProperties[$value] = $arCurrentValues[$key]; } $arProperties["TaskCreatedBy"] = CBPHelper::UsersStringToArray($arCurrentValues["task_created_by"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arProperties["TaskAssignedTo"] = CBPHelper::UsersStringToArray($arCurrentValues["task_assigned_to"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arProperties["TaskTrackers"] = CBPHelper::UsersStringToArray($arCurrentValues["task_trackers"], $documentType, $arErrors); if (count($arErrors) > 0) { return false; } $arErrors = self::ValidateProperties($arProperties, new CBPWorkflowTemplateUser(CBPWorkflowTemplateUser::CurrentUser)); if (count($arErrors) > 0) { return false; } $arCurrentActivity =& CBPWorkflowTemplateLoader::FindActivityByName($arWorkflowTemplate, $activityName); $arCurrentActivity["Properties"] = $arProperties; return true; }