• Модуль: workflow
  • Путь к файлу: ~/bitrix/modules/workflow/classes/general/workflow.php
  • Класс: CAllWorkflow
  • Вызов: CAllWorkflow::GetEditLink
static function GetEditLink($FILENAME, &$status_id, &$status_title, $template="", $lang=LANGUAGE_ID, $return_url="")
{
	global $USER;

	$link = '';
	CMain::InitPathVars($SITE_ID, $FILENAME);

	if($USER->CanDoFileOperation('fm_edit_in_workflow', array($SITE_ID, $FILENAME)))
	{
		//Check if user have access at least to one status
		if(!CWorkflow::IsAdmin())
		{
			$arGroups = $USER->GetUserGroupArray();
			if(!is_array($arGroups))
				$arGroups = array(2);
			$arFilter = array(
				"GROUP_ID" => $arGroups,
				"PERMISSION_TYPE_1" => 1,
			);
			$rsStatuses = CWorkflowStatus::GetList("s_c_sort", "asc", $arFilter, null, array("ID"));
			if(!$rsStatuses->Fetch())
				return "";
		}

		$link = "/bitrix/admin/workflow_edit.php?lang=".$lang."&site=".$SITE_ID."&fname=".$FILENAME;
		if ($template <> '') $link .= "&template=".urlencode($template);
		if ($return_url <> '') $link .= "&return_url=".urlencode($return_url);
		$z = CWorkflow::GetByFilename($FILENAME, $SITE_ID);
		if ($zr = $z->Fetch())
		{
			$status_id = $zr["STATUS_ID"];
			$status_title = $zr["STATUS_TITLE"];
			if ($status_id!=1)
			{
				$DOCUMENT_ID = $zr["ID"];
				if (CWorkflow::IsHaveEditRights($DOCUMENT_ID)) $link .= "&ID=".$DOCUMENT_ID;
				else return "";
			}
		}
	}
	return $link;
}