예제 #1
0
 function getRelatedGroup($relationID)
 {
     $arRel = CSocNetUserToGroup::GetByID($relationID);
     if ($arRel) {
         return $arRel["GROUP_NAME"];
     } else {
         return false;
     }
 }
예제 #2
0
 $arIDs = array();
 if (strlen($errorMessage) <= 0) {
     for ($i = 0; $i <= IntVal($_POST["max_count"]); $i++) {
         if ($_POST["checked_" . $i] == "Y") {
             $arIDs[] = IntVal($_POST["id_" . $i]);
         }
     }
     if (count($arIDs) <= 0) {
         $errorMessage .= GetMessage("SONET_C12_NOT_SELECTED") . ". ";
     }
 }
 if (strlen($errorMessage) <= 0) {
     if (strlen($_POST["reject"]) > 0) {
         $errorMessage = "";
         foreach ($arIDs as $relation_id) {
             $arRelation = CSocNetUserToGroup::GetByID($relation_id);
             if (!$arRelation) {
                 continue;
             }
             if (!CSocNetUserToGroup::Delete($arRelation["ID"])) {
                 if ($e = $APPLICATION->GetException()) {
                     $errorMessage .= $e->GetString();
                 }
                 if (StrLen($errorMessage) <= 0) {
                     $errorMessage .= GetMessage("SONET_C12_CANT_DELETE_INVITATION") . $arRelation["ID"];
                 }
             }
         }
         $APPLICATION->ThrowException($errorMessage, "ERROR_DELETE_RELATION");
     }
 }
예제 #3
0
 function UnBanMember($userID, $groupID, $arRelationID, $currentUserIsAdmin)
 {
     global $APPLICATION, $DB;
     $userID = IntVal($userID);
     if ($userID <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_USERID"), "ERROR_USERID");
         return false;
     }
     $groupID = IntVal($groupID);
     if ($groupID <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_GROUPID"), "ERROR_GROUPID");
         return false;
     }
     if (!is_array($arRelationID)) {
         return true;
     }
     $arGroup = CSocNetGroup::GetByID($groupID);
     if (!$arGroup || !is_array($arGroup)) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UG_ERROR_NO_GROUP_ID"), "ERROR_NO_GROUP");
         return false;
     }
     $arUserPerms = CSocNetUserToGroup::InitUserPerms($userID, $arGroup, $currentUserIsAdmin);
     if (!$arUserPerms["UserCanModifyGroup"] && !$arUserPerms["UserCanModerateGroup"]) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UG_ERROR_NO_PERMS"), "ERROR_NO_PERMS");
         return false;
     }
     $bSuccess = true;
     $tmp_count = count($arRelationID);
     for ($i = 0; $i < $tmp_count; $i++) {
         $arRelationID[$i] = IntVal($arRelationID[$i]);
         if ($arRelationID[$i] <= 0) {
             continue;
         }
         $arRelation = CSocNetUserToGroup::GetByID($arRelationID[$i]);
         if (!$arRelation) {
             continue;
         }
         if ($arRelation["GROUP_ID"] != $groupID || $arRelation["ROLE"] != SONET_ROLES_BAN) {
             continue;
         }
         $arFields = array("ROLE" => SONET_ROLES_USER, "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction());
         if (CSocNetUserToGroup::Update($arRelation["ID"], $arFields)) {
             $arMessageFields = array("FROM_USER_ID" => $userID, "TO_USER_ID" => $arRelation["USER_ID"], "MESSAGE" => str_replace("#NAME#", $arGroup["NAME"], GetMessage("SONET_UG_UNBANMEMBER_MESSAGE")), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM);
             CSocNetMessages::Add($arMessageFields);
         } else {
             $errorMessage = "";
             if ($e = $APPLICATION->GetException()) {
                 $errorMessage = $e->GetString();
             }
             if (StrLen($errorMessage) <= 0) {
                 $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_USER2GROUP");
             }
             $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_UNBANMEMBER");
             $bSuccess = false;
         }
     }
     return $bSuccess;
 }
