Your IP : 3.138.119.7


Current Path : /home/bitrix/ext_www/ballu.in.ua/bitrix/components/bitrix/bizproc.workflow.list/
Upload File :
Current File : /home/bitrix/ext_www/ballu.in.ua/bitrix/components/bitrix/bizproc.workflow.list/component.php

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if (!CModule::IncludeModule('bizproc')):
	return false;
endif;
global $by, $order;
$by = (empty($by) ? "name" : $by);
$order = (empty($order) ? "asc" : $order);
/********************************************************************
				Input params
********************************************************************/
/***************** BASE ********************************************/
	$arParams["MODULE_ID"] = trim(empty($arParams["MODULE_ID"]) ? $_REQUEST["module_id"] : $arParams["MODULE_ID"]);
	$arParams["ENTITY"] = trim(empty($arParams["ENTITY"]) ? $_REQUEST["entity"] : $arParams["ENTITY"]);
	$arParams["DOCUMENT_ID"] = trim(empty($arParams["DOCUMENT_ID"]) ? $_REQUEST["document_id"] : $arParams["DOCUMENT_ID"]);
/***************** URL *********************************************/
	$URL_NAME_DEFAULT = array(
		"edit" => "PAGE_NAME=edit&ID=#ID#&ACTION=#ACTION#");
	
	foreach ($URL_NAME_DEFAULT as $URL => $URL_VALUE)
	{
		$arParams[strToUpper($URL)."_URL"] = trim($arParams[strToUpper($URL)."_URL"]);
		if (empty($arParams[strToUpper($URL)."_URL"]))
			$arParams[strToUpper($URL)."_URL"] = $APPLICATION->GetCurPage()."?".$URL_VALUE;
		$arParams["~".strToUpper($URL)."_URL"] = $arParams[strToUpper($URL)."_URL"];
		$arParams[strToUpper($URL)."_URL"] = htmlspecialchars($arParams["~".strToUpper($URL)."_URL"]);
	}
/***************** STANDART ****************************************/
	$arParams["SET_TITLE"] = ($arParams["SET_TITLE"] == "N" ? "N" : "Y");
/********************************************************************
				/Input params
********************************************************************/

$arError = array();

if (strlen($arParams["MODULE_ID"]) <= 0)
	$arError[] = array(
		"id" => "empty_module_id",
		"text" => GetMessage("BPATT_NO_MODULE_ID"));
if (strlen($arParams["ENTITY"]) <= 0)
	$arError[] = array(
		"id" => "empty_entity",
		"text" => GetMessage("BPATT_NO_ENTITY"));
if (strlen($arParams["DOCUMENT_ID"]) <= 0)
	$arError[] = array(
		"id" => "empty_document_id",
		"text" => GetMessage("BPATT_NO_DOCUMENT_TYPE"));
$documentType = array($arParams["MODULE_ID"], $arParams["ENTITY"], $arParams["DOCUMENT_ID"]);
$arParams["USER_GROUPS"] = $GLOBALS["USER"]->GetUserGroupArray();
if (method_exists($arParams["DOCUMENT_TYPE"][1], "GetUserGroups"))
{
	$arParams["USER_GROUPS"] = call_user_func_array(
		array($arParams["ENTITY"], "GetUserGroups"), 
		array($documentType, $arParams["DOCUMENT_ID"], $GLOBALS["USER"]->GetID()));
}

