示例#1
0
 protected static function _socnet_check($USER, $iblock_type_id, $iblock_id, $socnet_group_id)
 {
     $type_check = CListPermissions::_socnet_type_check($USER, $iblock_type_id, $socnet_group_id);
     if ($type_check < 0) {
         return $type_check;
     }
     $iblock_check = CListPermissions::_iblock_check($iblock_type_id, $iblock_id);
     if ($iblock_check < 0) {
         return $iblock_check;
     }
     $iblock_socnet_group_id = CIBlock::GetArrayByID($iblock_id, "SOCNET_GROUP_ID");
     if ($iblock_socnet_group_id != $socnet_group_id) {
         return CListPermissions::ACCESS_DENIED;
     }
     $socnet_role = CSocNetUserToGroup::GetUserRole($USER->GetID(), $socnet_group_id);
     if ($socnet_role !== "A" && CIBlock::GetArrayByID($iblock_id, "RIGHTS_MODE") === "E") {
         return '';
     }
     static $roles = array("A", "E", "K", "T");
     if (!in_array($socnet_role, $roles)) {
         if ($USER->IsAuthorized()) {
             $socnet_role = "L";
         } else {
             $socnet_role = "N";
         }
     }
     $arSocnetPerm = CLists::GetSocnetPermission($iblock_id);
     return $arSocnetPerm[$socnet_role];
 }
示例#2
0
 /**
  * @param $USER CUser
  * @param $iblock_type_id string
  * @param $iblock_id int
  * @param $socnet_group_id int
  * @return string
  */
 protected static function _socnet_check($USER, $iblock_type_id, $iblock_id, $socnet_group_id)
 {
     $type_check = CListPermissions::_socnet_type_check($USER, $iblock_type_id, $socnet_group_id);
     if ($type_check < 0) {
         return $type_check;
     }
     $iblock_check = CListPermissions::_iblock_check($iblock_type_id, $iblock_id);
     if ($iblock_check < 0) {
         return $iblock_check;
     }
     $iblock_socnet_group_id = CIBlock::GetArrayByID($iblock_id, "SOCNET_GROUP_ID");
     if ($iblock_socnet_group_id != $socnet_group_id) {
         return CListPermissions::ACCESS_DENIED;
     }
     $socnet_role = CSocNetUserToGroup::GetUserRole($USER->GetID(), $socnet_group_id);
     if ($socnet_role !== "A" && CIBlock::GetArrayByID($iblock_id, "RIGHTS_MODE") === "E") {
         return '';
     }
     static $roles = array("A", "E", "K", "T");
     if (!in_array($socnet_role, $roles)) {
         if ($USER->IsAuthorized()) {
             $socnet_role = "L";
         } else {
             $socnet_role = "N";
         }
     }
     if (!CSocNetFeaturesPerms::CanPerformOperation($USER->GetID(), SONET_ENTITY_GROUP, $socnet_group_id, "group_lists", "write", CSocNetUser::IsCurrentUserModuleAdmin())) {
         return "D";
     } else {
         $arSocnetPerm = CLists::GetSocnetPermission($iblock_id);
         return $arSocnetPerm[$socnet_role];
     }
 }
示例#3
0
    if ($arParams["SOCNET_GROUP_ID"]) {
        $arResult["HIGHLIGHT"] = array("socnetgroup" => array("group_id" => $arParams["SOCNET_GROUP_ID"]), "groups" => array("disabled" => true));
    } else {
        $arResult["HIGHLIGHT"] = array("groups" => array("disabled" => true));
    }
} else {
    if ($arParams["SOCNET_GROUP_ID"]) {
        $arResult["HIGHLIGHT"] = array("socnetgroup" => array("group_id" => $arParams["SOCNET_GROUP_ID"]));
    } else {
        $arResult["HIGHLIGHT"] = null;
    }
}
if ($RIGHTS_MODE != 'E') {
    $i = 0;
    if ($arParams["SOCNET_GROUP_ID"]) {
        $arSocnetPerm = CLists::GetSocnetPermission($arResult["IBLOCK_ID"]);
        foreach ($arSocnetPerm as $role => $permission) {
            if ($permission > "W") {
                $permission = "W";
            }
            switch ($role) {
                case "A":
                case "E":
                case "K":
                    $arResult["RIGHTS"]['n' . $i++] = array("GROUP_CODE" => "SG" . $arParams["SOCNET_GROUP_ID"] . "_" . $role, "IS_INHERITED" => "N", "TASK_ID" => CIBlockRights::LetterToTask($permission));
                    break;
                case "L":
                    $arResult["RIGHTS"]['n' . $i++] = array("GROUP_CODE" => "AU", "IS_INHERITED" => "N", "TASK_ID" => CIBlockRights::LetterToTask($permission));
                    break;
                case "N":
                    $arResult["RIGHTS"]['n' . $i++] = array("GROUP_CODE" => "G2", "IS_INHERITED" => "N", "TASK_ID" => CIBlockRights::LetterToTask($permission));
示例#4
0
 public static function GetIBlockPermission($iblock_id, $user_id)
 {
     global $USER;
     //IBlock permissions by default
     $Permission = CIBlock::GetPermission($iblock_id, $user_id);
     if ($Permission < "W") {
         $arIBlock = CIBlock::GetArrayByID($iblock_id);
         if ($arIBlock) {
             //Check if iblock is list
             $arListsPerm = CLists::GetPermission($arIBlock["IBLOCK_TYPE_ID"]);
             if (count($arListsPerm)) {
                 //User groups
                 if ($user_id == $USER->GetID()) {
                     $arUserGroups = $USER->GetUserGroupArray();
                 } else {
                     $arUserGroups = $USER->GetUserGroup($user_id);
                 }
                 //One of lists admins
                 if (count(array_intersect($arListsPerm, $arUserGroups))) {
                     $Permission = "X";
                 }
             }
         }
     }
     if ($Permission < "W" && $arIBlock["SOCNET_GROUP_ID"] && CModule::IncludeModule('socialnetwork')) {
         $arSocnetPerm = CLists::GetSocnetPermission($iblock_id);
         $socnet_role = CSocNetUserToGroup::GetUserRole($USER->GetID(), $arIBlock["SOCNET_GROUP_ID"]);
         $Permission = $arSocnetPerm[$socnet_role];
     }
     return $Permission;
 }