function BeforeProlog(){ //include constanst include_once( getenv("DOCUMENT_ROOT").'/bitrix/templates/work_copy/consts/consts.php'); // set user params for Authorized global $USER; if ( $USER->IsAuthorized() ) { $cache = new CPHPCache(); $cache_time = 60*60*24; $cache_id = 'user_datas'; $cache_path = '/myclasses/'; $UID = $USER->GetID(); $keyCODE = $UID; $arUserFields = array(); if ($cache_time > 0 && $cache->InitCache($cache_time, $cache_id, $cache_path, $keyCODE )){ $res = $cache->GetVars(); if ( is_array ( $res["arUserFields"] ) && ( !empty( $res["arUserFields"] ) ) ) $arUserFields = $res["arUserFields"]; $arUSER_GROUPS = $res["arUSER_GROUPS"]; } if (empty($result)){ $dbUser = CUSER::GetList( $by="ID", $sort="ASC", array("ID" => $UID), array( "SELECT" => array ("ID","UF_DEALER_ID") ) ); $arUserFields = $dbUser->Fetch(); $arUSER_GROUPS = $USER->GetUserGroupArray(); //////////// end cache ///////// if ($cache_time > 0){ $cache->StartDataCache ( $cache_time, $cache_id, $cache_path ); $cache->EndDataCache ( array( "arUserFields" => $arUserFields, "arUSER_GROUPS" => $arUSER_GROUPS ) ); } } $USER->SetParam( "UF_DEALER_ID", $arUserFields["UF_DEALER_ID"] ); $USER->SetParam( "USER_GROUPS", $arUSER_GROUPS); } }
public static function CanRead($Contract_ID) { global $USER; CModule::IncludeModule("iblock"); $user_id = $USER->GetID(); $dealer_id = $USER->GetParam("UF_DEALER_ID"); $arUserGroup = CUSER::GetUserGroup($USER->GetID()); $result = false; if (in_array(USER_DISTRIBUTOR_GROUP_ID, $arUserGroup) || in_array(USER_ADMIN_GROUP_ID, $arUserGroup)) { $result = true; } else { if (in_array(USER_DEALER_GROUP_ID, $arUserGroup)) { // Логика флиьтра: // получаю список договоров, где участвуют данные пользователя в договоре // поле Дилер, в договоре(свойство «cntrct_dealer»), должно совпадать с значением поля «UF_DEALER_ID» для дилера // поле «CREATED_BY» если договор создан этим пользователем. $arFilter = array("IBLOCK_ID" => IBLOCK_SK_CONTRACT_ID, array("LOGIC" => "OR", array("PROPERTY_cntrct_dealer" => $dealer_id), array("CREATED_BY" => $user_id))); $db = CIBlockElement::GetList(array(), $arFilter, false, false, array("IBLOCK_ID", "ID", "PROPERTY_cntrct_dealer", "CREATED_BY")); $arContractsID = array(); while ($obContracts = $db->GetNextElement()) { $tmp = array(); $tmp = $obContracts->GetFields(); $arContractsID[] = $tmp["ID"]; } if (in_array($Contract_ID, $arContractsID)) { $result = true; } else { $result = false; } } } return $result; }