Exemple #1
0
 function SetOwner($userID, $groupID, $arGroup = false)
 {
     global $DB, $APPLICATION, $USER;
     if (!$arGroup) {
         $arGroup = CSocNetGroup::GetByID($groupID);
     }
     if (!$arGroup) {
         return false;
     }
     $DB->StartTransaction();
     // setting relations for the old owner
     $dbRelation = CSocNetUserToGroup::GetList(array(), array("USER_ID" => $arGroup["OWNER_ID"], "GROUP_ID" => $groupID), false, false, array("ID"));
     if ($arRelation = $dbRelation->Fetch()) {
         $arFields = array("ROLE" => SONET_ROLES_USER, "=DATE_UPDATE" => $DB->CurrentTimeFunction(), "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER, "INITIATED_BY_USER_ID" => $USER->GetID());
         if (!CSocNetUserToGroup::Update($arRelation["ID"], $arFields)) {
             $errorMessage = "";
             if ($e = $APPLICATION->GetException()) {
                 $errorMessage = $e->GetString();
             }
             if (StrLen($errorMessage) <= 0) {
                 $errorMessage = GetMessage("SONET_UG_ERROR_CANNOT_UPDATE_CURRENT_OWNER");
             }
             $APPLICATION->ThrowException($errorMessage, "ERROR_UPDATE_USER2GROUP");
             $DB->Rollback();
             return false;
         }
     } else {
         $errorMessage = "";
         if ($e = $APPLICATION->GetException()) {
             $errorMessage = $e->GetString();
         }
         if (StrLen($errorMessage) <= 0) {
             $errorMessage = GetMessage("SONET_UG_ERROR_CANNOT_GET_CURRENT_OWNER_RELATION");
         }
         $APPLICATION->ThrowException($errorMessage, "ERROR_GET_USER2GROUP");
         $DB->Rollback();
         return false;
     }
     // delete requests to the old owner
     if (strlen($errorMessage) <= 0) {
         CSocNetUserToGroup::__SpeedFileDelete($arGroup["OWNER_ID"]);
     }
     if (strlen($errorMessage) <= 0) {
         // setting relations for the new owner
         $dbRelation = CSocNetUserToGroup::GetList(array(), array("USER_ID" => $userID, "GROUP_ID" => $groupID), false, false, array("ID"));
         if ($arRelation = $dbRelation->Fetch()) {
             $arFields = array("ROLE" => SONET_ROLES_OWNER, "=DATE_UPDATE" => $DB->CurrentTimeFunction(), "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER, "INITIATED_BY_USER_ID" => $USER->GetID());
             if (!CSocNetUserToGroup::Update($arRelation["ID"], $arFields)) {
                 $errorMessage = "";
                 if ($e = $APPLICATION->GetException()) {
                     $errorMessage = $e->GetString();
                 }
                 if (StrLen($errorMessage) <= 0) {
                     $errorMessage = GetMessage("SONET_UG_ERROR_CANNOT_UPDATE_NEW_OWNER_RELATION");
                 }
                 $APPLICATION->ThrowException($errorMessage, "ERROR_UPDATE_USER2GROUP");
                 $DB->Rollback();
                 return false;
             }
         } else {
             $arFields = array("USER_ID" => $userID, "GROUP_ID" => $groupID, "ROLE" => SONET_ROLES_OWNER, "=DATE_CREATE" => $DB->CurrentTimeFunction(), "=DATE_UPDATE" => $DB->CurrentTimeFunction(), "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER, "INITIATED_BY_USER_ID" => $USER->GetID(), "MESSAGE" => false);
             if (!CSocNetUserToGroup::Add($arFields)) {
                 $errorMessage = "";
                 if ($e = $APPLICATION->GetException()) {
                     $errorMessage = $e->GetString();
                 }
                 if (StrLen($errorMessage) <= 0) {
                     $errorMessage = GetMessage("SONET_UG_ERROR_CANNOT_ADD_NEW_OWNER_RELATION");
                 }
                 $APPLICATION->ThrowException($errorMessage, "ERROR_ADD_USER2GROUP");
                 $DB->Rollback();
                 return false;
             }
         }
     }
     if (strlen($errorMessage) <= 0) {
         $GROUP_ID = CSocNetGroup::Update($groupID, array("OWNER_ID" => $userID));
         if (!$GROUP_ID || IntVal($GROUP_ID) <= 0) {
             $errorMessage = "";
             if ($e = $APPLICATION->GetException()) {
                 $errorMessage = $e->GetString();
             }
             if (StrLen($errorMessage) <= 0) {
                 $errorMessage = GetMessage("SONET_UG_ERROR_CANNOT_UPDATE_GROUP");
             }
             $APPLICATION->ThrowException($errorMessage, "ERROR_UPDATE_GROUP");
             $DB->Rollback();
             return false;
         }
     }
     if (CModule::IncludeModule("im")) {
         $bIMIncluded = true;
         $groupSiteId = CSocNetGroup::GetDefaultSiteId($groupID, $arGroup["SITE_ID"]);
         $workgroupsPage = COption::GetOptionString("socialnetwork", "workgroups_page", "/workgroups/", $groupSiteId);
         $groupUrlTemplate = COption::GetOptionString("socialnetwork", "group_path_template", "/workgroups/group/#group_id#/", $groupSiteId);
         $groupUrlTemplate = "#GROUPS_PATH#" . substr($groupUrlTemplate, strlen($workgroupsPage), strlen($groupUrlTemplate) - strlen($workgroupsPage));
         $groupUrl = str_replace(array("#group_id#", "#GROUP_ID#"), $groupID, $groupUrlTemplate);
     }
     // send message to the old owner
     if ($bIMIncluded) {
         $arTmp = CSocNetLogTools::ProcessPath(array("GROUP_URL" => $groupUrl), $arGroup["OWNER_ID"], $groupSiteId);
         $groupUrl = $arTmp["URLS"]["GROUP_URL"];
         $serverName = strpos($groupUrl, "http://") === 0 || strpos($groupUrl, "https://") === 0 ? "" : $arTmp["SERVER_NAME"];
         $arMessageFields = array("TO_USER_ID" => $arGroup["OWNER_ID"], "FROM_USER_ID" => $USER->GetID(), "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "socialnetwork", "NOTIFY_EVENT" => "owner_group", "NOTIFY_TAG" => "SOCNET|OWNER_GROUP|" . $groupID, "NOTIFY_MESSAGE" => str_replace("#NAME#", "<a href=\"" . $groupUrl . "\" class=\"bx-notifier-item-action\">" . $arGroup["NAME"] . "</a>", GetMessage("SONET_UG_OWNER2MEMBER_MESSAGE")), "NOTIFY_MESSAGE_OUT" => str_replace("#NAME#", $arGroup["NAME"], GetMessage("SONET_UG_OWNER2MEMBER_MESSAGE") . " (" . $serverName . $groupUrl . ")"));
         CIMNotify::Add($arMessageFields);
     }
     // send message to the new owner
     if ($bIMIncluded) {
         $arTmp = CSocNetLogTools::ProcessPath(array("GROUP_URL" => $groupUrl), $userID, $groupSiteId);
         $groupUrl = $arTmp["URLS"]["GROUP_URL"];
         if (strpos($groupUrl, "http://") === 0 || strpos($groupUrl, "https://") === 0) {
             $serverName = "";
         } else {
             $serverName = $arTmp["SERVER_NAME"];
         }
         $arMessageFields = array("TO_USER_ID" => $userID, "FROM_USER_ID" => $USER->GetID(), "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "socialnetwork", "NOTIFY_EVENT" => "owner_group", "NOTIFY_TAG" => "SOCNET|OWNER_GROUP|" . $groupID, "NOTIFY_MESSAGE" => str_replace("#NAME#", "<a href=\"" . $groupUrl . "\" class=\"bx-notifier-item-action\">" . $arGroup["NAME"] . "</a>", GetMessage("SONET_UG_MEMBER2OWNER_MESSAGE")), "NOTIFY_MESSAGE_OUT" => str_replace("#NAME#", $arGroup["NAME"], GetMessage("SONET_UG_MEMBER2OWNER_MESSAGE") . " (" . $serverName . $groupUrl . ")"));
         CIMNotify::Add($arMessageFields);
     }
     $arNotifyParams = array("TYPE" => "owner", "RELATION_ID" => $arRelation["ID"], "USER_ID" => $userID, "GROUP_ID" => $groupID, "GROUP_NAME" => htmlspecialcharsbx($arGroup["NAME"]), "EXCLUDE_USERS" => array($userID, $arGroup["OWNER_ID"], $USER->GetID()));
     CSocNetUserToGroup::NotifyImToModerators($arNotifyParams);
     CSocNetSubscription::Set($userID, "SG" . $groupID, "Y");
     if (strlen($errorMessage) <= 0) {
         $DB->Commit();
         return true;
     } else {
         $DB->Rollback();
         return false;
     }
 }
Exemple #2
0
 function CreateGroup($ownerID, $arFields, $bAutoSubscribe = true)
 {
     global $APPLICATION, $DB;
     $ownerID = IntVal($ownerID);
     if ($ownerID <= 0) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_OWNERID") . ". ", "ERROR_OWNERID");
         return false;
     }
     if (!isset($arFields) || !is_array($arFields)) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_FIELDS") . ". ", "ERROR_FIELDS");
         return false;
     }
     $DB->StartTransaction();
     $arFields["=DATE_CREATE"] = $GLOBALS["DB"]->CurrentTimeFunction();
     $arFields["=DATE_UPDATE"] = $GLOBALS["DB"]->CurrentTimeFunction();
     $arFields["=DATE_ACTIVITY"] = $GLOBALS["DB"]->CurrentTimeFunction();
     $arFields["ACTIVE"] = "Y";
     $arFields["OWNER_ID"] = $ownerID;
     if (!is_set($arFields, "SPAM_PERMS") || strlen($arFields["SPAM_PERMS"]) <= 0) {
         $arFields["SPAM_PERMS"] = SONET_ROLES_OWNER;
     }
     $groupID = CSocNetGroup::Add($arFields);
     if (!$groupID || IntVal($groupID) <= 0) {
         $errorMessage = "";
         if ($e = $APPLICATION->GetException()) {
             $errorMessage = $e->GetString();
             $errorID = $e->GetID();
             if (StrLen($errorID) <= 0 && isset($e->messages) && is_array($e->messages) && is_array($e->messages[0]) && array_key_exists("id", $e->messages[0])) {
                 $errorID = $e->messages[0]["id"];
             }
         }
         if (StrLen($errorMessage) <= 0) {
             $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_GROUP") . ". ";
         }
         if (StrLen($errorID) <= 0) {
             $errorID = "ERROR_CREATE_GROUP";
         }
         $GLOBALS["APPLICATION"]->ThrowException($errorMessage, $errorID);
         $DB->Rollback();
         return false;
     }
     $arFields1 = array("USER_ID" => $ownerID, "GROUP_ID" => $groupID, "ROLE" => SONET_ROLES_OWNER, "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER, "INITIATED_BY_USER_ID" => $ownerID, "MESSAGE" => false);
     if (!CSocNetUserToGroup::Add($arFields1)) {
         $errorMessage = "";
         if ($e = $APPLICATION->GetException()) {
             $errorMessage = $e->GetString();
         }
         if (StrLen($errorMessage) <= 0) {
             $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_U_GROUP") . ". ";
         }
         $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_GROUP");
         $DB->Rollback();
         return false;
     }
     if ($bAutoSubscribe) {
         CSocNetLogEvents::AutoSubscribe($ownerID, SONET_ENTITY_GROUP, $groupID);
     }
     CSocNetSubscription::Set($ownerID, "SG" . $groupID, "Y");
     $DB->Commit();
     return $groupID;
 }
Exemple #3
0
if (!$GLOBALS["USER"]->IsAuthorized()) {
    echo CUtil::PhpToJsObject(array("ERROR" => "CURRENT_USER_NOT_AUTH"));
    die;
}
$groupID = intval($_POST["groupID"]);
if ($groupID <= 0) {
    echo CUtil::PhpToJsObject(array("ERROR" => "EMPTY_GROUP_ID"));
    die;
}
if (check_bitrix_sessid()) {
    if (in_array($_POST["action"], array("set", "unset"))) {
        $userRole = CSocNetUserToGroup::GetUserRole($GLOBALS["USER"]->GetID(), $groupID);
        if (!in_array($userRole, array(SONET_ROLES_OWNER, SONET_ROLES_MODERATOR, SONET_ROLES_USER))) {
            echo CUtil::PhpToJsObject(array("ERROR" => "INCORRECT_USER_ROLE"));
            die;
        }
        if (CSocNetSubscription::Set($GLOBALS["USER"]->GetID(), "SG" . $groupID, $_POST["action"] == "set" ? "Y" : "N")) {
            $rsSubscription = CSocNetSubscription::GetList(array(), array("USER_ID" => $GLOBALS["USER"]->GetID(), "CODE" => "SG" . $groupID));
            if ($arSubscription = $rsSubscription->Fetch()) {
                echo CUtil::PhpToJsObject(array("SUCCESS" => "Y", "RESULT" => "Y"));
            } else {
                echo CUtil::PhpToJsObject(array("SUCCESS" => "Y", "RESULT" => "N"));
            }
        }
    } else {
        echo CUtil::PhpToJsObject(array("ERROR" => "UNKNOWN_ACTION"));
    }
} else {
    echo CUtil::PhpToJsObject(array("ERROR" => "SESSION_ERROR"));
}
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";
            foreach ($arGroups as $ind => $arGroup) {
                $idTmp = CSocNetGroup::Add($arGroup);
                if ($idTmp) {
                    $arGroupsId[$ind] = IntVal($idTmp);
                } else {
                    if ($e = $GLOBALS["APPLICATION"]->GetException()) {
                        $errorString .= $e->GetString();
                    }
                    $bSonetError = true;
                }
            }
        }
        if (!$bSonetError) {
            foreach ($arGroupsId as $ind => $val) {
                CSocNetUserToGroup::Add(array("USER_ID" => 1, "GROUP_ID" => $val, "ROLE" => "A", "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER, "INITIATED_BY_USER_ID" => 1, "MESSAGE" => false));
                CSocNetSubscription::Set(1, "SG" . $val, "Y");
            }
            foreach ($arGroupsId as $ind => $val) {
                CSocNetFeatures::Add(array("ENTITY_TYPE" => SONET_ENTITY_GROUP, "ENTITY_ID" => $val, "FEATURE" => "forum", "FEATURE_NAME" => GetSocNetMessageLocal("SONET_I_FEATURE_FORUM", $arSite["LANGUAGE_ID"]), "ACTIVE" => "Y", "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction()));
                CSocNetFeatures::Add(array("ENTITY_TYPE" => SONET_ENTITY_GROUP, "ENTITY_ID" => $val, "FEATURE" => "blog", "FEATURE_NAME" => GetSocNetMessageLocal("SONET_I_FEATURE_BLOG", $arSite["LANGUAGE_ID"]), "ACTIVE" => "Y", "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction()));
            }
        }
    }
}
// ------------------ FORUM -------------------------------
$forumID = 0;
if (CModule::IncludeModule("forum")) {
    $dbResult = CForumNew::GetListEx(array(), array("SITE_ID" => $arSite["SITE_ID"], "XML_ID" => "car_forum_demo"));
    if ($arResult = $dbResult->Fetch()) {
        $forumID = $arResult["ID"];
    } else {