• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblock_rights.php
  • Класс: CIBlockRights
  • Вызов: CIBlockRights::Post2Array
static function Post2Array($ar)
{
	$arRights = array();
	$RIGHT_ID = "";
	$i = 0;
	if (!empty($ar) && is_array($ar))
	{
		foreach ($ar as $arRight)
		{
			if (isset($arRight["RIGHT_ID"]))
			{
				if ($arRight["RIGHT_ID"] <> '')
					$RIGHT_ID = $arRight["RIGHT_ID"];
				else
					$RIGHT_ID = "n".$i++;

				$arRights[$RIGHT_ID] = array(
					"GROUP_CODE" => "",
					"DO_CLEAN" => "N",
					"TASK_ID" => 0,
				);
			}
			elseif (isset($arRight["GROUP_CODE"]))
			{
				$arRights[$RIGHT_ID]["GROUP_CODE"] = $arRight["GROUP_CODE"];
			}
			elseif (isset($arRight["DO_CLEAN"]))
			{
				$arRights[$RIGHT_ID]["DO_CLEAN"] = $arRight["DO_CLEAN"] == "Y" ? "Y" : "N";
			}
			elseif (isset($arRight["TASK_ID"]))
			{
				$arRights[$RIGHT_ID]["TASK_ID"] = $arRight["TASK_ID"];
			}
		}
	}

	foreach($arRights as $RIGHT_ID => $arRightSet)
	{
		if(mb_substr($RIGHT_ID, 0, 1) == "n")
		{
			if($arRightSet["GROUP_CODE"] == '')
				unset($arRights[$RIGHT_ID]);
			elseif($arRightSet["TASK_ID"] > 0)
			{
				//Mark inherited rights to overwrite
				foreach($arRights as $RIGHT_ID2 => $arRightSet2)
				{
					if(
						(int)$RIGHT_ID2 > 0
						&& $arRightSet2["GROUP_CODE"] === $arRightSet["GROUP_CODE"]
					)
					{
						unset($arRights[$RIGHT_ID2]);
					}
				}
			}
		}
	}

	return $arRights;
}