Your IP : 52.14.56.234


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/bizproc.task.list/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/bizproc.task.list/component.php

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

if (!CModule::IncludeModule("bizproc"))
	return false;

global $USER, $APPLICATION;

if (!$USER->IsAuthorized())
{
	$APPLICATION->AuthForm('');
	return false;
}

$currentUserId = $USER->GetID();
$isAdmin = $USER->IsAdmin() || (CModule::IncludeModule('bitrix24') && CBitrix24::IsPortalAdmin($USER->GetID()));

$targetUserId = intval(empty($arParams["USER_ID"]) ? $USER->GetID() : $arParams["USER_ID"]);
if (
	$targetUserId != $currentUserId
	&& !$isAdmin
	&& !CBPHelper::checkUserSubordination($currentUserId, $targetUserId)
)
{
	ShowError(GetMessage("BPATL_ERROR_SUBORDINATION"));
	return false;
}

$arParams["WORKFLOW_ID"] = (empty($arParams["WORKFLOW_ID"]) ? $_REQUEST["WORKFLOW_ID"] : $arParams["WORKFLOW_ID"]);

$arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? COption::GetOptionString("bizproc", "name_template", CSite::GetNameFormat(false), SITE_ID) : str_replace(array("#NOBR#","#/NOBR#"), array("",""), $arParams["NAME_TEMPLATE"]);

$arResult['back_url'] = urlencode(empty($_REQUEST['back_url']) ? $APPLICATION->GetCurPage() : $_REQUEST['back_url']);

$arParams["TASK_EDIT_URL"] = trim($arParams["TASK_EDIT_URL"]);
if (empty($arParams["TASK_EDIT_URL"]))
	$arParams["TASK_EDIT_URL"] = $APPLICATION->GetCurPage()."?PAGE_NAME=task_edit&ID=#ID#&back_url=".$arResult["back_url"];
else
	$arParams["TASK_EDIT_URL"] .= (mb_strpos($arParams["TASK_EDIT_URL"], "?") === false ? "?" : "&")."back_url=".$arResult["back_url"];

$arParams["~TASK_EDIT_URL"] = $arParams["TASK_EDIT_URL"];
$arParams["TASK_EDIT_URL"] = htmlspecialcharsbx($arParams["~TASK_EDIT_URL"]);

$arParams["PAGE_ELEMENTS"] = intval(intVal($arParams["PAGE_ELEMENTS"]) > 0 ? $arParams["PAGE_ELEMENTS"] : 50);
$arParams["PAGE_NAVIGATION_TEMPLATE"] = trim($arParams["PAGE_NAVIGATION_TEMPLATE"]);
$arParams["SHOW_TRACKING"] = ($arParams["SHOW_TRACKING"] == "Y" ? "Y" : "N");

$arParams["SET_TITLE"] = ($arParams["SET_TITLE"] == "N" ? "N" : "Y"); //Turn on by default
$arParams["SET_NAV_CHAIN"] = ($arParams["SET_NAV_CHAIN"] == "N" ? "N" : "Y"); //Turn on by default
$arParams['COUNTERS_ONLY'] = (isset($arParams['COUNTERS_ONLY']) && $arParams['COUNTERS_ONLY'] == 'Y');

$arResult["FatalErrorMessage"] = "";
$arResult["ErrorMessage"] = "";

$arResult["NAV_RESULT"] = "";
$arResult["NAV_STRING"] = "";
$arResult["TASKS"] = array();
$arResult["TRACKING"] = array();