예제 #4
0
 function Update($ID, $arFields)
 {
     global $DB;
     if (!CSocNetGroup::__ValidateID($ID)) {
         return false;
     }
     $ID = IntVal($ID);
     $arUser2GroupOld = CSocNetUserToGroup::GetByID($ID);
     if (!$arUser2GroupOld) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_NO_USER2GROUP"), "ERROR_NO_USER2GROUP");
         return false;
     }
     $arFields1 = array();
     foreach ($arFields as $key => $value) {
         if (substr($key, 0, 1) == "=") {
             $arFields1[substr($key, 1)] = $value;
             unset($arFields[$key]);
         }
     }
     if (!CSocNetUserToGroup::CheckFields("UPDATE", $arFields, $ID)) {
         return false;
     }
     $db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetUserToGroupUpdate");
     while ($arEvent = $db_events->Fetch()) {
         if (ExecuteModuleEventEx($arEvent, array($ID, $arFields)) === false) {
             return false;
         }
     }
     $strUpdate = $DB->PrepareUpdate("b_sonet_user2group", $arFields);
     foreach ($arFields1 as $key => $value) {
         if (strlen($strUpdate) > 0) {
             $strUpdate .= ", ";
         }
         $strUpdate .= $key . "=" . $value . " ";
     }
     if (strlen($strUpdate) > 0) {
         $strSql = "UPDATE b_sonet_user2group SET " . "\t" . $strUpdate . " " . "WHERE ID = " . $ID . " ";
         $DB->Query($strSql, False, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         CSocNetGroup::SetStat($arUser2GroupOld["GROUP_ID"]);
         CSocNetSearch::OnUserRelationsChange($arUser2GroupOld["USER_ID"]);
         if (array_key_exists("GROUP_ID", $arFields) && $arUser2GroupOld["GROUP_ID"] != $arFields["GROUP_ID"]) {
             CSocNetGroup::SetStat($arFields["GROUP_ID"]);
         }
         $events = GetModuleEvents("socialnetwork", "OnSocNetUserToGroupUpdate");
         while ($arEvent = $events->Fetch()) {
             ExecuteModuleEventEx($arEvent, array($ID, $arFields));
         }
         global $arSocNetUserInRoleCache;
         if (!isset($arSocNetUserInRoleCache) || !is_array($arSocNetUserInRoleCache)) {
             $arSocNetUserInRoleCache = array();
         }
         if (array_key_exists($arUser2GroupOld["USER_ID"] . "_" . $arUser2GroupOld["GROUP_ID"], $arSocNetUserInRoleCache)) {
             unset($arSocNetUserInRoleCache[$arUser2GroupOld["USER_ID"] . "_" . $arUser2GroupOld["GROUP_ID"]]);
         }
         if (defined("BX_COMP_MANAGED_CACHE")) {
             $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group_G" . $arUser2GroupOld["GROUP_ID"]);
             $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group_U" . $arUser2GroupOld["USER_ID"]);
             $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group");
         }
     } else {
         $ID = False;
     }
     return $ID;
 }
예제 #5
0
 function OnSocNetUserToGroupDelete($ID)
 {
     if (!defined("BX_COMP_MANAGED_CACHE")) {
         return true;
     }
     if (!CModule::IncludeModule('socialnetwork')) {
         return false;
     }
     global $CACHE_MANAGER;
     $arUser2Group = CSocNetUserToGroup::GetByID($ID);
     if (!$arUser2Group) {
         return true;
     }
     if (array_key_exists("GROUP_ID", $arUser2Group) && array_key_exists("USER_ID", $arUser2Group) && intval($arUser2Group["GROUP_ID"]) > 0 && intval($arUser2Group["USER_ID"]) > 0) {
         $dbUsersInGroup = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $arUser2Group["GROUP_ID"], "<=ROLE" => SONET_ROLES_USER), false, false, array("ID", "USER_ID"));
         if ($dbUsersInGroup) {
             while ($arUserInGroup = $dbUsersInGroup->GetNext()) {
                 $CACHE_MANAGER->ClearByTag("extranet_user_" . $arUserInGroup["USER_ID"]);
             }
         }
         $CACHE_MANAGER->ClearByTag("extranet_user_" . $arUser2Group["USER_ID"]);
     }
     return true;
 }