Beispiel #1
0
 public static function OnUserDelete($ID)
 {
     global $DB;
     if (!CSocNetGroup::__ValidateID($ID)) {
         return false;
     }
     $ID = IntVal($ID);
     $bSuccess = True;
     if (!CSocNetGroup::DeleteNoDemand($ID)) {
         if ($ex = $GLOBALS["APPLICATION"]->GetException()) {
             $err = $ex->GetString();
         }
         $GLOBALS["APPLICATION"]->ThrowException($err);
         $bSuccess = false;
     }
     if ($bSuccess) {
         CSocNetUserRelations::DeleteNoDemand($ID);
         CSocNetUserPerms::DeleteNoDemand($ID);
         CSocNetUserEvents::DeleteNoDemand($ID);
         CSocNetMessages::DeleteNoDemand($ID);
         CSocNetUserToGroup::DeleteNoDemand($ID);
         CSocNetLogEvents::DeleteNoDemand($ID);
         CSocNetLog::DeleteNoDemand($ID);
         CSocNetLogComments::DeleteNoDemand($ID);
         CSocNetFeatures::DeleteNoDemand($ID);
         CSocNetSubscription::DeleteEx($ID);
         CUserOptions::DeleteOption("socialnetwork", "~menu_" . SONET_ENTITY_USER . "_" . $ID, false, 0);
     }
     return $bSuccess;
 }
Beispiel #2
0
 function _FormatUser(&$arUser, $arPath)
 {
     global $USER, $CACHE_ABSENCE;
     if ($arUser['PERSONAL_PHOTO']) {
         $arImage = CIntranetUtils::InitImage($arUser['PERSONAL_PHOTO'], 30);
         $arUser['PERSONAL_PHOTO'] = $arImage['IMG'];
     }
     if ($arPath['DETAIL_URL']) {
         $arUser['DETAIL_URL'] = str_replace('#ID#', $arUser['ID'], $arPath['DETAIL_URL']);
     }
     $arUser["canViewProfile"] = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUser['ID'], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
     $arUser["canMessage"] = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUser['ID'], "message", CSocNetUser::IsCurrentUserModuleAdmin());
     if ($arPath['MESSAGES_CHAT_URL']) {
         $arUser['MESSAGES_CHAT_URL'] = str_replace('#ID#', $arUser['ID'], $arPath['MESSAGES_CHAT_URL']);
     }
     $arUser['IS_ABSENT'] = CIntranetUtils::IsUserAbsent($arUser['ID']);
     $arUser['IS_ONLINE'] = CSocNetUser::IsOnLine($arUser['ID']);
     if ($arUser['IS_ABSENT']) {
         $maxAbsence = 0;
         foreach ($CACHE_ABSENCE[$arUser["ID"]] as $arAbsence) {
             if (MakeTimeStamp($arAbsence["DATE_TO"]) > $maxAbsence) {
                 $arUser['ABSENT_TILL'] = $arAbsence["DATE_TO"];
             }
         }
     }
     $arFilter = array("TO_USER_ID" => $arUser['ID'], "MESSAGE_TYPE" => SONET_MESSAGE_PRIVATE, "FROM_USER_ID" => $USER->GetID());
     $dbMessages = CSocNetMessages::GetList(array("DATE_CREATE" => "DESC"), $arFilter, false, array("nTopCount" => 1), array("ID", "DATE_CREATE"));
     if ($arMessages = $dbMessages->GetNext()) {
         $arUser['LAST_CHAT'] = $arMessages["DATE_CREATE"];
     }
     return true;
 }
Beispiel #3
0
 /**
  * <p>Метод добавляет новую запись в таблицу прав на доступ к профайлу пользователя.</p>
  *
  *
  *
  *
  * @param array $arFields  Массив параметров записи с ключами<br><b>USER_ID</b> - код
  * пользователя,<br><b>OPERATION_ID</b> - операция,<br><b>RELATION_TYPE</b> - тип отношений
  * между пользователями.
  *
  *
  *
  * @return int <p>Код добавленной записи или false в случае ошибки.</p> <br><br>
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/CSocNetUserPerms/Add.php
  * @author Bitrix
  */
 public static function Add($arFields)
 {
     global $DB;
     $arFields1 = array();
     foreach ($arFields as $key => $value) {
         if (substr($key, 0, 1) == "=") {
             $arFields1[substr($key, 1)] = $value;
             unset($arFields[$key]);
         }
     }
     if (!CSocNetUserPerms::CheckFields("ADD", $arFields)) {
         return false;
     }
     $arInsert = $DB->PrepareInsert("b_sonet_user_perms", $arFields);
     foreach ($arFields1 as $key => $value) {
         if (strlen($arInsert[0]) > 0) {
             $arInsert[0] .= ", ";
         }
         $arInsert[0] .= $key;
         if (strlen($arInsert[1]) > 0) {
             $arInsert[1] .= ", ";
         }
         $arInsert[1] .= $value;
     }
     $ID = false;
     if (strlen($arInsert[0]) > 0) {
         $strSql = "INSERT INTO b_sonet_user_perms(" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")";
         $DB->Query($strSql, False, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $ID = IntVal($DB->LastID());
     }
     return $ID;
 }
Beispiel #4
0
     $arImage = CSocNetTools::InitImage($arUserRequests["FIRST_USER_PERSONAL_PHOTO"], 150, "/bitrix/images/socialnetwork/nopic_user_150.gif", 150, $pu, $canViewProfile);
     $arTmpUser = array("NAME" => $arUserRequests["FIRST_USER_NAME"], "LAST_NAME" => $arUserRequests["FIRST_USER_LAST_NAME"], "SECOND_NAME" => $arUserRequests["FIRST_USER_SECOND_NAME"], "LOGIN" => $arUserRequests["FIRST_USER_LOGIN"]);
     $strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin);
     $arEventTmp["Event"] = array("ID" => $arUserRequests["ID"], "USER_ID" => $arUserRequests["FIRST_USER_ID"], "USER_NAME" => $arUserRequests["FIRST_USER_NAME"], "USER_LAST_NAME" => $arUserRequests["FIRST_USER_LAST_NAME"], "USER_SECOND_NAME" => $arUserRequests["FIRST_USER_SECOND_NAME"], "USER_LOGIN" => $arUserRequests["FIRST_USER_LOGIN"], "USER_NAME_FORMATTED" => $strNameFormatted, "USER_PERSONAL_PHOTO" => $arUserRequests["FIRST_USER_PERSONAL_PHOTO"], "USER_PERSONAL_PHOTO_FILE" => $arImage["FILE"], "USER_PERSONAL_PHOTO_IMG" => $arImage["IMG"], "USER_PROFILE_URL" => $pu, "SHOW_PROFILE_LINK" => $canViewProfile, "IS_ONLINE" => $arUserRequests["FIRST_USER_IS_ONLINE"] == "Y", "DATE_UPDATE" => $arUserRequests["DATE_UPDATE"], "MESSAGE" => $parser->convert($arUserRequests["~MESSAGE"], false, array(), array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "LIST" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "SMILES" => "Y", "UPLOAD" => "N", "NL2BR" => "N")));
     $arEventTmp["Urls"]["FriendAdd"] = htmlspecialcharsbx($APPLICATION->GetCurUri("EventType=FriendRequest&eventID=" . $arUserRequests["ID"] . "&action=add&" . bitrix_sessid_get() . "&backurl=" . urlencode($GLOBALS["APPLICATION"]->GetCurPageParam("", array("EventType", "eventID", "action")))));
     $arEventTmp["Urls"]["FriendReject"] = htmlspecialcharsbx($APPLICATION->GetCurUri("EventType=FriendRequest&eventID=" . $arUserRequests["ID"] . "&action=reject&" . bitrix_sessid_get() . "&backurl=" . urlencode($GLOBALS["APPLICATION"]->GetCurPageParam("", array("EventType", "eventID", "action")))));
     $arResult["Events"][] = $arEventTmp;
 }
 $dbUserRequests = CSocNetUserToGroup::GetList(array("DATE_CREATE" => "ASC"), array("USER_ID" => $GLOBALS["USER"]->GetID(), "ROLE" => SONET_ROLES_REQUEST, "INITIATED_BY_TYPE" => SONET_INITIATED_BY_GROUP), false, false, array("ID", "INITIATED_BY_USER_ID", "MESSAGE", "INITIATED_BY_USER_NAME", "DATE_CREATE", "INITIATED_BY_USER_LAST_NAME", "INITIATED_BY_USER_SECOND_NAME", "INITIATED_BY_USER_LOGIN", "INITIATED_BY_USER_PHOTO", "GROUP_ID", "GROUP_NAME", "GROUP_IMAGE_ID", "GROUP_VISIBLE"));
 while ($arUserRequests = $dbUserRequests->GetNext()) {
     if ($arResult["Events"] == false) {
         $arResult["Events"] = array();
     }
     $arEventTmp["EventType"] = "GroupRequest";
     $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUserRequests["INITIATED_BY_USER_ID"]));
     $canViewProfileU = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUserRequests["INITIATED_BY_USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
     $arImage = CSocNetTools::InitImage($arUserRequests["INITIATED_BY_USER_PHOTO"], 150, "/bitrix/images/socialnetwork/nopic_user_150.gif", 150, $pu, $canViewProfileU);
     $pg = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arUserRequests["GROUP_ID"]));
     $canViewProfileG = CSocNetUser::IsCurrentUserModuleAdmin() || $arUserRequests["GROUP_VISIBLE"] == "Y";
     if (intval($arUserRequests["GROUP_IMAGE_ID"]) <= 0) {
         $arUserRequests["GROUP_IMAGE_ID"] = COption::GetOptionInt("socialnetwork", "default_group_picture", false, SITE_ID);
     }
     $arImageG = CSocNetTools::InitImage($arUserRequests["GROUP_IMAGE_ID"], 150, "/bitrix/images/socialnetwork/nopic_group_150.gif", 150, $pg, $canViewProfileG);
     $arTmpUser = array("NAME" => $arUserRequests["INITIATED_BY_USER_NAME"], "LAST_NAME" => $arUserRequests["INITIATED_BY_USER_LAST_NAME"], "SECOND_NAME" => $arUserRequests["INITIATED_BY_USER_SECOND_NAME"], "LOGIN" => $arUserRequests["INITIATED_BY_USER_LOGIN"]);
     $strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin);
     $arEventTmp["Event"] = array("ID" => $arUserRequests["ID"], "USER_ID" => $arUserRequests["INITIATED_BY_USER_ID"], "USER_NAME" => $arUserRequests["INITIATED_BY_USER_NAME"], "USER_LAST_NAME" => $arUserRequests["INITIATED_BY_USER_LAST_NAME"], "USER_SECOND_NAME" => $arUserRequests["INITIATED_BY_USER_SECOND_NAME"], "USER_LOGIN" => $arUserRequests["INITIATED_BY_USER_LOGIN"], "USER_NAME_FORMATTED" => $strNameFormatted, "USER_PERSONAL_PHOTO" => $arUserRequests["INITIATED_BY_USER_PHOTO"], "USER_PERSONAL_PHOTO_FILE" => $arImage["FILE"], "USER_PERSONAL_PHOTO_IMG" => $arImage["IMG"], "USER_PROFILE_URL" => $pu, "SHOW_PROFILE_LINK" => $canViewProfileU, "DATE_CREATE" => $arUserRequests["DATE_CREATE"], "GROUP_NAME" => $arUserRequests["GROUP_NAME"], "GROUP_IMAGE_ID" => $arUserRequests["GROUP_IMAGE_ID"], "GROUP_IMAGE_ID_FILE" => $arImageG["FILE"], "GROUP_IMAGE_ID_IMG" => $arImageG["IMG"], "GROUP_PROFILE_URL" => $pg, "SHOW_GROUP_LINK" => $canViewProfileG, "MESSAGE" => $parser->convert($arUserRequests["~MESSAGE"], false, array(), array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "LIST" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "SMILES" => "Y", "UPLOAD" => "N", "NL2BR" => "N")));
     $arEventTmp["Urls"]["FriendAdd"] = htmlspecialcharsbx($APPLICATION->GetCurUri("EventType=GroupRequest&eventID=" . $arUserRequests["ID"] . "&action=add&" . bitrix_sessid_get() . "&backurl=" . urlencode($GLOBALS["APPLICATION"]->GetCurPageParam("", array("EventType", "eventID", "action")))));
     $arEventTmp["Urls"]["FriendReject"] = htmlspecialcharsbx($APPLICATION->GetCurUri("EventType=GroupRequest&eventID=" . $arUserRequests["ID"] . "&action=reject&" . bitrix_sessid_get() . "&backurl=" . urlencode($GLOBALS["APPLICATION"]->GetCurPageParam("", array("EventType", "eventID", "action")))));
     $arResult["Events"][] = $arEventTmp;
 }
 $this->IncludeComponentTemplate();
