예제 #1
0
 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 (!CSocNetUserToGroup::CheckFields("ADD", $arFields)) {
         return false;
     }
     $db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetUserToGroupAdd");
     while ($arEvent = $db_events->Fetch()) {
         if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false) {
             return false;
         }
     }
     $arInsert = $DB->PrepareInsert("b_sonet_user2group", $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_user2group(" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")";
         $DB->Query($strSql, False, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         $ID = IntVal($DB->LastID());
         CSocNetGroup::SetStat($arFields["GROUP_ID"]);
         CSocNetSearch::OnUserRelationsChange($arFields["USER_ID"]);
         $events = GetModuleEvents("socialnetwork", "OnSocNetUserToGroupAdd");
         while ($arEvent = $events->Fetch()) {
             ExecuteModuleEventEx($arEvent, array($ID, &$arFields));
         }
         if ($arFields["INITIATED_BY_TYPE"] == SONET_INITIATED_BY_GROUP && $arFields["SEND_MAIL"] != "N" && !IsModuleInstalled("im")) {
             CSocNetUserToGroup::SendEvent($ID, "SONET_INVITE_GROUP");
         }
     }
     if ($ID) {
         global $arSocNetUserInRoleCache;
         if (!isset($arSocNetUserInRoleCache) || !is_array($arSocNetUserInRoleCache)) {
             $arSocNetUserInRoleCache = array();
         }
         $arSocNetUserInRoleCache[$arFields["USER_ID"] . "_" . $arFields["GROUP_ID"]] = $arFields["ROLE"];
         if (defined("BX_COMP_MANAGED_CACHE")) {
             $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group_G" . $arFields["GROUP_ID"]);
             $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group_U" . $arFields["USER_ID"]);
         }
     }
     return $ID;
 }