예제 #1
0
 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];
 }
예제 #2
0
 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"]));
             }
         }
     }
 }
예제 #3
0
 /**
  * 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;
 }
예제 #4
0
파일: rest.php 프로젝트: ASDAFF/bxApiDocs
	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;
	}
예제 #5
0
 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;
 }
예제 #6
0
 $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);
예제 #7
0
	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;
	}
예제 #8
0
 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 != '');
 }
예제 #9
0
 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;
 }
예제 #10
0
 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;
 }
예제 #11
0
 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;
 }
예제 #12
0
 //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);
예제 #13
0
        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();
}
예제 #14
0
파일: group.php 프로젝트: rasuldev/torino
 /**
  * <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>
  * &lt;?
  * $arFields = array(
  * 	"NAME" =&gt; $_POST["GROUP_NAME"],
  * 	"DESCRIPTION" =&gt; $_POST["GROUP_DESCRIPTION"],
  * );
  * if (!CSocNetGroup::Update($ID, $arFields))
  * {
  * 	if ($e = $GLOBALS["APPLICATION"]-&gt;GetException())
  * 		$errorMessage .= $e-&gt;GetString();
  * }
  * ?&gt;
  * </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;
 }
예제 #15
0
 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");
     }
 }
예제 #16
0
            }
            // 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)
            {
예제 #17
0
<?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"]);
}
예제 #18
0
    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;
        }
    }
예제 #19
0
         $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"));
예제 #20
0
                     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;
예제 #21
0
 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);
     }
 }
예제 #22
0
$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());
예제 #23
0
 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"]);
     }
예제 #24
0
         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";
예제 #25
0
 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"));
                 }
             }
         }
     }
 }
예제 #26
0
 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);
 }
예제 #27
0
         $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":
예제 #28
0
 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;
 }
예제 #29
0
    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>';
        }
    }
예제 #30
0
 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;
 }