Esempio n. 1
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
$arParams['NAME_TEMPLATE'] = $arParams['NAME_TEMPLATE'] ? $arParams['NAME_TEMPLATE'] : CSite::GetNameFormat();
$bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false;
$arResult["bUseLogin"] = $bUseLogin;
$arResult['CAN_EDIT_USER'] = $USER->CanDoOperation('edit_all_users') || $USER->CanDoOperation('edit_subordinate_users') && count(array_diff(CUser::GetUserGroup($arParams["USER"]['ID']), CSocNetTools::GetSubordinateGroups())) == 0;
$arResult['CAN_EDIT_USER_SELF'] = $USER->CanDoOperation('edit_own_profile') && $arParams["USER"]['ID'] == $USER->GetID();
$arResult['USER_PROP'] = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("USER", 0, LANGUAGE_ID);
$arResult['CAN_MESSAGE'] = false;
$arResult['CAN_VIDEO_CALL'] = false;
$arResult['CAN_VIEW_PROFILE'] = false;
if (CModule::IncludeModule('socialnetwork') && $GLOBALS["USER"]->IsAuthorized()) {
    $arResult["CurrentUserPerms"] = CSocNetUserPerms::InitUserPerms($GLOBALS["USER"]->GetID(), $arParams["USER"]["ID"], CSocNetUser::IsCurrentUserModuleAdmin());
    if ($GLOBALS["USER"]->GetID() != $arParams["USER"]["ID"] && $arParams["USER"]["ACTIVE"] != "N" && CBXFeatures::IsFeatureEnabled("WebMessenger") && (IsModuleInstalled("im") || $arResult["CurrentUserPerms"]["Operations"]["message"])) {
        $arResult['CAN_MESSAGE'] = true;
    }
    if ($arResult["CurrentUserPerms"]["Operations"]["viewprofile"]) {
        $arResult['CAN_VIEW_PROFILE'] = true;
    }
    if ($GLOBALS["USER"]->GetID() != $arParams["USER"]["ID"] && $arResult["CurrentUserPerms"]["Operations"]["videocall"] && $arParams["USER"]["ACTIVE"] != "N") {
        $arResult['CAN_VIDEO_CALL'] = true;
    }
    if (!CModule::IncludeModule("video")) {
        $arResult['CAN_VIDEO_CALL'] = false;
    } elseif (!CVideo::CanUserMakeCall()) {
        $arResult['CAN_VIDEO_CALL'] = false;
    }
}
Esempio n. 2
0
 /**
  * <p>Метод инициализирует массив прав пользователя на операции над профайлом заданного пользователя.</p>
  *
  *
  * @param int $currentUserID  Код пользователя, права которого проверяются.
  *
  * @param int $userID  Код пользователя, к профайлу которого осуществляется доступ.
  *
  * @param bool $bCurrentUserIsAdmin  Флаг, является ли администратором пользователь, права которого
  * проверяются.
  *
  * @return array <p>Массив с ключами:<br><b>IsCurrentUser</b> - флаг, осуществляется ли доступ к
  * собственному профайлу,<br><b>Relation</b> - отношения между
  * пользователями,<br><b>Operations</b> - массив операций: <br> modifyuser - право на
  * изменение профайла, если в главном модуле разрешено
  * редактировать профиль,<br> modifyuser_main - право на изменение
  * профайла,<br> viewcontacts - право на просмотр контактной информации,<br>
  * invitegroup - приглашение в группу, <br> message - отправка персонального
  * сообщения, <br> viewfriends - просмотр друзей, <br> viewgroups - просмотр групп,
  * <br> viewprofile - просмотр профиля. </p> <a name="examples"></a>
  *
  * <h4>Example</h4> 
  * <pre>
  * Array 
  * ( 
  *  [Operations] =&gt; Array 
  * 	 ( 
  * 		 [modifyuser] =&gt; 1 
  * 		 [viewcontacts] =&gt; 1 
  * 		 [invitegroup] =&gt; 1 
  * 		 [message] =&gt; 1 
  * 		 [viewfriends] =&gt; 1 
  * 		 [viewgroups] =&gt; 1 
  * 		 [viewprofile] =&gt; 1 
  * 		 [modifyuser_main] =&gt; 
  * 	 ) 
  * 
  *  [IsCurrentUser] =&gt; 
  *  [Relation] =&gt; 
  * )
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/csocnetuserperms/inituserperms.php
  * @author Bitrix
  */
 public static function InitUserPerms($currentUserID, $userID, $bCurrentUserIsAdmin)
 {
     global $arSocNetUserOperations, $USER;
     $arReturn = array();
     $currentUserID = IntVal($currentUserID);
     $userID = IntVal($userID);
     if ($userID <= 0) {
         return false;
     }
     $arReturn["Operations"] = array();
     if ($currentUserID <= 0) {
         $arReturn["IsCurrentUser"] = false;
         $arReturn["Relation"] = false;
         $arReturn["Operations"]["modifyuser"] = false;
         $arReturn["Operations"]["viewcontacts"] = false;
         foreach ($arSocNetUserOperations as $operation => $defPerm) {
             $arReturn["Operations"][$operation] = CSocNetUserPerms::CanPerformOperation($currentUserID, $userID, $operation, false);
         }
     } else {
         $arReturn["IsCurrentUser"] = $currentUserID == $userID;
         if ($arReturn["IsCurrentUser"]) {
             $arReturn["Relation"] = false;
         } else {
             $arReturn["Relation"] = CSocNetUserRelations::GetRelation($currentUserID, $userID);
         }
         if ($bCurrentUserIsAdmin || $arReturn["IsCurrentUser"]) {
             $arReturn["Operations"]["modifyuser"] = true;
             $arReturn["Operations"]["viewcontacts"] = true;
             foreach ($arSocNetUserOperations as $operation => $defPerm) {
                 $arReturn["Operations"][$operation] = true;
             }
         } else {
             $arReturn["Operations"]["modifyuser"] = false;
             if (CSocNetUser::IsFriendsAllowed()) {
                 $arReturn["Operations"]["viewcontacts"] = $arReturn["Relation"] == SONET_RELATIONS_FRIEND;
             } else {
                 $arReturn["Operations"]["viewcontacts"] = true;
             }
             foreach ($arSocNetUserOperations as $operation => $defPerm) {
                 $arReturn["Operations"][$operation] = CSocNetUserPerms::CanPerformOperation($currentUserID, $userID, $operation, false);
             }
         }
         $arReturn["Operations"]["modifyuser_main"] = false;
         if ($arReturn["IsCurrentUser"]) {
             if ($USER->CanDoOperation('edit_own_profile')) {
                 $arReturn["Operations"]["modifyuser_main"] = true;
             }
         } elseif ($USER->CanDoOperation('edit_all_users') || $USER->CanDoOperation('edit_subordinate_users') && count(array_diff(CUser::GetUserGroup($userID), CSocNetTools::GetSubordinateGroups($currentUserID))) <= 0) {
             $arReturn["Operations"]["modifyuser_main"] = true;
         }
     }
     return $arReturn;
 }