Beispiel #5
0
	public static function InitUserTmp($userID, $arParams, $bCurrentUserIsAdmin = "unknown", $bRSS = false)
	{
		$title = "";
		$message = "";
		$bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false;

		$dbUser = CUser::GetByID($userID);
		if ($arUser = $dbUser->Fetch())
		{
			if ($bCurrentUserIsAdmin == "unknown")
				$bCurrentUserIsAdmin = CSocNetUser::IsCurrentUserModuleAdmin();

			$canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUser["ID"], "viewprofile", $bCurrentUserIsAdmin);
			$pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"]));

			if (!$bRSS && $canViewProfile)
				$title .= "<a href=\"".$pu."\">";
			$title .= CUser::FormatName($arParams['NAME_TEMPLATE'], $arUser, $bUseLogin);
			if (!$bRSS && $canViewProfile)
				$title .= "</a>";

			if (intval($arUser["PERSONAL_PHOTO"]) <= 0)
			{
				switch ($arUser["PERSONAL_GENDER"])
				{
					case "M":
						$suffix = "male";
						break;
					case "F":
						$suffix = "female";
							break;
					default:
						$suffix = "unknown";
				}
				$arUser["PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_".$suffix, false, SITE_ID);
			}
			$arImage = CSocNetTools::InitImage($arUser["PERSONAL_PHOTO"], 100, "/bitrix/images/socialnetwork/nopic_user_100.gif", 100, $pu, $canViewProfile);

			$message = $arImage["IMG"];
		}

		return array($title, $message);
	}
