/** * <p>Метод удаляет тему рабочих групп. Если есть группы с этой темой, то тема удалена не будет.</p> * * * @param int $id Код темы.</bod * * @return bool <p>True в случае успешного удаления и false - в противном случае.</p> <br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/csocnetgroupsubject/delete.php * @author Bitrix */ public static function Delete($ID) { global $DB, $CACHE_MANAGER; if (!CSocNetGroup::__ValidateID($ID)) { return false; } $ID = IntVal($ID); $bSuccess = True; $bCanDelete = true; $dbResult = CSocNetGroup::GetList(array(), array("SUBJECT_ID" => $ID)); if ($arResult = $dbResult->Fetch()) { $bCanDelete = false; } if (!$bCanDelete) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GS_NOT_EMPTY_SUBJECT"), "NOT_EMPTY_SUBJECT"); return false; } $bSuccess = $DB->Query("DELETE FROM b_sonet_group_subject_site WHERE SUBJECT_ID = " . $ID . "", true); if ($bSuccess) { $bSuccess = $DB->Query("DELETE FROM b_sonet_group_subject WHERE ID = " . $ID . "", true); } if (CACHED_b_sonet_group_subjects != false) { $CACHE_MANAGER->CleanDir("b_sonet_group_subjects"); } return $bSuccess; }
function __wd_get_root_section($IBLOCK_ID, $object, $object_id) { $result = CIBlockWebdavSocnet::GetSectionID($IBLOCK_ID, $object, $object_id); if (intval($result) > 0) { return $result; } else { __wd_check_uf_use_bp_property($arParams["IBLOCK_ID"]); $arFields = array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y", "SOCNET_GROUP_ID" => false, "IBLOCK_SECTION_ID" => 0, "UF_USE_BP" => "N"); if ($object == "user") { $dbUser = CUser::GetByID($object_id); $arUser = $dbUser->Fetch(); $arFields["NAME"] = trim($arUser['LAST_NAME'] . " " . $arUser['FIRST_NAME']); $arFields["NAME"] = trim(!empty($arFields["NAME"]) ? $arFields["NAME"] : $arUser['LOGIN']); $arFields['CREATED_BY'] = $arUser['ID']; $arFields['MODIFIED_BY'] = $arUser['ID']; if (CIBlock::GetArrayByID($IBLOCK_ID, "RIGHTS_MODE") === "E") { $arTasks = CWebDavIblock::GetTasks(); $arFields['RIGHTS'] = array('n0' => array('GROUP_CODE' => 'U' . $object_id, 'TASK_ID' => $arTasks['X'])); } } else { /* $res = CSocNetGroup::GetByID($arResult["VARIABLES"]["group_id"]); if (!$res) { $arParams["ERROR_MESSAGE"] = GetMessage("SONET_GROUP_NOT_EXISTS"); return 0; } */ $arFields["SOCNET_GROUP_ID"] = $object_id; //$arGroup = CSocNetGroup::GetByID($object_id); $arFields["NAME"] = GetMessage("SONET_GROUP_PREFIX") . $object_id; $dbGroup = CSocNetGroup::GetList(array(), array("ID" => (int) $object_id), false, false, array("ID", "SITE_ID", "NAME")); if ($arGroup = $dbGroup->Fetch()) { $arFields["NAME"] = GetMessage("SONET_GROUP_PREFIX") . $arGroup["NAME"]; } if (CIBlock::GetArrayByID($IBLOCK_ID, "RIGHTS_MODE") === "E") { $arTasks = CWebDavIblock::GetTasks(); $arFields['RIGHTS'] = array('n0' => array('GROUP_CODE' => 'SG' . $arFields["SOCNET_GROUP_ID"] . '_A', 'TASK_ID' => $arTasks['X']), 'n1' => array('GROUP_CODE' => 'SG' . $arFields["SOCNET_GROUP_ID"] . '_E', 'TASK_ID' => $arTasks['W']), 'n2' => array('GROUP_CODE' => 'SG' . $arFields["SOCNET_GROUP_ID"] . '_K', 'TASK_ID' => $arTasks['W'])); } } if (\Bitrix\Main\Config\Option::get('disk', 'successfully_converted', false) && CModule::includeModule('disk')) { \Bitrix\Disk\Driver::getInstance()->addGroupStorage($arFields["SOCNET_GROUP_ID"]); } $GLOBALS["UF_USE_BP"] = $arFields["UF_USE_BP"]; $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("IBLOCK_" . $IBLOCK_ID . "_SECTION", $arFields); $bs = new CIBlockSection(); $sectionID = $bs->Add($arFields); if (!$sectionID) { $arParams["ERROR_MESSAGE"] = $bs->LAST_ERROR; return 0; } WDClearComponentCache(array("webdav.element.edit", "webdav.element.hist", "webdav.element.upload", "webdav.element.view", "webdav.menu", "webdav.section.edit", "webdav.section.list")); return true; /* if ($ob->workflow == 'bizproc') { __wd_create_default_bp_user_and_groups($arBizProcParameters); } */ } }
public static function onBeforeConfirmNotify($module, $tag, $value, $arNotify) { global $USER; $userId = $USER->getId(); if ($module == 'webdav' && $userId) { $tagData = explode('|', $tag); $folderInviteId = intval($tagData[2]); if ($tagData[0] == "WEBDAV" && $tagData[1] == "INVITE" && $folderInviteId > 0 && $userId == $tagData[3]) { if (\Bitrix\Main\Loader::includeModule('im')) { CIMNotify::DeleteByTag(\Bitrix\Webdav\FolderInviteTable::getNotifyTag(array('ID' => $folderInviteId, 'INVITE_USER_ID' => $userId))); } //decline if ($value === 'N') { \Bitrix\Webdav\FolderInviteTable::delete($folderInviteId); return false; } $targetSectionData = CWebDavIblock::getRootSectionDataForUser($userId); if (!$targetSectionData) { return false; } $folderInviteData = \Bitrix\Webdav\FolderInviteTable::getRowById($folderInviteId); if (!$folderInviteData) { return false; } $sectionToShare = CIBlockSection::getList(array(), array('ID' => $folderInviteData['SECTION_ID'], 'IBLOCK_ID' => $folderInviteData['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'), false, array('NAME', 'SOCNET_GROUP_ID'))->fetch(); if (empty($sectionToShare['NAME']) || empty($sectionToShare['SOCNET_GROUP_ID'])) { return false; } if (\Bitrix\Main\Loader::includeModule('socialnetwork')) { $group = CSocNetGroup::GetList(array(), array('ID' => $sectionToShare['SOCNET_GROUP_ID']), false, false, array('NAME'))->fetch(); } if (empty($group)) { return false; } $groupId = $sectionToShare['SOCNET_GROUP_ID']; $dispatcher = new \Bitrix\Webdav\InviteDispatcher(); $attachObjectType = CWebDavSymlinkHelper::ENTITY_TYPE_GROUP; $attachObjectId = (int) $groupId; $inviteComponentParams = array('attachObject' => array('id' => $attachObjectId, 'type' => $attachObjectType), 'attachToUserId' => $folderInviteData['INVITE_USER_ID'], 'inviteFromUserId' => $folderInviteData['USER_ID'], 'canEdit' => $folderInviteData['CAN_EDIT']); $response = $dispatcher->processActionConnect($inviteComponentParams); if ($response['status'] == $dispatcher::STATUS_SUCCESS) { \Bitrix\Webdav\FolderInviteTable::update($folderInviteId, array('IS_APPROVED' => true, 'LINK_SECTION_ID' => $response['sectionId'])); } return $response['status'] == $dispatcher::STATUS_SUCCESS; } } }
$idTmp = CSocNetGroupSubject::Add($arGroupSubject); if ($idTmp) { $arGroupSubjectsId[$ind] = IntVal($idTmp); } else { if ($e = $GLOBALS["APPLICATION"]->GetException()) { $errorMessage .= $e->GetString(); } } } } if (StrLen($errorMessage) <= 0) { $pathToImages = WIZARD_SERVICE_ABSOLUTE_PATH . "/images/"; $arGroupsId = array(0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0, 6 => 0, 7 => 0, 8 => 0, 9 => 0, 10 => 0); $arGroups = array(0 => array("SITE_ID" => WIZARD_SITE_ID, "NAME" => GetMessage("SONET_GROUP_NAME_0"), "DESCRIPTION" => GetMessage("SONET_GROUP_DESCRIPTION_0"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "ACTIVE" => "Y", "VISIBLE" => "Y", "OPENED" => "N", "SUBJECT_ID" => $arGroupSubjectsId[1], "OWNER_ID" => 1, "KEYWORDS" => GetMessage("SONET_GROUP_KEYWORDS_0"), "IMAGE_ID" => array("name" => "0.jpg", "type" => "image/jpeg", "tmp_name" => $pathToImages . "/0.jpg", "error" => "0", "size" => @filesize($pathToImages . "/0.jpg"), "MODULE_ID" => "socialnetwork"), "NUMBER_OF_MEMBERS" => 1, "INITIATE_PERMS" => "E", "SPAM_PERMS" => "N", "=DATE_ACTIVITY" => $GLOBALS["DB"]->CurrentTimeFunction()), 1 => array("SITE_ID" => WIZARD_SITE_ID, "NAME" => GetMessage("SONET_GROUP_NAME_1"), "DESCRIPTION" => GetMessage("SONET_GROUP_DESCRIPTION_1"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "ACTIVE" => "Y", "VISIBLE" => "Y", "OPENED" => "N", "SUBJECT_ID" => $arGroupSubjectsId[0], "OWNER_ID" => 1, "KEYWORDS" => GetMessage("SONET_GROUP_KEYWORDS_1"), "IMAGE_ID" => array("name" => "1.jpg", "type" => "image/jpeg", "tmp_name" => $pathToImages . "/1.jpg", "error" => "0", "size" => @filesize($pathToImages . "/1.jpg"), "MODULE_ID" => "socialnetwork"), "NUMBER_OF_MEMBERS" => 1, "INITIATE_PERMS" => "E", "SPAM_PERMS" => "N", "=DATE_ACTIVITY" => $GLOBALS["DB"]->CurrentTimeFunction()), 2 => array("SITE_ID" => WIZARD_SITE_ID, "NAME" => GetMessage("SONET_GROUP_NAME_2"), "DESCRIPTION" => GetMessage("SONET_GROUP_DESCRIPTION_2"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "ACTIVE" => "Y", "VISIBLE" => "Y", "OPENED" => "N", "SUBJECT_ID" => $arGroupSubjectsId[0], "OWNER_ID" => 1, "KEYWORDS" => GetMessage("SONET_GROUP_KEYWORDS_2"), "IMAGE_ID" => array("name" => "2.jpg", "type" => "image/jpeg", "tmp_name" => $pathToImages . "/2.jpg", "error" => "0", "size" => @filesize($pathToImages . "/2.jpg"), "MODULE_ID" => "socialnetwork"), "NUMBER_OF_MEMBERS" => 1, "SPAM_PERMS" => "N", "INITIATE_PERMS" => "E", "=DATE_ACTIVITY" => $GLOBALS["DB"]->CurrentTimeFunction()), 3 => array("SITE_ID" => WIZARD_SITE_ID, "NAME" => GetMessage("SONET_GROUP_NAME_3"), "DESCRIPTION" => GetMessage("SONET_GROUP_DESCRIPTION_3"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "ACTIVE" => "Y", "VISIBLE" => "Y", "OPENED" => "Y", "SUBJECT_ID" => $arGroupSubjectsId[4], "OWNER_ID" => 1, "KEYWORDS" => GetMessage("SONET_GROUP_KEYWORDS_3"), "IMAGE_ID" => array("name" => "3.jpg", "type" => "image/jpeg", "tmp_name" => $pathToImages . "/3.jpg", "error" => "0", "size" => @filesize($pathToImages . "/3.jpg"), "MODULE_ID" => "socialnetwork"), "NUMBER_OF_MEMBERS" => 1, "SPAM_PERMS" => "N", "INITIATE_PERMS" => "K", "=DATE_ACTIVITY" => $GLOBALS["DB"]->CurrentTimeFunction()), 4 => array("SITE_ID" => WIZARD_SITE_ID, "NAME" => GetMessage("SONET_GROUP_NAME_4"), "DESCRIPTION" => GetMessage("SONET_GROUP_DESCRIPTION_4"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "ACTIVE" => "Y", "VISIBLE" => "Y", "OPENED" => "N", "SUBJECT_ID" => $arGroupSubjectsId[2], "OWNER_ID" => 1, "KEYWORDS" => GetMessage("SONET_GROUP_KEYWORDS_4"), "IMAGE_ID" => array("name" => "4.jpg", "type" => "image/jpeg", "tmp_name" => $pathToImages . "/4.jpg", "error" => "0", "size" => @filesize($pathToImages . "/4.jpg"), "MODULE_ID" => "socialnetwork"), "NUMBER_OF_MEMBERS" => 1, "SPAM_PERMS" => "N", "INITIATE_PERMS" => "E", "=DATE_ACTIVITY" => $GLOBALS["DB"]->CurrentTimeFunction()), 5 => array("SITE_ID" => WIZARD_SITE_ID, "NAME" => GetMessage("SONET_GROUP_NAME_5"), "DESCRIPTION" => GetMessage("SONET_GROUP_DESCRIPTION_5"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "ACTIVE" => "Y", "VISIBLE" => "Y", "OPENED" => "N", "SUBJECT_ID" => $arGroupSubjectsId[2], "OWNER_ID" => 1, "KEYWORDS" => GetMessage("SONET_GROUP_KEYWORDS_5"), "IMAGE_ID" => array("name" => "5.jpg", "type" => "image/jpeg", "tmp_name" => $pathToImages . "/5.jpg", "error" => "0", "size" => @filesize($pathToImages . "/5.jpg"), "MODULE_ID" => "socialnetwork"), "NUMBER_OF_MEMBERS" => 1, "INITIATE_PERMS" => "E", "SPAM_PERMS" => "N", "=DATE_ACTIVITY" => $GLOBALS["DB"]->CurrentTimeFunction()), 6 => array("SITE_ID" => WIZARD_SITE_ID, "NAME" => GetMessage("SONET_GROUP_NAME_6"), "DESCRIPTION" => GetMessage("SONET_GROUP_DESCRIPTION_6"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "ACTIVE" => "Y", "VISIBLE" => "Y", "OPENED" => "Y", "SUBJECT_ID" => $arGroupSubjectsId[4], "OWNER_ID" => 1, "KEYWORDS" => GetMessage("SONET_GROUP_KEYWORDS_6"), "IMAGE_ID" => array("name" => "6.jpg", "type" => "image/jpeg", "tmp_name" => $pathToImages . "/6.jpg", "error" => "0", "size" => @filesize($pathToImages . "/6.jpg"), "MODULE_ID" => "socialnetwork"), "NUMBER_OF_MEMBERS" => 1, "SPAM_PERMS" => "N", "INITIATE_PERMS" => "K", "=DATE_ACTIVITY" => $GLOBALS["DB"]->CurrentTimeFunction()), 7 => array("SITE_ID" => WIZARD_SITE_ID, "NAME" => GetMessage("SONET_GROUP_NAME_7"), "DESCRIPTION" => GetMessage("SONET_GROUP_DESCRIPTION_7"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "ACTIVE" => "Y", "VISIBLE" => "Y", "OPENED" => "N", "SUBJECT_ID" => $arGroupSubjectsId[1], "OWNER_ID" => 1, "KEYWORDS" => GetMessage("SONET_GROUP_KEYWORDS_7"), "IMAGE_ID" => array("name" => "7.jpg", "type" => "image/jpeg", "tmp_name" => $pathToImages . "/7.jpg", "error" => "0", "size" => @filesize($pathToImages . "/7.jpg"), "MODULE_ID" => "socialnetwork"), "NUMBER_OF_MEMBERS" => 1, "INITIATE_PERMS" => "E", "SPAM_PERMS" => "N", "=DATE_ACTIVITY" => $GLOBALS["DB"]->CurrentTimeFunction()), 8 => array("SITE_ID" => WIZARD_SITE_ID, "NAME" => GetMessage("SONET_GROUP_NAME_8"), "DESCRIPTION" => GetMessage("SONET_GROUP_DESCRIPTION_8"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "ACTIVE" => "Y", "VISIBLE" => "N", "OPENED" => "N", "SUBJECT_ID" => $arGroupSubjectsId[3], "OWNER_ID" => 1, "KEYWORDS" => GetMessage("SONET_GROUP_KEYWORDS_8"), "NUMBER_OF_MEMBERS" => 1, "INITIATE_PERMS" => "A", "SPAM_PERMS" => "N", "=DATE_ACTIVITY" => $GLOBALS["DB"]->CurrentTimeFunction()), 9 => array("SITE_ID" => WIZARD_SITE_ID, "NAME" => GetMessage("SONET_GROUP_NAME_9"), "DESCRIPTION" => GetMessage("SONET_GROUP_DESCRIPTION_9"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "ACTIVE" => "Y", "VISIBLE" => "N", "OPENED" => "N", "SUBJECT_ID" => $arGroupSubjectsId[3], "OWNER_ID" => 1, "KEYWORDS" => GetMessage("SONET_GROUP_KEYWORDS_9"), "NUMBER_OF_MEMBERS" => 1, "INITIATE_PERMS" => "A", "SPAM_PERMS" => "N", "=DATE_ACTIVITY" => $GLOBALS["DB"]->CurrentTimeFunction()), 10 => array("SITE_ID" => WIZARD_SITE_ID, "NAME" => GetMessage("SONET_GROUP_NAME_10"), "DESCRIPTION" => GetMessage("SONET_GROUP_DESCRIPTION_10"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "ACTIVE" => "Y", "VISIBLE" => "N", "OPENED" => "N", "SUBJECT_ID" => $arGroupSubjectsId[3], "OWNER_ID" => 1, "KEYWORDS" => GetMessage("SONET_GROUP_KEYWORDS_10"), "NUMBER_OF_MEMBERS" => 1, "INITIATE_PERMS" => "A", "SPAM_PERMS" => "N", "=DATE_ACTIVITY" => $GLOBALS["DB"]->CurrentTimeFunction())); foreach ($arGroups as $ind => $arGroup) { $dbSubject = CSocNetGroup::GetList(array(), array("NAME" => $arGroup["NAME"], "SITE_ID" => WIZARD_SITE_ID)); if (!$dbSubject->Fetch()) { $idTmp = CSocNetGroup::Add($arGroup); if ($idTmp) { if (CModule::IncludeModule("disk")) { \Bitrix\Disk\Driver::getInstance()->addGroupStorage($idTmp); } $arGroupsId[$ind] = IntVal($idTmp); } else { if ($e = $GLOBALS["APPLICATION"]->GetException()) { $errorMessage .= $e->GetString(); } } } } }
public static function NotifyGroup($arFields) { if (!CModule::IncludeModule("im")) { return; } if (!is_array($arFields["GROUP_ID"])) { $arFields["GROUP_ID"] = array($arFields["GROUP_ID"]); } if (empty($arFields["GROUP_ID"])) { return; } if (empty($arFields["EXCLUDE_USERS"])) { $arFields["EXCLUDE_USERS"] = array(); } if (intval($arFields["LOG_ID"]) > 0) { $rsUnFollower = CSocNetLogFollow::GetList(array("CODE" => "L" . intval($arFields["LOG_ID"]), "TYPE" => "N"), array("USER_ID")); while ($arUnFollower = $rsUnFollower->Fetch()) { $arFields["EXCLUDE_USERS"][] = $arUnFollower["USER_ID"]; } $arFields["EXCLUDE_USERS"] = array_unique($arFields["EXCLUDE_USERS"]); } $arMessageFields = array("MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "socialnetwork", "NOTIFY_EVENT" => "sonet_group_event", "NOTIFY_TAG" => "SONET|EVENT|" . (intval($arFields["LOG_ID"]) > 0 ? $arFields["LOG_ID"] : rand())); if (intval($arFields["FROM_USER_ID"]) > 0) { $arMessageFields["FROM_USER_ID"] = $arFields["FROM_USER_ID"]; } $arUserToSend = array(); $arUserIDToSend = array(); $arGroupID = array(); $arCodes = array(); foreach ($arFields["GROUP_ID"] as $group_id) { $arCodes[] = "SG" . $group_id; } $rsSubscriber = CSocNetSubscription::GetList(array(), array("CODE" => $arCodes), false, false, array("USER_ID", "CODE")); while ($arSubscriber = $rsSubscriber->Fetch()) { if (!in_array($arSubscriber["USER_ID"], $arFields["EXCLUDE_USERS"]) && !in_array($arSubscriber["USER_ID"], $arUserIDToSend)) { if (preg_match('/^SG(\\d+)$/', $arSubscriber["CODE"], $matches)) { $arUserToSend[] = array("USER_ID" => $arSubscriber["USER_ID"], "GROUP_ID" => $matches[1]); $arUserIDToSend[] = $arSubscriber["USER_ID"]; $arGroupID[] = $matches[1]; } } } $rsGroup = CSocNetGroup::GetList(array(), array("ID" => $arGroupID), false, false, array("ID", "NAME", "OWNER_ID")); while ($arGroup = $rsGroup->GetNext()) { $arGroups[$arGroup["ID"]] = $arGroup; } $workgroupsPage = COption::GetOptionString("socialnetwork", "workgroups_page", "/workgroups/", SITE_ID); $groupUrlTemplate = COption::GetOptionString("socialnetwork", "group_path_template", "/workgroups/group/#group_id#/", SITE_ID); $groupUrlTemplate = "#GROUPS_PATH#" . substr($groupUrlTemplate, strlen($workgroupsPage), strlen($groupUrlTemplate) - strlen($workgroupsPage)); foreach ($arUserToSend as $arUser) { $arMessageFields["TO_USER_ID"] = $arUser["USER_ID"]; $arTmp = CSocNetLogTools::ProcessPath(array("URL" => $arFields["URL"], "GROUP_URL" => str_replace(array("#group_id#", "#GROUP_ID#"), $arUser["GROUP_ID"], $groupUrlTemplate)), $arUser["USER_ID"]); $url = $arTmp["URLS"]["URL"]; if (strpos($url, "http://") === 0 || strpos($url, "https://") === 0) { $serverName = ""; } else { $serverName = $arTmp["SERVER_NAME"]; } $groupUrl = $serverName . $arTmp["URLS"]["GROUP_URL"]; $group_name = array_key_exists($arUser["GROUP_ID"], $arGroups) ? $arGroups[$arUser["GROUP_ID"]]["NAME"] : ""; $arMessageFields["NOTIFY_MESSAGE"] = str_replace(array("#URL#", "#url#", "#group_name#", "#GROUP_ID#", "#group_id#"), array($url, $url, "<a href=\"" . $groupUrl . "\" class=\"bx-notifier-item-action\">" . $group_name . "</a>", $arUser["GROUP_ID"], $arUser["GROUP_ID"]), $arFields["MESSAGE"]); $arMessageFields["NOTIFY_MESSAGE_OUT"] = str_replace(array("#URL#", "#url#", "#group_name#"), array($serverName . $url, $serverName . $url, $group_name), $arFields["MESSAGE_OUT"]); $arMessageFields2Send = $arMessageFields; if (!is_set($arMessageFields2Send["FROM_USER_ID"]) || intval($arMessageFields2Send["FROM_USER_ID"]) <= 0) { $arMessageFields2Send["NOTIFY_TYPE"] = IM_NOTIFY_SYSTEM; $arMessageFields2Send["FROM_USER_ID"] = 0; } CIMNotify::Add($arMessageFields2Send); } }
public static function GetNames($arCodes) { $arID = array(); foreach ($arCodes as $code) { if (preg_match('/^SG([0-9]+)_[A-Z]$/', $code, $match)) { $arID[] = $match[1]; } } if (!empty($arID)) { $arResult = array(); $rsGroups = CSocNetGroup::GetList(array(), array("ID" => $arID)); while ($arGroup = $rsGroups->Fetch()) { $arResult["SG" . $arGroup["ID"] . "_A"] = array("provider" => GetMessage("authprov_sg_socnet_group"), "name" => $arGroup["NAME"] . ": " . GetMessage("authprov_sg_a")); $arResult["SG" . $arGroup["ID"] . "_E"] = array("provider" => GetMessage("authprov_sg_socnet_group"), "name" => $arGroup["NAME"] . ": " . GetMessage("authprov_sg_e")); $arResult["SG" . $arGroup["ID"] . "_K"] = array("provider" => GetMessage("authprov_sg_socnet_group"), "name" => $arGroup["NAME"] . ": " . GetMessage("authprov_sg_k")); } return $arResult; } return false; }
$arGroupID = $arCacheVars["arGroupID"]; } else { $cache->StartDataCache($cache_time, $cache_id, $cache_path); if (defined("BX_COMP_MANAGED_CACHE")) { $GLOBALS["CACHE_MANAGER"]->StartTagCache($cache_path); $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_user2group_U".$GLOBALS["USER"]->GetID()); $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_group"); } $rsGroup = CSocNetGroup::GetList( array(), array("CHECK_PERMISSIONS" => $GLOBALS["USER"]->GetID()), false, false, array("ID") ); while($arGroup = $rsGroup->Fetch()) $arGroupID[] = $arGroup["ID"]; $arCacheData = array( "arGroupID" => $arGroupID ); $cache->EndDataCache($arCacheData); if(defined("BX_COMP_MANAGED_CACHE")) $GLOBALS["CACHE_MANAGER"]->EndTagCache(); } foreach($arDestinations as $key => $arDestination)
@set_time_limit(0); $DB->StartTransaction(); if (!CSocNetGroup::Delete($ID)) { $DB->Rollback(); if ($ex = $APPLICATION->GetException()) { $lAdmin->AddGroupError($ex->GetString(), $ID); } else { $lAdmin->AddGroupError(GetMessage("SONET_DELETE_ERROR"), $ID); } } $DB->Commit(); break; } } } $dbResultList = CSocNetGroup::GetList(array($by => $order), $arFilter, false, false, array("ID", "SUBJECT_ID", "NAME", "SITE_ID", "OWNER_ID")); $dbResultList = new CAdminResult($dbResultList, $sTableID); $dbResultList->NavStart(); $lAdmin->AddHeaders($arHeaders); $lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("SONET_GROUP_NAV"))); $arVisibleColumns = $lAdmin->GetVisibleHeaderColumns(); $arSubjects = array(); $arSubjectsBySite = array(); $dbSitesList = CSite::GetList($b = "sort", $o = "asc"); while ($arSite = $dbSitesList->Fetch()) { $dbSubjectsList = CSocNetGroupSubject::GetList(array("SORT" => "ASC", "ID" => "DESC"), array("SITE_ID" => $arSite["LID"])); while ($arSubject = $dbSubjectsList->Fetch()) { $str = "[" . $arSite["LID"] . "] " . $arSubject["NAME"]; $arSubjectsBySite[$arSite["LID"]][$arSubject["ID"]] = $str; if (!array_key_exists($arSubject["ID"], $arSubjects)) { $arSubjects[$arSubject["ID"]] = $str;
} } if (!$bSkipUpdatesCount) { $arResult['UPDATES_COUNT'] = CTasks::GetUpdatesCount($arViewedDates); } if (!$bSkipGroupsDataFetch) { // collect groups with tasks $arResult['GROUPS'] = array(0 => array('ID' => 0, 'NAME' => GetMessage('MB_TASKS_TASKS_LIST_PSEUDO_GROUP_NAME'), 'META:TASKS_IN_GROUP' => $arGroupsStat[0]['TASKS_IN_GROUP'], 'META:TASKS_STATUSES' => $arGroupsStat[0]['STATUSES'], 'META:TASKS_PRIORITIES' => $arGroupsStat[0]['PRIORITIES'])); // List of groups to be fetched from DB $arGroupsIdsToBeFetched = array(); // Fetch data about all needed groups only if we show list of groups if (count($arGroupsStat)) { $arGroupsIdsToBeFetched = array_keys($arGroupsStat); } if (!empty($arGroupsIdsToBeFetched)) { $rsGroups = CSocNetGroup::GetList(array(), array('ID' => $arGroupsIdsToBeFetched)); while ($arGroup = $rsGroups->Fetch()) { $arGroup['META:TASKS_IN_GROUP'] = $arGroupsStat[(int) $arGroup['ID']]['TASKS_IN_GROUP']; $arGroup['META:TASKS_STATUSES'] = $arGroupsStat[(int) $arGroup['ID']]['STATUSES']; $arGroup['META:TASKS_PRIORITIES'] = $arGroupsStat[(int) $arGroup['ID']]['PRIORITIES']; $arResult['GROUPS'][$arGroup['ID']] = $arGroup; } } // Get name for selected group $arResult['SELECTED_GROUP_NAME'] = false; if ($arParams['GROUP_ID'] !== false) { if (isset($arResult['GROUPS'][$arParams['GROUP_ID']]['NAME'])) { $arResult['SELECTED_GROUP_NAME'] = $arResult['GROUPS'][$arParams['GROUP_ID']]['NAME']; } else { $arResult['SELECTED_GROUP_NAME'] = 'Oops... Programmer mistakes.'; }
} else { // get tagged cached available groups and intersect $cache = new CPHPCache(); $groupCacheID = $userID; $groupCacheDir = "/sonet/groups_available/{$userID}/"; if ($cache->InitCache($arParams['CACHE_TIME'], $groupCacheID, $groupCacheDir)) { $arCacheVars = $cache->GetVars(); $arGroupID = $arCacheVars['arGroupID']; } else { $cache->StartDataCache($arParams['CACHE_TIME'], $groupCacheID, $groupCacheDir); if ($isManagedCacheEnabled) { $cacheManager->StartTagCache($groupCacheDir); $cacheManager->RegisterTag("sonet_user2group_U{$userID}"); $cacheManager->RegisterTag('sonet_group'); } $rsGroup = CSocNetGroup::GetList(array(), array('CHECK_PERMISSIONS' => $userID), false, false, array('ID')); while ($arGroup = $rsGroup->Fetch()) { $arGroupID[] = $arGroup['ID']; } $arCacheData = array('arGroupID' => $arGroupID); if ($isManagedCacheEnabled) { $cacheManager->EndTagCache(); } $cache->EndDataCache($arCacheData); } $GLOBALS['SONET_GROUPS_ID_AVAILABLE'] = $arGroupID; } foreach ($arResult['FEED_DESTINATION']['HIDDEN_GROUPS'] as $group_code => $arBlogSPerm) { if (!in_array($group_code, $arGroupID)) { $arResult['FEED_DESTINATION']['HIDDEN_GROUPS'][$group_code]['NAME'] = GetMessage('CRM_SL_EVENT_EDIT_HIDDEN_GROUP'); }
private static function __GetFields() { $arTaskPriority = array(0, 1, 2); foreach ($arTaskPriority as $k => $v) { $arTaskPriority[$v] = GetMessage("TASK_PRIORITY_" . $v); } $arGroups = array(GetMessage("TASK_EMPTY_GROUP")); if (CModule::IncludeModule("socialnetwork")) { $db = CSocNetGroup::GetList(array("NAME" => "ASC"), array("ACTIVE" => "Y"), false, false, array("ID", "NAME")); while ($ar = $db->GetNext()) { $arGroups[$ar["ID"]] = "[" . $ar["ID"] . "]" . $ar["NAME"]; } } $arFields = array("TITLE" => array("Name" => GetMessage("BPTA1A_TASKNAME"), "Type" => "S", "Filterable" => true, "Editable" => true, "Required" => true, "Multiple" => false, "BaseType" => "string"), "CREATED_BY" => array("Name" => GetMessage("BPTA1A_TASKCREATEDBY"), "Type" => "S:UserID", "Filterable" => true, "Editable" => true, "Required" => true, "Multiple" => false, "BaseType" => "user"), "RESPONSIBLE_ID" => array("Name" => GetMessage("BPTA1A_TASKASSIGNEDTO"), "Type" => "S:UserID", "Filterable" => true, "Editable" => true, "Required" => true, "Multiple" => false, "BaseType" => "user"), "ACCOMPLICES" => array("Name" => GetMessage("BPTA1A_TASKACCOMPLICES"), "Type" => "S:UserID", "Filterable" => true, "Editable" => true, "Required" => false, "Multiple" => true, "BaseType" => "user"), "START_DATE_PLAN" => array("Name" => GetMessage("BPTA1A_TASKACTIVEFROM"), "Type" => "S:DateTime", "Filterable" => true, "Editable" => true, "Required" => false, "Multiple" => false, "BaseType" => "datetime"), "END_DATE_PLAN" => array("Name" => GetMessage("BPTA1A_TASKACTIVETO"), "Type" => "S:DateTime", "Filterable" => true, "Editable" => true, "Required" => false, "Multiple" => false, "BaseType" => "datetime"), "DEADLINE" => array("Name" => GetMessage("BPTA1A_TASKDEADLINE"), "Type" => "S:DateTime", "Filterable" => true, "Editable" => true, "Required" => false, "Multiple" => false, "BaseType" => "datetime"), "DESCRIPTION" => array("Name" => GetMessage("BPTA1A_TASKDETAILTEXT"), "Type" => "T", "Filterable" => true, "Editable" => true, "Required" => false, "Multiple" => false, "BaseType" => "text"), "PRIORITY" => array("Name" => GetMessage("BPTA1A_TASKPRIORITY"), "Type" => "L", "Options" => $arTaskPriority, "Filterable" => true, "Editable" => true, "Required" => false, "Multiple" => false, "BaseType" => "select"), "GROUP_ID" => array("Name" => GetMessage("BPTA1A_TASKGROUPID"), "Type" => "L", "Options" => $arGroups, "Filterable" => true, "Editable" => true, "Required" => false, "Multiple" => false, "BaseType" => "select"), "ALLOW_CHANGE_DEADLINE" => array("Name" => GetMessage("BPTA1A_CHANGE_DEADLINE"), "Type" => "B", "Filterable" => true, "Editable" => true, "Required" => false, "Multiple" => false, "BaseType" => "bool"), "ALLOW_TIME_TRACKING" => array("Name" => GetMessage("BPTA1A_ALLOW_TIME_TRACKING"), "Type" => "B", "Filterable" => true, "Editable" => true, "Required" => false, "Multiple" => false, "BaseType" => "bool"), "TASK_CONTROL" => array("Name" => GetMessage("BPTA1A_CHECK_RESULT"), "Type" => "B", "Filterable" => true, "Editable" => true, "Required" => false, "Multiple" => false, "BaseType" => "bool"), "ADD_IN_REPORT" => array("Name" => GetMessage("BPTA1A_ADD_TO_REPORT"), "Type" => "B", "Filterable" => true, "Editable" => true, "Required" => false, "Multiple" => false, "BaseType" => "bool"), "AUDITORS" => array("Name" => GetMessage("BPTA1A_TASKTRACKERS"), "Type" => "S:UserID", "Filterable" => true, "Editable" => true, "Required" => false, "Multiple" => true, "BaseType" => "user")); $arUserFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("TASKS_TASK", 0, LANGUAGE_ID); foreach ($arUserFields as $field) { $arFields[$field["FIELD_NAME"]] = array("Name" => $field["EDIT_FORM_LABEL"], "Type" => $field["USER_TYPE_ID"], "Filterable" => true, "Editable" => true, "Required" => $field["MANDATORY"] == "Y", "Multiple" => $field["MULTIPLE"] == "Y", "BaseType" => $field["USER_TYPE_ID"], "UserField" => $field); } return $arFields; }
} } } } } $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_GROUPS"] = array(); $arHiddenGroups = array(); if (!empty($arResult["PostToShow"]["FEED_DESTINATION"]["SELECTED"])) { foreach ($arResult["PostToShow"]["FEED_DESTINATION"]["SELECTED"] as $gID => $value) { if ($value == "sonetgroups" && empty($arResult["PostToShow"]["FEED_DESTINATION"]["SONETGROUPS"][$gID])) { $arHiddenGroups[] = substr($gID, 2); } } } if (!empty($arHiddenGroups)) { $rsGroup = CSocNetGroup::GetList(array(), array("ID" => $arHiddenGroups), false, false, array("ID", "NAME")); while ($arGroup = $rsGroup->Fetch()) { $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_GROUPS"][$arGroup["ID"]] = array("ID" => $arGroup["ID"], "NAME" => $arGroup["NAME"]); } if (!CSocNetUser::IsCurrentUserModuleAdmin() && is_object($GLOBALS["USER"])) { $arGroupID = CSocNetLogTools::GetAvailableGroups($arResult["bExtranetUser"] ? "Y" : "N", $arResult["bExtranetSite"] ? "Y" : "N"); foreach ($arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_GROUPS"] as $group_code => $arBlogSPerm) { if (!in_array($group_code, $arGroupID)) { $arResult["PostToShow"]["FEED_DESTINATION"]["HIDDEN_GROUPS"][$group_code]["NAME"] = GetMessage("B_B_HIDDEN_GROUP"); } } } } // intranet structure $arStructure = CSocNetLogDestination::GetStucture(array("LAZY_LOAD" => true)); $arResult["PostToShow"]["FEED_DESTINATION"]['DEPARTMENT'] = $arStructure['department'];
public function executeComponent() { global $APPLICATION; $APPLICATION->SetTitle(GetMessage('TASKS_TITLE_TASKS')); if (!CModule::IncludeModule('tasks')) { ShowError(GetMessage('TASKS_MODULE_NOT_FOUND')); return 0; } if (!CModule::IncludeModule('socialnetwork')) { return 0; } $this->arResult['PROJECTS'] = array(); $this->processParams(); // prepare arResult if (!($this->arResult['LOGGED_IN_USER'] >= 1)) { return 0; } $isAccessible = $this->arParams['USER_ID'] == $this->arResult['LOGGED_IN_USER']; if (!$isAccessible) { ShowError(GetMessage('TASKS_PROJECTS_ACCESS_DENIED')); return 0; } // Get groups where user is member $arGroupsIds = array(); $rsGroupMembers = CSocNetUserToGroup::GetList(array(), array('USER_ID' => $this->arParams['USER_ID']), false, false, array('GROUP_ID')); while ($arGroupMembers = $rsGroupMembers->getNext()) { $arGroupsIds[] = (int) $arGroupMembers['GROUP_ID']; } $arGroupsIds = array_unique(array_filter($arGroupsIds)); $cntAll = $cntInWork = $cntComplete = 0; // totals if (!empty($arGroupsIds)) { $arCounters = $this->getCounts($arGroupsIds); // Get extra data for groups $rsGroup = CSocNetGroup::GetList(array('NAME' => 'ASC'), array('ID' => $arGroupsIds, 'ACTIVE' => 'Y', 'CLOSED' => 'N'), false, false, array('ID', 'NAME', 'IMAGE_ID', 'NUMBER_OF_MEMBERS', 'CLOSED')); while ($arGroup = $rsGroup->getNext()) { $groupId = (int) $arGroup['ID']; $arGroupCounters = $arCounters[$groupId]; // Skip groups without tasks if ($arGroupCounters['ALL'] == 0) { continue; } $groupPath = CComponentEngine::MakePathFromTemplate($this->arResult['PATH_TO_GROUP'], array('group_id' => $groupId)); $groupTasksPath = CComponentEngine::MakePathFromTemplate($this->arResult['PATH_TO_GROUP_TASKS'], array('group_id' => $groupId)); if (strpos($groupTasksPath, '?') !== false) { $groupTasksPath .= '&'; } else { $groupTasksPath .= '?'; } $groupTasksPath .= 'F_CANCEL=Y&F_FILTER_SWITCH_PRESET='; $cntAll += $arGroupCounters['ALL']; $cntInWork += $arGroupCounters['IN_WORK']; $cntComplete += $arGroupCounters['COMPLETE']; $this->arResult['PROJECTS'][$groupId] = array('ID' => $groupId, 'TITLE' => $arGroup['NAME'], '~TITLE' => $arGroup['~NAME'], 'IMAGE_ID' => $arGroup['IMAGE_ID'], 'COUNTERS' => $arGroupCounters, 'NUMBER_OF_MEMBERS' => $arGroup['NUMBER_OF_MEMBERS'], 'PATHES' => array('TO_GROUP' => $groupPath, 'ALL' => $groupTasksPath . CTaskFilterCtrl::STD_PRESET_ALL_MY_TASKS, 'IN_WORK' => $groupTasksPath . CTaskFilterCtrl::STD_PRESET_ACTIVE_MY_TASKS, 'COMPLETE' => $groupTasksPath . CTaskFilterCtrl::STD_PRESET_COMPLETED_MY_TASKS), 'MEMBERS' => array()); } // Get members of groups $rsGroupMembers = CSocNetUserToGroup::GetList(array(), array('GROUP_ID' => $arGroupsIds), false, false, array('GROUP_ID', 'USER_ID', 'ROLE', 'GROUP_OWNER_ID', 'USER_LAST_NAME', 'USER_NAME', 'USER_SECOND_NAME', 'USER_PERSONAL_PHOTO', 'USER_LOGIN', 'USER_PERSONAL_PHOTO', 'USER_WORK_POSITION')); while ($arGroupMember = $rsGroupMembers->getNext()) { $groupId = (int) $arGroupMember['GROUP_ID']; if (!isset($this->arResult['PROJECTS'][$groupId])) { continue; } $memberId = (int) $arGroupMember['USER_ID']; $bGroupOwner = $memberId == $arGroupMember['GROUP_OWNER_ID']; $bGroupModerator = $arGroupMember['ROLE'] == SONET_ROLES_MODERATOR; $this->arResult['PROJECTS'][$groupId]['MEMBERS'][] = array('ID' => $memberId, 'IS_GROUP_OWNER' => $bGroupOwner ? 'Y' : 'N', 'IS_GROUP_MODERATOR' => $bGroupModerator ? 'Y' : 'N', 'PHOTO_ID' => $arGroupMember['USER_PERSONAL_PHOTO'], 'USER_NAME' => $arGroupMember['USER_NAME'], '~USER_NAME' => $arGroupMember['~USER_NAME'], 'USER_LAST_NAME' => $arGroupMember['USER_LAST_NAME'], '~USER_LAST_NAME' => $arGroupMember['~USER_LAST_NAME'], 'USER_SECOND_NAME' => $arGroupMember['USER_SECOND_NAME'], '~USER_SECOND_NAME' => $arGroupMember['~USER_SECOND_NAME'], 'USER_LOGIN' => $arGroupMember['USER_LOGIN'], '~USER_LOGIN' => $arGroupMember['~USER_LOGIN'], 'WORK_POSITION' => (string) $arGroupMember['USER_WORK_POSITION'], '~WORK_POSITION' => (string) $arGroupMember['~USER_WORK_POSITION'], 'HREF' => CComponentEngine::MakePathFromTemplate($this->arResult['PATH_TO_USER'], array('user_id' => $memberId)), 'USER_GENDER' => $arGroupMember['USER_PERSONAL_GENDER'], 'FORMATTED_NAME' => $f = $this->getFormattedUserName($memberId, $arGroupMember['~USER_NAME'], $arGroupMember['~USER_SECOND_NAME'], $arGroupMember['~USER_LAST_NAME'], $arGroupMember['~USER_LOGIN'])); } } $this->arResult['TOTALS'] = array('ALL' => $cntAll, 'IN_WORK' => $cntInWork, 'COMPLETE' => $cntComplete); $this->IncludeComponentTemplate(); }
$arResult["ALLOW_CREATE_GROUP"] = false; if ($GLOBALS["USER"]->IsAuthorized()) { $arResult["Urls"]["GroupCreate"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_CREATE"], array("user_id" => $GLOBALS["USER"]->GetID())); $arResult["ALLOW_CREATE_GROUP"] = CSocNetUser::IsCurrentUserModuleAdmin() || $GLOBALS["APPLICATION"]->GetGroupRight("socialnetwork", false, "Y", "Y", array(SITE_ID, false)) >= "K"; } $arResult["SEARCH_RESULT"] = array(); $arNavParams = array("nPageSize" => $arParams["ITEMS_COUNT"], "bDescPageNumbering" => false); $arNavigation = CDBResult::GetNavParams($arNavParams); $arFilterTmp = array("SITE_ID" => SITE_ID, "ACTIVE" => "Y"); if (!CSocNetUser::IsCurrentUserModuleAdmin()) { $arFilterTmp["CHECK_PERMISSIONS"] = $GLOBALS["USER"]->GetID(); } if ($arParams["SUBJECT_ID"] > 0) { $arFilterTmp["SUBJECT_ID"] = $arParams["SUBJECT_ID"]; } $dbGroups = CSocNetGroup::GetList(array("NAME" => "ASC"), $arFilterTmp, false, $arNavParams, array("ID", "NAME", "DESCRIPTION", "DATE_ACTIVITY", "IMAGE_ID", "NUMBER_OF_MEMBERS", "SUBJECT_NAME", "CLOSED")); while ($arGroup = $dbGroups->GetNext()) { $arGroup["TITLE_FORMATED"] = $arGroup["NAME"]; $arGroup["BODY_FORMATED"] = $arGroup["DESCRIPTION"]; $arGroup["URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arGroup["ID"])); if (intval($arGroup["IMAGE_ID"]) <= 0) { $arGroup["IMAGE_ID"] = COption::GetOptionInt("socialnetwork", "default_group_picture", false, SITE_ID); } $arImage = CSocNetTools::InitImage($arGroup["IMAGE_ID"], 100, "/bitrix/images/socialnetwork/nopic_group_100.gif", 100, $arGroup["URL"], true); $arGroup["IMAGE_FILE"] = $arImage["FILE"]; $arGroup["IMAGE_IMG"] = $arImage["IMG"]; $arGroup["FULL_DATE_CHANGE_FORMATED"] = date($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($arGroup["DATE_ACTIVITY"], CSite::GetDateFormat("FULL"))); $arGroup["ARCHIVE"] = $arGroup["CLOSED"]; $arResult["SEARCH_RESULT"][] = $arGroup; } $arResult["NAV_STRING"] = $dbGroups->GetPageNavStringEx($navComponentObject, GetMessage("SONET_C2411_NAV"), "", false);
function GetAvailableGroups($isExtranetUser = false, $isExtranetSite = false) { static $arSonetGroupIDAvailable = false; if (is_array($arSonetGroupIDAvailable)) { return $arSonetGroupIDAvailable; } else { $arSonetGroupIDAvailable = array(); if (!$isExtranetUser) { $isExtranetUser = CModule::IncludeModule("extranet") && !CExtranet::IsIntranetUser() ? "Y" : "N"; } if (!$isExtranetSite) { $isExtranetSite = CModule::IncludeModule("extranet") && CExtranet::IsExtranetSite() ? "Y" : "N"; } $cache = new CPHPCache(); $cache_time = 31536000; $cache_id = $GLOBALS["USER"]->GetID() . ($isExtranetUser == "Y" ? "_ex" : ""); $cache_path = "/sonet/groups_available/" . $GLOBALS["USER"]->GetID() . "/"; if ($cache->InitCache($cache_time, $cache_id, $cache_path)) { $arCacheVars = $cache->GetVars(); $arSonetGroupIDAvailable = $arCacheVars["arGroupID"]; } else { $cache->StartDataCache($cache_time, $cache_id, $cache_path); if (defined("BX_COMP_MANAGED_CACHE")) { $GLOBALS["CACHE_MANAGER"]->StartTagCache($cache_path); $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_user2group_U" . $GLOBALS["USER"]->GetID()); $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_group"); } $arFilter = array("CHECK_PERMISSIONS" => $GLOBALS["USER"]->GetID()); if ($isExtranetUser == "Y" && $isExtranetSite == "Y" && CModule::IncludeModule("extranet")) { $arFilter["SITE_ID"] = CExtranet::GetExtranetSiteID(); } $rsGroup = CSocNetGroup::GetList(array(), $arFilter, false, false, array("ID")); while ($arGroup = $rsGroup->Fetch()) { $arSonetGroupIDAvailable[] = $arGroup["ID"]; } $arCacheData = array("arGroupID" => $arSonetGroupIDAvailable); if (defined("BX_COMP_MANAGED_CACHE")) { $GLOBALS["CACHE_MANAGER"]->EndTagCache(); } $cache->EndDataCache($arCacheData); } return $arSonetGroupIDAvailable; } }
public static function getGroupUsers($arFields, $n, $server) { $GROUP_ID = intval($arFields['ID']); if($GROUP_ID > 0) { $dbRes = CSocNetGroup::GetList(array(), array( 'ID' => $GROUP_ID, 'CHECK_PERMISSIONS' => 'Y' )); $arGroup = $dbRes->Fetch(); if(is_array($arGroup)) { $dbRes = CSocNetUserToGroup::GetList( array('ID' => 'ASC'), array( 'GROUP_ID' => $arGroup['ID'], '<=ROLE' => SONET_ROLES_USER ), false, false, array('USER_ID', 'ROLE') ); $res = array(); while ($arRes = $dbRes->Fetch()) { $res[] = $arRes; } return $res; } else { throw new Exception('Socialnetwork group not found'); } } else { throw new Exception('Wrong socialnetwork group ID'); } }
} } unset($record); if (!empty($arUsersIds)) { $arUsersIds = array_unique(array_filter($arUsersIds)); if (!empty($arUsersIds)) { $rsUsers = CUser::GetList($by = 'ID', $order = 'ASC', array('ID' => implode('|', $arUsersIds)), array('FIELDS' => array('ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN'))); while ($arUser = $rsUsers->getNext()) { $arResult['USERS_DATA'][$arUser['ID']] = $arUser; } } } if (!empty($arGroupsIds)) { $arGroupsIds = array_unique(array_filter(array_values($arGroupsIds))); if (!empty($arGroupsIds)) { $rsGroups = CSocNetGroup::GetList(array('ID' => 'ASC'), array('ID' => $arGroupsIds), false, false, array('ID', 'NAME')); while ($arGroup = $rsGroups->getNext()) { $arGroup['URL'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_GROUP'], array('group_id' => $arGroup['ID'])); $arResult['GROUPS_DATA'][$arGroup['ID']] = $arGroup; } } } if (!empty($arTasksIds)) { $arTasksIds = array_unique(array_filter($arTasksIds)); if (!empty($arTasksIds)) { $rsTasks = CTasks::GetList(array('ID' => 'ASC'), array('ID' => $arTasksIds), array('ID', 'TITLE')); while ($arTask = $rsTasks->getNext()) { $arTask['URL'] = CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_TASKS_TASK'], array('task_id' => $arTask['ID'], 'action' => 'view')); $arResult['TASKS_DATA'][$arTask['ID']] = $arTask; } }
$arResult["TZ_OFFSET"] = CTimeZone::GetOffset(); if ($arParams["EMPTY_PAGE"] != "Y") { CSocNetTools::InitGlobalExtranetArrays(); $arTmpEventsNew = array(); $arResult["Events"] = false; $arFilter = array(); if ($arParams["LOG_ID"] > 0) { $arFilter["ID"] = $arParams["LOG_ID"]; } elseif ($arResult["AJAX_CALL"] && intval($arParams["NEW_LOG_ID"]) > 0) { $arFilter["ID"] = $arParams["NEW_LOG_ID"]; } else { if ($arParams["DESTINATION"] > 0) { $arFilter["LOG_RIGHTS"] = $arParams["DESTINATION"]; } elseif ($arParams["GROUP_ID"] > 0) { $arFilter["LOG_RIGHTS"] = "SG" . intval($arParams["GROUP_ID"]); $rsSonetGroup = CSocNetGroup::GetList(array(), array("ID" => intval($arParams["GROUP_ID"]), "CHECK_PERMISSIONS" => $GLOBALS["USER"]->GetId()), false, false, array("ID", "NAME")); if ($arSonetGroup = $rsSonetGroup->Fetch()) { $arResult["GROUP_NAME"] = $arSonetGroup["NAME"]; } } } if ($arParams["LOG_ID"] <= 0 && intval($arParams["NEW_LOG_ID"]) <= 0) { if (isset($arParams["EXACT_EVENT_ID"])) { $arFilter["EVENT_ID"] = array($arParams["EXACT_EVENT_ID"]); } elseif (is_array($arParams["EVENT_ID"])) { $event_id_fullset_tmp = array(); foreach ($arParams["EVENT_ID"] as $event_id_tmp) { $event_id_fullset_tmp = array_merge($event_id_fullset_tmp, CSocNetLogTools::FindFullSetByEventID($event_id_tmp)); } $arFilter["EVENT_ID"] = array_unique($event_id_fullset_tmp); } elseif ($arParams["EVENT_ID"]) {
function GetByID($ID, $bCheckPermissions = false) { global $DB, $USER; if (!CSocNetGroup::__ValidateID($ID)) { return false; } $ID = IntVal($ID); $cacheArrayKey = $bCheckPermissions ? "Y" : "N"; if (is_array($GLOBALS["SONET_GROUP_CACHE"]) && is_array($GLOBALS["SONET_GROUP_CACHE"][$ID]) && is_array($GLOBALS["SONET_GROUP_CACHE"][$cacheArrayKey])) { return $GLOBALS["SONET_GROUP_CACHE"][$ID][$cacheArrayKey]; } else { if (!$bCheckPermissions) { $cache = new CPHPCache(); $cache_time = 31536000; $cache_id = "group_" . $ID . "_" . LANGUAGE_ID . "_" . CTimeZone::GetOffset(); $cache_path = "/sonet/group/" . $ID . "/"; } if (is_object($cache) && $cache->InitCache($cache_time, $cache_id, $cache_path)) { $arCacheVars = $cache->GetVars(); $arResult = $arCacheVars["FIELDS"]; } else { if (is_object($cache)) { $cache->StartDataCache($cache_time, $cache_id, $cache_path); } $arFilter = array("ID" => $ID); if ($bCheckPermissions && $USER->GetID() > 0) { $arFilter["CHECK_PERMISSIONS"] = $USER->GetID(); } $dbResult = CSocNetGroup::GetList(array(), $arFilter, false, false, array("ID", "SITE_ID", "NAME", "DESCRIPTION", "DATE_CREATE", "DATE_UPDATE", "ACTIVE", "VISIBLE", "OPENED", "CLOSED", "SUBJECT_ID", "OWNER_ID", "KEYWORDS", "IMAGE_ID", "NUMBER_OF_MEMBERS", "NUMBER_OF_MODERATORS", "INITIATE_PERMS", "SPAM_PERMS", "DATE_ACTIVITY", "SUBJECT_NAME", "UF_*")); if ($arResult = $dbResult->GetNext()) { if (defined("BX_COMP_MANAGED_CACHE")) { $GLOBALS["CACHE_MANAGER"]->StartTagCache($cache_path); $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_group_" . $ID); $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_group"); } $arResult["NAME_FORMATTED"] = $arResult["NAME"]; } else { $arResult = false; } if (is_object($cache)) { $arCacheData = array("FIELDS" => $arResult); $cache->EndDataCache($arCacheData); if (defined("BX_COMP_MANAGED_CACHE")) { $GLOBALS["CACHE_MANAGER"]->EndTagCache(); } } } if (!array_key_exists("SONET_GROUP_CACHE", $GLOBALS) || !is_array($GLOBALS["SONET_GROUP_CACHE"])) { $GLOBALS["SONET_GROUP_CACHE"] = array(); } if (!array_key_exists($ID, $GLOBALS["SONET_GROUP_CACHE"]) || !is_array($GLOBALS["SONET_GROUP_CACHE"][$cacheArrayKey])) { $GLOBALS["SONET_GROUP_CACHE"][$ID] = array(); } $GLOBALS["SONET_GROUP_CACHE"][$ID][$cacheArrayKey] = $arResult; return $arResult; } }
$parser = new CTextParser(); $arData['~DESCRIPTION'] = $parser->convertText($arData['META:DESCRIPTION_FOR_BBCODE']); $arData['DESCRIPTION'] = $arData['~DESCRIPTION']; } $arResult["DATA"] = $arData; // base template, if any if (intval($arResult["DATA"]['BASE_TEMPLATE_ID'])) { $baseTemplate = CTaskTemplates::GetList(array(), array("ID" => $arResult["DATA"]['BASE_TEMPLATE_ID']), array(), array('USER_ID' => $USER->getId()), array('*'))->GetNext(); if (is_array($baseTemplate)) { $arResult["DATA"]['BASE_TEMPLATE_DATA'] = $baseTemplate; } else { unset($arResult["DATA"]['BASE_TEMPLATE_ID']); } } // groups $rsGroups = CSocNetGroup::GetList(array("NAME" => "ASC"), array("SITE_ID" => SITE_ID)); $arResult["GROUPS"] = array(); $groupIDs = array(); while ($group = $rsGroups->GetNext()) { $arResult["GROUPS"][$group["ID"]] = $group; $groupIDs[] = $group["ID"]; } if (sizeof($groupIDs) > 0) { $arGroupsPerms = CSocNetFeaturesPerms::CurrentUserCanPerformOperation(SONET_ENTITY_GROUP, $groupIDs, "tasks", "create_tasks"); foreach ($arResult["GROUPS"] as $key => $group) { if (!$arGroupsPerms[$group["ID"]]) { unset($arResult["GROUPS"][$key]); } } } $sTitle = "";
$strGroupSubjectLinkTemplate = COption::GetOptionString("socialnetwork", "subject_path_template", "/workgroups/group/search/#subject_id#/"); $strGroupLinkTemplate = COption::GetOptionString("socialnetwork", "group_path_template", "/workgroups/group/#group_id#/"); if (SITE_TEMPLATE_ID == "bitrix24") { if (CModule::IncludeModule("extranet") && CBXFeatures::IsFeatureEnabled('Workgroups') && CBXFeatures::IsFeatureEnabled('Extranet')) { global $USER; $USER_ID = $USER->GetID(); $arExSGGroup = array(); if (CModule::IncludeModule("socialnetwork")) { if (defined("BX_COMP_MANAGED_CACHE")) { global $CACHE_MANAGER; $CACHE_MANAGER->RegisterTag('sonet_user2group_U' . $USER_ID); } // get all groups from current site (if not extranet) if (SITE_ID != CExtranet::GetExtranetSiteID()) { $arGroupForCheck = array(); $dbGroups = CSocNetGroup::GetList(array(), array("SITE_ID" => SITE_ID), false, false, array('ID')); while ($arGroups = $dbGroups->GetNext()) { $arGroupForCheck[] = $arGroups["ID"]; } } if (!is_array($arGroupForCheck) || count($arGroupForCheck) > 0) { $arGroupFilterMy = array("USER_ID" => $USER_ID, "<=ROLE" => SONET_ROLES_USER, "GROUP_ACTIVE" => "Y", "!GROUP_CLOSED" => "Y", "GROUP_SITE_ID" => CExtranet::GetExtranetSiteID()); if (count($arGroupForCheck) > 0) { $arGroupFilterMy["GROUP_ID"] = $arGroupForCheck; } // Socialnetwork $dbGroups = CSocNetUserToGroup::GetList(array("GROUP_NAME" => "ASC"), $arGroupFilterMy, false, false, array('ID', 'GROUP_ID', 'GROUP_NAME')); while ($arGroups = $dbGroups->GetNext()) { $arExSGGroup[] = array($arGroups["GROUP_NAME"], str_replace("#group_id#", $arGroups["GROUP_ID"], $strGroupLinkTemplate), array(), array(), ""); if (defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->RegisterTag('sonet_group_' . $arGroups["ID"]);
$arParams["DATE_TIME_FORMAT"] = StrLen($arParams["DATE_TIME_FORMAT"]) <= 0 ? $DB->DateFormatToPHP(CSite::GetDateFormat("FULL")) : $arParams["DATE_TIME_FORMAT"]; $arParams["DISPLAY_PICTURE"] = $arParams["DISPLAY_PICTURE"] != "N" ? "Y" : "N"; $arParams["DISPLAY_IMAGE"] = $arParams["DISPLAY_PICTURE"]; $arParams["DISPLAY_DESCRIPTION"] = $arParams["DISPLAY_DESCRIPTION"] != "N" ? "Y" : "N"; $arParams["DISPLAY_NUMBER_OF_MEMBERS"] = $arParams["DISPLAY_NUMBER_OF_MEMBERS"] != "N" ? "Y" : "N"; $arParams["DISPLAY_SUBJECT"] = $arParams["DISPLAY_SUBJECT"] != "N" ? "Y" : "N"; $arParams["FILTER_MY"] = $arParams["FILTER_MY"] != "Y" ? "N" : "Y"; if ($arParams["FILTER_MY"] != "Y") { if ($this->StartResultCache(false, false)) { if (!CModule::IncludeModule("socialnetwork")) { $this->AbortResultCache(); ShowError(GetMessage("SONET_MODULE_NOT_INSTALL")); return; } $arResult["Urls"]["GroupSearch"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_SEARCH"], array()); $dbGroups = CSocNetGroup::GetList(array("DATE_ACTIVITY" => "DESC", "NAME" => "ASC"), array("SITE_ID" => SITE_ID, "VISIBLE" => "Y", "ACTIVE" => "Y"), false, array("nTopCount" => $arParams["ITEMS_COUNT"]), array("ID", "NAME", "DESCRIPTION", "DATE_ACTIVITY", "IMAGE_ID", "NUMBER_OF_MEMBERS", "SUBJECT_NAME")); $arResult["Groups"] = array(); while ($arGroup = $dbGroups->GetNext()) { $arGroup["GROUP_URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arGroup["ID"])); if (intval($arGroup["IMAGE_ID"]) <= 0) { $arGroup["IMAGE_ID"] = COption::GetOptionInt("socialnetwork", "default_group_picture", false, SITE_ID); } $arImage = CSocNetTools::InitImage($arGroup["IMAGE_ID"], 50, "/bitrix/images/socialnetwork/nopic_group_50.gif", 50, $arGroup["GROUP_URL"], true); $arGroup["IMAGE_FILE"] = $arImage["FILE"]; $arGroup["IMAGE_IMG"] = $arImage["IMG"]; $arGroup["FULL_DATE_CHANGE_FORMATED"] = date($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($arGroup["DATE_ACTIVITY"], CSite::GetDateFormat("FULL"))); $arResult["Groups"][] = $arGroup; } $this->IncludeComponentTemplate(); } } else {
protected static function groupSectionCreate($groupId) { $groupLib = CWebDavIblock::LibOptions('group_files', false, SITE_ID); if (!$groupLib || !isset($groupLib['id']) || !($iblockId = intval($groupLib['id']))) { return false; } $result = CIBlockWebdavSocnet::GetSectionID($iblockId, 'group', $groupId); if (intval($result) > 0) { return $result; } $dbRes = CUserTypeEntity::GetList(array($by => $order), array("ENTITY_ID" => "IBLOCK_" . $iblockId . "_SECTION", "FIELD_NAME" => "UF_USE_BP")); if (!$dbRes || !($res = $dbRes->GetNext())) { $arFields = array("ENTITY_ID" => "IBLOCK_" . $iblockId . "_SECTION", "FIELD_NAME" => "UF_USE_BP", "USER_TYPE_ID" => "string", "MULTIPLE" => "N", "MANDATORY" => "N", "SETTINGS" => array("DEFAULT_VALUE" => "Y")); $arFieldName = array(); $rsLanguage = CLanguage::GetList($by, $order, array()); while ($arLanguage = $rsLanguage->Fetch()) { $dir = str_replace(array("\\", "//"), "/", dirname(__FILE__)); $dirs = explode("/", $dir); array_pop($dirs); $file = trim(implode("/", $dirs) . "/lang/" . $arLanguage["LID"] . "/include/webdav_settings.php"); $tmp_mess = __IncludeLang($file, true); $arFieldName[$arLanguage["LID"]] = empty($tmp_mess["SONET_UF_USE_BP"]) ? "Use Business Process" : $tmp_mess["SONET_UF_USE_BP"]; } $arFields["EDIT_FORM_LABEL"] = $arFieldName; $obUserField = new CUserTypeEntity(); $obUserField->Add($arFields); $GLOBALS["USER_FIELD_MANAGER"]->arFieldsCache = array(); } $arFields = array("IBLOCK_ID" => $iblockId, "ACTIVE" => "Y", "SOCNET_GROUP_ID" => false, "IBLOCK_SECTION_ID" => 0, "UF_USE_BP" => "N"); $arFields["SOCNET_GROUP_ID"] = $groupId; $arFields["NAME"] = GetMessage("SONET_GROUP_PREFIX") . $groupId; $dbGroup = CSocNetGroup::GetList(array(), array("ID" => (int) $groupId), false, false, array("ID", "SITE_ID", "NAME")); if ($arGroup = $dbGroup->Fetch()) { $arFields["NAME"] = GetMessage("SONET_GROUP_PREFIX") . $arGroup["NAME"]; } if (CIBlock::GetarrayByID($iblockId, "RIGHTS_MODE") === "E") { $arTasks = CWebDavIblock::GetTasks(); $arFields['RIGHTS'] = array('n0' => array('GROUP_CODE' => 'SG' . $arFields["SOCNET_GROUP_ID"] . '_A', 'TASK_ID' => $arTasks['X']), 'n1' => array('GROUP_CODE' => 'SG' . $arFields["SOCNET_GROUP_ID"] . '_E', 'TASK_ID' => $arTasks['W']), 'n2' => array('GROUP_CODE' => 'SG' . $arFields["SOCNET_GROUP_ID"] . '_K', 'TASK_ID' => $arTasks['W'])); } $GLOBALS["UF_USE_BP"] = $arFields["UF_USE_BP"]; $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("IBLOCK_" . $iblockId . "_SECTION", $arFields); $bs = new CIBlockSection(); $sectionId = $bs->Add($arFields); if (!$sectionId) { return false; } return $sectionId; }
$data = $cachedData["DATA"]; $dataId = $cachedData["dataId"]; } else { $GLOBALS["CACHE_MANAGER"]->StartTagCache($cache_path); $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_user2group_U" . $userId); $GLOBALS["CACHE_MANAGER"]->RegisterTag("sonet_group"); $data = array(); $arFilter = array('ID' => array(), 'ACTIVE' => 'Y'); $dbUserGroups = CSocNetUserToGroup::GetList(array('GROUP_NAME' => 'ASC'), array('USER_ID' => $userId, '<=ROLE' => SONET_ROLES_USER, 'GROUP_ACTIVE' => 'Y'), false, false, array('GROUP_ID')); if ($dbUserGroups) { while ($arUserGroups = $dbUserGroups->GetNext()) { $arFilter['ID'][] = $arUserGroups['GROUP_ID']; } } if (count($arFilter['ID']) > 0) { $dbSocnetGroup = CSocNetGroup::GetList(array('NAME' => 'ASC'), $arFilter, false, false, array('ID', 'NAME', 'IMAGE_ID')); $woGroupName = GetMessage('MB_TASKS_TASK_EDIT_WO_GROUP'); if (ToUpper(SITE_CHARSET) !== 'UTF-8') { $woGroupName = $APPLICATION->ConvertCharsetArray($woGroupName, SITE_CHARSET, 'utf-8'); } $data[] = array('ID' => 0, 'NAME' => (string) $woGroupName, 'OUTSECTION' => 1); while ($arSocnetGroup = $dbSocnetGroup->Fetch()) { if (intval($arSocnetGroup['IMAGE_ID']) > 0) { $arImage = CFile::ResizeImageGet($arSocnetGroup['IMAGE_ID'], array('width' => 80, 'height' => 80), BX_RESIZE_IMAGE_EXACT, false); $img_src = (string) $arImage['src']; } else { $img_src = false; } $tmpData = array('ID' => (string) $arSocnetGroup['ID'], 'NAME' => (string) $arSocnetGroup['NAME'], 'IMAGE' => $img_src); if (ToUpper(SITE_CHARSET) !== 'UTF-8') { $tmpData = $APPLICATION->ConvertCharsetArray($tmpData, SITE_CHARSET, 'utf-8');
$ttl = 2592000; } else { $ttl = 600; } $cache_id = 'sonet_ex_gr_' . SITE_ID; $obCache = new CPHPCache(); $cache_dir = '/bitrix/sonet_log_sg'; if ($obCache->InitCache($ttl, $cache_id, $cache_dir)) { $tmpVal = $obCache->GetVars(); $GLOBALS["arExtranetGroupID"] = $tmpVal['EX_GROUP_ID']; $GLOBALS["arExtranetUserID"] = $tmpVal['EX_USER_ID']; unset($tmpVal); } elseif (CModule::IncludeModule("extranet") && !CExtranet::IsExtranetSite()) { global $CACHE_MANAGER; $CACHE_MANAGER->StartTagCache($cache_dir); $dbGroupTmp = CSocNetGroup::GetList(array(), array("SITE_ID" => CExtranet::GetExtranetSiteID()), false, false, array("ID")); while ($arGroupTmp = $dbGroupTmp->Fetch()) { $GLOBALS["arExtranetGroupID"][] = $arGroupTmp["ID"]; $CACHE_MANAGER->RegisterTag('sonet_group_' . $arGroupTmp["ID"]); } $rsUsers = CUser::GetList($by = "ID", $order = "asc", array("GROUPS_ID" => array(CExtranet::GetExtranetUserGroupID()), "UF_DEPARTMENT" => false)); while ($arUser = $rsUsers->Fetch()) { $GLOBALS["arExtranetUserID"][] = $arUser["ID"]; $CACHE_MANAGER->RegisterTag('sonet_user2group_U' . $arUser["ID"]); } $CACHE_MANAGER->EndTagCache(); if ($obCache->StartDataCache()) { $obCache->EndDataCache(array('EX_GROUP_ID' => $GLOBALS["arExtranetGroupID"], 'EX_USER_ID' => $GLOBALS["arExtranetUserID"])); } } unset($obCache);
public static function GetAccountsList($type, $arOrder = array(), $arFilter = array()) { $arResult = array(); if ($type == "group") { if (CModule::IncludeModule("socialnetwork")) { $arFilter = array_merge($arFilter, array("ACTIVE" => "Y", "VISIBLE" => "Y")); $dbGroup = CSocNetGroup::GetList($arOrder, $arFilter); if ($arGroup = $dbGroup->Fetch()) { $arResult[] = self::ExtractAccountFromGroup($arGroup); } return $arResult; } } $arFilter = array_merge($arFilter, array("ACTIVE" => "Y")); $dbUsers = CUser::GetList($by, $order, $arFilter); if ($arUser = $dbUsers->Fetch()) { $arResult[] = self::ExtractAccountFromUser($arUser); } return $arResult; }
define("STOP_STATISTICS", true); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; require_once "functions.php"; CModule::IncludeModule('socialnetwork'); if (!$USER->IsAuthorized()) { die; } $SITE_ID = isset($_GET["SITE_ID"]) ? $_GET["SITE_ID"] : SITE_ID; if ($_REQUEST["mode"] == "search") { CUtil::decodeURIComponent($_GET); $APPLICATION->RestartBuffer(); CSocNetTools::InitGlobalExtranetArrays($SITE_ID); $arFilter = array("SITE_ID" => $SITE_ID, "%NAME" => $_GET["query"]); if (!CSocNetUser::IsCurrentUserModuleAdmin($SITE_ID)) { $arFilter["CHECK_PERMISSIONS"] = $USER->GetID(); } $rsGroups = CSocNetGroup::GetList(array("NAME" => "ASC"), $arFilter); $arGroups = array(); while ($arGroup = $rsGroups->Fetch()) { if (isset($GLOBALS["arExtranetGroupID"]) && is_array($GLOBALS["arExtranetGroupID"]) && in_array($arGroup["ID"], $GLOBALS["arExtranetGroupID"])) { $arGroup["IS_EXTRANET"] = "Y"; } $arGroups[] = group2JSItem($arGroup); } if (isset($_REQUEST["features_perms"]) && sizeof($_REQUEST["features_perms"]) == 2) { filterByFeaturePerms($arGroups, $_REQUEST["features_perms"]); } Header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET); echo CUtil::PhpToJsObject($arGroups); die; }
function CanPerformOperation($userID, $type, $id, $feature, $operation, $bCurrentUserIsAdmin = false) { global $arSocNetAllowedEntityTypes; $arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures(); $userID = IntVal($userID); if (is_array($id) && count($id) <= 0 || !is_array($id) && $id <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GF_EMPTY_ENTITY_ID"), "ERROR_EMPTY_ENTITY_ID"); return false; } $type = Trim($type); if (StrLen($type) <= 0 || !in_array($type, $arSocNetAllowedEntityTypes)) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_GF_ERROR_NO_ENTITY_TYPE"), "ERROR_EMPTY_TYPE"); return false; } $featureOperationPerms = CSocNetFeaturesPerms::GetOperationPerm($type, $id, $feature, $operation); if ($type == SONET_ENTITY_GROUP) { $bWorkWithClosedGroups = COption::GetOptionString("socialnetwork", "work_with_closed_groups", "N") == "Y"; if (is_array($id)) { $arGroupToGet = array(); foreach ($id as $group_id) { if ($featureOperationPerms[$group_id] == false) { $arReturn[$group_id] = false; } else { $arGroupToGet[] = $group_id; } } $userRoleInGroup = CSocNetUserToGroup::GetUserRole($userID, $arGroupToGet); $arGroupToGet = array(); if (is_array($userRoleInGroup)) { foreach ($userRoleInGroup as $group_id => $role) { if ($userRoleInGroup[$group_id] == SONET_ROLES_BAN) { $arReturn[$group_id] = false; } else { $arGroupToGet[] = $group_id; } } } if (is_array($arGroupToGet) && count($arGroupToGet) <= 0 || !is_array($arGroupToGet) && intval($arGroupToGet) <= 0) { $arReturn = array(); foreach ($id as $group_id) { $arReturn[$group_id] = false; } return $arReturn; } $resGroupTmp = CSocNetGroup::GetList(array("ID" => "ASC"), array("ID" => $arGroupToGet)); while ($arGroupTmp = $resGroupTmp->Fetch()) { if ($arGroupTmp["CLOSED"] == "Y" && !in_array($operation, $arSocNetFeaturesSettings[$feature]["minoperation"])) { if (!$bWorkWithClosedGroups) { $arReturn[$arGroupTmp["ID"]] = false; continue; } else { $featureOperationPerms[$arGroupTmp["ID"]] = SONET_ROLES_OWNER; } } if ($bCurrentUserIsAdmin) { $arReturn[$arGroupTmp["ID"]] = true; continue; } if ($featureOperationPerms[$arGroupTmp["ID"]] == SONET_ROLES_ALL) { if ($arGroupTmp["VISIBLE"] == "N") { $featureOperationPerms[$arGroupTmp["ID"]] = SONET_ROLES_USER; } else { $arReturn[$arGroupTmp["ID"]] = true; continue; } } if ($featureOperationPerms[$arGroupTmp["ID"]] == SONET_ROLES_AUTHORIZED) { if ($userID > 0) { $arReturn[$arGroupTmp["ID"]] = true; continue; } else { $arReturn[$arGroupTmp["ID"]] = false; continue; } } if ($userRoleInGroup[$arGroupTmp["ID"]] == false) { $arReturn[$arGroupTmp["ID"]] = false; continue; } if ($featureOperationPerms[$arGroupTmp["ID"]] == SONET_ROLES_MODERATOR) { if ($userRoleInGroup[$arGroupTmp["ID"]] == SONET_ROLES_MODERATOR || $userRoleInGroup[$arGroupTmp["ID"]] == SONET_ROLES_OWNER) { $arReturn[$arGroupTmp["ID"]] = true; continue; } else { $arReturn[$arGroupTmp["ID"]] = false; continue; } } elseif ($featureOperationPerms[$arGroupTmp["ID"]] == SONET_ROLES_USER) { if ($userRoleInGroup[$arGroupTmp["ID"]] == SONET_ROLES_MODERATOR || $userRoleInGroup[$arGroupTmp["ID"]] == SONET_ROLES_OWNER || $userRoleInGroup[$arGroupTmp["ID"]] == SONET_ROLES_USER) { $arReturn[$arGroupTmp["ID"]] = true; continue; } else { $arReturn[$arGroupTmp["ID"]] = false; continue; } } elseif ($featureOperationPerms[$arGroupTmp["ID"]] == SONET_ROLES_OWNER) { if ($userRoleInGroup[$arGroupTmp["ID"]] == SONET_ROLES_OWNER) { $arReturn[$arGroupTmp["ID"]] = true; continue; } else { $arReturn[$arGroupTmp["ID"]] = false; continue; } } } return $arReturn; } else { $id = IntVal($id); if ($featureOperationPerms == false) { return false; } $userRoleInGroup = CSocNetUserToGroup::GetUserRole($userID, $id); if ($userRoleInGroup == SONET_ROLES_BAN) { return false; } $arGroupTmp = CSocNetGroup::GetByID($id); if ($arGroupTmp["CLOSED"] == "Y" && !in_array($operation, $arSocNetFeaturesSettings[$feature]["minoperation"])) { if (!$bWorkWithClosedGroups) { return false; } else { $featureOperationPerms = SONET_ROLES_OWNER; } } if ($bCurrentUserIsAdmin) { return true; } if ($featureOperationPerms == SONET_ROLES_ALL) { if ($arGroupTmp["VISIBLE"] == "N") { $featureOperationPerms = SONET_ROLES_USER; } else { return true; } } if ($featureOperationPerms == SONET_ROLES_AUTHORIZED) { return $userID > 0; } if ($userRoleInGroup == false) { return false; } if ($featureOperationPerms == SONET_ROLES_MODERATOR) { return in_array($userRoleInGroup, array(SONET_ROLES_MODERATOR, SONET_ROLES_OWNER)); } elseif ($featureOperationPerms == SONET_ROLES_USER) { return in_array($userRoleInGroup, array(SONET_ROLES_MODERATOR, SONET_ROLES_OWNER, SONET_ROLES_USER)); } elseif ($featureOperationPerms == SONET_ROLES_OWNER) { return $userRoleInGroup == SONET_ROLES_OWNER; } } } else { if (is_array($id)) { foreach ($id as $entity_id) { if ($featureOperationPerms[$entity_id] == false) { $arReturn[$entity_id] = false; continue; } $usersRelation = CSocNetUserRelations::GetRelation($userID, $entity_id); if ($type == SONET_ENTITY_USER && $userID == $entity_id) { $arReturn[$entity_id] = true; continue; } if ($bCurrentUserIsAdmin) { $arReturn[$entity_id] = true; continue; } if ($userID == $entity_id) { $arReturn[$entity_id] = true; continue; } if ($usersRelation == SONET_RELATIONS_BAN) { if (!IsModuleInstalled("im")) { $arReturn[$entity_id] = false; continue; } } if ($featureOperationPerms[$entity_id] == SONET_RELATIONS_TYPE_NONE) { $arReturn[$entity_id] = false; continue; } if ($featureOperationPerms[$entity_id] == SONET_RELATIONS_TYPE_ALL) { $arReturn[$entity_id] = true; continue; } if ($featureOperationPerms[$entity_id] == SONET_RELATIONS_TYPE_AUTHORIZED) { $arReturn[$entity_id] = $userID > 0; continue; } if ($featureOperationPerms[$entity_id] == SONET_RELATIONS_TYPE_FRIENDS || $featureOperationPerms[$entity_id] == SONET_RELATIONS_TYPE_FRIENDS2) { $arReturn[$entity_id] = CSocNetUserRelations::IsFriends($userID, $entity_id); continue; } } return $arReturn; } else { if ($featureOperationPerms == false) { return false; } if ($type == SONET_ENTITY_USER && $userID == $id) { return true; } if ($bCurrentUserIsAdmin) { return true; } if ($userID == $id) { return true; } $usersRelation = CSocNetUserRelations::GetRelation($userID, $id); if ($usersRelation == SONET_RELATIONS_BAN && !IsModuleInstalled("im")) { return false; } if ($featureOperationPerms == SONET_RELATIONS_TYPE_NONE) { return false; } if ($featureOperationPerms == SONET_RELATIONS_TYPE_ALL) { return true; } if ($featureOperationPerms == SONET_RELATIONS_TYPE_AUTHORIZED) { return $userID > 0; } if ($featureOperationPerms == SONET_RELATIONS_TYPE_FRIENDS || $featureOperationPerms == SONET_RELATIONS_TYPE_FRIENDS2) { return CSocNetUserRelations::IsFriends($userID, $id); } } } return false; }
public static function requestGroupUser($arFields) { $groupID = $arFields['GROUP_ID']; $message = $arFields['MESSAGE']; if(intval($groupID) <= 0) throw new Exception('Wrong group ID'); $dbRes = CSocNetGroup::GetList(array(), array( "ID" => $groupID, "CHECK_PERMISSIONS" => "Y" )); $arGroup = $dbRes->Fetch(); if(is_array($arGroup)) { $url = (CMain::IsHTTPS() ? "https://" : "http://").$_SERVER["HTTP_HOST"].CComponentEngine::MakePathFromTemplate("/workgroups/group/#group_id#/requests/", array("group_id" => $arGroup["ID"])); if (!CSocNetUserToGroup::SendRequestToBeMember($GLOBALS["USER"]->GetID(), $arGroup["ID"], $message, $url, false)) throw new Exception('Cannot request to join group'); return true; } else throw new Exception('Socialnetwork group not found'); }
function AddFilterParams(&$arComponentParameters, $arCurrentValues, $name, $parent, $MULTIPLE = "Y") { $arComponentParameters["PARAMETERS"][$name] = array("PARENT" => $parent, "NAME" => GetMessage("SEARCH_CP_WHERE_FILTER"), "TYPE" => "LIST", "MULTIPLE" => $MULTIPLE, "VALUES" => CSearchParameters::GetFilterDropDown(true), "DEFAULT" => "all", "REFRESH" => "Y"); if (!is_array($arCurrentValues[$name]) && strlen($arCurrentValues[$name]) > 0) { $arCurrentValues[$name] = array($arCurrentValues[$name]); } if (is_array($arCurrentValues[$name])) { foreach ($arCurrentValues[$name] as $strFILTER) { if ($strFILTER == "main") { $arComponentParameters["PARAMETERS"][$name . "_" . $strFILTER] = array("PARENT" => $parent, "NAME" => GetMessage("SEARCH_CP_URL"), "TYPE" => "STRING", "MULTIPLE" => $MULTIPLE, "ADDITIONAL_VALUES" => "Y", "DEFAULT" => ""); } elseif ($strFILTER == "forum") { $arrFILTER = array(); if (CModule::IncludeModule("forum")) { $arrFILTER["all"] = GetMessage("SEARCH_CP_ALL"); $rsForum = CForumNew::GetList(); while ($arForum = $rsForum->Fetch()) { $arrFILTER[$arForum["ID"]] = $arForum["NAME"]; } } $arComponentParameters["PARAMETERS"][$name . "_" . $strFILTER] = array("PARENT" => $parent, "NAME" => GetMessage("SEARCH_CP_FORUM"), "TYPE" => "LIST", "MULTIPLE" => $MULTIPLE, "VALUES" => $arrFILTER, "ADDITIONAL_VALUES" => "N", "DEFAULT" => "all"); } elseif (strpos($strFILTER, "iblock_") === 0) { $arrFILTER = array(); if (CModule::IncludeModule("iblock")) { $arrFILTER["all"] = GetMessage("SEARCH_CP_ALL"); $rsIBlock = CIBlock::GetList(array("SORT" => "ASC"), array("TYPE" => substr($strFILTER, 7))); while ($arIBlock = $rsIBlock->Fetch()) { $arrFILTER[$arIBlock["ID"]] = $arIBlock["NAME"]; } } $arComponentParameters["PARAMETERS"][$name . "_" . $strFILTER] = array("PARENT" => $parent, "NAME" => GetMessage("SEARCH_CP_IBLOCK_TYPE", array("#TYPE_ID#" => $strFILTER)), "TYPE" => "LIST", "MULTIPLE" => $MULTIPLE, "VALUES" => $arrFILTER, "ADDITIONAL_VALUES" => "N", "DEFAULT" => "all"); } elseif ($strFILTER == "blog") { $arrFILTER = array(); if (CModule::IncludeModule("blog")) { $arrFILTER["all"] = GetMessage("SEARCH_CP_ALL"); $rsBlog = CBlog::GetList(); while ($arBlog = $rsBlog->Fetch()) { $arrFILTER[$arBlog["ID"]] = $arBlog["NAME"]; } } $arComponentParameters["PARAMETERS"][$name . "_" . $strFILTER] = array("PARENT" => $parent, "NAME" => GetMessage("SEARCH_CP_BLOG"), "TYPE" => "LIST", "MULTIPLE" => $MULTIPLE, "VALUES" => $arrFILTER, "ADDITIONAL_VALUES" => "N", "DEFAULT" => "all"); } elseif ($strFILTER == "socialnetwork") { $arrFILTER = array(); if (CModule::IncludeModule("socialnetwork")) { $arrFILTER["all"] = GetMessage("SEARCH_CP_ALL"); $rsGroup = CSocNetGroup::GetList(array("ID" => "DESC"), array(), false, false, array("ID", "NAME")); while ($arGroup = $rsGroup->Fetch()) { $arrFILTER[$arGroup["ID"]] = $arGroup["NAME"]; } } $arComponentParameters["PARAMETERS"][$name . "_" . $strFILTER] = array("PARENT" => $parent, "NAME" => GetMessage("SEARCH_CP_SOCIALNETWORK_GROUPS"), "TYPE" => "LIST", "MULTIPLE" => $MULTIPLE, "VALUES" => $arrFILTER, "ADDITIONAL_VALUES" => "N", "DEFAULT" => "all"); } elseif ($strFILTER == "socialnetwork_user") { $arComponentParameters["PARAMETERS"][$name . "_" . $strFILTER] = array("PARENT" => "DATA_SOURCE", "NAME" => GetMessage("SEARCH_CP_SOCIALNETWORK_USER"), "TYPE" => "STRING", "DEFAULT" => ""); } } } }