if ($arResult["FatalErrorMessage"] == '' && !$arParams['COUNTERS_ONLY'])
{
	$arResult['ERRORS'] = array();
	$arResult['USE_SUBORDINATION'] = (bool)CModule::IncludeModule('intranet');
	$arResult["GRID_ID"] = "bizproc_task_list";

	$arSelectFields = [
		"ID", "WORKFLOW_ID", "PARAMETERS", "MODIFIED", "OVERDUE_DATE", 'IS_INLINE', 'STATUS',
		'USER_ID', 'USER_STATUS', 'WORKFLOW_STATE', 'ACTIVITY', 'DOCUMENT_NAME'
	];

	$gridOptions = new CGridOptions($arResult["GRID_ID"]);
	$gridColumns = $gridOptions->GetVisibleColumns();
	$gridSort = $gridOptions->GetSorting(array("sort" => array("ID" => "desc")));

	$arResult["HEADERS"] = array(
		array("id" => "ID", "name" => "ID", "default" => false, "sort" => "ID"),
		array("id" => "DOCUMENT_NAME", "name" => GetMessage("BPATL_DOCUMENT_NAME"), "default" => false, "sort" => "DOCUMENT_NAME"),
		array("id" => "DESCRIPTION", "name" => GetMessage("BPATL_DESCRIPTION"), "default" => true, "sort" => ""),
		array("id" => "COMMENTS", "name" => GetMessage("BPATL_COMMENTS"), "default" => true, "sort" => "", 'hideName' => true, 'iconCls' => 'bp-comments-icon'),
		array("id" => "WORKFLOW_PROGRESS", "name" => GetMessage("BPATL_WORKFLOW_PROGRESS"), "default" => true, "sort" => ""),
		array("id" => "NAME", "name" => GetMessage("BPATL_NAME"), "default" => true, "sort" => "NAME"),
		array("id" => "MODIFIED", "name" => GetMessage("BPATL_MODIFIED"), "default" => false, "sort" => "MODIFIED"),
		array("id" => "WORKFLOW_STARTED", "name" => GetMessage("BPATL_STARTED"), "default" => false, "sort" => "WORKFLOW_STARTED"),
		array("id" => "WORKFLOW_STARTED_BY", "name" => GetMessage("BPATL_STARTED_BY"), "default" => false, "sort" => "WORKFLOW_STARTED_BY"),
		array("id" => "OVERDUE_DATE", "name" => GetMessage("BPATL_OVERDUE_DATE"), "default" => false, "sort" => "OVERDUE_DATE"),
		array("id" => "WORKFLOW_TEMPLATE_NAME", "name" => GetMessage("BPATL_WORKFLOW_NAME"), "default" => false, "sort" => "WORKFLOW_TEMPLATE_NAME"),
		array("id" => "WORKFLOW_STATE", "name" => GetMessage("BPATL_WORKFLOW_STATE"), "default" => false, "sort" => "WORKFLOW_STATE"),
	);

	foreach ($arResult["HEADERS"] as $h)
	{
		if ((count($gridColumns) <= 0 || in_array($h["id"], $gridColumns)) && !in_array($h["id"], $arSelectFields))
			$arSelectFields[] = $h["id"];
	}

	$arResult["FILTER"] = array(
		array("id" => "NAME", "name" => GetMessage("BPATL_NAME"), "type" => "string", 'default' => true),
		array("id" => "DESCRIPTION", "name" => GetMessage("BPATL_DESCRIPTION"), "type" => "string"),
		array("id" => "MODIFIED", "name" => GetMessage("BPATL_MODIFIED"), "type" => "date", 'default' => true),
		array('id' => 'USER_STATUS',  'name' => GetMessage('BPATL_FILTER_STATUS'), 'type' => 'list',
			'items' => array(
				0 => GetMessage('BPATL_FILTER_STATUS_RUNNING'),
				1 => GetMessage('BPATL_FILTER_STATUS_COMPLETE'),
				2 => GetMessage('BPATL_FILTER_STATUS_ALL'),
		), 'default' => true),
	);

	if ($arResult['USE_SUBORDINATION'])
		$arResult["FILTER"][] = array('id' => 'USER_ID',  'name' => GetMessage('BPATL_FILTER_USER'), 'type' => 'user', 'default' => true);

	$arResult['FILTER_PRESETS'] = array(
		'filter_running' => array('name' => GetMessage('BPATL_FILTER_STATUS_RUNNING'), 'fields' => array('USER_STATUS' => 0)),
		'filter_complete' => array('name' => GetMessage('BPATL_FILTER_STATUS_COMPLETE'), 'fields' => array( 'USER_STATUS' => 1)),
		'filter_all' => array('name' => GetMessage('BPATL_FILTER_STATUS_ALL'), 'fields' => array( 'USER_STATUS' => 2)),
	);

	$arFilter = array("USER_ID" => $targetUserId, 'USER_STATUS' => CBPTaskUserStatus::Waiting);

	$arResult['DOCUMENT_TYPES'] = array(
		'*' => array('NAME' => GetMessage('BPATL_FILTER_DOCTYPE_ALL'), 'COUNTER_KEY' => '*'),
		'processes' => array('NAME' => GetMessage('BPATL_FILTER_DOCTYPE_CLAIMS'), 'FILTER' => array('MODULE_ID' => 'lists', 'ENTITY' => 'BizprocDocument'), 'COUNTER_KEY' => 'lists'),
		'crm' => array('NAME' => GetMessage('BPATL_FILTER_DOCTYPE_CRM'), 'FILTER' => array('MODULE_ID' => 'crm'), 'COUNTER_KEY' => 'crm'),
		'disk' => array('NAME' => GetMessage('BPATL_FILTER_DOCTYPE_DISK'), 'FILTER' => array('MODULE_ID' => 'disk'), 'COUNTER_KEY' => 'disk'),
		'lists' => array('NAME' => GetMessage('BPATL_FILTER_DOCTYPE_LISTS'), 'FILTER' => array('MODULE_ID' => 'lists', 'ENTITY' => 'Bitrix\Lists\BizprocDocumentLists'), 'COUNTER_KEY' => 'iblock')
	);

	if (!empty($_REQUEST['type']) && isset($arResult['DOCUMENT_TYPES'][$_REQUEST['type']]))
	{
		$arResult['DOCUMENT_TYPES'][$_REQUEST['type']]['ACTIVE'] = true;
		if (!empty($arResult['DOCUMENT_TYPES'][$_REQUEST['type']]['FILTER']))
		{
			$arFilter = array_merge($arFilter, $arResult['DOCUMENT_TYPES'][$_REQUEST['type']]['FILTER']);
		}
	}
	else
		$arResult['DOCUMENT_TYPES']['*']['ACTIVE'] = true;

	if (!empty($arParams['MODULE_ID']))
	{
		$arFilter['MODULE_ID'] = $arParams['MODULE_ID'];
		unset($arFilter['ENTITY']);
	}

	if (empty($arParams["WORKFLOW_ID"]))
	{
		$ar = array("" => GetMessage("BPATL_WORKFLOW_ID_ANY"));
		$dbResTmp = CBPWorkflowTemplateLoader::GetList(
			array('NAME' => 'ASC'),
			array(
				"ACTIVE" => "Y",
				"USER_ID" => $currentUserId,
				'<AUTO_EXECUTE' => CBPDocumentEventType::Automation
			),
			false, false,
			array('ID', 'NAME')
		);

		while ($arResTmp = $dbResTmp->GetNext())
			$ar[$arResTmp['ID']] = $arResTmp["NAME"];

		$arResult["FILTER"][] = array("id" => "WORKFLOW_TEMPLATE_ID", "name" => GetMessage("BPATL_WORKFLOW_ID"), "type" => "list", "items" => $ar);
	}
	else
	{
		$arFilter["WORKFLOW_ID"] = $arParams["WORKFLOW_ID"];
	}

	if (!empty($_REQUEST['USER_ID']) && !empty($_REQUEST['clear_filter']))
		unset($_REQUEST['USER_ID']);

	$gridFilter = $gridOptions->GetFilter($arResult["FILTER"]);
	foreach ($gridFilter as $key => $value)
	{
		if (mb_substr($key, -5) == "_from")
		{
			$op = ">=";
			$newKey = mb_substr($key, 0, -5);

			if (in_array($newKey, array("MODIFIED", "OVERDUE_DATE")) && mb_strlen($value) <= 10)
			{
				$dt = MakeTimeStamp($value, FORMAT_DATE);
				$value = FormatDate('FULL', $dt);
			}

		}
		elseif (mb_substr($key, -3) == "_to")
		{
			$op = "<=";
			$newKey = mb_substr($key, 0, -3);

			if (in_array($newKey, array("MODIFIED", "OVERDUE_DATE")) && mb_strlen($value) <= 10)
			{
				$dt = MakeTimeStamp($value, FORMAT_DATE) + 86399;// + 23:59:59
				$value = FormatDate('FULL', $dt);
			}
		}
		else
		{
			$op = "";
			$newKey = $key;
		}

		if (!in_array($newKey, array("NAME", "MODIFIED", "OVERDUE_DATE", "WORKFLOW_TEMPLATE_ID", "DESCRIPTION", 'USER_ID', 'USER_STATUS')))
			continue;

		if (in_array($newKey, array("NAME", "DESCRIPTION")) && $op == "")
		{
			$op = "~";
			$value = "%".$value."%";
		}

		if ($newKey == 'USER_STATUS')
		{
			if ($value == 2)
			{
				unset($arFilter['USER_STATUS']);
				continue;
			}
			if ($value == 1)
			{
				$value = array(CBPTaskUserStatus::Ok, CBPTaskUserStatus::Yes, CBPTaskUserStatus::No, CBPTaskUserStatus::Cancel);
				$arResult['IS_COMPLETED'] = true;
			}
			else
				$value = CBPTaskUserStatus::Waiting;
		}

		if ($newKey == 'USER_ID')
		{
			if (!$value || $value == $targetUserId)
				continue;

			if ($isAdmin || CBPHelper::checkUserSubordination($currentUserId, $value))
			{
				$targetUserId = $value;
			}
			else
			{
				$arResult['ERRORS'][] = GetMessage('BPATL_ERROR_SUBORDINATION');
				$value = 0;
			}
		}

		$arFilter[$op.$newKey] = $value;
	}
	$arResult["SORT"] = $gridSort["sort"];
	$arResult["RECORDS"] = array();

	if (!empty($_REQUEST['action_button_'.$arResult["GRID_ID"]]) && check_bitrix_sessid())
	{
		$action = $_REQUEST['action_button_'.$arResult["GRID_ID"]];
		$ids = (isset($_REQUEST['ID']) && is_array($_REQUEST['ID'])) ? $_REQUEST['ID'] : null;
		if (isset($_REQUEST['action_all_rows_'.$arResult["GRID_ID"]]) && $_REQUEST['action_all_rows_'.$arResult["GRID_ID"]] == 'Y')
			$ids = array();
		if (is_array($ids))
		{
			if (mb_strpos($action, 'set_status_') === 0)
			{
				$status = mb_substr($action, mb_strlen('set_status_'));
				CBPDocument::setTasksUserStatus($targetUserId, $status, $ids, $arResult['ERRORS']);
			}
			if ($action == 'delegate_to' && !empty($_REQUEST['ACTION_DELEGATE_TO_ID']))
			{
				$allowedDelegationType = array(CBPTaskDelegationType::AllEmployees);
				if ($isAdmin)
				{
					$allowedDelegationType = null;
				}
				elseif (CBPHelper::checkUserSubordination($currentUserId, $_REQUEST['ACTION_DELEGATE_TO_ID']))
				{
					$allowedDelegationType[] = CBPTaskDelegationType::Subordinate;
				}

				CBPDocument::delegateTasks(
					$targetUserId,
					$_REQUEST['ACTION_DELEGATE_TO_ID'],
					$ids,
					$arResult['ERRORS'],
					$allowedDelegationType
				);
			}
		}
	}

	$dbRecordsList = CBPTaskService::GetList(
		$gridSort["sort"],
		$arFilter,
		false,
		$gridOptions->GetNavParams(),
		$arSelectFields
	);
	$arResult['IS_MY_TASKS'] = $currentUserId == $targetUserId;
	$arResult['TARGET_USER_ID'] = (int)$targetUserId;

	$useComments = (bool)CModule::IncludeModule("forum");
	$workflows = array();

	while ($arRecord = $dbRecordsList->getNext())
	{
		if ($useComments)
			$workflows[] = 'WF_'.$arRecord['WORKFLOW_ID'];

		$arRecord["IS_MY"] = $arResult['IS_MY_TASKS'];
		$arRecord['MODIFIED'] = FormatDateFromDB($arRecord['MODIFIED']);
		$documentId = isset($arRecord["PARAMETERS"]["DOCUMENT_ID"]) && is_array($arRecord["PARAMETERS"]["DOCUMENT_ID"]) ?
			$arRecord["PARAMETERS"]["DOCUMENT_ID"] : null;
		$arRecord["DOCUMENT_URL"] = $documentId ? CBPDocument::GetDocumentAdminPage($documentId) : '';

		$arRecord["MODULE_ID"] = $documentId ? $documentId[0] : '';
		$arRecord["ENTITY"] = $documentId ? $documentId[1] : '';
		$arRecord["DOCUMENT_ID"] = $documentId ? $documentId[2] : '';

		if (empty($arRecord['DOCUMENT_NAME']))
		{
			$arRecord['DOCUMENT_NAME'] = GetMessage("BPATL_DOCUMENT_NAME");
		}

		if (!empty($arRecord["PARAMETERS"]["TASK_EDIT_URL"]))
		{
			$arRecord["URL"] = array(
				"~TASK" => CComponentEngine::MakePathFromTemplate($arRecord["PARAMETERS"]["TASK_EDIT_URL"], $arRecord),
				"TASK" => CComponentEngine::MakePathFromTemplate($arRecord["PARAMETERS"]["TASK_EDIT_URL"], $arRecord)
			);
		}
		else
		{
			$arRecord["URL"] = array(
				"~TASK" => CComponentEngine::MakePathFromTemplate($arParams["~TASK_EDIT_URL"], $arRecord),
				"TASK" => CComponentEngine::MakePathFromTemplate($arParams["TASK_EDIT_URL"], $arRecord)
			);
		}

		if (isset($arRecord['WORKFLOW_TEMPLATE_NAME']))
			$arRecord["WORKFLOW_NAME"] = $arRecord["WORKFLOW_TEMPLATE_NAME"]; // compatibility
		if (isset($arRecord['WORKFLOW_STARTED']))
			$arRecord["WORKFLOW_STARTED"] = FormatDateFromDB($arRecord["WORKFLOW_STARTED"]);

		if (!empty($arRecord['WORKFLOW_STARTED_BY']))
		{
			$tmpUserId = (int) $arRecord['WORKFLOW_STARTED_BY'];
			$arRecord["WORKFLOW_STARTED_BY"] = "";
			if ($tmpUserId > 0)
			{
				$dbUserTmp = CUser::GetByID($tmpUserId);
				$arUserTmp = $dbUserTmp->fetch();
				$arRecord["WORKFLOW_STARTED_BY"] = CUser::FormatName($arParams["NAME_TEMPLATE"], $arUserTmp, true);
				$arRecord["WORKFLOW_STARTED_BY"] .= " [".$tmpUserId."]";
			}
		}

		if (!$arRecord["IS_MY"])
		{
			$arRecord["URL"]["TASK"] = CHTTP::urlAddParams($arRecord["URL"]["TASK"], array('USER_ID' => $targetUserId));
			if (isset($arRecord['PARAMETERS']['AccessControl']) && $arRecord['PARAMETERS']['AccessControl'] == 'Y')
			{
				$arRecord["DESCRIPTION"] = '';
			}
		}

		$aActions = array(
			array("ICONCLASS"=>"edit", "DEFAULT" => true, "TEXT"=>GetMessage("BPTL_C_DETAIL"), "ONCLICK"=>"window.location='".$arRecord["URL"]["TASK"]."';"),
		);
		if ($arRecord["DOCUMENT_URL"] <> '')
			$aActions[] = array("ICONCLASS"=>"", "DEFAULT" => false, "TEXT"=>GetMessage("BPTL_C_DOCUMENT"), "ONCLICK"=>"window.open('".$arRecord["DOCUMENT_URL"]."');");

		$arResult["RECORDS"][] = array("data" => $arRecord, "actions" => $aActions, "columns" => $aCols, "editable" => $arRecord['STATUS'] == CBPTaskStatus::Running);
	}

	$arResult["COMMENTS_COUNT"] = array();
	if ($useComments)
	{
		$workflows = array_unique($workflows);
		if ($workflows)
		{
			$iterator = CForumTopic::getList(array(), array("@XML_ID" => $workflows));
			while ($row = $iterator->fetch())
			{
				$arResult["COMMENTS_COUNT"][$row['XML_ID']] = $row['POSTS'];
			}
		}
	}

	$arResult["ROWS_COUNT"] = $dbRecordsList->SelectedRowsCount();
	$arResult["NAV_STRING"] = $dbRecordsList->GetPageNavStringEx($navComponentObject, GetMessage("INTS_TASKS_NAV"), "", false);
	$arResult["NAV_CACHED_DATA"] = $navComponentObject->GetTemplateCachedData();
	$arResult["NAV_RESULT"] = $dbRecordsList;

	$arResult['HIDE_WORKFLOW_PROGRESS'] = $gridColumns && is_array($gridColumns) && !in_array('WORKFLOW_PROGRESS', $gridColumns);
}

