• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/dav.php
  • Класс: CDav
  • Вызов: CDav::PackPrivileges
static function PackPrivileges($arPrivileges)
{
	static $arPrivilegesMap = array('read' => 1, 'write-properties' => 2, 'write-content' => 4, 'unlock' => 8, 'read-acl' => 16,
		'read-current-user-privilege-set' => 32, 'bind' => 64, 'unbind' => 128, 'write-acl' => 256, 'read-free-busy' => 512,
		'schedule-deliver-invite' => 1024, 'schedule-deliver-reply' => 2048, 'schedule-query-freebusy' => 4096,
		'schedule-send-invite' =>  8192, 'schedule-send-reply' => 16384, 'schedule-send-freebusy' => 32768,
		'write' => 198 /* 2 + 4 + 64 + 128 */, 'schedule-deliver' => 7168 /* 1024 + 2048 + 4096 */,
		'schedule-send' => 57344 /* 8192 + 16384 + 32768 */, 'all' => GW_MAXIMUM_PRIVILEGES);

	if (!is_array($arPrivileges))
		$arPrivileges = array($arPrivileges);

	$result = 0;
	foreach ($arPrivileges as $privilege)
	{
		$privilege = trim(mb_strtolower(preg_replace('/^.*:/', '', $privilege)));

		if (array_key_exists($privilege, $arPrivilegesMap))
			$result |= $arPrivilegesMap[$privilege];
	}

	if (($result & GW_MAXIMUM_PRIVILEGES) >= GW_MAXIMUM_PRIVILEGES)
		$result = pow(2, 24) - 1;

	return $result;
}