Beispiel #6
0
             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":
                     $suffix = "female";
                     break;
                 default:
                     $suffix = "unknown";
             }
             $arRequests["USER_PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, SITE_ID);
         }
         $arImage = CSocNetTools::InitImage($arRequests["USER_PERSONAL_PHOTO"], 150, "/bitrix/images/socialnetwork/nopic_user_150.gif", 150, $pu, $canViewProfile);
         $arResult["Requests"]["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_PERSONAL_PHOTO" => $arRequests["USER_PERSONAL_PHOTO"], "USER_PERSONAL_PHOTO_FILE" => $arImage["FILE"], "USER_PERSONAL_PHOTO_IMG" => $arImage["IMG"], "USER_PROFILE_URL" => $pu, "SHOW_PROFILE_LINK" => $canViewProfile, "DATE_CREATE" => FormatDateFromDB($arRequests["DATE_CREATE"]), "MESSAGE" => $parser->convert($arRequests["~MESSAGE"], false, array(), array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "LIST" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "SMILES" => "Y", "UPLOAD" => "N", "NL2BR" => "N")));
 if (!$arParams["SHORT_FORM"]) {
     // USER FRIENDS
     $arResult["Friends"] = false;
     if (CSocNetUser::IsFriendsAllowed() && $arResult["CurrentUserPerms"]["Operations"]["viewfriends"]) {
         $dbFriends = CSocNetUserRelations::GetRelatedUsers($arResult["User"]["ID"], SONET_RELATIONS_FRIEND, array("nTopCount" => $arParams["ITEMS_COUNT"]));
         if ($dbFriends) {
             $arResult["Friends"] = array();
             $arResult["Friends"]["Count"] = CSocNetUserRelations::GetList(array(), array("USER_ID" => $arResult["User"]["ID"], "RELATION" => SONET_RELATIONS_FRIEND), array());
             $arResult["Friends"]["List"] = false;
             while ($arFriends = $dbFriends->GetNext()) {
                 if ($arResult["Friends"]["List"] == false) {
                     $arResult["Friends"]["List"] = array();
                 }
                 $pref = IntVal($arResult["User"]["ID"]) == $arFriends["FIRST_USER_ID"] ? "SECOND" : "FIRST";
                 $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arFriends[$pref . "_USER_ID"]));
                 $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arFriends[$pref . "_USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
                 if (intval($arParams["THUMBNAIL_LIST_SIZE"]) > 0) {
                     if (intval($arFriends[$pref . "_USER_PERSONAL_PHOTO"]) <= 0) {
                         switch ($arFriends[$pref . "_USER_PERSONAL_GENDER"]) {
                             case "M":
                                 $suffix = "male";
                                 break;
                             case "F":
                                 $suffix = "female";
                                 break;
                             default:
                                 $suffix = "unknown";
                         }
                         $arFriends[$pref . "_USER_PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, SITE_ID);
                     }
                     $arImage = CSocNetTools::InitImage($arFriends[$pref . "_USER_PERSONAL_PHOTO"], $arParams["THUMBNAIL_LIST_SIZE"], "/bitrix/images/socialnetwork/nopic_30x30.gif", 30, $pu, $canViewProfile);
Beispiel #8
0
 if ($arParams["SET_TITLE"] == "Y" || $arParams["SET_NAV_CHAIN"] != "N") {
     $arParams["TITLE_NAME_TEMPLATE"] = str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]);
     $strTitleFormatted = CUser::FormatName($arParams['TITLE_NAME_TEMPLATE'], $arTmpUser, $bUseLogin);
 }
 if ($arParams["SET_TITLE"] == "Y") {
     $APPLICATION->SetTitle($strTitleFormatted . ": " . GetMessage("SONET_C40_PAGE_TITLE"));
 }
 if ($arParams["SET_NAV_CHAIN"] != "N") {
     $APPLICATION->AddChainItem($strTitleFormatted, $arResult["Urls"]["User"]);
     $APPLICATION->AddChainItem(GetMessage("SONET_C40_PAGE_TITLE"));
 }
 $arResult["ShowForm"] = "Input";
 if ($_SERVER["REQUEST_METHOD"] == "POST" && strlen($_POST["save"]) > 0 && check_bitrix_sessid()) {
     $errorMessage = "";
     foreach ($arResult["Features"] as $feature => $perm) {
         $idTmp = CSocNetUserPerms::SetPerm($arResult["User"]["ID"], $feature, $_REQUEST[$feature . "_perm"]);
         if (!$idTmp) {
             if ($e = $APPLICATION->GetException()) {
                 $errorMessage .= $e->GetString();
             }
         }
     }
     if (strlen($errorMessage) > 0) {
         $arResult["ErrorMessage"] = $errorMessage;
     } else {
         if ($_REQUEST['backurl']) {
             LocalRedirect($_REQUEST['backurl']);
         } else {
             LocalRedirect($arResult["Urls"]["User"]);
         }
     }
Beispiel #9
0
 /**
  * <p>Изменяет право на операцию, если таковое есть. Иначе добавляет новую запись.</p>
  *
  *
  * @param int $userID  Код пользователя. </h
  *
  * @param string $feature  Название функционала. </ht
  *
  * @param string $perm  Право.</b
  *
  * @return int <p>Код записи при успешном сохранении и false - в случае ошибки.</p>
  * <br><br>
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/csocnetuserperms/setperm.php
  * @author Bitrix
  */
 public static function SetPerm($userID, $feature, $perm)
 {
     $userID = IntVal($userID);
     $feature = Trim($feature);
     $perm = Trim($perm);
     $dbResult = CSocNetUserPerms::GetList(array(), array("USER_ID" => $userID, "OPERATION_ID" => $feature), false, false, array("ID"));
     if ($arResult = $dbResult->Fetch()) {
         $r = CSocNetUserPerms::Update($arResult["ID"], array("RELATION_TYPE" => $perm));
     } else {
         $r = CSocNetUserPerms::Add(array("USER_ID" => $userID, "OPERATION_ID" => $feature, "RELATION_TYPE" => $perm));
     }
     if (!$r) {
         $errorMessage = "";
         if ($e = $GLOBALS["APPLICATION"]->GetException()) {
             $errorMessage = $e->GetString();
         }
         if (StrLen($errorMessage) <= 0) {
             $errorMessage = GetMessage("SONET_GF_ERROR_SET") . ".";
         }
         $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_SET_RECORD");
         return false;
     } elseif ($feature == "viewprofile") {
         unset($GLOBALS["SONET_USER_PERMS_" . $userID]);
     }
     return $r;
 }
Beispiel #10
0
     echo "*";
 } else {
     if (!check_bitrix_sessid()) {
         echo GetMessage("SONET_C50_ERR_PERMS") . ".";
     } else {
         $message = $_REQUEST["data"];
         CUtil::decodeURIComponent($message);
         $message = Trim($message);
         if (StrLen($message) <= 0) {
             echo GetMessage("SONET_C50_NO_TEXT") . ".";
         } else {
             if (empty($aUserId)) {
                 echo GetMessage("SONET_C50_NO_USER_ID") . ".";
             } else {
                 foreach ($aUserId as $userID) {
                     if (!CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $userID, "message", CSocNetUser::IsCurrentUserModuleAdmin(false))) {
                         echo GetMessage("SONET_C50_CANT_WRITE") . ".";
                     } else {
                         $errorMessage = "";
                         if (!CSocNetMessages::CreateMessage($GLOBALS["USER"]->GetID(), $userID, $message)) {
                             if ($e = $GLOBALS["APPLICATION"]->GetException()) {
                                 $errorMessage .= $e->GetString();
                             }
                         }
                         if (strlen($errorMessage) > 0) {
                             echo $errorMessage;
                         }
                     }
                 }
             }
         }
Beispiel #11
0
    $arParams["NAME_TEMPLATE"] = CSite::GetNameFormat();
}
$bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false;
if (!$USER->IsAuthorized()) {
    $arResult["NEED_AUTH"] = "Y";
} else {
    $dbUser = CUser::GetByID($arParams["USER_ID"]);
    $arResult["User"] = $dbUser->GetNext();
    if (!is_array($arResult["User"])) {
        $arResult["FatalError"] = GetMessage("SONET_P_USER_NO_USER") . ". ";
    } else {
        $arResult["IsCurrentUser"] = $GLOBALS["USER"]->GetID() == $arResult["User"]["ID"];
        $arResult["CurrentUserRelation"] = CSocNetUserRelations::GetRelation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"]);
        $arResult["CurrentUserPerms"]["ViewProfile"] = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
        $arResult["CurrentUserPerms"]["ModifyUser"] = $GLOBALS["USER"]->GetID() == $arResult["User"]["ID"] || CSocNetUser::IsCurrentUserModuleAdmin();
        $arResult["CurrentUserPerms"]["Message"] = IsModuleInstalled("im") || CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], "message", CSocNetUser::IsCurrentUserModuleAdmin());
        $arResult["Urls"]["User"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arResult["User"]["ID"]));
        $arResult["Urls"]["MessagesInput"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGES_INPUT"], array());
        $arResult["Urls"]["MessagesOutput"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGES_OUTPUT"], array());
        $arResult["User"]["NAME_FORMATTED"] = CUser::FormatName($arParams['NAME_TEMPLATE'], $arResult["User"], $bUseLogin);
        if ($arParams["SET_TITLE"] == "Y" || $arParams["SET_NAV_CHAIN"] != "N") {
            $arParams["TITLE_NAME_TEMPLATE"] = str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]);
            $strTitleFormatted = CUser::FormatName($arParams['TITLE_NAME_TEMPLATE'], $arResult["User"], $bUseLogin);
        }
        if ($arParams["SET_TITLE"] == "Y") {
            $APPLICATION->SetTitle($strTitleFormatted . ": " . GetMessage("SONET_C26_PAGE_TITLE"));
        }
        if ($arParams["SET_NAV_CHAIN"] != "N") {
            $APPLICATION->AddChainItem($strTitleFormatted, $arResult["Urls"]["User"]);
            $APPLICATION->AddChainItem(GetMessage("SONET_C26_PAGE_TITLE"));
        }
Beispiel #12
0
 function SetSonetLogRights($logID, $entity_type, $entity_id, $event_id)
 {
     if (!CModule::IncludeModule("socialnetwork")) {
         return;
     }
     if (in_array($entity_type, array(SONET_SUBSCRIBE_ENTITY_USER, SONET_SUBSCRIBE_ENTITY_GROUP))) {
         if (in_array($event_id, array("blog_post", "forum", "photo", "blog_post_micro", "files", "wiki"))) {
             $arLogEventTmp = CSocNetLogTools::FindLogEventByID($event_id);
             CSocNetLogRights::SetForSonet($logID, $entity_type, $entity_id, CSocNetLogTools::FindFeatureByEventID($event_id), $arLogEventTmp["OPERATION"]);
         } elseif (in_array($event_id, array("data", "system")) && $entity_type == SONET_SUBSCRIBE_ENTITY_GROUP) {
             CSocNetLogRights::Add($logID, array("SA", "S" . SONET_SUBSCRIBE_ENTITY_GROUP . $entity_id, "S" . SONET_SUBSCRIBE_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_OWNER, "S" . SONET_SUBSCRIBE_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_MODERATOR, "S" . SONET_SUBSCRIBE_ENTITY_GROUP . $entity_id . "_" . SONET_ROLES_USER));
         } elseif (in_array($event_id, array("data", "system")) && $entity_type == SONET_SUBSCRIBE_ENTITY_USER) {
             $perm = CSocNetUserPerms::GetOperationPerms($entity_id, "viewprofile");
             if (in_array($perm, array(SONET_RELATIONS_TYPE_FRIENDS2, SONET_RELATIONS_TYPE_FRIENDS))) {
                 CSocNetLogRights::Add($logID, array("SA", "U" . $entity_id, "S" . SONET_SUBSCRIBE_ENTITY_USER . $entity_id . "_" . $perm));
             } elseif ($perm == SONET_RELATIONS_TYPE_AUTHORIZED) {
                 CSocNetLogRights::Add($logID, array("SA", "AU"));
             } elseif ($perm == SONET_RELATIONS_TYPE_ALL) {
                 CSocNetLogRights::Add($logID, array("SA", "G2"));
             }
         }
     } elseif ($entity_type == SONET_SUBSCRIBE_ENTITY_PROVIDER) {
         $arRights = array("SA");
         $rsSchemeRights = CXDILFSchemeRights::GetList(array(), array("SCHEME_ID" => $entity_id));
         while ($arSchemeRights = $rsSchemeRights->Fetch()) {
             if (substr($arSchemeRights["GROUP_CODE"], 0, 1) == "U") {
                 if (substr($arSchemeRights["GROUP_CODE"], 1) == "A") {
                     $arRights[] = "AU";
                     break;
                 } elseif (substr($arSchemeRights["GROUP_CODE"], 1) == "N") {
                     $arRights[] = "G2";
                     break;
                 } elseif (intval(substr($arSchemeRights["GROUP_CODE"], 1)) > 0) {
                     $arRights[] = "U" . substr($arSchemeRights["GROUP_CODE"], 1);
                 }
             }
         }
         if (count($arRights) > 0) {
             CSocNetLogRights::Add($logID, $arRights);
         }
     } elseif (defined("SONET_SUBSCRIBE_ENTITY_NEWS") && $entity_type == SONET_SUBSCRIBE_ENTITY_NEWS) {
         CSocNetLogRights::Add($logID, array("SA", "G2"));
     }
 }
Beispiel #13
0
     $arData[] = $arTmpData;
 }
 // while
 $arFilter = array("TO_USER_ID" => $GLOBALS["USER"]->GetID(), "DATE_VIEW" => "", "TO_DELETED" => "N");
 if ($log == "Y") {
     $arFilter["IS_LOG_ALL"] = "Y";
 }
 $dbUserRequests = CSocNetMessages::GetList(array("DATE_CREATE" => "ASC"), $arFilter, false, array("nTopCount" => 50), array("ID", "FROM_USER_ID", "TITLE", "MESSAGE", "DATE_CREATE", "MESSAGE_TYPE", "FROM_USER_NAME", "FROM_USER_LAST_NAME", "FROM_USER_SECOND_NAME", "FROM_USER_LOGIN", "FROM_USER_PERSONAL_PHOTO", "FROM_USER_PERSONAL_GENDER", "FROM_USER_IS_ONLINE", "IS_LOG"));
 while ($arUserRequests = $dbUserRequests->GetNext()) {
     $arTmpData = array();
     $arTmpData["TYPE"] = "M";
     $arTmpData["IS_LOG"] = $arUserRequests["IS_LOG"];
     $arTmpData["MESSAGE_TYPE"] = $arUserRequests["MESSAGE_TYPE"];
     $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUserRequests["FROM_USER_ID"]));
     $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUserRequests["FROM_USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin($site));
     $canAnsver = IsModuleInstalled("im") || CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUserRequests["FROM_USER_ID"], "message", CSocNetUser::IsCurrentUserModuleAdmin($site));
     $arTmpData["IMAGE_USER"] = "******";
     if (intval($arUserRequests["FROM_USER_PERSONAL_PHOTO"]) <= 0) {
         switch ($arUserRequests["FROM_USER_PERSONAL_GENDER"]) {
             case "M":
                 $suffix = "male";
                 break;
             case "F":
                 $suffix = "female";
                 break;
             default:
                 $suffix = "unknown";
         }
         $arUserRequests["FROM_USER_PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, $site);
     }
     if (intval($arUserRequests["FROM_USER_PERSONAL_PHOTO"]) > 0) {
Beispiel #14
0
     }
 }
 $rsRequestsIn = new CDBResult();
 $rsRequestsIn->InitFromArray($arTmpResult["RequestsIn"]);
 $rsRequestsIn->NavStart();
 while ($arRecord = $rsRequestsIn->GetNext()) {
     $arResult["RequestsIn"]["List"][] = $arRecord;
 }
 $arResult["RequestsIn"]["NAV_STRING"] = $rsRequestsIn->GetPageNavStringEx($navComponentObject, GetMessage("SONET_URE_NAV"), "", false);
 /*********************  Outogoing Requests  ***********************/
 /* Friends Outgoing */
 $arResult["RequestsOut"] = array();
 $dbUserRequests = CSocNetUserRelations::GetList(array("DATE_UPDATE" => "ASC"), array("FIRST_USER_ID" => $arParams["USER_ID"], "RELATION" => SONET_RELATIONS_REQUEST), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID", "MESSAGE", "SECOND_USER_NAME", "DATE_UPDATE", "SECOND_USER_LAST_NAME", "SECOND_USER_SECOND_NAME", "SECOND_USER_LOGIN", "SECOND_USER_PERSONAL_PHOTO", "SECOND_USER_PERSONAL_GENDER", "SECOND_USER_IS_ONLINE"));
 while ($arUserRequest = $dbUserRequests->GetNext()) {
     $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUserRequest["SECOND_USER_ID"]));
     $canViewProfile = CSocNetUserPerms::CanPerformOperation($arParams["USER_ID"], $arUserRequest["SECOND_USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
     if (intval($arParams["THUMBNAIL_LIST_SIZE"]) > 0) {
         if (intval($arUserRequest["SECOND_USER_PERSONAL_PHOTO"]) <= 0) {
             switch ($arUserRequest["SECOND_USER_PERSONAL_GENDER"]) {
                 case "M":
                     $suffix = "male";
                     break;
                 case "F":
                     $suffix = "female";
                     break;
                 default:
                     $suffix = "unknown";
             }
             $arUserRequest["SECOND_USER_PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, SITE_ID);
         }
         $arImage = CFile::ResizeImageGet($arUserRequest["SECOND_USER_PERSONAL_PHOTO"], array("width" => $arParams["THUMBNAIL_LIST_SIZE"], "height" => $arParams["THUMBNAIL_LIST_SIZE"]), BX_RESIZE_IMAGE_EXACT, false);
Beispiel #15
0
                                        $suffix = "male";
                                        break;
                                    case "F":
                                        $suffix = "female";
                                        break;
                                    default:
                                        $suffix = "unknown";
                                }
                                $arFriends[$pref . "_USER_PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, SITE_ID);
                            }
                            $arImage = CSocNetTools::InitImage($arFriends[$pref . "_USER_PERSONAL_PHOTO"], $arParams["THUMBNAIL_LIST_SIZE"], "/bitrix/images/socialnetwork/nopic_30x30.gif", 30, $pu, $canViewProfile);
                        } else {
                            // old
                            $arImage = CSocNetTools::InitImage($arFriends[$pref . "_USER_PERSONAL_PHOTO"], 150, "/bitrix/images/socialnetwork/nopic_user_150.gif", 150, $pu, $canViewProfile);
                        }
                        $gruLink = "";
                        $bGruInvite = false;
                        if ($arParams["GROUP_ID"] > 0) {
                            if (CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arFriends[$pref . "_USER_ID"], "invitegroup", CSocNetUser::IsCurrentUserModuleAdmin())) {
                                $gruLink = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_REQUEST_USER"], array("user_id" => $arFriends[$pref . "_USER_ID"], "group_id" => $arParams["GROUP_ID"]));
                            }
                        }
                        $arResult["Friends"]["List"][] = array("ID" => $arFriends["ID"], "USER_ID" => $arFriends[$pref . "_USER_ID"], "USER_NAME" => $arFriends[$pref . "_USER_NAME"], "USER_LAST_NAME" => $arFriends[$pref . "_USER_LAST_NAME"], "USER_SECOND_NAME" => $arFriends[$pref . "_USER_SECOND_NAME"], "USER_LOGIN" => $arFriends[$pref . "_USER_LOGIN"], "USER_PERSONAL_PHOTO" => $arFriends[$pref . "_USER_PERSONAL_PHOTO"], "USER_PERSONAL_PHOTO_FILE" => $arImage["FILE"], "USER_PERSONAL_PHOTO_IMG" => $arImage["IMG"], "USER_PROFILE_URL" => $pu, "SHOW_PROFILE_LINK" => $canViewProfile, "IS_ONLINE" => $arFriends[$pref . "_USER_IS_ONLINE"] == "Y", "ADD_TO_FRIENDS_LINK" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_FRIENDS_ADD"], array("user_id" => $arFriends[$pref . "_USER_ID"])), "DELETE_FROM_FRIENDS_LINK" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_FRIENDS_DELETE"], array("user_id" => $arFriends[$pref . "_USER_ID"])), "CAN_ADD2FRIENDS" => !$arResult["CurrentUserPerms"]["IsCurrentUser"] && !$rel && $arFriends[$pref . "_USER_ID"] != $GLOBALS["USER"]->GetID() ? true : false, "CAN_DELETE_FRIEND" => $arResult["CurrentUserPerms"]["IsCurrentUser"] && $rel == SONET_RELATIONS_FRIEND ? true : false, "REQUEST_GROUP_LINK" => $gruLink);
                    }
                    $arResult["NAV_STRING"] = $dbFriends->GetPageNavStringEx($navComponentObject, GetMessage("SONET_C33_NAV"), "", false);
                }
            }
        }
    }
}
$this->IncludeComponentTemplate();
Beispiel #16
0
    echo CUtil::PhpToJsObject(array('ERROR' => 'USER_ID_NOT_DEFINED'));
    die;
} else {
    $rsUser = CUser::GetByID($user_id);
    $arUser = $rsUser->Fetch();
    if (!$arUser) {
        echo CUtil::PhpToJsObject(array('ERROR' => 'USER_ID_NOT_DEFINED'));
        die;
    }
}
if (!is_array($arFriendID) || count($arFriendID) <= 0) {
    echo CUtil::PhpToJsObject(array('ERROR' => 'FRIEND_ID_NOT_DEFINED'));
    die;
}
if (check_bitrix_sessid()) {
    $arCurrentUserPerms = CSocNetUserPerms::InitUserPerms($GLOBALS["USER"]->GetID(), $arUser["ID"], CSocNetUser::IsCurrentUserModuleAdmin());
    if (!$arCurrentUserPerms || !$arCurrentUserPerms["IsCurrentUser"]) {
        echo CUtil::PhpToJsObject(array('ERROR' => 'USER_NO_PERMS'));
        die;
    }
    if (in_array($_POST['ACTION'], array('BAN', 'UNBAN', 'EX'))) {
        if ($_POST['ACTION'] == 'BAN') {
            $relation_type = SONET_RELATIONS_FRIEND;
        } elseif ($_POST['ACTION'] == 'UNBAN') {
            $relation_type = SONET_RELATIONS_BAN;
        } elseif ($_POST['ACTION'] == 'EX') {
            $relation_type = SONET_RELATIONS_FRIEND;
        }
        $arRelationID = array();
        $arRelationUserID = array();
        $rsRelation = CSocNetUserRelations::GetRelatedUsers($user_id, $relation_type);
Beispiel #17
0
 /*********************  END ACTIONS  *****************************/
 if ($arParams["SET_TITLE"] == "Y") {
     $APPLICATION->SetTitle(GetMessage("SONET_C30_PAGE_TITLE"));
 }
 if ($arParams["SET_NAV_CHAIN"] != "N") {
     $APPLICATION->AddChainItem(GetMessage("SONET_C30_PAGE_TITLE"));
 }
 $arResult["Events"] = false;
 $dbMessages = CSocNetMessages::GetMessagesUsers($GLOBALS["USER"]->GetID(), $arNavParams);
 while ($arMessages = $dbMessages->GetNext()) {
     if ($arResult["Events"] == false) {
         $arResult["Events"] = array();
     }
     $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arMessages["ID"]));
     $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arMessages["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
     $canAnsver = $arMessages["ACTIVE"] != "N" && (IsModuleInstalled("im") || CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arMessages["ID"], "message", CSocNetUser::IsCurrentUserModuleAdmin()));
     $relation = CSocNetUserRelations::GetRelation($GLOBALS["USER"]->GetID(), $arMessages["ID"]);
     if (intval($arMessages["PERSONAL_PHOTO"]) <= 0) {
         switch ($arMessages["PERSONAL_GENDER"]) {
             case "M":
                 $suffix = "male";
                 break;
             case "F":
                 $suffix = "female";
                 break;
             default:
                 $suffix = "unknown";
         }
         $arMessages["PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, SITE_ID);
     }
     $arImage = CSocNetTools::InitImage($arMessages["PERSONAL_PHOTO"], 100, "/bitrix/images/socialnetwork/nopic_user_100.gif", 100, $pu, $canViewProfile);
Beispiel #18
0
 function SetFeature($entityType, $entityID, $feature, $op = false, $permX = false, $bCheckEmpty = false)
 {
     global $APPLICATION, $DB, $arSocNetAllowedEntityTypes;
     $arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures();
     $arSocNetAllowedSubscribeEntityTypesDesc = CSocNetAllowed::GetAllowedEntityTypesDesc();
     $CacheRelatedUsers = array();
     $entityType = trim($entityType);
     if (!in_array($entityType, $arSocNetAllowedEntityTypes)) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_EUV_INCORRECT_ENTITY_TYPE"), "ERROR_INCORRECT_ENTITY_TYPE");
         return false;
     }
     $entityID = IntVal($entityID);
     if ($entityID <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_EUV_EMPTY_ENTITY_ID"), "ERROR_EMPTY_ENTITY_ID");
         return false;
     }
     if (!$bCheckEmpty || !CSocNetEventUserView::IsEntityEmpty($entityType, $entityID)) {
         $event_id = array();
         if (!$op || !$permX) {
             if (array_key_exists($feature, $arSocNetFeaturesSettings) && array_key_exists("subscribe_events", $arSocNetFeaturesSettings[$feature])) {
                 foreach ($arSocNetFeaturesSettings[$feature]["subscribe_events"] as $event_id_tmp => $arEventIDTmp) {
                     if (array_key_exists("NO_SET", $arEventIDTmp) && $arEventIDTmp["NO_SET"]) {
                         continue;
                     }
                     if (!array_key_exists("ENTITIES", $arEventIDTmp) || !array_key_exists($entityType, $arEventIDTmp["ENTITIES"])) {
                         continue;
                     }
                     $event_id[$arEventIDTmp["OPERATION"]][] = $event_id_tmp;
                     if (array_key_exists("COMMENT_EVENT", $arEventIDTmp) && is_array($arEventIDTmp["COMMENT_EVENT"]) && array_key_exists("OPERATION", $arEventIDTmp["COMMENT_EVENT"]) && strlen($arEventIDTmp["COMMENT_EVENT"]["OPERATION"]) > 0) {
                         $event_id[$arEventIDTmp["OPERATION"]][] = $arEventIDTmp["COMMENT_EVENT"]["EVENT_ID"];
                     }
                 }
                 if (is_array($event_id[$arEventIDTmp["OPERATION"]])) {
                     $event_id[$arEventIDTmp["OPERATION"]] = array_unique($event_id[$arEventIDTmp["OPERATION"]]);
                 }
             }
         } else {
             $arOpTmp = array();
             if (array_key_exists($feature, $arSocNetFeaturesSettings) && array_key_exists("subscribe_events", $arSocNetFeaturesSettings[$feature])) {
                 foreach ($arSocNetFeaturesSettings[$feature]["subscribe_events"] as $event_id_tmp => $arEventIDTmp) {
                     if (array_key_exists("NO_SET", $arEventIDTmp) && $arEventIDTmp["NO_SET"]) {
                         continue;
                     }
                     if (!array_key_exists("ENTITIES", $arEventIDTmp) || !array_key_exists($entityType, $arEventIDTmp["ENTITIES"])) {
                         continue;
                     }
                     if (!array_key_exists("OPERATION", $arEventIDTmp) || strlen($arEventIDTmp["OPERATION"]) <= 0) {
                         continue;
                     }
                     $arOpTmp[] = $arEventIDTmp["OPERATION"];
                     if (array_key_exists("COMMENT_EVENT", $arEventIDTmp) && is_array($arEventIDTmp["COMMENT_EVENT"]) && array_key_exists("OPERATION", $arEventIDTmp["COMMENT_EVENT"]) && strlen($arEventIDTmp["COMMENT_EVENT"]["OPERATION"]) > 0) {
                         $arOpTmp[] = $arEventIDTmp["COMMENT_EVENT"]["OPERATION"];
                     }
                 }
             }
             if (is_array($arOpTmp)) {
                 $arOpTmp = array_unique($arOpTmp);
             }
             if (in_array($op, $arOpTmp)) {
                 foreach ($arSocNetFeaturesSettings[$feature]["subscribe_events"] as $event_id_tmp => $arEventIDTmp) {
                     if ($arEventIDTmp["OPERATION"] == $op) {
                         $event_id[$op][] = $event_id_tmp;
                     }
                     if (array_key_exists("COMMENT_EVENT", $arEventIDTmp) && is_array($arEventIDTmp["COMMENT_EVENT"]) && array_key_exists("OPERATION", $arEventIDTmp["COMMENT_EVENT"]) && $arEventIDTmp["COMMENT_EVENT"]["OPERATION"] == $op) {
                         $event_id[$op][] = $arEventIDTmp["COMMENT_EVENT"]["EVENT_ID"];
                     }
                 }
                 if (is_array($event_id[$op])) {
                     $event_id[$op] = array_unique($event_id[$op]);
                 }
             } else {
                 return true;
             }
         }
         if (intval($entityID) > 0 && array_key_exists($entityType, $arSocNetAllowedSubscribeEntityTypesDesc) && array_key_exists("CLASS_DESC_GET", $arSocNetAllowedSubscribeEntityTypesDesc[$entityType]) && array_key_exists("METHOD_DESC_GET", $arSocNetAllowedSubscribeEntityTypesDesc[$entityType])) {
             $arEntityTmp = call_user_func(array($arSocNetAllowedSubscribeEntityTypesDesc[$entityType]["CLASS_DESC_GET"], $arSocNetAllowedSubscribeEntityTypesDesc[$entityType]["METHOD_DESC_GET"]), $entityID);
         }
         foreach ($event_id as $op => $arEvent) {
             $arRelatedUsers = array();
             if (is_array($arEvent)) {
                 foreach ($arEvent as $event) {
                     if (!CSocNetEventUserView::Delete($entityType, $entityID, $feature, $event)) {
                         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_EUV_ERROR_DELETE"), "ERROR_DELETE");
                         return false;
                     }
                     if (!$feature || !$permX) {
                         $perm = CSocNetFeaturesPerms::GetOperationPerm($entityType, $entityID, $feature, $op);
                     } else {
                         $perm = $permX;
                     }
                     if ($entityType == SONET_SUBSCRIBE_ENTITY_GROUP && $arEntityTmp && $arEntityTmp["VISIBLE"] == "N" && $perm > SONET_ROLES_USER) {
                         $perm = SONET_ROLES_USER;
                     } elseif ($entityType == SONET_SUBSCRIBE_ENTITY_USER) {
                         $perm_profile = CSocNetUserPerms::GetOperationPerms($entityID, "viewprofile");
                         if ($perm < $perm_profile) {
                             $perm = $perm_profile;
                         }
                     }
                     if (array_key_exists($entityType, $CacheRelatedUsers) && array_key_exists($entityID, $CacheRelatedUsers[$entityType]) && array_key_exists($perm, $CacheRelatedUsers[$entityType][$entityID])) {
                         $arRelatedUsers = $CacheRelatedUsers[$entityType][$entityID][$perm];
                     } else {
                         if ($entityType == SONET_SUBSCRIBE_ENTITY_USER) {
                             switch ($perm) {
                                 case SONET_RELATIONS_TYPE_FRIENDS:
                                     $arRelatedUsers[] = array("entity_id" => $entityID, "user_id" => $entityID);
                                     $dbFriends = CSocNetUserRelations::GetRelatedUsers($entityID, SONET_RELATIONS_FRIEND);
                                     while ($arFriends = $dbFriends->Fetch()) {
                                         $friendID = $entityID == $arFriends["FIRST_USER_ID"] ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"];
                                         $arRelatedUsers[] = array("entity_id" => $entityID, "user_id" => $friendID);
                                     }
                                     break;
                                 case SONET_RELATIONS_TYPE_FRIENDS2:
                                     $arRelatedUsers[] = array("entity_id" => $entityID, "user_id" => $entityID);
                                     $dbFriends = CSocNetUserRelations::GetRelatedUsers($entityID, SONET_RELATIONS_FRIEND);
                                     while ($arFriends = $dbFriends->Fetch()) {
                                         $friendID = $entityID == $arFriends["FIRST_USER_ID"] ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"];
                                         $arRelatedUsers[] = array("entity_id" => $entityID, "user_id" => $friendID);
                                         $dbFriends2 = CSocNetUserRelations::GetRelatedUsers($friendID, SONET_RELATIONS_FRIEND);
                                         while ($arFriends2 = $dbFriends2->Fetch()) {
                                             $friendID2 = $friendID == $arFriends2["FIRST_USER_ID"] ? $arFriends2["SECOND_USER_ID"] : $arFriends2["FIRST_USER_ID"];
                                             if ($friendID2 != $entityID) {
                                                 $arRelatedUsers[] = array("entity_id" => $entityID, "user_id" => $friendID2, "user_im_id" => $friendID);
                                             }
                                         }
                                     }
                                     break;
                                 case SONET_RELATIONS_TYPE_NONE:
                                     $arRelatedUsers[] = array("entity_id" => $entityID, "user_id" => $entityID);
                                     break;
                                 case SONET_RELATIONS_TYPE_AUTHORIZED:
                                     $arRelatedUsers[] = array("entity_id" => $entityID, "user_id" => 0);
                                     break;
                                 case SONET_RELATIONS_TYPE_ALL:
                                     $arRelatedUsers = false;
                                     break;
                             }
                             if (!empty($arRelatedUsers)) {
                                 $arRelatedUsers = array_unique($arRelatedUsers);
                             }
                             $CacheRelatedUsers[SONET_ENTITY_USER][$entityID][$perm] = $arRelatedUsers;
                         } elseif ($entityType == SONET_SUBSCRIBE_ENTITY_GROUP) {
                             switch ($perm) {
                                 case SONET_ROLES_USER:
                                     $dbResult = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $entityID, "<=ROLE" => SONET_ROLES_USER, "USER_ACTIVE" => "Y"), false, false, array("USER_ID"));
                                     while ($arResult = $dbResult->Fetch()) {
                                         $arRelatedUsers[] = $arResult["USER_ID"];
                                     }
                                     break;
                                 case SONET_ROLES_MODERATOR:
                                     $dbResult = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $entityID, "<=ROLE" => SONET_ROLES_MODERATOR, "USER_ACTIVE" => "Y"), false, false, array("USER_ID"));
                                     while ($arResult = $dbResult->Fetch()) {
                                         $arRelatedUsers[] = $arResult["USER_ID"];
                                     }
                                     break;
                                 case SONET_ROLES_OWNER:
                                     $dbResult = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $entityID, "<=ROLE" => SONET_ROLES_OWNER, "USER_ACTIVE" => "Y"), false, false, array("USER_ID"));
                                     while ($arResult = $dbResult->Fetch()) {
                                         $arRelatedUsers[] = $arResult["USER_ID"];
                                     }
                                     break;
                                 case SONET_ROLES_AUTHORIZED:
                                     $arRelatedUsers[] = 0;
                                     break;
                                 case SONET_ROLES_ALL:
                                     $arRelatedUsers = false;
                                     break;
                             }
                             if ($arRelatedUsers && is_array($arRelatedUsers) && in_array(0, $arRelatedUsers)) {
                                 $arRelatedUsers = array(0);
                             } elseif ($arRelatedUsers && is_array($arRelatedUsers)) {
                                 $arRelatedUsers = array_unique($arRelatedUsers);
                             }
                             $CacheRelatedUsers[SONET_ENTITY_GROUP][$entityID][$perm] = $arRelatedUsers;
                         }
                     }
                     if ($arRelatedUsers && is_array($arRelatedUsers)) {
                         foreach ($arRelatedUsers as $relatedUserID) {
                             if (is_array($relatedUserID)) {
                                 $arFields = array("ENTITY_TYPE" => $entityType, "ENTITY_ID" => $relatedUserID["entity_id"], "EVENT_ID" => $event, "USER_ID" => $relatedUserID["user_id"], "USER_ANONYMOUS" => "N");
                                 if (array_key_exists("user_im_id", $relatedUserID)) {
                                     $arFields["USER_IM_ID"] = $relatedUserID["user_im_id"];
                                 }
                                 if (!CSocNetEventUserView::Add($arFields)) {
                                     $errorMessage = "";
                                     if ($e = $APPLICATION->GetException()) {
                                         $errorMessage = $e->GetString();
                                     }
                                     if (StrLen($errorMessage) <= 0) {
                                         $errorMessage = GetMessage("SONET_EUV_ERROR_SET");
                                     }
                                     $APPLICATION->ThrowException($errorMessage, "ERROR_SET");
                                     return false;
                                 }
                             } else {
                                 $arFields = array("ENTITY_TYPE" => $entityType, "ENTITY_ID" => $entityID, "EVENT_ID" => $event, "USER_ID" => $relatedUserID, "USER_ANONYMOUS" => "N");
                                 if (!CSocNetEventUserView::Add($arFields)) {
                                     $errorMessage = "";
                                     if ($e = $APPLICATION->GetException()) {
                                         $errorMessage = $e->GetString();
                                     }
                                     if (StrLen($errorMessage) <= 0) {
                                         $errorMessage = GetMessage("SONET_EUV_ERROR_SET");
                                     }
                                     $APPLICATION->ThrowException($errorMessage, "ERROR_SET");
                                     return false;
                                 }
                             }
                         }
                     } else {
                         $arFields = array("ENTITY_TYPE" => $entityType, "ENTITY_ID" => $entityID, "EVENT_ID" => $event, "USER_ID" => 0, "USER_ANONYMOUS" => "Y");
                         if (!CSocNetEventUserView::Add($arFields)) {
                             $errorMessage = "";
                             if ($e = $APPLICATION->GetException()) {
                                 $errorMessage = $e->GetString();
                             }
                             if (StrLen($errorMessage) <= 0) {
                                 $errorMessage = GetMessage("SONET_EUV_ERROR_SET");
                             }
                             $APPLICATION->ThrowException($errorMessage, "ERROR_SET");
                             return false;
                         }
                     }
                 }
             }
         }
     } elseif ($entityType == SONET_ENTITY_GROUP) {
         CSocNetEventUserView::SetGroup($entityID, true);
     } elseif ($entityType == SONET_ENTITY_USER) {
         CSocNetEventUserView::SetUser($entityID, false, false, true);
     }
     return true;
 }