Esempio n. 3
0
} elseif (in_array('PASSWORD', $arParams['EDITABLE_FIELDS'])) {
    $arParams['EDITABLE_FIELDS'][] = 'CONFIRM_PASSWORD';
}
if (!is_array($arResult["User"])) {
    $arResult["FATAL_ERROR"] = GetMessage("SONET_P_USER_NO_USER");
} else {
    $arResult["GROUPS_CAN_EDIT"] = array();
    if ($USER->CanDoOperation('edit_all_users') || $USER->CanDoOperation('edit_subordinate_users')) {
        if ($USER->CanDoOperation('edit_all_users')) {
            $dbGroup = CGroup::GetList($by = "c_sort", $order = "asc", array("ACTIVE" => "Y"));
            while ($arGroup = $dbGroup->Fetch()) {
                $arResult["GROUPS_CAN_EDIT"][$arGroup["ID"]] = $arGroup;
                $arGroupsCanEditID[] = $arGroup["ID"];
            }
        } elseif ($USER->CanDoOperation('edit_subordinate_users')) {
            $arGroupsCanEditID = CSocNetTools::GetSubordinateGroups();
            if (is_array($arGroupsCanEditID) && count($arGroupsCanEditID) > 0) {
                $dbGroup = CGroup::GetList($by = "c_sort", $order = "asc", array("ID" => implode(" | ", $arGroupsCanEditID), "ACTIVE" => "Y"));
                while ($arGroup = $dbGroup->Fetch()) {
                    $arResult["GROUPS_CAN_EDIT"][$arGroup["ID"]] = $arGroup;
                }
            }
        }
    } else {
        foreach ($arParams['EDITABLE_FIELDS'] as $key => $value) {
            if ($value == 'GROUP_ID' || $value == 'ACTIVE') {
                unset($arParams['EDITABLE_FIELDS'][$key]);
            }
        }
    }
    if ($arParams['IS_FORUM'] == 'Y') {