public static function getUserGroups($userId, $force = false) { static $cache = array(); if (!$force && isset($cache[$userId])) { return $cache[$userId]; } $cache[$userId] = array(); if (!CModule::IncludeModule('socialnetwork')) { return $cache[$userId]; } $userGroupFilter = array('USER_ID' => (int) $userId, '<=ROLE' => SONET_ROLES_USER); $dbUserGroups = CSocNetUserToGroup::GetList(array('GROUP_NAME' => 'ASC'), $userGroupFilter, false, false, array('GROUP_NAME', 'GROUP_ID')); while ($row = $dbUserGroups->GetNext()) { $cache[$userId][] = $row; } return $cache[$userId]; }
function OnUserInitialize($user_id, $arFields = array()) { if (intval($user_id) <= 0) { return false; } if (CModule::IncludeModule("im")) { $bIM = true; } $dbRelation = CSocNetUserToGroup::GetList(array(), array("USER_ID" => $user_id, "ROLE" => SONET_ROLES_REQUEST, "INITIATED_BY_TYPE" => SONET_INITIATED_BY_GROUP), false, false, array("ID", "GROUP_ID")); while ($arRelation = $dbRelation->Fetch()) { if (CSocNetUserToGroup::UserConfirmRequestToBeMember($user_id, $arRelation["ID"], false) && defined("BX_COMP_MANAGED_CACHE")) { $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group_G" . $arRelation["GROUP_ID"]); $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group_U" . $user_id); if ($bIM) { CIMNotify::DeleteByTag("SOCNET|INVITE_GROUP|" . $user_id . "|" . intval($arRelation["ID"])); } } } }
/** * Method return array of user ids, extracting from special codes. Supported: user (U), group (G), * intranet (IU, D, DR, Dextranet, UA), socnet (SU, SG1_A, SG1_E, SG1_K) * * @param string $code - group code, ex. group_D1 * @return bool|array */ public static function extractUsersFromExtendedGroup($code) { if (strpos($code, 'group_') !== 0) { return false; } $code = strtoupper(substr($code, strlen('group_'))); if (strpos($code, 'G') === 0) { $group = (int) substr($code, 1); if ($group <= 0) { return array(); } $result = array(); $iterator = CUser::GetList($b = "ID", $o = "ASC", array("GROUPS_ID" => $group, "ACTIVE" => "Y")); while ($user = $iterator->fetch()) { $result[] = $user['ID']; } return $result; } if (preg_match('/^(U|IU|SU)([0-9]+)$/i', $code, $match)) { return array($match[2]); } if ($code == 'UA' && CModule::IncludeModule('intranet')) { $result = array(); $iterator = CUser::GetList($by = "id", $order = "asc", array('ACTIVE' => 'Y', '>UF_DEPARTMENT' => 0), array('FIELDS' => array('ID'))); while ($user = $iterator->fetch()) { $result[] = $user['ID']; } return $result; } if (preg_match('/^(D|DR)([0-9]+)$/', $code, $match) && CModule::IncludeModule('intranet')) { $recursive = $match[1] == 'DR'; $id = $match[2]; $iblockId = COption::GetOptionInt('intranet', 'iblock_structure'); $departmentIds = array($id); if ($recursive) { $iterator = CIBlockSection::GetList(array('ID' => 'ASC'), array('=IBLOCK_ID' => $iblockId, 'ID' => $id), false, array('ID', 'LEFT_MARGIN', 'RIGHT_MARGIN', 'DEPTH_LEVEL')); $section = $iterator->fetch(); $filter = array('=IBLOCK_ID' => $iblockId, ">LEFT_MARGIN" => $section["LEFT_MARGIN"], "<RIGHT_MARGIN" => $section["RIGHT_MARGIN"], ">DEPTH_LEVEL" => $section['DEPTH_LEVEL']); $iterator = CIBlockSection::GetList(array("left_margin" => "asc"), $filter, false, array('ID')); while ($section = $iterator->fetch()) { $departmentIds[] = $section['ID']; } unset($iterator, $section, $filter); } $result = array(); $iterator = CUser::GetList($by = "id", $order = "asc", array('ACTIVE' => 'Y', 'UF_DEPARTMENT' => $departmentIds), array('FIELDS' => array('ID'))); while ($user = $iterator->fetch()) { $result[] = $user['ID']; } return $result; } if ($code == 'Dextranet' && CModule::IncludeModule('extranet')) { $result = array(); $iterator = CUser::GetList($by = "id", $order = "asc", array(COption::GetOptionString("extranet", "extranet_public_uf_code", "UF_PUBLIC") => "1", "!UF_DEPARTMENT" => false, "GROUPS_ID" => array(CExtranet::GetExtranetUserGroupID())), array('FIELDS' => array('ID'))); while ($user = $iterator->fetch()) { $result[] = $user['ID']; } return $result; } if (preg_match('/^SG([0-9]+)_?([AEK])?$/', $code, $match) && CModule::IncludeModule('socialnetwork')) { $groupId = (int) $match[1]; $role = isset($match[2]) ? $match[2] : 'K'; $iterator = CSocNetUserToGroup::GetList(array("USER_ID" => "ASC"), array("=GROUP_ID" => $groupId, "<=ROLE" => $role, "USER_ACTIVE" => "Y"), false, false, array("USER_ID")); $result = array(); while ($user = $iterator->fetch()) { $result[] = $user['USER_ID']; } return $result; } return false; }
public static function getUserGroups($arFields, $n, $server) { global $USER; $dbRes = CSocNetUserToGroup::GetList( array('ID' => 'ASC'), array( 'USER_ID' => $USER->GetID(), '<=ROLE' => SONET_ROLES_USER ), false, false, array('GROUP_ID', 'GROUP_NAME', 'ROLE') ); $res = array(); while ($arRes = $dbRes->Fetch()) { $res[] = $arRes; } return $res; }
function OnSearchCheckPermissions($FIELD) { global $DB, $USER; $user_id = intval($USER->GetID()); $arResult = array(); if ($user_id > 0) { $arResult[] = "SU" . $user_id . "_Z"; $rsFriends = CSocNetUserRelations::GetList(array(), array("USER_ID" => $user_id, "RELATION" => SONET_RELATIONS_FRIEND), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID", "DATE_CREATE", "DATE_UPDATE", "INITIATED_BY")); while ($arFriend = $rsFriends->Fetch()) { if ($arFriend["FIRST_USER_ID"] != $user_id) { $arResult[] = "SU" . $arFriend["FIRST_USER_ID"] . "_M"; } if ($arFriend["SECOND_USER_ID"] != $user_id) { $arResult[] = "SU" . $arFriend["SECOND_USER_ID"] . "_M"; } } } $rsGroups = CSocNetUserToGroup::GetList(array(), array("USER_ID" => $user_id), false, false, array("GROUP_ID", "ROLE")); while ($arGroup = $rsGroups->Fetch()) { $arResult[] = "SG" . $arGroup["GROUP_ID"] . "_" . $arGroup["ROLE"]; } return $arResult; }
$arResult["Group"] = $arGroup; $arResult["CurrentUserPerms"] = CSocNetUserToGroup::InitUserPerms($GLOBALS["USER"]->GetID(), $arResult["Group"], CSocNetUser::IsCurrentUserModuleAdmin()); if (!$arResult["CurrentUserPerms"] || !$arResult["CurrentUserPerms"]["UserCanViewGroup"] || !$arResult["CurrentUserPerms"]["UserCanSpamGroup"]) { $arResult["FatalError"] = GetMessage("SONET_CHAT_GROUP_ACESS"); } else { $arResult["Urls"]["Group"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arResult["Group"]["ID"])); if ($arParams["SET_TITLE"] == "Y") { $APPLICATION->SetTitle($arResult["Group"]["NAME"] . ": " . GetMessage("SONET_CHAT_GROUP_TITLE")); } if (intval($arResult["Group"]["IMAGE_ID"]) <= 0) { $arResult["Group"]["IMAGE_ID"] = COption::GetOptionInt("socialnetwork", "default_group_picture", false, SITE_ID); } $arImage = CSocNetTools::InitImage($arResult["Group"]["IMAGE_ID"], 50, "/bitrix/images/socialnetwork/nopic_group_50.gif", 50, $arResult["Urls"]["Group"], true, 'target="_blank"'); $arResult["Group"]["IMAGE_ID_FILE"] = $arImage["FILE"]; $arResult["Group"]["IMAGE_ID_IMG"] = $arImage["IMG"]; $dbRequests = CSocNetUserToGroup::GetList(array("USER_LAST_NAME" => "ASC", "USER_NAME" => "ASC"), array("GROUP_ID" => $arResult["Group"]["ID"], "<=ROLE" => SONET_ROLES_USER), false, false, array("ID", "USER_ID", "ROLE", "DATE_CREATE", "DATE_UPDATE", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "USER_PERSONAL_PHOTO", "USER_PERSONAL_GENDER", "USER_IS_ONLINE")); if ($dbRequests) { $arResult["Users"] = array(); $arResult["Users"]["List"] = false; while ($arRequests = $dbRequests->GetNext()) { if ($arResult["UserSelf"]["ID"] == $arRequests["USER_ID"]) { continue; } if ($arResult["Users"]["List"] == false) { $arResult["Users"]["List"] = array(); } $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arRequests["USER_ID"])); $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arRequests["USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); $arTmpUser = array("NAME" => htmlspecialcharsback($arRequests["USER_NAME"]), "LAST_NAME" => htmlspecialcharsback($arRequests["USER_LAST_NAME"]), "SECOND_NAME" => htmlspecialcharsback($arRequests["USER_SECOND_NAME"]), "LOGIN" => htmlspecialcharsback($arRequests["USER_LOGIN"])); $strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin); $arResult["Users"]["List"][] = array("ID" => $arRequests["ID"], "USER_ID" => $arRequests["USER_ID"], "USER_NAME" => $arRequests["USER_NAME"], "USER_LAST_NAME" => $arRequests["USER_LAST_NAME"], "USER_SECOND_NAME" => $arRequests["USER_SECOND_NAME"], "USER_LOGIN" => $arRequests["USER_LOGIN"], "USER_NAME_FORMATTED" => $strNameFormatted, "USER_PROFILE_URL" => $pu, "SHOW_PROFILE_LINK" => $canViewProfile, "PATH_TO_MESSAGES_CHAT" => str_replace("#user_id#", $arRequests["USER_ID"], $arParams["PATH_TO_MESSAGES_CHAT"]), "IS_ONLINE" => $arRequests["USER_IS_ONLINE"] == "Y", "IS_MODERATOR" => $arRequests["ROLE"] != SONET_ROLES_USER);
public static function AllowToSend($arParams) { $bResult = false; if (isset($arParams['TO_USER_ID'])) { $toUserId = intval($arParams['TO_USER_ID']); $bResult = true; if(IsModuleInstalled('intranet') && CModule::IncludeModule('extranet') && !CExtranet::IsIntranetUser()) { $bResult = false; if (CModule::IncludeModule("socialnetwork")) { global $USER, $CACHE_MANAGER; if(defined("BX_COMP_MANAGED_CACHE")) $ttl = 2592000; else $ttl = 600; $cache_id = 'im_user_sg_'.$USER->GetID(); $obSGCache = new CPHPCache; $cache_dir = '/bx/imc/sonet'; if($obSGCache->InitCache($ttl, $cache_id, $cache_dir)) { $tmpVal = $obSGCache->GetVars(); $bResult = in_array($toUserId, $tmpVal['EXTRANET_USERS']); } else { if(defined("BX_COMP_MANAGED_CACHE")) $CACHE_MANAGER->StartTagCache($cache_dir); $dbUsersInGroup = CSocNetUserToGroup::GetList( array(), array( "USER_ID" => $USER->GetID(), "<=ROLE" => SONET_ROLES_USER, "GROUP_SITE_ID" => CExtranet::GetExtranetSiteID(), "GROUP_ACTIVE" => "Y", "GROUP_CLOSED" => "N" ), false, false, array("ID", "GROUP_ID", "GROUP_NAME") ); $arUserSocNetGroups = Array(); $arUserSG = Array(); while ($ar = $dbUsersInGroup->GetNext(true, false)) { $arUserSocNetGroups[] = $ar["GROUP_ID"]; $arUserSG['SG'.$ar['GROUP_ID']] = array( 'id' => 'SG'.$ar['GROUP_ID'], 'status' => 'close', 'name' => GetMessage('IM_CL_GROUP_SG').$ar['GROUP_NAME'] ); if(defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->RegisterTag('sonet_group_'.$ar['GROUP_ID']); $CACHE_MANAGER->RegisterTag('sonet_user2group_G'.$ar['GROUP_ID']); } } $arExtranetUsers = Array(); $arUserInGroup = Array(); $arWoUserInGroup = Array(); if (count($arUserSocNetGroups) > 0) { $dbUsersInGroup = CSocNetUserToGroup::GetList( array(), array( "GROUP_ID" => $arUserSocNetGroups, "<=ROLE" => SONET_ROLES_USER, "USER_ACTIVE" => "Y" ), false, false, array("ID", "USER_ID", "GROUP_ID") ); while ($ar = $dbUsersInGroup->GetNext(true, false)) { if($USER->GetID() != $ar["USER_ID"]) { $arExtranetUsers[$ar["USER_ID"]] = $ar["USER_ID"]; if (isset($arUserInGroup["SG".$ar["GROUP_ID"]])) $arUserInGroup["SG".$ar["GROUP_ID"]]['users'][] = $ar["USER_ID"]; else $arUserInGroup["SG".$ar["GROUP_ID"]] = Array('id' => "SG".$ar["GROUP_ID"], 'users' => Array($ar["USER_ID"])); if (isset($arWoUserInGroup["extranet"])) $arWoUserInGroup["extranet"]['users'][] = $ar["USER_ID"]; else $arWoUserInGroup["extranet"] = Array('id' => "extranet", 'users' => Array($ar["USER_ID"])); } } if (isset($arWoUserInGroup['extranet']) && isset($arWoUserInGroup['extranet']['users'])) $arWoUserInGroup['extranet']['users'] = array_values(array_unique($arWoUserInGroup['extranet']['users'])); } if(defined("BX_COMP_MANAGED_CACHE")) $CACHE_MANAGER->EndTagCache(); if($obSGCache->StartDataCache()) { $obSGCache->EndDataCache(array( 'USER_SG' => $arUserSG, 'EXTRANET_USERS' => $arExtranetUsers, 'USER_IN_GROUP' => $arUserInGroup, 'WO_USER_IN_GROUP' => $arWoUserInGroup ) ); } $bResult = in_array($toUserId, $arExtranetUsers); } unset($obSGCache); } } } else if (isset($arParams['TO_CHAT_ID'])) { global $DB, $USER; $toChatId = intval($arParams['TO_CHAT_ID']); $fromUserId = intval($USER->GetID()); $strSql = " SELECT R.CHAT_ID FROM b_im_relation R WHERE R.USER_ID = ".$fromUserId." AND R.MESSAGE_TYPE = '".IM_MESSAGE_GROUP."' AND R.CHAT_ID = ".$toChatId.""; $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if ($arRes = $dbRes->Fetch()) $bResult = true; else $bResult = false; } return $bResult; }
public function GetFormHtml($arParams = false) { global $USER; if (is_array($arParams["socnetgroups"]) && $arParams["socnetgroups"]["disabled"] == "true") { return false; } $currElements = ''; if (is_array($arParams[$this->id]) && ($group_id = intval($arParams[$this->id]["group_id"])) > 0) { $arFinderParams = array("PROVIDER" => $this->id, "TYPE" => 4); $arFilter = array("ID" => $group_id, "ACTIVE" => "Y"); if (!CSocNetUser::IsCurrentUserModuleAdmin($arParams["SITE_ID"])) { $arFilter["CHECK_PERMISSIONS"] = $USER->GetID(); } $rsGroups = CSocNetGroup::GetList(array(), $arFilter); if ($arGroup = $rsGroups->Fetch()) { $arItem = array("ID" => "SG" . $arGroup['ID'], "AVATAR" => '/bitrix/js/main/core/images/access/avatar-user-everyone.png', "NAME" => $arGroup['NAME'], "DESC" => $arGroup['DESCRIPTION'], "OPEN" => "Y", "CHECKBOX" => array("#ID#_A" => GetMessage("authprov_sg_a"), "#ID#_E" => GetMessage("authprov_sg_e"), "#ID#_K" => GetMessage("authprov_sg_k"))); if ($arGroup["IMAGE_ID"]) { $imageFile = CFile::GetFileArray($arGroup["IMAGE_ID"]); if ($imageFile !== false) { $arFileTmp = CFile::ResizeImageGet($imageFile, array("width" => 30, "height" => 30), BX_RESIZE_IMAGE_PROPORTIONAL, false); $arItem["AVATAR"] = $arFileTmp["src"]; } } $currElements .= CFinder::GetFinderItem($arFinderParams, $arItem); } } $elements = ""; $arFinderParams = array("PROVIDER" => $this->id, "TYPE" => 3); $arLRU = CAccess::GetLastRecentlyUsed($this->id); if (!empty($arLRU)) { $arLast = array(); $arLastID = array(); $arElements = array(); foreach ($arLRU as $val) { if (preg_match('/^SG([0-9]+)_([A-Z])/', $val, $match)) { $arLast[$match[2]][$match[1]] = $match[1]; $arLastID[$match[1]] = $match[1]; } } if (!empty($arLastID)) { $arFilter = array("ID" => $arLastID, "ACTIVE" => "Y"); if ($arParams["SITE_ID"] != '') { $arFilter["SITE_ID"] = $arParams["SITE_ID"]; } if (!CSocNetUser::IsCurrentUserModuleAdmin($arParams["SITE_ID"])) { $arFilter["CHECK_PERMISSIONS"] = $USER->GetID(); } $rsGroups = CSocNetGroup::GetList(array("NAME" => "ASC"), $arFilter); while ($arGroup = $rsGroups->Fetch()) { $arItem = array("ID" => $arGroup['ID'], "AVATAR" => '/bitrix/js/main/core/images/access/avatar-user-everyone.png', "NAME" => $arGroup['NAME'], "DESC" => $arGroup['DESCRIPTION']); if ($arGroup["IMAGE_ID"]) { $imageFile = CFile::GetFileArray($arGroup["IMAGE_ID"]); if ($imageFile !== false) { $arFileTmp = CFile::ResizeImageGet($imageFile, array("width" => 30, "height" => 30), BX_RESIZE_IMAGE_PROPORTIONAL, false); $arItem["AVATAR"] = $arFileTmp["src"]; } } $arElements[$arItem['ID']] = $arItem; } foreach ($arLRU as $val) { if (preg_match('/^SG([0-9]+)_([A-Z])/', $val, $match)) { $arItem = $arElements[$match[1]]; if ($match[2] == 'K') { $arItem['ID'] = 'SG' . $arElements[$match[1]]['ID'] . '_K'; $arItem['NAME'] = $arElements[$match[1]]['NAME'] . ': ' . GetMessage("authprov_sg_k"); } else { if ($match[2] == 'E') { $arItem['ID'] = 'SG' . $arElements[$match[1]]['ID'] . '_E'; $arItem['NAME'] = $arElements[$match[1]]['NAME'] . ': ' . GetMessage("authprov_sg_e"); } else { if ($match[2] == 'A') { $arItem['ID'] = 'SG' . $arElements[$match[1]]['ID'] . '_A'; $arItem['NAME'] = $arElements[$match[1]]['NAME'] . ': ' . GetMessage("authprov_sg_a"); } } } $elements .= CFinder::GetFinderItem($arFinderParams, $arItem); } } } } $arFinderParams = array("PROVIDER" => $this->id, "TYPE" => 4); $arFilter = array("USER_ID" => $USER->GetID(), "<=ROLE" => SONET_ROLES_USER, "GROUP_ACTIVE" => "Y"); if ($arParams["SITE_ID"] != '') { $arFilter["GROUP_SITE_ID"] = $arParams["SITE_ID"]; } $rsGroups = CSocNetUserToGroup::GetList(array("GROUP_NAME" => "ASC"), $arFilter, false, array(), array("ID", "GROUP_ID", "GROUP_NAME", "GROUP_DESCRIPTION", "GROUP_IMAGE_ID")); $myElements = ''; while ($arGroup = $rsGroups->Fetch()) { $arItem = array("ID" => "SG" . $arGroup['GROUP_ID'], "AVATAR" => $arGroup['GROUP_IMAGE_ID'], "NAME" => $arGroup['GROUP_NAME'], "DESC" => $arGroup['GROUP_DESCRIPTION'], "CHECKBOX" => array("#ID#_A" => GetMessage("authprov_sg_a"), "#ID#_E" => GetMessage("authprov_sg_e"), "#ID#_K" => GetMessage("authprov_sg_k"))); if ($arGroup["GROUP_IMAGE_ID"]) { $imageFile = CFile::GetFileArray($arGroup["GROUP_IMAGE_ID"]); if ($imageFile !== false) { $arFileTmp = CFile::ResizeImageGet($imageFile, array("width" => 30, "height" => 30), BX_RESIZE_IMAGE_PROPORTIONAL, false); $arItem["AVATAR"] = $arFileTmp["src"]; } } $myElements .= CFinder::GetFinderItem($arFinderParams, $arItem); } $arPanels = array(); if ($currElements != '') { $arPanels[] = array("NAME" => GetMessage("authprov_sg_current"), "ELEMENTS" => $currElements); } $arPanels[] = array("NAME" => GetMessage("authprov_sg_panel_last"), "ELEMENTS" => $elements); $arPanels[] = array("NAME" => GetMessage("authprov_sg_panel_my_group"), "ELEMENTS" => $myElements); $arPanels[] = array("NAME" => GetMessage("authprov_sg_panel_search"), "ELEMENTS" => CFinder::GetFinderItem(array("TYPE" => "text"), array("TEXT" => GetMessage("authprov_sg_panel_search_text"))), "SEARCH" => "Y"); $html = CFinder::GetFinderAppearance($arFinderParams, $arPanels); return array("HTML" => $html, "SELECTED" => $currElements != ''); }
static function GetUserGroups($userID = 0, $bGetFolders = true) { static $oCache = null; static $CACHE_PATH = "/webdav/sonet_user_groups/"; if (!CBXFeatures::IsFeatureEnabled("Workgroups")) { return array(); } $userID = intval($userID); if (intval($userID) <= 0) { $userID = $GLOBALS['USER']->GetID(); } //$currentUserGroups = CWebDavBase::CustomDataCache($CACHE_PATH, $userID); //if (!$currentUserGroups) //{ $currentUserGroups = array(); $db_res = CSocNetUserToGroup::GetList(array("GROUP_NAME" => "ASC"), array("USER_ID" => $userID), false, false, array("GROUP_ID", "GROUP_NAME", "GROUP_ACTIVE", "GROUP_CLOSED", "ROLE")); while ($res = $db_res->GetNext()) { if ($res['GROUP_ACTIVE'] == 'Y' && $res['GROUP_CLOSED'] == 'N' && $res['ROLE'] != SONET_ROLES_BAN && $res['ROLE'] != SONET_ROLES_REQUEST) { $currentUserGroups[$res["GROUP_ID"]] = $res; } } $arGroupID = array_keys($currentUserGroups); if (is_array($arGroupID) && sizeof($arGroupID) > 0) { $arFeatures = CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, $arGroupID, 'files'); foreach ($arFeatures as $groupID => $enabled) { if (!$enabled) { unset($currentUserGroups[$groupID]); } } } if ($bGetFolders) { $groupIBlock = CWebDavIblock::LibOptions('group_files', false, SITE_ID); if ($groupIBlock && isset($groupIBlock['id']) && intval($groupIBlock['id']) > 0) { $arFilter = array("IBLOCK_ID" => intval($groupIBlock['id']), "SECTION_ID" => 0, "CHECK_PERMISSIONS" => "N"); $dbSection = CIBlockSection::GetList(array(), $arFilter, false, array('ID', 'SOCNET_GROUP_ID')); while ($arGroupSection = $dbSection->Fetch()) { if (isset($currentUserGroups[$arGroupSection['SOCNET_GROUP_ID']])) { $currentUserGroups[$arGroupSection['SOCNET_GROUP_ID']]['SECTION_ID'] = $arGroupSection['ID']; } } //CWebDavBase::CustomDataCache($CACHE_PATH, $userID, $currentUserGroups, 'wd_socnet, iblock_id_'.intval($groupIBlock['id'])); // do not save to cache if LibOptions('group_files') is empty } } //} return $currentUserGroups; }
function GetGroupMembers($arParams, &$bAddCurUser = false) { // TODO: CHECK PERMISSIONS $dbMembers = CSocNetUserToGroup::GetList(array("RAND" => "ASC"), array("GROUP_ID" => $arParams['groupId'], "<=ROLE" => SONET_ROLES_USER, "USER_ACTIVE" => "Y"), false, false, array("USER_ID", "USER_NAME", "USER_LAST_NAME", "USER_LOGIN")); $arMembers = array(); if ($dbMembers) { while ($arMember = $dbMembers->GetNext()) { if ($arMember["USER_ID"] == $this->userId) { $bAddCurUser = true; continue; } $name = trim($arMember['USER_NAME'] . ' ' . $arMember['USER_LAST_NAME']); if ($name == '') { $name = trim($arMember['USER_LOGIN']); } $arMembers[] = array('id' => $arMember["USER_ID"], 'name' => $name, 'status' => 'Q', 'busy' => $this->GetGuestAccessibility(array('userId' => $arMember["USER_ID"], 'from' => $arParams['from'], 'to' => $arParams['to']))); } } return $arMembers; }
public function GetUsersFromUserGroup($group, $documentId) { $diskId = self::processGetDiskIdByDocId((int) $documentId); if ($diskId !== null) { return self::proxyToDisk(__FUNCTION__, array($group, $diskId)); } $arResult = array(); $arParameters = array("IBlockId" => 0, "OwnerType" => "", "OwnerId" => 0); if (strLen($documentId) <= 0) { return $arResult; } $res = explode("_", $documentId); if (count($res) == 4) { $arParameters = array("IBlockId" => $res[1], "OwnerType" => $res[2], "OwnerId" => $res[3]); } elseif (intVal($documentId) > 0) { $db_res = CIBlockElement::GetList(array(), array("ID" => $documentId, "SHOW_NEW" => "Y", "SHOW_HISTORY" => "Y"), false, false, array("ID", "IBLOCK_ID", "CREATED_BY", "IBLOCK_SECTION_ID")); $arElement = $db_res->Fetch(); if (!$arElement) { return false; } $arParameters["IBlockId"] = $arElement["IBLOCK_ID"]; $arParameters["CreatedBy"] = $arElement["CREATED_BY"]; $dbSectionsChain = CIBlockSection::GetNavChain($arElement["IBLOCK_ID"], $arElement["IBLOCK_SECTION_ID"]); if ($arSect = $dbSectionsChain->Fetch()) { $arParameters["OwnerType"] = intVal($arSect["SOCNET_GROUP_ID"]) > 0 ? "group" : "user"; $arParameters["OwnerId"] = intVal($arSect["SOCNET_GROUP_ID"]) > 0 ? $arSect["SOCNET_GROUP_ID"] : $arSect["CREATED_BY"]; } } $sGroup = strtoupper($group); if ($sGroup == "AUTHOR") { return array($arParameters["CreatedBy"]); } elseif ($sGroup == SONET_RELATIONS_TYPE_NONE) { return array($arParameters["OwnerId"]); } elseif ($arParameters["OwnerId"] <= 0) { return array(); } if ($arParameters["OwnerType"] == "user") { $db_res = CSocNetUserRelations::GetRelatedUsers($arParameters["OwnerId"], SONET_RELATIONS_FRIEND); if ($db_res && ($res = $db_res->Fetch())) { do { if ($res["FIRST_USER_ID"] == $arParameters["OwnerId"]) { $arResult[] = $res["SECOND_USER_ID"]; } else { $arResult[] = $res["FIRST_USER_ID"]; } } while ($res = $db_res->Fetch()); } } else { if ($sGroup == SONET_ROLES_OWNER) { $arGroup = CSocNetGroup::GetByID($arParameters["OwnerId"]); if ($arGroup) { $arResult[] = $arGroup["OWNER_ID"]; } } elseif ($sGroup == SONET_ROLES_MODERATOR) { $db = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $arParameters["OwnerId"], "<=ROLE" => SONET_ROLES_MODERATOR, "USER_ACTIVE" => "Y"), false, false, array("USER_ID")); while ($ar = $db->Fetch()) { $arResult[] = $ar["USER_ID"]; } } elseif ($sGroup == SONET_ROLES_USER) { $db = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $arParameters["OwnerId"], "<=ROLE" => SONET_ROLES_USER, "USER_ACTIVE" => "Y"), false, false, array("USER_ID")); while ($ar = $db->Fetch()) { $arResult[] = $ar["USER_ID"]; } } } return $arResult; }
//cache data $cache = new CPHPCache(); $cache_time = 3600 * 24 * 365; $cache_path = '/tasks_mobile_cache/' . $action; $cache_id = 'tasks|' . $action . '|' . (int) $userId . time(); if ($cache->InitCache($cache_time, $cache_id, $cache_path)) { $cachedData = $cache->GetVars(); $data = $cachedData["DATA"]; $dataId = $cachedData["dataId"]; } else { $GLOBALS["CACHE_MANAGER"]->StartTagCache($cache_path); $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_user2group_U" . $userId); $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_group"); $data = array(); $arFilter = array('ID' => array(), 'ACTIVE' => 'Y'); $dbUserGroups = CSocNetUserToGroup::GetList(array('GROUP_NAME' => 'ASC'), array('USER_ID' => $userId, '<=ROLE' => SONET_ROLES_USER, 'GROUP_ACTIVE' => 'Y'), false, false, array('GROUP_ID')); if ($dbUserGroups) { while ($arUserGroups = $dbUserGroups->GetNext()) { $arFilter['ID'][] = $arUserGroups['GROUP_ID']; } } if (count($arFilter['ID']) > 0) { $dbSocnetGroup = CSocNetGroup::GetList(array('NAME' => 'ASC'), $arFilter, false, false, array('ID', 'NAME', 'IMAGE_ID')); $woGroupName = GetMessage('MB_TASKS_TASK_EDIT_WO_GROUP'); if (ToUpper(SITE_CHARSET) !== 'UTF-8') { $woGroupName = $APPLICATION->ConvertCharsetArray($woGroupName, SITE_CHARSET, 'utf-8'); } $data[] = array('ID' => 0, 'NAME' => (string) $woGroupName, 'OUTSECTION' => 1); while ($arSocnetGroup = $dbSocnetGroup->Fetch()) { if (intval($arSocnetGroup['IMAGE_ID']) > 0) { $arImage = CFile::ResizeImageGet($arSocnetGroup['IMAGE_ID'], array('width' => 80, 'height' => 80), BX_RESIZE_IMAGE_EXACT, false);
while ($arGroup = $dbGroups->GetNext()) { $arGroup["GROUP_URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arGroup["ID"])); if (intval($arGroup["IMAGE_ID"]) <= 0) { $arGroup["IMAGE_ID"] = COption::GetOptionInt("socialnetwork", "default_group_picture", false, SITE_ID); } $arImage = CSocNetTools::InitImage($arGroup["IMAGE_ID"], 50, "/bitrix/images/socialnetwork/nopic_group_50.gif", 50, $arGroup["GROUP_URL"], true); $arGroup["IMAGE_FILE"] = $arImage["FILE"]; $arGroup["IMAGE_IMG"] = $arImage["IMG"]; $arGroup["FULL_DATE_CHANGE_FORMATED"] = date($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($arGroup["DATE_ACTIVITY"], CSite::GetDateFormat("FULL"))); $arResult["Groups"][] = $arGroup; } $this->IncludeComponentTemplate(); } } else { if (!CModule::IncludeModule("socialnetwork")) { ShowError(GetMessage("SONET_MODULE_NOT_INSTALL")); return; } $arResult["Urls"]["GroupSearch"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_SEARCH"], array()); $dbGroups = CSocNetUserToGroup::GetList(array("GROUP_NAME" => "ASC"), array("USER_ID" => $GLOBALS["USER"]->GetID(), "<=ROLE" => SONET_ROLES_USER, "GROUP_SITE_ID" => SITE_ID, "GROUP_ACTIVE" => "Y"), false, array("nTopCount" => $arParams["ITEMS_COUNT"]), array("ID", "GROUP_ID", "GROUP_NAME", "GROUP_DESCRIPTION", "GROUP_IMAGE_ID", "GROUP_DATE_ACTIVITY")); $arResult["Groups"] = array(); while ($arGroup = $dbGroups->GetNext()) { $arGroup["GROUP_URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arGroup["GROUP_ID"])); $arImage = CSocNetTools::InitImage($arGroup["GROUP_IMAGE_ID"], 50, "/bitrix/images/socialnetwork/nopic_group_50.gif", 50, $arGroup["GROUP_URL"], true); $arGroup["IMAGE_FILE"] = $arImage["FILE"]; $arGroup["IMAGE_IMG"] = $arImage["IMG"]; $arGroup["FULL_DATE_CHANGE_FORMATED"] = date($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($arGroup["GROUP_DATE_ACTIVITY"], CSite::GetDateFormat("FULL"))); $arResult["Groups"][] = array("GROUP_URL" => $arGroup["GROUP_URL"], "IMAGE_FILE" => $arGroup["IMAGE_FILE"], "IMAGE_IMG" => $arGroup["IMAGE_IMG"], "FULL_DATE_CHANGE_FORMATED" => $arGroup["FULL_DATE_CHANGE_FORMATED"], "ID" => $arGroup["GROUP_ID"], "NAME" => $arGroup["GROUP_NAME"], "DESCRIPTION" => $arGroup["GROUP_DESCRIPTION"], "IMAGE_ID" => $arGroup["GROUP_IMAGE_ID"], "DATE_ACTIVITY" => $arGroup["GROUP_DATE_ACTIVITY"]); } $this->IncludeComponentTemplate(); }
/** * <p>Метод изменяет параметры группы с заданным идентификатором.</p> <p><b>Примечание</b>: при работе метода вызываются события <a href="http://dev.1c-bitrix.ru/api_help/socialnetwork/events/OnBeforeSocNetGroupUpdate.php">OnBeforeSocNetGroupUpdate</a> и <a href="http://dev.1c-bitrix.ru/api_help/socialnetwork/events/OnSocNetGroupUpdate.php">OnSocNetGroupUpdate</a>.</p> * * * * * @param int $ID Идентификатор группы </htm * * * * @param array $arFields Массив параметров группы, которые должны быть изменены. Ключами в * массиве являются названия параметров, а значениями - новые * значения. Допустимые ключи: <b>SITE_ID</b> - код сайта,<br><b>NAME</b> - название * группы,<br><b>DESCRIPTION</b> - описание группы,<br><b>VISIBLE</b> - флаг Y/N - видна ли * группа в списке групп,<br><b>OPENED</b> - флаг Y/N - открыта ли группа для * свободного вступления,<br><b>SUBJECT_ID</b> - код темы,<br><b>KEYWORDS</b> - ключевые * слова,<br><b>IMAGE_ID</b> - иконка группы,<br><b>INITIATE_PERMS</b> - кто имеет право на * приглашение пользователей в группу: SONET_ROLES_OWNER - только владелец * группы, SONET_ROLES_MODERATOR - владелец группы и модераторы группы, * SONET_ROLES_USER - все члены группы,<br><b>CLOSED</b> - флаг Y/N - является ли группа * архивной,<br><b>SPAM_PERMS</b> - кто имеет право на отправку сообщений в * группу: SONET_ROLES_OWNER - только владелец группы, SONET_ROLES_MODERATOR - владелец * группы и модераторы группы, SONET_ROLES_USER - все члены группы. * * * * @param bool $bAutoSubscribe = true Флаг автоподписки на уведомления. Необязательный. По умолчанию * равен true. * * * * @param bool $bClearCommonTag = true Необязательный. По умолчанию равен true. * * * * @return int <p>Метод возвращает код изменяемой группы или false в случае * ошибки.</p> <a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * $arFields = array( * "NAME" => $_POST["GROUP_NAME"], * "DESCRIPTION" => $_POST["GROUP_DESCRIPTION"], * ); * if (!CSocNetGroup::Update($ID, $arFields)) * { * if ($e = $GLOBALS["APPLICATION"]->GetException()) * $errorMessage .= $e->GetString(); * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/CSocNetGroup/update.php * @author Bitrix */ public static function Update($ID, $arFields, $bAutoSubscribe = true, $bClearCommonTag = true) { global $DB; if (!CSocNetGroup::__ValidateID($ID)) { return false; } $ID = IntVal($ID); $arGroupOld = CSocNetGroup::GetByID($ID); if (!$arGroupOld) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_NO_GROUP"), "ERROR_NO_GROUP"); return false; } $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CSocNetGroup::CheckFields("UPDATE", $arFields, $ID)) { return false; } else { $arSiteID = array(); if (is_set($arFields, "SITE_ID")) { if (is_array($arFields["SITE_ID"])) { $arSiteID = $arFields["SITE_ID"]; } else { $arSiteID[] = $arFields["SITE_ID"]; } $arFields["SITE_ID"] = false; $str_SiteID = "''"; foreach ($arSiteID as $v) { $arFields["SITE_ID"] = $v; $str_SiteID .= ", '" . $DB->ForSql($v) . "'"; } } } $db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetGroupUpdate"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } if (array_key_exists("IMAGE_ID", $arFields) && is_array($arFields["IMAGE_ID"]) && (!array_key_exists("MODULE_ID", $arFields["IMAGE_ID"]) || strlen($arFields["IMAGE_ID"]["MODULE_ID"]) <= 0)) { $arFields["IMAGE_ID"]["MODULE_ID"] = "socialnetwork"; } CFile::SaveForDB($arFields, "IMAGE_ID", "socialnetwork"); $strUpdate = $DB->PrepareUpdate("b_sonet_group", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($strUpdate) > 0) { $strUpdate .= ", "; } $strUpdate .= $key . "=" . $value . " "; } if (strlen($strUpdate) > 0) { $strSql = "UPDATE b_sonet_group SET " . "\t" . $strUpdate . " " . "WHERE ID = " . $ID . " "; $DB->Query($strSql, False, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (count($arSiteID) > 0) { $strSql = "DELETE FROM b_sonet_group_site WHERE GROUP_ID=" . $ID; $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); $strSql = "INSERT INTO b_sonet_group_site(GROUP_ID, SITE_ID) " . "SELECT " . $ID . ", LID " . "FROM b_lang " . "WHERE LID IN (" . $str_SiteID . ") "; $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); $arLogID = array(); $dbResult = CSocNetLog::GetList(array(), array("LOG_RIGHTS" => "SG" . $ID), false, false, array("ID")); while ($arResult = $dbResult->Fetch()) { $DB->Query("DELETE FROM b_sonet_log_site WHERE LOG_ID = " . $arResult["ID"] . "", false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); $DB->Query("\n\t\t\t\t\t\tINSERT INTO b_sonet_log_site(LOG_ID, SITE_ID)\n\t\t\t\t\t\tSELECT " . $arResult["ID"] . ", LID\n\t\t\t\t\t\tFROM b_lang\n\t\t\t\t\t\tWHERE LID IN (" . $str_SiteID . ")\n\t\t\t\t\t", false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); $arLogID[] = $arResult["ID"]; } $dbResult = CSocNetLog::GetList(array(), array("!ID" => $arLogID, "ENTITY_ID" => $ID, "ENTITY_TYPE" => SONET_ENTITY_GROUP), false, false, array("ID")); while ($arResult = $dbResult->Fetch()) { $DB->Query("DELETE FROM b_sonet_log_site WHERE LOG_ID = " . $arResult["ID"] . "", false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); $DB->Query("\n\t\t\t\t\t\tINSERT INTO b_sonet_log_site(LOG_ID, SITE_ID)\n\t\t\t\t\t\tSELECT " . $arResult["ID"] . ", LID\n\t\t\t\t\t\tFROM b_lang\n\t\t\t\t\t\tWHERE LID IN (" . $str_SiteID . ")\n\t\t\t\t\t", false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__); } } unset($GLOBALS["SONET_GROUP_CACHE"][$ID]); if (defined("BX_COMP_MANAGED_CACHE")) { if ($bClearCommonTag) { $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_group"); } $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_group_" . $ID); $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group_G" . $ID); $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group"); } $GLOBALS["USER_FIELD_MANAGER"]->Update("SONET_GROUP", $ID, $arFields); $events = GetModuleEvents("socialnetwork", "OnSocNetGroupUpdate"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, &$arFields)); } if (CModule::IncludeModule("search")) { $arGroupNew = CSocNetGroup::GetByID($ID); if ($arGroupNew) { if ($arGroupNew["ACTIVE"] == "N" && $arGroupOld["ACTIVE"] == "Y") { CSearch::DeleteIndex("socialnetwork", "G" . $ID); } elseif ($arGroupNew["ACTIVE"] == "Y") { $BODY = CSocNetTextParser::killAllTags($arGroupNew["~DESCRIPTION"]); $BODY .= $GLOBALS["USER_FIELD_MANAGER"]->OnSearchIndex("SONET_GROUP", $ID); $arSearchIndexSiteID = array(); $rsGroupSite = CSocNetGroup::GetSite($ID); while ($arGroupSite = $rsGroupSite->Fetch()) { $arSearchIndexSiteID[$arGroupSite["LID"]] = str_replace("#group_id#", $ID, COption::GetOptionString("socialnetwork", "group_path_template", "/workgroups/group/#group_id#/", $arGroupSite["LID"])); } $arSearchIndex = array("SITE_ID" => $arSearchIndexSiteID, "LAST_MODIFIED" => $arGroupNew["DATE_ACTIVITY"], "PARAM1" => $arGroupNew["SUBJECT_ID"], "PARAM2" => $ID, "PARAM3" => "GROUP", "PERMISSIONS" => $arGroupNew["VISIBLE"] == "Y" ? array('G2') : array('SG' . $ID . '_A', 'SG' . $ID . '_E', 'SG' . $ID . '_K'), "PARAMS" => array("socnet_group" => $ID, "entity" => "socnet_group"), "TITLE" => $arGroupNew["~NAME"], "BODY" => $BODY, "TAGS" => $arGroupNew["~KEYWORDS"]); CSearch::Index("socialnetwork", "G" . $ID, $arSearchIndex, True); } if ($arGroupNew["OPENED"] == "Y" && $arGroupOld["OPENED"] == "N") { $dbRequests = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $ID, "ROLE" => SONET_ROLES_REQUEST, "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER), false, false, array("ID")); if ($dbRequests) { $arIDs = array(); while ($arRequests = $dbRequests->GetNext()) { $arIDs[] = $arRequests["ID"]; } CSocNetUserToGroup::ConfirmRequestToBeMember($GLOBALS["USER"]->GetID(), $ID, $arIDs, $bAutoSubscribe); } } } } } elseif (!$GLOBALS["USER_FIELD_MANAGER"]->Update("SONET_GROUP", $ID, $arFields)) { $ID = False; } return $ID; }
protected static function GetRights($USER_ID) { if (IsModuleInstalled("extranet")) { $rsUser = CUser::GetByID($USER_ID); if ($arUser = $rsUser->Fetch()) { if (intval($arUser["UF_DEPARTMENT"][0]) <= 0) { $bExtranetUser = true; } } } if ($bExtranetUser && CModule::IncludeModule("socialnetwork")) { $rsSocNetUserToGroup = CSocNetUserToGroup::GetList(array(), array("USER_ID" => $USER_ID), false, false, array("GROUP_ID")); $arResult = array(); while ($arSocNetUserToGroup = $rsSocNetUserToGroup->Fetch()) { $arResult[] = "SG" . $arSocNetUserToGroup["GROUP_ID"] . "_" . SONET_ROLES_USER; $arResult[] = "SG" . $arSocNetUserToGroup["GROUP_ID"] . "_" . SONET_ROLES_MODERATOR; $arResult[] = "SG" . $arSocNetUserToGroup["GROUP_ID"] . "_" . SONET_ROLES_OWNER; } return $arResult; } else { return array("G2"); } }
} // get all groups from current site (if not extranet) if (SITE_ID != CExtranet::GetExtranetSiteID()) { $arGroupForCheck = array(); $dbGroups = CSocNetGroup::GetList(array(), array("SITE_ID" => SITE_ID), false, false, array('ID')); while ($arGroups = $dbGroups->GetNext()) { $arGroupForCheck[] = $arGroups["ID"]; } } if (!is_array($arGroupForCheck) || count($arGroupForCheck) > 0) { $arGroupFilterMy = array("USER_ID" => $USER_ID, "<=ROLE" => SONET_ROLES_USER, "GROUP_ACTIVE" => "Y", "!GROUP_CLOSED" => "Y", "GROUP_SITE_ID" => CExtranet::GetExtranetSiteID()); if (count($arGroupForCheck) > 0) { $arGroupFilterMy["GROUP_ID"] = $arGroupForCheck; } // Socialnetwork $dbGroups = CSocNetUserToGroup::GetList(array("GROUP_NAME" => "ASC"), $arGroupFilterMy, false, false, array('ID', 'GROUP_ID', 'GROUP_NAME')); while ($arGroups = $dbGroups->GetNext()) { $arExSGGroup[] = array($arGroups["GROUP_NAME"], str_replace("#group_id#", $arGroups["GROUP_ID"], $strGroupLinkTemplate), array(), array(), ""); if (defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->RegisterTag('sonet_group_' . $arGroups["ID"]); } } } } $aMenuLinks = $arExSGGroup; } } else { if (CModule::IncludeModule("socialnetwork")) { if (!function_exists("__CheckPath4Template")) { function __CheckPath4Template($pageTemplate, $currentPageUrl, &$arVariables) {
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } $arResult["ITEMS_TOTAL"] = 0; $arResult["ITEMS_MESSAGES"] = 0; $arResult["ITEMS_REQUESTS_USER"] = 0; $arResult["ITEMS_REQUESTS_GROUP"] = 0; /* friends requests */ $arFilter = array("SECOND_USER_ID" => $GLOBALS["USER"]->GetID(), "RELATION" => SONET_RELATIONS_REQUEST); $dbUserRequests = CSocNetUserRelations::GetList(array(), $arFilter, array("SECOND_USER_ID"), false, array("COUNT" => "ID")); if ($arUserRequests = $dbUserRequests->Fetch()) { $arResult["ITEMS_TOTAL"] += intval($arUserRequests["CNT"]); $arResult["ITEMS_REQUESTS_USER"] += intval($arUserRequests["CNT"]); } /* group requests */ $arFilter = array("USER_ID" => $GLOBALS["USER"]->GetID(), "ROLE" => SONET_ROLES_REQUEST, "INITIATED_BY_TYPE" => SONET_INITIATED_BY_GROUP); $dbUserRequests = CSocNetUserToGroup::GetList(array(), $arFilter, array("USER_ID"), false, array("COUNT" => "ID")); if ($arUserRequests = $dbUserRequests->Fetch()) { $arResult["ITEMS_TOTAL"] += intval($arUserRequests["CNT"]); $arResult["ITEMS_REQUESTS_GROUP"] += intval($arUserRequests["CNT"]); } /* messages */ $arFilter = array("TO_USER_ID" => $GLOBALS["USER"]->GetID(), "DATE_VIEW" => "", "TO_DELETED" => "N", "IS_LOG_ALL" => "Y"); $dbUserRequests = CSocNetMessages::GetList(array(), $arFilter, array("TO_USER_ID"), false, array("COUNT" => "ID")); if ($arUserRequests = $dbUserRequests->Fetch()) { $arResult["ITEMS_TOTAL"] += intval($arUserRequests["CNT"]); $arResult["ITEMS_MESSAGES"] += intval($arUserRequests["CNT"]); }
die; } if (SITE_TEMPLATE_ID !== "bitrix24") { return; } IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/intranet/public/.top.menu_ext.php"); global $USER; $USER_ID = $USER->GetID(); $arMenuB24 = array(array(GetMessage("TOP_MENU_FAVORITE"), SITE_DIR, array(), array("class" => "menu-favorites"), "")); if (CModule::IncludeModule("socialnetwork")) { $arMenuB24[] = array(GetMessage("TOP_MENU_GROUPS"), SITE_DIR . "workgroups/", array(), array("class" => "menu-groups"), "CBXFeatures::IsFeatureEnabled('Workgroups')"); } //extranet groups if (CModule::IncludeModule("extranet") && CBXFeatures::IsFeatureEnabled('Workgroups') && CBXFeatures::IsFeatureEnabled('Extranet') && CModule::IncludeModule("socialnetwork")) { $arGroupFilterMy = array("USER_ID" => $USER_ID, "<=ROLE" => SONET_ROLES_USER, "GROUP_ACTIVE" => "Y", "!GROUP_CLOSED" => "Y", "GROUP_SITE_ID" => CExtranet::GetExtranetSiteID()); $dbGroups = CSocNetUserToGroup::GetList(array(), $arGroupFilterMy, false, false); if ($arGroups = $dbGroups->GetNext()) { $arMenuB24[] = array(GetMessage("TOP_MENU_GROUPS_EXTRANET"), SITE_DIR . "workgroups/extranet/", array(), array("class" => "menu-groups-extranet"), "CBXFeatures::IsFeatureEnabled('Workgroups')"); } } $arSkipPattern = array("\\/workgroups\\/\$", "\\/workgroups\\/extranet\\/\$"); $arPathClassPattern = array("\\/company\\/\$" => "menu-employees", "\\/docs\\/\$" => "menu-docs", "\\/services\\/\$" => "menu-services", "\\/crm\\/\$" => "menu-crm", "\\/about\\/\$" => "menu-company"); foreach ($aMenuLinks as $arItem) { $bFound = false; foreach ($arSkipPattern as $skip) { preg_match("/" . $skip . "/is", $arItem[1], $matches); if ($matches[0]) { $bFound = true; break; } }
$obSearch = new CSearch(); $obSearch->Search($arFilter); if ($obSearch->errorno == 0) { while ($arSearch = $obSearch->Fetch()) { if (intval($arSearch["PARAM2"]) > 0) { $arGroupFilter["ID"][] = $arSearch["PARAM2"]; } } } } if (array_key_exists("ID", $arGroupFilter) && is_array($arGroupFilter["ID"])) { $arGroupFilter["ID"] = array_unique($arGroupFilter["ID"]); } if (!$bNoMyGroups) { if ($arUserGroupFilter && !empty($arUserGroupFilter)) { $dbUserGroups = CSocNetUserToGroup::GetList(array("GROUP_NAME" => "ASC"), $arUserGroupFilter, false, false, array("GROUP_ID")); if ($dbUserGroups) { while ($arUserGroups = $dbUserGroups->GetNext()) { $arGroupFilter["ID"][] = $arUserGroups["GROUP_ID"]; } } } } } if (($arResult["filter_my"] == "Y" || $arParams["PAGE"] == "user_groups" && !$GLOBALS["USER"]->IsAdmin() && !CSocNetUser::IsCurrentUserModuleAdmin() || $arParams["PAGE"] == "user_groups" && ($GLOBALS["USER"]->IsAdmin() || CSocNetUser::IsCurrentUserModuleAdmin()) && IntVal($GLOBALS["USER"]->GetID()) != $arParams["USER_ID"] || $arResult["filter_extranet"] == "Y") && (!array_key_exists("ID", $arGroupFilter) || !is_array($arGroupFilter["ID"]) || count($arGroupFilter["ID"]) <= 0)) { $bNoMyGroups = true; } if (!$bNoMyGroups) { $arCacheResult["Groups"] = array(); $arCacheResult["Groups"]["List"] = false; $dbGroup = CSocNetGroup::GetList(array("DATE_ACTIVITY" => "DESC"), $arGroupFilter, false, $arNavParams, array("ID", "NAME", "DESCRIPTION", "IMAGE_ID", "VISIBLE", "OWNER_ID", "INITIATE_PERMS", "OPENED"));
default: $suffix = "unknown"; } $arModerators["USER_PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, SITE_ID); } $arImage = CSocNetTools::InitImage($arModerators["USER_PERSONAL_PHOTO"], $arParams["THUMBNAIL_LIST_SIZE"], "/bitrix/images/socialnetwork/nopic_30x30.gif", 30, $pu, $canViewProfile); } else { // old $arImage = CSocNetTools::InitImage($arModerators["USER_PERSONAL_PHOTO"], 50, "/bitrix/images/socialnetwork/nopic_user_50.gif", 50, $pu, $canViewProfile); } $arResult["Moderators"]["List"][] = array("ID" => $arModerators["ID"], "USER_ID" => $arModerators["USER_ID"], "USER_NAME" => $arModerators["USER_NAME"], "USER_LAST_NAME" => $arModerators["USER_LAST_NAME"], "USER_SECOND_NAME" => $arModerators["USER_SECOND_NAME"], "USER_WORK_POSITION" => $arModerators["USER_WORK_POSITION"], "USER_LOGIN" => $arModerators["USER_LOGIN"], "USER_PERSONAL_PHOTO" => $arModerators["USER_PERSONAL_PHOTO"], "USER_PERSONAL_PHOTO_FILE" => $arImage["FILE"], "USER_PERSONAL_PHOTO_IMG" => $arImage["IMG"], "USER_PROFILE_URL" => $pu, "SHOW_PROFILE_LINK" => $canViewProfile, "USER_IS_EXTRANET" => $arExtranetUserID && in_array($arModerators["USER_ID"], $arExtranetUserID) ? "Y" : "N"); } } // MEMBERS $arResult["Members"] = false; $dbMembers = CSocNetUserToGroup::GetList(array("RAND" => "ASC"), array("GROUP_ID" => $arResult["Group"]["ID"], "<=ROLE" => SONET_ROLES_USER, "USER_ACTIVE" => "Y"), false, array("nTopCount" => $arParams["ITEMS_COUNT"]), array("ID", "USER_ID", "ROLE", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "USER_PERSONAL_PHOTO", "USER_PERSONAL_GENDER", "USER_WORK_POSITION")); if ($dbMembers) { $arResult["Members"] = array(); $arResult["Members"]["List"] = false; while ($arMembers = $dbMembers->GetNext()) { if ($arResult["Members"]["List"] == false) { $arResult["Members"]["List"] = array(); } $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arMembers["USER_ID"])); $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arMembers["USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); if (intval($arParams["THUMBNAIL_LIST_SIZE"]) > 0) { if (intval($arMembers["USER_PERSONAL_PHOTO"]) <= 0) { switch ($arMembers["USER_PERSONAL_GENDER"]) { case "M": $suffix = "male"; break;
function NotifyImToModerators($arNotifyParams) { if (!CModule::IncludeModule("im")) { return; } if (!is_array($arNotifyParams) || !array_key_exists("TYPE", $arNotifyParams) || !in_array($arNotifyParams["TYPE"], array("join", "unjoin", "exclude", "moderate", "unmoderate", "owner")) || !array_key_exists("USER_ID", $arNotifyParams) || intval($arNotifyParams["USER_ID"]) <= 0 || !array_key_exists("GROUP_ID", $arNotifyParams) || intval($arNotifyParams["GROUP_ID"]) <= 0 || !array_key_exists("RELATION_ID", $arNotifyParams) || intval($arNotifyParams["RELATION_ID"]) <= 0 || !array_key_exists("GROUP_NAME", $arNotifyParams) || strlen($arNotifyParams["GROUP_NAME"]) <= 0) { return; } switch ($arNotifyParams["TYPE"]) { case "join": $from_user_id = $arNotifyParams["USER_ID"]; $message_code = "SONET_UG_IM_JOIN"; $schema_code = "inout_group"; $notify_tag = "INOUT_GROUP"; break; case "unjoin": $from_user_id = $arNotifyParams["USER_ID"]; $message_code = "SONET_UG_IM_UNJOIN"; $schema_code = "inout_group"; $notify_tag = "INOUT_GROUP"; break; case "exclude": $from_user_id = $arNotifyParams["USER_ID"]; $message_code = "SONET_UG_IM_EXCLUDE"; $schema_code = "inout_group"; $notify_tag = "INOUT_GROUP"; break; case "moderate": $from_user_id = $arNotifyParams["USER_ID"]; $message_code = "SONET_UG_IM_MODERATE"; $schema_code = "moderators_group"; $notify_tag = "MOD_GROUP"; break; case "unmoderate": $from_user_id = $arNotifyParams["USER_ID"]; $message_code = "SONET_UG_IM_UNMODERATE"; $schema_code = "moderators_group"; $notify_tag = "MOD_GROUP"; break; case "owner": $from_user_id = $arNotifyParams["USER_ID"]; $message_code = "SONET_UG_IM_OWNER"; $schema_code = "owner_group"; $notify_tag = "OWNER_GROUP"; break; default: } $rsUser = CUser::GetByID($arNotifyParams["USER_ID"]); if ($arUser = $rsUser->Fetch()) { switch ($arUser["PERSONAL_GENDER"]) { case "M": $gender_suffix = "_M"; break; case "F": $gender_suffix = "_F"; break; default: $gender_suffix = ""; } } $arToUserID = array(); $rsUserToGroup = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $arNotifyParams["GROUP_ID"], "USER_ACTIVE" => "Y", "<=ROLE" => SONET_ROLES_MODERATOR), false, false, array("USER_ID")); while ($arUserToGroup = $rsUserToGroup->Fetch()) { $arToUserID[] = $arUserToGroup["USER_ID"]; } $arMessageFields = array("MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "FROM_USER_ID" => $from_user_id, "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "socialnetwork", "NOTIFY_EVENT" => $schema_code, "LOG_ID" => $arEntry["LOG_ID"], "NOTIFY_TAG" => "SOCNET|" . $notify_tag . "|" . intval($arNotifyParams["USER_ID"]) . "|" . intval($arNotifyParams["GROUP_ID"]) . "|" . intval($arNotifyParams["RELATION_ID"])); $groups_path = COption::GetOptionString("socialnetwork", "workgroups_page", SITE_DIR . "workgroups/"); $group_url_template = str_replace($groups_path, "#GROUPS_PATH#", COption::GetOptionString("socialnetwork", "group_path_template", SITE_DIR . "workgroups/group/#group_id#/")); $groupUrl = str_replace("#group_id#", $arNotifyParams["GROUP_ID"], $group_url_template); foreach ($arToUserID as $to_user_id) { if (is_array($arNotifyParams["EXCLUDE_USERS"]) && in_array($to_user_id, $arNotifyParams["EXCLUDE_USERS"]) || $to_user_id == $from_user_id) { continue; } $arMessageFields["TO_USER_ID"] = $to_user_id; $arTmp = CSocNetLogTools::ProcessPath(array("GROUP_PAGE" => $groupUrl), $to_user_id, SITE_ID); $arMessageFields["NOTIFY_MESSAGE"] = GetMessage($message_code . $gender_suffix, array("#group_name#" => "<a href=\"" . $arTmp["URLS"]["GROUP_PAGE"] . "\" class=\"bx-notifier-item-action\">" . $arNotifyParams["GROUP_NAME"] . "</a>")); $arMessageFields["NOTIFY_MESSAGE_OUT"] = GetMessage($message_code . $gender_suffix, array("#group_name#" => $arNotifyParams["GROUP_NAME"])) . " (" . $arTmp["SERVER_NAME"] . $arTmp["URLS"]["GROUP_PAGE"] . ")"; CIMNotify::Add($arMessageFields); } }
$arSubjectsBySite = array(); $dbSitesList = CSite::GetList($b = "sort", $o = "asc"); while ($arSite = $dbSitesList->Fetch()) { $dbSubjectsList = CSocNetGroupSubject::GetList(array("SORT" => "ASC", "ID" => "DESC"), array("SITE_ID" => $arSite["LID"])); while ($arSubject = $dbSubjectsList->Fetch()) { $str = "[" . $arSite["LID"] . "] " . $arSubject["NAME"]; $arSubjectsBySite[$arSite["LID"]][$arSubject["ID"]] = $str; if (!array_key_exists($arSubject["ID"], $arSubjects)) { $arSubjects[$arSubject["ID"]] = $str; } } } while ($arGroup = $dbResultList->NavNext(true, "f_")) { $arMembers = array(); $arResult["Users"] = false; $dbRequests = CSocNetUserToGroup::GetList(array("USER_LAST_NAME" => "ASC", "USER_NAME" => "ASC"), array("GROUP_ID" => $arGroup["ID"], "<=ROLE" => SONET_ROLES_USER, "USER_ACTIVE" => "Y"), false, false, array("ID", "USER_ID", "ROLE", "USER_NAME", "USER_LAST_NAME", "USER_LOGIN")); while ($arRequests = $dbRequests->Fetch()) { $arTmpUser = array("ID" => $arRequests["USER_ID"], "NAME" => $arRequests["USER_NAME"], "LAST_NAME" => $arRequests["USER_LAST_NAME"], "LOGIN" => $arRequests["USER_LOGIN"]); $arMembers[$arRequests["USER_ID"]] = CUser::FormatName(GetMessage("USER_NAME_TEMPLATE"), $arTmpUser, true, false); } $row =& $lAdmin->AddRow($f_ID, $arGroup); $row->AddField("ID", $f_ID); $row->AddInputField("NAME", array("size" => "35")); foreach ($arSubjectsBySite as $key => $arSubjectsTmp) { if (array_key_exists($arGroup["SUBJECT_ID"], $arSubjectsTmp)) { $subjectSiteID = $key; break; } } $row->AddSelectField("SUBJECT_ID", $arSubjectsBySite[$subjectSiteID], array()); $row->AddSelectField("OWNER_ID", $arMembers, array());
if (CModule::IncludeModule('extranet') && CExtranet::IsExtranetSite()) { if (!$GLOBALS["USER"]->IsAdmin() && !CSocNetUser::IsCurrentUserModuleAdmin()) { $arGroupFilterMy = array("USER_ID" => $GLOBALS["USER"]->GetID(), "<=ROLE" => SONET_ROLES_USER, "GROUP_SITE_ID" => SITE_ID, "GROUP_ACTIVE" => "Y"); $dbGroups = CSocNetUserToGroup::GetList(array(), $arGroupFilterMy, false, false, array("GROUP_ID")); $arMyGroups = array(); while ($arGroups = $dbGroups->GetNext()) { $arMyGroups[] = $arGroups["GROUP_ID"]; } $arGroupFilter["GROUP_ID"] = $arMyGroups; } } else { if ($arResult["User"]["ID"] != $USER->GetID() && !CSocNetUser::IsCurrentUserModuleAdmin()) { $arGroupFilter["GROUP_VISIBLE"] = "Y"; } } $dbGroups = CSocNetUserToGroup::GetList(array("GROUP_DATE_ACTIVITY" => "DESC", "GROUP_NAME" => "ASC"), $arGroupFilter, false, false, array("ID", "GROUP_ID", "GROUP_NAME")); if ($dbGroups) { $arResult["Groups"] = array(); $arResult["Groups"]["Count"] = 0; $arResult["Groups"]["List"] = false; $arResult["Groups"]["ListFull"] = false; while ($arGroups = $dbGroups->GetNext()) { if ($arResult["Groups"]["ListFull"] == false) { $arResult["Groups"]["ListFull"] = array(); } $arResult["Groups"]["Count"]++; $arResult["Groups"]["ListFull"][] = array("ID" => $arGroups["ID"], "GROUP_ID" => $arGroups["GROUP_ID"], "GROUP_NAME" => $arGroups["GROUP_NAME"], "GROUP_URL" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arGroups["GROUP_ID"]))); } if (is_array($arResult["Groups"]["ListFull"])) { $arResult["Groups"]["List"] = array_slice($arResult["Groups"]["ListFull"], 0, $arParams["ITEMS_COUNT"]); }
require_once $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog_after.php"; die; } elseif (IsModuleInstalled("extranet")) { // check if current user is a member of extranet workgroup if (CModule::IncludeModule("extranet") && CExtranet::IsExtranetSite($arSonetGroup["SITE_ID"]) && !CSocNetUser::IsCurrentUserModuleAdmin($arSonetGroup["SITE_ID"])) { $dbRequests = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $group_id, "USER_ID" => $GLOBALS["USER"]->GetID(), "<=ROLE" => SONET_ROLES_USER), false, false, array("ID")); if ($dbRequests) { if (!($arRequests = $dbRequests->Fetch())) { require_once $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog_after.php"; die; } } } } $arUsersToFilter = array(); $dbRequests = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $group_id, "<=ROLE" => SONET_ROLES_USER, "USER_ACTIVE" => "Y"), false, false, array("ID", "USER_ID", "ROLE")); if ($dbRequests) { while ($arRequests = $dbRequests->Fetch()) { $arUsersToFilter[] = $arRequests["USER_ID"]; } } } elseif ($EXTERNAL == 'A' && strlen($site) > 0 && CModule::IncludeModule("extranet") && CExtranet::IsExtranetSite($site)) { if ($GLOBALS["APPLICATION"]->GetGroupRight("socialnetwork", false, "Y", "Y", array($site, false)) >= "W") { $arUsersToFilter = CExtranet::GetExtranetGroupUsers(); } else { $arUsersToFilter = CExtranet::GetMyGroupsUsers($site); } } elseif ($EXTERNAL == 'A' && CModule::IncludeModule("extranet") && CExtranet::IsIntranetUser()) { $arUsersToFilter = CExtranet::GetIntranetUsers(); } elseif (IsModuleInstalled('extranet')) { require_once $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog_after.php";
function SetForSonet($logID, $entity_type, $entity_id, $feature, $operation, $bNew = false) { $bFlag = true; if (!$bNew) { $rsRights = CSocNetLogRights::GetList(array(), array("LOG_ID" => $logID)); if ($arRights = $rsRights->Fetch()) { $bFlag = false; } } if ($bFlag) { $bExtranet = false; $perm = CSocNetFeaturesPerms::GetOperationPerm($entity_type, $entity_id, $feature, $operation); if ($perm) { if (CModule::IncludeModule("extranet") && ($extranet_site_id = CExtranet::GetExtranetSiteID())) { $arLogSites = array(); $rsLogSite = CSocNetLog::GetSite($logID); while ($arLogSite = $rsLogSite->Fetch()) { $arLogSites[] = $arLogSite["LID"]; } if (in_array($extranet_site_id, $arLogSites)) { $bExtranet = true; } } if ($bExtranet) { if ($entity_type == SONET_ENTITY_GROUP && $perm == SONET_ROLES_OWNER) { CSocNetLogRights::Add($logID, array("SA", "S" . SONET_ENTITY_GROUP . $entity_id, "S" . SONET_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_OWNER)); } elseif ($entity_type == SONET_ENTITY_GROUP && $perm == SONET_ROLES_MODERATOR) { CSocNetLogRights::Add($logID, array("SA", "S" . SONET_ENTITY_GROUP . $entity_id, "S" . SONET_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_OWNER, "S" . SONET_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_MODERATOR)); } elseif ($entity_type == SONET_ENTITY_GROUP && in_array($perm, array(SONET_ROLES_USER, SONET_ROLES_AUTHORIZED, SONET_ROLES_ALL))) { CSocNetLogRights::Add($logID, array("SA", "S" . SONET_ENTITY_GROUP . $entity_id, "S" . SONET_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_OWNER, "S" . SONET_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_MODERATOR, "S" . SONET_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_USER)); } elseif ($entity_type == SONET_ENTITY_USER && $perm == SONET_RELATIONS_TYPE_NONE) { CSocNetLogRights::Add($logID, array("SA", "U" . $entity_id)); } elseif ($entity_type == SONET_ENTITY_USER && in_array($perm, array(SONET_RELATIONS_TYPE_FRIENDS, SONET_RELATIONS_TYPE_FRIENDS2, SONET_RELATIONS_TYPE_AUTHORIZED, SONET_RELATIONS_TYPE_ALL))) { $arCode = array("SA"); $arLog = CSocNetLog::GetByID($logID); if ($arLog) { $dbUsersInGroup = CSocNetUserToGroup::GetList(array(), array("USER_ID" => $arLog["USER_ID"], "<=ROLE" => SONET_ROLES_USER, "GROUP_SITE_ID" => $extranet_site_id, "GROUP_ACTIVE" => "Y"), false, false, array("ID", "GROUP_ID")); while ($arUsersInGroup = $dbUsersInGroup->Fetch()) { if (!in_array("S" . SONET_ENTITY_GROUP . $arUsersInGroup["GROUP_ID"] . "_" . SONET_ROLES_USER, $arCode)) { $arCode = array_merge($arCode, array("S" . SONET_ENTITY_GROUP . $arUsersInGroup["GROUP_ID"] . "_" . SONET_ROLES_OWNER, "S" . SONET_ENTITY_GROUP . $arUsersInGroup["GROUP_ID"] . "_" . SONET_ROLES_MODERATOR, "S" . SONET_ENTITY_GROUP . $arUsersInGroup["GROUP_ID"] . "_" . SONET_ROLES_USER)); } } CSocNetLogRights::Add($logID, $arCode); } } } else { if ($entity_type == SONET_ENTITY_GROUP && $perm == SONET_ROLES_OWNER) { CSocNetLogRights::Add($logID, array("SA", "S" . SONET_ENTITY_GROUP . $entity_id, "S" . SONET_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_OWNER)); } elseif ($entity_type == SONET_ENTITY_GROUP && $perm == SONET_ROLES_MODERATOR) { CSocNetLogRights::Add($logID, array("SA", "S" . SONET_ENTITY_GROUP . $entity_id, "S" . SONET_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_OWNER, "S" . SONET_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_MODERATOR)); } elseif ($entity_type == SONET_ENTITY_GROUP && $perm == SONET_ROLES_USER) { CSocNetLogRights::Add($logID, array("SA", "S" . SONET_ENTITY_GROUP . $entity_id, "S" . SONET_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_OWNER, "S" . SONET_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_MODERATOR, "S" . SONET_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_USER)); } elseif ($entity_type == SONET_ENTITY_USER && in_array($perm, array(SONET_RELATIONS_TYPE_FRIENDS, SONET_RELATIONS_TYPE_FRIENDS2))) { $arCodes = array("SA", "U" . $entity_id, "S" . $entity_type . $entity_id . "_" . SONET_RELATIONS_TYPE_FRIENDS); if ($perm == SONET_RELATIONS_TYPE_FRIENDS2) { $arCodes[] = "S" . $entity_type . $entity_id . "_" . SONET_RELATIONS_TYPE_FRIENDS2; } CSocNetLogRights::Add($logID, $arCodes); } elseif ($entity_type == SONET_ENTITY_USER && $perm == SONET_RELATIONS_TYPE_NONE) { CSocNetLogRights::Add($logID, array("SA", "U" . $entity_id)); } elseif ($entity_type == SONET_ENTITY_GROUP && $perm == SONET_ROLES_AUTHORIZED) { CSocNetLogRights::Add($logID, array("SA", "S" . $entity_type . $entity_id, "AU")); } elseif ($entity_type == SONET_ENTITY_USER && $perm == SONET_RELATIONS_TYPE_AUTHORIZED) { CSocNetLogRights::Add($logID, array("SA", "AU")); } elseif ($entity_type == SONET_ENTITY_GROUP && $perm == SONET_ROLES_ALL) { CSocNetLogRights::Add($logID, array("SA", "S" . $entity_type . $entity_id, "G2")); } elseif ($entity_type == SONET_ENTITY_USER && $perm == SONET_RELATIONS_TYPE_ALL) { CSocNetLogRights::Add($logID, array("SA", "G2")); } } } } }
function SetStat($ID) { global $DB; if (!CSocNetGroup::__ValidateID($ID)) { return false; } $ID = IntVal($ID); $num = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $ID, "USER_ACTIVE" => "Y", "<=ROLE" => SONET_ROLES_USER), array()); $num_mods = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $ID, "USER_ACTIVE" => "Y", "<=ROLE" => SONET_ROLES_MODERATOR), array()); CSocNetGroup::Update($ID, array("NUMBER_OF_MEMBERS" => $num, "NUMBER_OF_MODERATORS" => $num_mods), true, false); }
$arResult["ErrorMessage"] = $errorMessage; } } elseif (CModule::IncludeModule('extranet') && CExtranet::IsExtranetSite() && intval($_REQUEST["invite_user_id"]) > 0) { $rsInvitedUser = CUser::GetByID(intval($_REQUEST["invite_user_id"])); if (($arInvitedUser = $rsInvitedUser->Fetch()) && (!is_array($arInvitedUser["UF_DEPARTMENT"]) || intval($arInvitedUser["UF_DEPARTMENT"][0]) <= 0)) { if (strlen($arInvitedUser["LAST_LOGIN"]) <= 0 && strlen($arInvitedUser["LAST_ACTIVITY_DATE"]) <= 0) { $event = new CEvent(); $arFields = array("USER_ID" => $arInvitedUser["ID"], "CHECKWORD" => $arInvitedUser["CONFIRM_CODE"], "EMAIL" => $arInvitedUser["EMAIL"]); $event->Send("EXTRANET_INVITATION", SITE_ID, $arFields); LocalRedirect($APPLICATION->GetCurPageParam("invite_sent=Y", array("invite_user_id", "employee"))); } } } $parser = new CSocNetTextParser(LANGUAGE_ID, $arParams["PATH_TO_SMILE"]); $arResult["Requests"] = false; $dbRequests = CSocNetUserToGroup::GetList(array("DATE_CREATE" => "ASC"), array("GROUP_ID" => $arResult["Group"]["ID"], "ROLE" => SONET_ROLES_REQUEST, "INITIATED_BY_TYPE" => SONET_INITIATED_BY_GROUP), false, $arNavParams, array("ID", "USER_ID", "DATE_CREATE", "DATE_UPDATE", "MESSAGE", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "USER_PERSONAL_PHOTO", "USER_PERSONAL_GENDER")); if ($dbRequests) { $arResult["Requests"] = array(); $arResult["Requests"]["List"] = false; while ($arRequests = $dbRequests->GetNext()) { if ($arResult["Requests"]["List"] == false) { $arResult["Requests"]["List"] = array(); } $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arRequests["USER_ID"])); $canViewProfile = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arRequests["USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); if (intval($arRequests["USER_PERSONAL_PHOTO"]) <= 0) { switch ($arRequests["USER_PERSONAL_GENDER"]) { case "M": $suffix = "male"; break; case "F":
public static function GetSocnetGroup($arParams = array()) { global $USER; $userId = intval($USER->GetID()); $arSocnetGroups = array(); $arSelect = array(); if (isset($arParams['id'])) { if (empty($arParams['id'])) { return $arSocnetGroups; } else { foreach ($arParams['id'] as $value) { $arSelect[] = intval($value); } } } if (isset($arParams['site_id']) && strlen($arParams['site_id']) > 0) { $siteId = $arParams['site_id']; } else { $siteId = SITE_ID; } $arFilter = array("USER_ID" => $userId, "ID" => $arSelect, "<=ROLE" => SONET_ROLES_USER, "GROUP_SITE_ID" => $siteId, "GROUP_ACTIVE" => "Y"); if (isset($arParams['GROUP_CLOSED'])) { $arFilter['GROUP_CLOSED'] = $arParams['GROUP_CLOSED']; } $arSocnetGroupsTmp = array(); $rsGroups = CSocNetUserToGroup::GetList(array("GROUP_NAME" => "ASC"), $arFilter, false, array("nTopCount" => 500), array("ID", "GROUP_ID", "GROUP_NAME", "GROUP_DESCRIPTION", "GROUP_IMAGE_ID")); while ($arGroup = $rsGroups->Fetch()) { $arGroupTmp = array("id" => $arGroup["GROUP_ID"], "entityId" => $arGroup["GROUP_ID"], "name" => htmlspecialcharsbx($arGroup["GROUP_NAME"]), "desc" => htmlspecialcharsbx($arGroup["GROUP_DESCRIPTION"])); if ($arGroup["GROUP_IMAGE_ID"]) { $imageFile = CFile::GetFileArray($arGroup["GROUP_IMAGE_ID"]); if ($imageFile !== false) { $arFileTmp = CFile::ResizeImageGet($imageFile, array("width" => intval($arParams["THUMBNAIL_SIZE_WIDTH"]) > 0 ? $arParams["THUMBNAIL_SIZE_WIDTH"] : 30, "height" => intval($arParams["THUMBNAIL_SIZE_HEIGHT"]) > 0 ? $arParams["THUMBNAIL_SIZE_HEIGHT"] : 30), BX_RESIZE_IMAGE_PROPORTIONAL, false); $arGroupTmp["avatar"] = $arFileTmp["src"]; } } $arSocnetGroupsTmp[$arGroupTmp['id']] = $arGroupTmp; } if (isset($arParams['features']) && !empty($arParams['features'])) { self::GetSocnetGroupFilteredByFeaturePerms($arSocnetGroupsTmp, $arParams['features']); } foreach ($arSocnetGroupsTmp as $value) { $value['id'] = 'SG' . $value['id']; $arSocnetGroups[$value['id']] = $value; } return $arSocnetGroups; }
function GetUsersBlogs($params, $arPath) { global $USER; $blog = CBlogMetaWeblog::DecodeParams($params[0]["#"]["value"][0]["#"]); $user = CBlogMetaWeblog::DecodeParams($params[1]["#"]["value"][0]["#"]); $password = CBlogMetaWeblog::DecodeParams($params[2]["#"]["value"][0]["#"]); if (CBlogMetaWeblog::Authorize($user, $password)) { $result = ''; $userId = $USER->GetID(); $dbBlog = CBlog::GetList(array(), array("OWNER_ID" => $userId, "GROUP_SITE_ID" => SITE_ID, "ACTIVE" => "Y"), false, false, array("ID", "URL", "NAME", "OWNER_ID")); while ($arBlog = $dbBlog->GetNext()) { if (strlen($arPath["PATH_TO_BLOG"]) > 0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) { $serverName = SITE_SERVER_NAME; } else { $serverName = COption::GetOptionString("main", "server_name", ""); } if (strlen($serverName) <= 0) { $serverName = $_SERVER["SERVER_NAME"]; } $path2Blog = "http://" . $serverName . CComponentEngine::MakePathFromTemplate($arPath["PATH_TO_BLOG"], array("blog" => $arBlog["URL"], "user_id" => $arBlog["OWNER_ID"])); } else { $path2Blog = $arBlog["URL"]; } $result .= ' <value> <struct> <member> <name>url</name> <value>' . $path2Blog . '</value> </member> <member> <name>blogid</name> <value>' . $arBlog["ID"] . '</value> </member> <member> <name>blogName</name> <value>' . $arBlog["NAME"] . '</value> </member> </struct> </value> '; } if (CModule::IncludeModule("socialnetwork")) { $arGroupFilter = array("USER_ID" => $userId, "<=ROLE" => SONET_ROLES_USER, "GROUP_SITE_ID" => SITE_ID, "GROUP_ACTIVE" => "Y"); $dbGroups = CSocNetUserToGroup::GetList(array("GROUP_NAME" => "ASC"), $arGroupFilter, false, false, array("ID", "GROUP_ID", "GROUP_OWNER_ID", "GROUP_NAME", "GROUP_SITE_ID")); while ($arGroups = $dbGroups->GetNext()) { $perms = BLOG_PERMS_DENY; if (CSocNetFeaturesPerms::CanPerformOperation($userId, SONET_ENTITY_GROUP, $arGroups["GROUP_ID"], "blog", "write_post", CSocNetUser::IsCurrentUserModuleAdmin($arGroups["GROUP_SITE_ID"]))) { $perms = BLOG_PERMS_WRITE; } elseif (CSocNetFeaturesPerms::CanPerformOperation($userId, SONET_ENTITY_GROUP, $arGroups["GROUP_ID"], "blog", "full_post")) { $perms = BLOG_PERMS_FULL; } if ($perms >= BLOG_PERMS_WRITE) { $dbBlog = CBlog::GetList(array(), array("SOCNET_GROUP_ID" => $arGroups["GROUP_ID"], "GROUP_SITE_ID" => SITE_ID, "ACTIVE" => "Y"), false, false, array("ID", "URL", "NAME")); if ($arBlog = $dbBlog->GetNext()) { $result .= ' <value> <struct> <member> <name>url</name> <value>' . $arBlog["URL"] . '</value> </member> <member> <name>blogid</name> <value>' . $arBlog["ID"] . '</value> </member> <member> <name>blogName</name> <value>' . $arBlog["NAME"] . '</value> </member> </struct> </value> '; } } } } if (strlen($result) > 0) { return '<params> <param> <value> <array> <data>' . $result . '</data> </array> </value> </param> </params>'; } else { return '<fault> <value> <struct> <member> <name>faultCode</name> <value><int>4</int></value> </member> <member> <name>faultString</name> <value><string>User hasn\'t blog.</string></value> </member> </struct> </value> </fault>'; } } else { return '<fault> <value> <struct> <member> <name>faultCode</name> <value><int>3</int></value> </member> <member> <name>faultString</name> <value><string>' . $arAuthResult["MESSAGE"] . '</string></value> </member> </struct> </value> </fault>'; } }
public static function GetGroupMembers($groupId) { $dbMembers = CSocNetUserToGroup::GetList(array("RAND" => "ASC"), array("GROUP_ID" => $groupId, "<=ROLE" => SONET_ROLES_USER, "USER_ACTIVE" => "Y"), false, false, array("USER_ID", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN")); $arMembers = array(); if ($dbMembers) { while ($Member = $dbMembers->GetNext()) { $name = trim($Member['USER_NAME'] . ' ' . $Member['USER_LAST_NAME']); if ($name == '') { $name = trim($Member['USER_LOGIN']); } $arMembers[] = array('id' => $Member["USER_ID"], 'name' => $name); } } return $arMembers; }