- Модуль: 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;
}