Beispiel #19
0
	function DeleteRelation($senderUserID, $targetUserID)
	{
		global $APPLICATION;

		$senderUserID = IntVal($senderUserID);
		if ($senderUserID <= 0)
		{
			$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID");
			return false;
		}

		$targetUserID = IntVal($targetUserID);
		if ($targetUserID <= 0)
		{
			$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_TARGET_USER_ID"), "ERROR_TARGET_USER_ID");
			return false;
		}

		$arRelation = CSocNetUserRelations::GetByUserID($senderUserID, $targetUserID);
		if (!$arRelation)
		{
			$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_RELATION_NOT_FOUND"), "ERROR_RELATION_NOT_FOUND");
			return false;
		}

		if (CSocNetUserRelations::Delete($arRelation["ID"]))
		{
			$logID = CSocNetLog::Add(
				array(
					"ENTITY_TYPE" => SONET_ENTITY_USER,
					"ENTITY_ID" => $senderUserID,
					"EVENT_ID" => "system_friends",
					"=LOG_DATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
					"TITLE_TEMPLATE" => false,
					"TITLE" => "unfriend",
					"MESSAGE" => $targetUserID,
					"URL" => false,
					"MODULE_ID" => false,
					"CALLBACK_FUNC" => false,
					"USER_ID" => $targetUserID,
				),
				false
			);
			if (intval($logID) > 0)
			{
				CSocNetLog::Update($logID, array("TMP_ID" => $logID));

				$perm = CSocNetUserPerms::GetOperationPerms($senderUserID, "viewfriends");
				if (in_array($perm, array(SONET_RELATIONS_TYPE_FRIENDS2, SONET_RELATIONS_TYPE_FRIENDS)))
					CSocNetLogRights::Add($logID, array("SA", "U".$senderUserID, "S".SONET_ENTITY_USER.$senderUserID."_".$perm));
				elseif ($perm == SONET_RELATIONS_TYPE_NONE)
					CSocNetLogRights::Add($logID, array("SA", "U".$senderUserID));
				elseif ($perm == SONET_RELATIONS_TYPE_AUTHORIZED)
					CSocNetLogRights::Add($logID, array("SA", "AU"));
				elseif ($perm == SONET_RELATIONS_TYPE_ALL)
					CSocNetLogRights::Add($logID, array("SA", "G2"));

				$tmpID = $logID;
			}

			$logID2 = CSocNetLog::Add(
				array(
					"ENTITY_TYPE" => SONET_ENTITY_USER,
					"ENTITY_ID" => $targetUserID,
					"EVENT_ID" => "system_friends",
					"=LOG_DATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
					"TITLE_TEMPLATE" => false,
					"TITLE" => "unfriend",
					"MESSAGE" => $senderUserID,
					"URL" => false,
					"MODULE_ID" => false,
					"CALLBACK_FUNC" => false,
					"USER_ID" => $senderUserID,
					"TMP_ID" => (intval($tmpID) > 0 ? $tmpID : false),
				),
				false
			);

			if (intval($logID2) > 0)
			{
				$perm = CSocNetUserPerms::GetOperationPerms($targetUserID, "viewfriends");
				if (in_array($perm, array(SONET_RELATIONS_TYPE_FRIENDS2, SONET_RELATIONS_TYPE_FRIENDS)))
					CSocNetLogRights::Add($logID2, array("SA", "U".$targetUserID, "S".SONET_ENTITY_USER.$targetUserID."_".$perm));
				elseif ($perm == SONET_RELATIONS_TYPE_NONE)
					CSocNetLogRights::Add($logID2, array("SA", "U".$targetUserID));
				elseif ($perm == SONET_RELATIONS_TYPE_AUTHORIZED)
					CSocNetLogRights::Add($logID2, array("SA", "AU"));
				elseif ($perm == SONET_RELATIONS_TYPE_ALL)
					CSocNetLogRights::Add($logID2, array("SA", "G2"));
			}

			CSocNetLog::SendEvent($logID, "SONET_NEW_EVENT", $tmpID);			

			if ($arRelation["RELATION"] == SONET_RELATIONS_FRIEND)
				$GLOBALS["DB"]->Query("DELETE FROM b_sonet_event_user_view WHERE
					ENTITY_TYPE = '".SONET_ENTITY_USER."'
					AND (
						(USER_ID = ".$arRelation["FIRST_USER_ID"]." AND ENTITY_ID = ".$arRelation["SECOND_USER_ID"].")
						OR (USER_ID = ".$arRelation["SECOND_USER_ID"]." AND ENTITY_ID = ".$arRelation["FIRST_USER_ID"].")
						OR (ENTITY_ID = ".$arRelation["FIRST_USER_ID"]." AND USER_IM_ID = ".$arRelation["SECOND_USER_ID"].")
						OR (ENTITY_ID = ".$arRelation["SECOND_USER_ID"]." AND USER_IM_ID = ".$arRelation["FIRST_USER_ID"].")
						OR (USER_ID = ".$arRelation["FIRST_USER_ID"]." AND USER_IM_ID = ".$arRelation["SECOND_USER_ID"].")
						OR (USER_ID = ".$arRelation["SECOND_USER_ID"]." AND USER_IM_ID = ".$arRelation["FIRST_USER_ID"].")
					)", true);
		}
		else
		{
			$errorMessage = "";
			if ($e = $APPLICATION->GetException())
				$errorMessage = $e->GetString();
			if (StrLen($errorMessage) <= 0)
				$errorMessage = GetMessage("SONET_UR_RELATION_DELETE_ERROR");

			$GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_DELETE_RELATION");
			return false;
		}

		CSocNetUserRelations::__SpeedFileCheckMessages($senderUserID);

		return true;
	}
Beispiel #20
0
 if ($bSocialNetwork && !array_key_exists("IS_ONLINE", $arParams) && $arParams["AJAX_ONLY"] != "Y" && (!array_key_exists("INLINE", $arParams) || $arParams["INLINE"] != "Y")) {
     MULChangeOnlineStatus($arParams["ID"], $arParams["HTML_ID"]);
 }
 if ($arParams['AJAX_CALL'] == 'INFO') {
     $bNeedGetUser = true;
 } elseif (intval($arParams["ID"]) > 0) {
     if (!array_key_exists("NAME", $arParams) || !array_key_exists("LAST_NAME", $arParams) || !array_key_exists("SECOND_NAME", $arParams) || !array_key_exists("LOGIN", $arParams)) {
         $bNeedGetUser = true;
     }
     if ($arParams['USE_THUMBNAIL_LIST'] == "Y" && !array_key_exists("PERSONAL_PHOTO_IMG", $arParams)) {
         $bNeedGetUser = true;
     }
 }
 if ($bSocialNetwork && CModule::IncludeModule('socialnetwork')) {
     if ($arParams['AJAX_CALL'] == 'INFO') {
         $arResult["CurrentUserPerms"] = CSocNetUserPerms::InitUserPerms($USER->GetID(), $arParams["ID"], CSocNetUser::IsCurrentUserModuleAdmin());
     } else {
         $arResult["CurrentUserPerms"] = array("Operations" => array("viewprofile" => true, "videocall" => true, "message" => true));
     }
     if (!$bUseTooltip) {
         $arResult["USE_TOOLTIP"] = false;
     }
     if (!CModule::IncludeModule("video")) {
         $arResult["CurrentUserPerms"]["Operations"]["videocall"] = false;
     } elseif (!CVideo::CanUserMakeCall()) {
         $arResult["CurrentUserPerms"]["Operations"]["videocall"] = false;
     }
     if ($arParams['AJAX_CALL'] != 'INFO' && strlen($arParams["PROFILE_URL_LIST"]) > 0) {
         // don't use PROFILE_URL in ajax call because it could be another component inclusion
         $arResult["Urls"]["SonetProfile"] = $arParams["~PROFILE_URL_LIST"];
     } elseif ($arParams['AJAX_CALL'] != 'INFO' && strlen($arParams["PROFILE_URL"]) > 0) {
Beispiel #21
0
         }
         $arResult['SEARCH_RESULT'][$i] = $arUser;
     }
 } else {
     $arListParam = array("NAV_PARAMS" => $arNavParams);
     if ($arParams["ALLOW_RATING_SORT"] == 'Y') {
         $by = "RATING_" . $arParams["RATING_ID"];
     }
     if ($arParams["SHOW_RATING"] == 'Y') {
         $arListParam["SELECT"][] = "RATING_" . $arParams["RATING_ID"];
     }
     $dbUsers = CUser::GetList($by, $order = "desc", $arFilter, $arListParam);
     while ($arUser = $dbUsers->GetNext()) {
         $arUser["URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"]));
         $arUser["SHOW_PROFILE_LINK"] = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
         $arUser["CAN_MESSAGE"] = $GLOBALS["USER"]->IsAuthorized() && $GLOBALS["USER"]->GetID() != $arUser["ID"] && (IsModuleInstalled("im") || CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUser["ID"], "message", CSocNetUser::IsCurrentUserModuleAdmin()));
         if (intval($arUser["PERSONAL_PHOTO"]) <= 0) {
             switch ($arUser["PERSONAL_GENDER"]) {
                 case "M":
                     $suffix = "male";
                     break;
                 case "F":
                     $suffix = "female";
                     break;
                 default:
                     $suffix = "unknown";
             }
             $arUser["PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, SITE_ID);
         }
         $arImage = CSocNetTools::InitImage($arUser["PERSONAL_PHOTO"], $iSize, "/bitrix/images/socialnetwork/nopic_user_" . $iSize . ".gif", $iSize, $arUser["URL"], $arUser["SHOW_PROFILE_LINK"]);
         $arUser["IMAGE_FILE"] = $arImage["FILE"];
Beispiel #22
0
         $perm = CSocNetUserPerms::GetOperationPerms($arLog["ENTITY_ID"], $operation);
         if (in_array($perm, array(SONET_RELATIONS_TYPE_FRIENDS2, SONET_RELATIONS_TYPE_FRIENDS))) {
             CSocNetLogRights::Add($arLog["ID"], array("SA", "U" . $arLog["ENTITY_ID"], "SU" . $arLog["ENTITY_ID"] . "_" . $perm));
         } elseif ($perm == SONET_RELATIONS_TYPE_NONE) {
             CSocNetLogRights::Add($arLog["ID"], array("SA", "U" . $arLog["ENTITY_ID"]));
         } elseif ($perm == SONET_RELATIONS_TYPE_AUTHORIZED) {
             CSocNetLogRights::Add($arLog["ID"], array("SA", "AU"));
         } elseif ($perm == SONET_RELATIONS_TYPE_ALL) {
             CSocNetLogRights::Add($arLog["ID"], array("SA", "G2"));
         }
     } elseif ($featureID = CSocNetLogTools::FindFeatureByEventID($arLog["EVENT_ID"])) {
         CSocNetLogRights::SetForSonet($arLog["ID"], $arLog["ENTITY_TYPE"], $arLog["ENTITY_ID"], $featureID, $GLOBALS["arSocNetFeaturesSettings"][$featureID]["subscribe_events"][$arLog["EVENT_ID"]]["OPERATION"]);
     } elseif ($arLog["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP) {
         CSocNetLogRights::Add($arLog["ID"], array("SA", "SG" . $arLog["ENTITY_ID"] . "_" . SONET_ROLES_OWNER, "SG" . $arLog["ENTITY_ID"] . "_" . SONET_ROLES_MODERATOR, "SG" . $arLog["ENTITY_ID"] . "_" . SONET_ROLES_USER));
     } elseif ($arLog["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_USER) {
         $perm = CSocNetUserPerms::GetOperationPerms($arLog["ENTITY_ID"], "viewprofile");
         if (in_array($perm, array(SONET_RELATIONS_TYPE_FRIENDS2, SONET_RELATIONS_TYPE_FRIENDS))) {
             CSocNetLogRights::Add($arLog["ID"], array("SA", "U" . $arLog["ENTITY_ID"], "SU" . $arLog["ENTITY_ID"] . "_" . $perm));
         } elseif ($perm == SONET_RELATIONS_TYPE_NONE) {
             CSocNetLogRights::Add($arLog["ID"], array("SA", "U" . $arLog["ENTITY_ID"]));
         } elseif ($perm == SONET_RELATIONS_TYPE_AUTHORIZED) {
             CSocNetLogRights::Add($arLog["ID"], array("SA", "AU"));
         } elseif ($perm == SONET_RELATIONS_TYPE_ALL) {
             CSocNetLogRights::Add($arLog["ID"], array("SA", "G2"));
         }
         // tasks!!!
     }
 } elseif (in_array($arLog["ENTITY_TYPE"], array('R'))) {
     // reports
 } elseif (in_array($arLog["ENTITY_TYPE"], array('T'))) {
     // timeman
Beispiel #23
0
if (strlen($arParams["PATH_TO_USER_CONTENT_SEARCH"]) <= 0) {
    $arParams["PATH_TO_USER_CONTENT_SEARCH"] = htmlspecialcharsbx($APPLICATION->GetCurPage() . "?" . $arParams["PAGE_VAR"] . "=user_content_search&" . $arParams["USER_VAR"] . "=#user_id#");
}
$arParams["USE_MAIN_MENU"] = isset($arParams["USE_MAIN_MENU"]) ? $arParams["USE_MAIN_MENU"] : false;
if ($arParams["USE_MAIN_MENU"] == "Y" && !array_key_exists("MAIN_MENU_TYPE", $arParams)) {
    $arParams["MAIN_MENU_TYPE"] = "left";
}
if ($arParams["ID"] <= 0) {
    $arResult["NEED_AUTH"] = "Y";
} else {
    $dbUser = CUser::GetByID($arParams["ID"]);
    $arResult["User"] = $dbUser->GetNext();
    if (!is_array($arResult["User"])) {
        $arResult["FatalError"] = GetMessage("SONET_P_USER_NO_USER");
    } else {
        $arResult["CurrentUserPerms"] = CSocNetUserPerms::InitUserPerms($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], CSocNetUser::IsCurrentUserModuleAdmin());
        if (CModule::IncludeModule('extranet') && CExtranet::IsExtranetSite()) {
            $arResult["CurrentUserPerms"]["Operations"]["viewfriends"] = false;
        }
        $arResult["Urls"]["Edit"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_EDIT"], array("user_id" => $arResult["User"]["ID"]));
        $arResult["Urls"]["Friends"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_FRIENDS"], array("user_id" => $arResult["User"]["ID"]));
        $arResult["Urls"]["FriendsAdd"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_FRIENDS_ADD"], array("user_id" => $arResult["User"]["ID"]));
        $arResult["Urls"]["FriendsDelete"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_FRIENDS_DELETE"], array("user_id" => $arResult["User"]["ID"]));
        $arResult["Urls"]["Groups"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_GROUPS"], array("user_id" => $arResult["User"]["ID"]));
        $arResult["Urls"]["Search"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_SEARCH"], array());
        $arResult["Urls"]["GroupsAdd"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_GROUPS_ADD"], array("user_id" => $arResult["User"]["ID"]));
        $arResult["Urls"]["MessageForm"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGE_FORM"], array("user_id" => $arResult["User"]["ID"]));
        $arResult["Urls"]["Log"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_LOG"], array());
        $arResult["Urls"]["Main"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arResult["User"]["ID"]));
        $arResult["Urls"]["MessagesInput"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGES_INPUT"], array());
        $arResult["Urls"]["Blog"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_BLOG"], array("user_id" => $arResult["User"]["ID"]));
Beispiel #24
0
 public function ReceiveMessage($senderJId, array $arMessage, CXMPPClient $senderClient)
 {
     if (!$senderClient->IsAuthenticated()) {
         return false;
     }
     if (strlen($senderJId) <= 0) {
         return false;
     }
     if (!array_key_exists("message", $arMessage) || !array_key_exists(".", $arMessage["message"])) {
         return false;
     }
     $type = "normal";
     if (array_key_exists("type", $arMessage["message"]["."])) {
         $type = $arMessage["message"]["."]["type"];
     }
     if ($type == "error") {
         return false;
     }
     $mid = "";
     if (array_key_exists("id", $arMessage["message"]["."])) {
         $mid = $arMessage["message"]["."]["id"];
     }
     if (!in_array($type, array("chat", "groupchat", "headline", "normal"))) {
         return CXMPPUtility::GetErrorArray($senderJId, "message", "modify", "bad-request", "", $mid, "", $senderClient->GetClientDomain());
     }
     $recipientJId = "";
     if (array_key_exists("to", $arMessage["message"]["."])) {
         $recipientJId = $arMessage["message"]["."]["to"];
     }
     if (strlen($recipientJId) <= 0) {
         return CXMPPUtility::GetErrorArray($senderJId, "message", "modify", "bad-request", "", $mid, "", $senderClient->GetClientDomain());
     }
     $body = "";
     if (array_key_exists("body", $arMessage["message"])) {
         $body = $arMessage["message"]["body"]["#"];
     }
     if (strlen($body) <= 0) {
         return true;
     }
     //$body = CXMPPReceiveMessage::htmlspecialcharsback($body);
     //$body = html_entity_decode($body);
     $body = html_entity_decode($body, ENT_COMPAT, SITE_CHARSET);
     $body = str_replace("&apos;", "'", $body);
     $arSender = CXMPPUtility::GetUserByJId($senderJId);
     if (!$arSender) {
         return CXMPPUtility::GetErrorArray($senderJId, "message", "auth", "forbidden", $recipientJId, $mid, "", $senderClient->GetClientDomain());
     }
     $arRecipient = CXMPPUtility::GetUserByJId($recipientJId);
     if (!$arRecipient) {
         return CXMPPUtility::GetErrorArray($senderJId, "message", "cancel", "item-not-found", $recipientJId, $mid, "", $senderClient->GetClientDomain());
     }
     if (!CSocNetUserPerms::CanPerformOperation($arSender["ID"], $arRecipient["ID"], "message", false)) {
         return CXMPPUtility::GetErrorArray($senderJId, "message", "auth", "forbidden", $recipientJId, $mid, "", $senderClient->GetClientDomain());
     }
     if (IsModuleInstalled("im") && CModule::IncludeModule("im")) {
         $arMessageFields = array("FROM_USER_ID" => $arSender["ID"], "TO_USER_ID" => $arRecipient["ID"], "MESSAGE" => $body);
         CIMMessage::Add($arMessageFields);
     } else {
         $arMessageFields = array("=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_PRIVATE, "FROM_USER_ID" => $arSender["ID"], "TO_USER_ID" => $arRecipient["ID"], "MESSAGE" => $body);
         CSocNetMessages::Add($arMessageFields);
     }
     return true;
 }
Beispiel #25
0
         if (in_array($arUser["ID"], $arUsersInListID)) {
             continue;
         }
         $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"]));
         $canViewProfile = CSocNetUserPerms::CanPerformOperation($arResult["UserSelf"]["ID"], $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
         $strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arUser, $bUseLogin);
         $arResult["Friends"][] = array("USER_ID" => $arUser["ID"], "USER_NAME" => $arUser["NAME"], "USER_LAST_NAME" => $arUser["LAST_NAME"], "USER_SECOND_NAME" => $arUser["SECOND_NAME"], "USER_LOGIN" => $arUser["LOGIN"], "USER_NAME_FORMATTED" => $strNameFormatted, "USER_PROFILE_URL" => $pu, "SHOW_PROFILE_LINK" => $canViewProfile, "PATH_TO_MESSAGES_CHAT" => str_replace("#user_id#", $arUser["ID"], $arParams["PATH_TO_MESSAGES_CHAT"]), "IS_ONLINE" => $arUser["IS_ONLINE"] == "Y");
     }
 }
 //Recent users
 $arResult["RecentUsers"] = array();
 $arNavParams = array("nPageSize" => 20, "bDescPageNumbering" => false);
 $dbMessages = CSocNetMessages::GetMessagesUsers($GLOBALS["USER"]->GetID(), $arNavParams);
 while ($arMessages = $dbMessages->GetNext()) {
     $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arMessages["ID"]));
     $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arMessages["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
     $arTmpUser = array("NAME" => $arMessages["~NAME"], "LAST_NAME" => $arMessages["~LAST_NAME"], "SECOND_NAME" => $arMessages["~SECOND_NAME"], "LOGIN" => $arMessages["~LOGIN"]);
     $strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin);
     $arResult["RecentUsers"][] = array("USER_ID" => $arMessages["ID"], "USER_NAME" => $arMessages["NAME"], "USER_LAST_NAME" => $arMessages["LAST_NAME"], "USER_SECOND_NAME" => $arMessages["SECOND_NAME"], "USER_LOGIN" => $arMessages["LOGIN"], "USER_NAME_FORMATTED" => $strNameFormatted, "USER_PROFILE_URL" => $pu, "SHOW_PROFILE_LINK" => $canViewProfile, "PATH_TO_MESSAGES_CHAT" => str_replace("#user_id#", $arMessages["ID"], $arParams["PATH_TO_MESSAGES_CHAT"]), "IS_ONLINE" => $arMessages["IS_ONLINE"] == "Y");
 }
 $arResult["PrintSmilesList"] = CSocNetSmile::PrintSmilesList(0, LANGUAGE_ID, $arParams["PATH_TO_SMILE"]);
 $strNow = CSocNetMessages::Now();
 $strNow_ts = MakeTimeStamp($strNow, "YYYY-MM-DD HH:MI:SS") + CTimeZone::GetOffset();
 $arResult["Now"] = date("Y-m-d H:i:s", $strNow_ts);
 //user options
 require_once $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/classes/" . strtolower($GLOBALS['DB']->type) . "/favorites.php";
 $arResult["USER_OPTIONS"] = CUserOptions::GetOption('socnet', 'chat', array());
 if ($arResult["USER_OPTIONS"]["sound"] != "N") {
     $arResult["USER_OPTIONS"]["sound"] = "Y";
 }
 if ($arResult["USER_OPTIONS"]["contacts"] != "Y") {
Beispiel #26
0
        $this->IncludeComponentTemplate();
        $r = $APPLICATION->EndBufferContentMan();
        echo $r;
        die;
    }
    if (intval($arGroup["IMAGE_ID"]) <= 0) {
        $arGroup["IMAGE_ID"] = COption::GetOptionInt("socialnetwork", "default_group_picture", false, SITE_ID);
    }
    $arResult["PICTURE"] = CSocNetTools::InitImage($arGroup["IMAGE_ID"], 100, "/bitrix/images/socialnetwork/nopic_group_100.gif", 100, "", false);
    $arResult["PICTURE"]["FILE"]["SRC"] = __RSSCheckServerName($arResult["PICTURE"]["FILE"]["SRC"], $arResult["SERVER_NAME"]);
    $arResult["NAME"] = $arGroup["NAME"];
    $arResult["DESCRIPTION"] = $arGroup["DESCRIPTION"];
    $arResult["URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arParams["ENTITY_ID"]));
    $arResult["URL"] = htmlspecialcharsbx(__RSSCheckServerName($arResult["URL"], $arResult["SERVER_NAME"]));
} else {
    $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), ${$arParams}["ENTITY_ID"], "viewprofile", $bCurrentUserIsAdmin);
    if (!$canViewProfile) {
        $APPLICATION->RestartBuffer();
        $arResult["NAME"] = GetMessage("SONET_LOG_RSS_ERROR");
        $arResult["Events"] = array(array("LOG_DATE" => date("r"), "TITLE_FORMAT" => htmlspecialcharsbx(GetMessage("SONET_LOG_RSS_USER_NO_PERMS_TITLE")), "MESSAGE_FORMAT" => htmlspecialcharsbx(GetMessage("SONET_LOG_RSS_USER_NO_PERMS_MESSAGE")), "URL" => ""));
        $this->IncludeComponentTemplate();
        $r = $APPLICATION->EndBufferContentMan();
        echo $r;
        die;
    }
    $rsUser = CUser::GetByID($arParams["ENTITY_ID"]);
    if ($arUser = $rsUser->GetNext()) {
        if (intval($arUser["PERSONAL_PHOTO"]) <= 0) {
            switch ($arUser["PERSONAL_GENDER"]) {
                case "M":
                    $suffix = "male";
Beispiel #27
0
     } elseif ($arEvents["EVENT_ID"] == "blog_post_micro") {
         if (!array_key_exists("microblog", $arSocNetFeaturesSettings) || !CSocNetFeaturesPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), SONET_ENTITY_GROUP, $arEvents["ENTITY_ID"], "blog", "view_post", $bCurrentUserIsAdmin)) {
             continue;
         }
     } elseif ($arEvents["EVENT_ID"] == "blog_comment") {
         if (!array_key_exists("blog", $arSocNetFeaturesSettings) || !CSocNetFeaturesPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), SONET_ENTITY_GROUP, $arEvents["ENTITY_ID"], "blog", "view_comment", $bCurrentUserIsAdmin)) {
             continue;
         }
     } else {
         if (!array_key_exists($arEvents["EVENT_ID"], $arSocNetFeaturesSettings) || !CSocNetFeaturesPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), SONET_ENTITY_GROUP, $arEvents["ENTITY_ID"], $arEvents["EVENT_ID"], $arSocNetFeaturesSettings[$arEvents["EVENT_ID"]]["minoperation"][0], $bCurrentUserIsAdmin)) {
             continue;
         }
     }
     $path2Entity = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arEvents["ENTITY_ID"]));
 } else {
     $arCurrentUserPerms = CSocNetUserPerms::InitUserPerms($GLOBALS["USER"]->GetID(), $arEvents["ENTITY_ID"], $bCurrentUserIsAdmin);
     if ($arEvents["EVENT_ID"] == "system") {
         if (!$arCurrentUserPerms["Operations"]["viewprofile"]) {
             continue;
         }
     } elseif ($arEvents["EVENT_ID"] == "system_friends") {
         if (!$arCurrentUserPerms["Operations"]["viewfriends"] || !$arResult["CurrentUserPerms_UserID"]["Operations"]["viewfriends"]) {
             continue;
         }
     } elseif ($arEvents["EVENT_ID"] == "system_groups") {
         if (!$arCurrentUserPerms["Operations"]["viewgroups"]) {
             continue;
         }
     } elseif ($arEvents["EVENT_ID"] == "blog_post") {
         if (!array_key_exists("blog", $arSocNetFeaturesSettings) || !CSocNetFeaturesPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), SONET_ENTITY_USER, $arEvents["ENTITY_ID"], "blog", "view_post", $bCurrentUserIsAdmin)) {
             continue;
Beispiel #28
0
             $arUserIDs[] = $ID_ADDED;
         }
     }
 }
 // send invitations
 if (is_array($arUserIDs) && count($arUserIDs) > 0) {
     foreach ($arUserIDs as $user_id) {
         $isCurrentUserTmp = $USER->GetID() == $user_id;
         $canInviteGroup = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $user_id, "invitegroup", CSocNetUser::IsCurrentUserModuleAdmin());
         $user2groupRelation = CSocNetUserToGroup::GetUserRole($user_id, $arResult["GROUP_ID"]);
         if (!$isCurrentUserTmp && $canInviteGroup && !$user2groupRelation) {
             $bMail = !is_array($arInvitedExtranetUsers) || !in_array($user_id, $arInvitedExtranetUsers);
             if (!CSocNetUserToGroup::SendRequestToJoinGroup($USER->GetID(), $user_id, $arResult["GROUP_ID"], $_POST["MESSAGE"], $bMail)) {
                 $rsUser = CUser::GetByID($user_id);
                 if ($arUser = $rsUser->Fetch()) {
                     $arErrorUsers[] = array(CUser::FormatName($arParams["NAME_TEMPLATE"], $arUser, $bUseLogin), CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()) ? CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"])) : "");
                     if ($e = $APPLICATION->GetException()) {
                         $warningMessage .= $e->GetString();
                     }
                 }
             } elseif (is_array($arResult["POST"]["USER_IDS"]) && in_array($user_id, $arResult["POST"]["USER_IDS"])) {
                 $bInvited = true;
                 // delete from uninvited users list
                 $arKeysFound = array_keys($arResult["POST"]["USER_IDS"], $user_id);
                 foreach ($arKeysFound as $key) {
                     unset($arResult["POST"]["USER_IDS"][$key]);
                 }
             }
         } else {
             if (!$isCurrentUserTmp && $canInviteGroup && $user2groupRelation) {
                 $rsUser = CUser::GetByID($user_id);
Beispiel #29
0
	public static function inviteGroupUsers($arFields)
	{
		global $USER;

		$groupID = $arFields['GROUP_ID'];
		$arUserID = $arFields['USER_ID'];
		$message = $arFields['MESSAGE'];

		if(intval($groupID) <= 0)
			throw new Exception('Wrong group ID');

		if (
			(is_array($arUserID) && count($arUserID) <= 0)
			|| (!is_array($arUserID) && intval($arUserID) <= 0)
		)
			throw new Exception('Wrong user IDs');

		if (!is_array($arUserID))
			$arUserID = array($arUserID);

		$arSuccessID = array();

		$dbRes = CSocNetGroup::GetList(array(), array(
			"ID" => $groupID,
			"CHECK_PERMISSIONS" => $USER->GetID(),
		));
		$arGroup = $dbRes->Fetch();
		if(is_array($arGroup))
		{
			foreach($arUserID as $user_id)
			{
				$isCurrentUserTmp = ($USER->GetID() == $user_id);
				$canInviteGroup = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $user_id, "invitegroup", CSocNetUser::IsCurrentUserModuleAdmin(SITE_ID, false));
				$user2groupRelation = CSocNetUserToGroup::GetUserRole($user_id, $arGroup["ID"]);

				if (
					!$isCurrentUserTmp && $canInviteGroup && !$user2groupRelation
					&& CSocNetUserToGroup::SendRequestToJoinGroup($USER->GetID(), $user_id, $arGroup["ID"], $message, true)
				)
					$arSuccessID[] = $user_id;
			}
		}
		else
			throw new Exception('Socialnetwork group not found');

		return $arSuccessID;
	}
Beispiel #30
0
 while ($arGroupSite = $rsGroupSite->Fetch()) {
     $arGroupSites[] = $arGroupSite["LID"];
 }
 if (!in_array(SITE_ID, $arGroupSites)) {
     $arResult["FatalError"] = GetMessage("SONET_P_USER_NO_GROUP");
 } else {
     $arResult["Group"] = $arGroup;
     $arResult["Urls"]["Group"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arResult["Group"]["ID"]));
     $arResult["CurrentUserPerms"] = CSocNetUserToGroup::InitUserPerms($GLOBALS["USER"]->GetID(), $arResult["Group"], CSocNetUser::IsCurrentUserModuleAdmin());
     if (!$arResult["CurrentUserPerms"] || !$arResult["CurrentUserPerms"]["UserCanInitiate"]) {
         $arResult["FatalError"] = GetMessage("SONET_C11_NO_PERMS") . ". ";
     } else {
         $arResult["IsCurrentUser"] = $GLOBALS["USER"]->GetID() == $arResult["User"]["ID"];
         $arResult["CurrentUserRelation"] = CSocNetUserRelations::GetRelation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"]);
         $arResult["CurrentUserPerms"]["ViewProfile"] = $arResult["IsCurrentUser"] || CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
         $arResult["CurrentUserPerms"]["InviteGroup"] = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], "invitegroup", CSocNetUser::IsCurrentUserModuleAdmin());
         $user2groupRelation = CSocNetUserToGroup::GetUserRole($arResult["User"]["ID"], $arResult["Group"]["ID"]);
         if ($arResult["IsCurrentUser"]) {
             $arResult["FatalError"] = GetMessage("SONET_C11_ERR_SELF") . ". ";
         } elseif (!$arResult["CurrentUserPerms"]["InviteGroup"]) {
             $arResult["FatalError"] = GetMessage("SONET_C11_BAD_USER") . ". ";
         } elseif ($user2groupRelation) {
             $arResult["FatalError"] = GetMessage("SONET_C11_BAD_RELATION") . ". ";
         } else {
             $arResult["ShowForm"] = "Input";
             if ($_SERVER["REQUEST_METHOD"] == "POST" && strlen($_POST["save"]) > 0 && check_bitrix_sessid()) {
                 $errorMessage = "";
                 if (strlen($_POST["MESSAGE"]) <= 0) {
                     $errorMessage .= GetMessage("SONET_C11_NO_MESSAGE") . ". ";
                 }
                 if (strlen($errorMessage) <= 0 && !CSocNetUserToGroup::SendRequestToJoinGroup($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], $arResult["Group"]["ID"], $_POST["MESSAGE"]) && ($e = $APPLICATION->GetException())) {