if ($arParams["SHOW_TRACKING"] == "Y")
{
	$arResult["H_GRID_ID"] = "bizproc_tasksListH_".$currentUserId;

	$hgridOptions = new CGridOptions($arResult["H_GRID_ID"]);
	$hgridColumns = $hgridOptions->GetVisibleColumns();
	$hgridSort = $hgridOptions->GetSorting(array("sort"=>array("ID" => "desc")));

	$arResult["H_HEADERS"] = array(
		array("id" => "MODIFIED", "name" => GetMessage("BPATL_MODIFIED"), "default" => true, "sort" => ""),
		array("id" => "ACTION_NOTE", "name" => GetMessage("BPATL_DESCRIPTION"), "default" => true, "sort" => ""),
	);

	$arResult["H_SORT"] = $hgridSort["sort"];

	$arResult["H_RECORDS"] = array();

	$arFilter = array("MODIFIED_BY" => $targetUserId);
	if (!empty($arParams["WORKFLOW_ID"]))
		$arFilter["WORKFLOW_ID"] = $arParams["WORKFLOW_ID"];

	$runtime = CBPRuntime::GetRuntime();
	$runtime->StartRuntime();
	$documentService = $runtime->GetService("DocumentService");

	$dbRecordsList = CBPTrackingService::GetList(
		$hgridSort["sort"],
		$arFilter
	);
	while ($arRecord = $dbRecordsList->GetNext())
	{
		if ($arRecord["WORKFLOW_ID"] <> '')
		{
			$arRecord["STATE"] = CBPStateService::GetWorkflowState($arRecord["WORKFLOW_ID"]);
			$arRecord["DOCUMENT_URL"] = CBPDocument::GetDocumentAdminPage($arRecord["STATE"]["DOCUMENT_ID"]);

			try
			{
				$dt = $documentService->GetDocumentType($arRecord["STATE"]["DOCUMENT_ID"]);
			}
			catch (Exception $e)
			{
				
			}

			$arRecord["ACTION_NOTE"] = CBPTrackingService::parseStringParameter($arRecord["ACTION_NOTE"], $dt);
		}

		$aActions = array();
		if ($arRecord["DOCUMENT_URL"] <> '')
			$aActions[] = array("ICONCLASS"=>"", "DEFAULT" => false, "TEXT"=>GetMessage("BPTL_C_DOCUMENT"), "ONCLICK"=>"window.open('".$arRecord["DOCUMENT_URL"]."');");

		$arResult["H_RECORDS"][] = array("data" => $arRecord, "actions" => $aActions, "columns" => array(), "editable" => false);
	}

	$arResult["H_ROWS_COUNT"] = $dbRecordsList->SelectedRowsCount();
	$arResult["H_NAV_STRING"] = $dbRecordsList->GetPageNavStringEx($navComponentObject, GetMessage("INTS_TASKS_NAV"), "", false);
	$arResult["H_NAV_CACHED_DATA"] = $navComponentObject->GetTemplateCachedData();
	$arResult["H_NAV_RESULT"] = $dbRecordsList;
}

