- Модуль: advertising
- Путь к файлу: ~/bitrix/modules/advertising/classes/general/advertising.php
- Класс: CAdvContract_all
- Вызов: CAdvContract_all::GetUserPermissions
static function GetUserPermissions($CONTRACT_ID=0, $USER_ID=false)
{
$err_mess = (CAdvContract_all::err_mess())."
Function: GetUserPermissions
Line: ";
global $DB, $USER;
static $CONTRACT_RIGHTS = array();
$USER_ID = ($USER_ID===false) ? intval($USER->GetID()) : intval($USER_ID);
if (intval($USER_ID)<=0) return false;
$CONTRACT_ID = intval($CONTRACT_ID);
$arrRes = array();
if ($CONTRACT_ID>0 && is_set($CONTRACT_RIGHTS[$USER_ID], $CONTRACT_ID))
{
$arrRes = $CONTRACT_RIGHTS[$USER_ID];
}
else
{
$isManager = CAdvContract::IsManager($USER_ID);
$isAdmin = CAdvContract::IsAdmin($USER_ID);
if ($isAdmin) $arrRes[0] = CAdvContract::GetMaxPermissionsArray();
elseif ($isManager) $arrRes[0] = array("VIEW", "ADD");
else $arrRes[0] = array();
$strSqlSearch = "";
if ($CONTRACT_ID>0)
$strSqlSearch = " and C.ID= $CONTRACT_ID ";
$strSql = "
SELECT
C.ID,
CU.PERMISSION
FROM
b_adv_contract C
LEFT JOIN b_adv_contract_2_user CU ON (CU.CONTRACT_ID=C.ID and CU.USER_ID=$USER_ID)
WHERE
1=1
$strSqlSearch
";
$rs = $DB->Query($strSql, false, $err_mess.__LINE__);
while ($ar = $rs->Fetch()) $arrRes[$ar["ID"]][] = $ar["PERMISSION"];
if ($isAdmin || $isManager)
{
foreach ($arrRes as $cid => $arrPerm)
{
if ($isAdmin) $arrPerm = CAdvContract::GetMaxPermissionsArray();
elseif ($isManager)
{
$arrPerm[] = "VIEW";
$arrPerm[] = "ADD";
$arrPerm = array_unique($arrPerm);
}
$arrRes[$cid] = $arrPerm;
}
}
foreach ($arrRes as $cid => $arrPerm)
{
TrimArr($arrPerm);
$CONTRACT_RIGHTS[$USER_ID][$cid] = $arrPerm;
$arrRes[$cid] = $arrPerm;
}
}
return $arrRes;
}