• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblockelement.php
  • Класс: CAllIBlockElement
  • Вызов: CAllIBlockElement::WF_GetStatusPermission
static function WF_GetStatusPermission($STATUS_ID, $ID = false)
{
	global $DB, $USER;
	$result = false;
	if(CModule::IncludeModule("workflow"))
	{
		if(CWorkflow::IsAdmin())
			return 2;
		else
		{
			$ID = (int)$ID;
			if($ID)
			{
				$arStatus = array();
				$arSql = Array("ID='".$ID."'", "WF_PARENT_ELEMENT_ID='".$ID."'");
				foreach($arSql as $where)
				{
					$strSql = "SELECT ID, WF_STATUS_ID FROM b_iblock_element WHERE ".$where;
					$rs = $DB->Query($strSql);
					while($ar = $rs->Fetch())
						$arStatus[$ar["WF_STATUS_ID"]] = $ar["WF_STATUS_ID"];
				}
			}
			else
			{
				$arStatus = array((int)($STATUS_ID)=>(int)($STATUS_ID));
			}
			$arGroups = $USER->GetUserGroupArray();
			if (!is_array($arGroups))
			{
				$arGroups = [2];
			}
			$groups = implode(",",$arGroups);
			foreach($arStatus as $STATUS_ID)
			{
				$strSql =
						"SELECT max(G.PERMISSION_TYPE) as MAX_PERMISSION ".
						"FROM b_workflow_status2group G ".
						"WHERE G.STATUS_ID = ".$STATUS_ID." ".
						"	AND G.GROUP_ID in (".$groups.") ";
				$rs = $DB->Query($strSql);
				$ar = $rs->Fetch();
				$ar["MAX_PERMISSION"] = (int)$ar["MAX_PERMISSION"];
				if($result===false || ($result > $ar["MAX_PERMISSION"]))
					$result = $ar["MAX_PERMISSION"];
			}
		}
	}
	return $result;
}