if ($arResult["FatalErrorMessage"] == '')
{
	if (!$arParams['COUNTERS_ONLY'])
	{
		if($arParams["SET_TITLE"] == "Y")
			$APPLICATION->SetTitle(GetMessage("BPABS_TITLE"));
		if ($arParams["SET_NAV_CHAIN"] == "Y")
			$APPLICATION->AddChainItem(GetMessage("BPABS_TITLE"));
	}

	$arResult['COUNTERS'] = CBPTaskService::getCounters($targetUserId);

	if ($arParams['COUNTERS_ONLY'])
	{
		$arResult['COUNTERS_RUNNING'] = CBPStateService::getRunningCounters($targetUserId);

	}

	//counter autofixer
	$currentCounter = (int)CUserCounter::GetValue($targetUserId, 'bp_tasks', '**');
	if (isset($arResult['COUNTERS']['*']) && $currentCounter != $arResult['COUNTERS']['*'])
	{
		CUserCounter::Set($targetUserId, 'bp_tasks', $arResult['COUNTERS']['*'], '**');
	}
}
elseif (!$arParams['COUNTERS_ONLY'])
{
	if ($arParams["SET_TITLE"] == "Y")
		$APPLICATION->SetTitle(GetMessage("BPWC_WLC_ERROR"));
	if ($arParams["SET_NAV_CHAIN"] == "Y")
		$APPLICATION->AddChainItem(GetMessage("BPWC_WLC_ERROR"));
}

$this->IncludeComponentTemplate();