예제 #1
0
 /**
  * <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;
 }
예제 #2
0
 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);
         	}
         */
     }
 }
예제 #3
0
 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;
         }
     }
 }
예제 #4
0
         $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();
                 }
             }
         }
     }
 }
예제 #5
0
 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);
     }
 }
예제 #6
0
 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;
 }
예제 #7
0
파일: ajax.php 프로젝트: ASDAFF/bitrix-5
					$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)
예제 #8
0
                @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;
예제 #9
0
    }
}
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.';
        }
예제 #10
0
 } 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');
     }
예제 #11
0
 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;
 }
예제 #12
0
                 }
             }
         }
     }
 }
 $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'];
예제 #13
0
 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();
 }
예제 #14
0
$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);
예제 #15
0
 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;
     }
 }
예제 #16
0
파일: rest.php 프로젝트: ASDAFF/bitrix-5
	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');
		}
	}
예제 #17
0
     }
 }
 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;
         }
     }
예제 #18
0
$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"]) {
예제 #19
0
 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;
     }
 }
예제 #20
0
    $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 = "";
예제 #21
0
$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"]);
예제 #22
0
$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 {
예제 #23
0
 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;
 }
예제 #24
0
     $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');
예제 #25
0
     $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);
예제 #26
0
 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;
 }
예제 #27
0
파일: ajax.php 프로젝트: Satariall/izurit
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;
}
예제 #28
0
 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;
 }
예제 #29
0
파일: rest.php 프로젝트: ASDAFF/bxApiDocs
	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');
	}
예제 #30
0
 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" => "");
             }
         }
     }
 }