if (empty($arError))
{
	if (!CBPDocument::CanUserOperateDocumentType(
		CBPCanUserOperateOperation::CreateWorkflow,
		$GLOBALS["USER"]->GetID(),
		$documentType,
		array("UserGroups" => $arParams["USER_GROUPS"])
	))
	{
		$arError[] = array(
			"id" => "access_denied",
			"text" => GetMessage("BPATT_NO_PERMS"));
	}
}
if (!empty($arError))
{
	$e = new CAdminException($arError);
	ShowError($e->GetString());
	return false;
}
elseif (!empty($_REQUEST['action']) && !check_bitrix_sessid())
{
}
elseif ($_REQUEST['action'] == 'create_default')
{
	CBPDocument::AddDefaultWorkflowTemplates($documentType);
	LocalRedirect($APPLICATION->GetCurPageParam("", array("action", "sessid")));
}
elseif ($_REQUEST['ID'] <= 0)
{
}
elseif ($_REQUEST['action'] == 'delete')
{
	$arErrorsTmp = array();
	CBPDocument::DeleteWorkflowTemplate($_REQUEST['ID'], $documentType, $arErrorsTmp);
	if (empty($arErrorsTmp))
	{	
		$url = (!empty($_REQUEST["back_url"]) ? $_REQUEST["back_url"] : $APPLICATION->GetCurPageParam("", array("action", "sessid", "ID")));
		LocalRedirect($url);
	}
	elseif (!empty($arErrorsTmp))
	{
		foreach ($arErrorsTmp as $e)
			$arError[] = array(
				"id" => "delete_error",
				"text" => $e["message"]);
		$e = new CAdminException($arError);
		ShowError($e->GetString());
	}
}
elseif (strpos($_REQUEST['action'], "autoload_") !== false)
{
	$db_res = CBPWorkflowTemplateLoader::GetList(
		array($by => $order),
		array("DOCUMENT_TYPE" => $documentType, "ID" => $_REQUEST["ID"]),
		false,
		false,
		array("ID", "NAME", "AUTO_EXECUTE"));
	if ($db_res && $res = $db_res-> Fetch())
	{
		$arFields = array("AUTO_EXECUTE" => $res["AUTO_EXECUTE"]);
		$tmp = false; 
		if (strpos($_REQUEST['action'], "create") !== false)
			$tmp = CBPDocumentEventType::Create;
		elseif (strpos($_REQUEST['action'], "edit") !== false)
			$tmp = CBPDocumentEventType::Edit;
		elseif (strpos($_REQUEST['action'], "delete") !== false)
			$tmp = CBPDocumentEventType::Delete;

		if ($tmp != false)
		{
			if (strpos($_REQUEST['action'], "_n") !== false)
				$arFields["AUTO_EXECUTE"] = ((($arFields["AUTO_EXECUTE"] & $tmp) != 0) ? $arFields["AUTO_EXECUTE"] ^ $tmp : $arFields["AUTO_EXECUTE"]);
			else 
				$arFields["AUTO_EXECUTE"] = ((($arFields["AUTO_EXECUTE"] & $tmp) == 0) ? $arFields["AUTO_EXECUTE"] ^ $tmp : $arFields["AUTO_EXECUTE"]);
		}
		
		if ($arFields["AUTO_EXECUTE"] != $res["AUTO_EXECUTE"])
			CBPWorkflowTemplateLoader::Update($_REQUEST["ID"], $arFields); 
	}
	$url = (!empty($_REQUEST["back_url"]) ? $_REQUEST["back_url"] : $APPLICATION->GetCurPageParam("", array("action", "sessid", "ID")));
	LocalRedirect($url);
}
/********************************************************************
				Default falues
********************************************************************/
$arResult["NAV_STRING"] = "";
$arResult["NAV_RESULT"] = "";
$arResult["TEMPLATES"] = array();
$arResult["GRID_TEMPLATES"] = array();
/********************************************************************
				/Default falues
********************************************************************/

/********************************************************************
				Data
********************************************************************/
$db_res = CBPWorkflowTemplateLoader::GetList(
	array($by => $order),
	array("DOCUMENT_TYPE" => $documentType),
	false,
	false,
	array("ID", "NAME", "DESCRIPTION", "MODIFIED", "USER_ID", "AUTO_EXECUTE", "USER_NAME", "USER_LAST_NAME", "USER_LOGIN", "ACTIVE"));
if ($db_res)
{
	$db_res->NavStart(25, false);
	$arResult["NAV_RESULT"] = $db_res;
	$arResult["NAV_STRING"] = $db_res->GetPageNavStringEx($navComponentObject, GetMessage("BPATT_NAV"), "");

	$adminPage = $APPLICATION->GetCurPageParam(
		'back_url='.urlencode($APPLICATION->GetCurPageParam()).'&action=delete&'.bitrix_sessid_get(), 
		array('back_url', 'action', 'ID', 'sessid'));

	while ($res = $db_res->GetNext())
	{
		$res["URL"] = array(
			"EDIT" => CComponentEngine::MakePathFromTemplate($arParams["~EDIT_URL"], 
							array("ID" => $res["ID"], "MODULE_ID" => $arParams["MODULE_ID"], 
								"ENTITY" => $arParams["ENTITY"], "DOCUMENT_ID" => $arParams["DOCUMENT_ID"])),
			"DELETE" => $adminPage."&ID=".$res["ID"]);

		foreach ($res["URL"] as $key => $val):
			$res["URL"]["~".$key] = $val;
			$res["URL"][$key] = htmlspecialchars($val);
		endforeach;
		$res["USER"] = trim($res["USER_NAME"]." ".$res["USER_LAST_NAME"]);
		$res["USER"] = (empty($res["USER"]) ? $res["USER_LOGIN"] : $res["USER"]);

		$autoExecuteText = array();
		if ($res["AUTO_EXECUTE"] == CBPDocumentEventType::None)
			$autoExecuteText[] = GetMessage("BPATT_AE_NONE");
		if (($res["AUTO_EXECUTE"] & CBPDocumentEventType::Create) != 0)
			$autoExecuteText[] = GetMessage("BPATT_AE_CREATE");
		if (($res["AUTO_EXECUTE"] & CBPDocumentEventType::Edit) != 0)
			$autoExecuteText[] = GetMessage("BPATT_AE_EDIT");
		if (($res["AUTO_EXECUTE"] & CBPDocumentEventType::Delete) != 0)
			$autoExecuteText[] = GetMessage("BPATT_AE_DELETE");
		$res["AUTO_EXECUTE"] = $autoExecuteText;
		$arResult["TEMPLATES"][$res["ID"]] = $res;

		$b = (($res["~AUTO_EXECUTE"] & CBPDocumentEventType::Create) != 0);
		$url = $APPLICATION->GetCurPageParam('ID='.$res["ID"].'&action=autoload_create'.($b ? '_n' : '').'&'.bitrix_sessid_get(), 
			array('back_url', 'action', 'ID', 'sessid'));
		$b1 = (($res["~AUTO_EXECUTE"] & CBPDocumentEventType::Edit) != 0);
		$url1 = $APPLICATION->GetCurPageParam('ID='.$res["ID"].'&action=autoload_edit'.($b1 ? '_n' : '').'&'.bitrix_sessid_get(), 
			array('back_url', 'action', 'ID', 'sessid'));

		$arActions = array(
			array(
				"ICONCLASS" => "",
				"TITLE" => ($b ? GetMessage("BPATT_DO_N_LOAD_CREATE_TITLE") : GetMessage("BPATT_DO_LOAD_CREATE_TITLE")),
				"TEXT" => ($b ? GetMessage("BPATT_DO_N_LOAD_CREATE") : GetMessage("BPATT_DO_LOAD_CREATE")),
				"ONCLICK" => "jsUtils.Redirect([], '".CUtil::JSEscape($url)."');"), 
			array(
				"ICONCLASS" => "",
				"TITLE" => ($b1 ? GetMessage("BPATT_DO_N_LOAD_EDIT_TITLE") : GetMessage("BPATT_DO_LOAD_EDIT_TITLE")),
				"TEXT" => ($b1 ? GetMessage("BPATT_DO_N_LOAD_EDIT") : GetMessage("BPATT_DO_LOAD_EDIT")),
				"ONCLICK" => "jsUtils.Redirect([], '".CUtil::JSEscape($url1)."');")); 
		$arActions[] = array("SEPARATOR" => true);
		if (IsModuleInstalled("bizprocdesigner"))
		{
			$arActions[] = array(
				"ICONCLASS" => "edit",
				"TITLE" => GetMessage("BPATT_DO_EDIT1"),
				"TEXT" => GetMessage("BPATT_DO_EDIT1"),
				"ONCLICK" => "jsUtils.Redirect([], '".CUtil::JSEscape($res["URL"]["~EDIT"])."');", 
				"DEFAULT" => true);
		}
		$arActions[] = array(
			"ICONCLASS" => "delete",
			"TITLE" => GetMessage("BPATT_DO_DELETE1"),
			"TEXT" => GetMessage("BPATT_DO_DELETE1"),
			"ONCLICK" => "if(confirm('".CUtil::JSEscape(GetMessage("BPATT_DO_DELETE1_CONFIRM"))."')){jsUtils.Redirect([], '".CUtil::JSEscape($res["URL"]["~DELETE"])."')};");

		$arResult["GRID_TEMPLATES"][$res["ID"]] = array(
				"id" => $res["ID"], 
				"data" => $res, 
				"actions" => $arActions, 
				"columns" => array(
					"NAME" => (IsModuleInstalled("bizprocdesigner") ? '<a href="'.$res["URL"]["EDIT"].'">'.$res["NAME"].'</a>' : $res["NAME"]), 
					"AUTO_EXECUTE" => implode("<br />", $res["AUTO_EXECUTE"])), 
				"editable" => false); 
		
	}
}
$this->IncludeComponentTemplate();

/********************************************************************
				Standart operations
********************************************************************/
if($arParams["SET_TITLE"] == "Y")
{
	$APPLICATION->SetTitle(GetMessage("BPATT_TITLE"));
}
/********************************************************************
				/Standart operations
********************************************************************/
?>