Beispiel #1
0
    if (!is_object($bxSocNetSearch) && CModule::IncludeModule("socialnetwork")) {
        $bxSocNetSearch = new CSocNetSearch($arResult["VARIABLES"]["user_id"], $arResult["VARIABLES"]["group_id"], array("BLOG_GROUP_ID" => $arParams["BLOG_GROUP_ID"], "PATH_TO_GROUP_BLOG" => "", "PATH_TO_GROUP_BLOG_POST" => "", "PATH_TO_GROUP_BLOG_COMMENT" => "", "PATH_TO_USER_BLOG" => $arResult["PATH_TO_USER_BLOG"], "PATH_TO_USER_BLOG_POST" => $arResult["PATH_TO_USER_BLOG_POST"], "PATH_TO_USER_BLOG_COMMENT" => $arResult["PATH_TO_USER_BLOG_POST"] . "?commentId=#comment_id###comment_id#", "FORUM_ID" => $arParams["FORUM_ID"], "PATH_TO_GROUP_FORUM_MESSAGE" => "", "PATH_TO_USER_FORUM_MESSAGE" => $arResult["PATH_TO_USER_FORUM_MESSAGE"], "PHOTO_GROUP_IBLOCK_ID" => false, "PATH_TO_GROUP_PHOTO_ELEMENT" => "", "PHOTO_USER_IBLOCK_ID" => $arParams["PHOTO_USER_IBLOCK_ID"], "PATH_TO_USER_PHOTO_ELEMENT" => $arResult["PATH_TO_USER_PHOTO_ELEMENT"], "PHOTO_FORUM_ID" => $arParams["PHOTO_FORUM_ID"], "CALENDAR_GROUP_IBLOCK_ID" => false, "PATH_TO_GROUP_CALENDAR_ELEMENT" => "", "TASK_IBLOCK_ID" => $arParams["TASK_IBLOCK_ID"], "PATH_TO_GROUP_TASK_ELEMENT" => "", "PATH_TO_USER_TASK_ELEMENT" => $arResult["PATH_TO_USER_TASKS_TASK"], "TASK_FORUM_ID" => $arParams["TASK_FORUM_ID"], "FILES_PROPERTY_CODE" => $arParams["NAME_FILE_PROPERTY"], "FILES_FORUM_ID" => $arParams["FILES_FORUM_ID"], "FILES_GROUP_IBLOCK_ID" => false, "PATH_TO_GROUP_FILES_ELEMENT" => "", "PATH_TO_GROUP_FILES" => "", "FILES_USER_IBLOCK_ID" => $arParams["FILES_USER_IBLOCK_ID"], "PATH_TO_USER_FILES_ELEMENT" => $arResult["PATH_TO_USER_FILES_ELEMENT"], "PATH_TO_USER_FILES" => $arResult["PATH_TO_USER_FILES"], "PATH_TO_WORKFLOW" => SITE_DIR . "services/processes/#list_id#/bp_log/#workflow_id#/"));
        AddEventHandler("search", "BeforeIndex", array($bxSocNetSearch, "BeforeIndex"));
        AddEventHandler("iblock", "OnAfterIBlockElementUpdate", array($bxSocNetSearch, "IBlockElementUpdate"));
        AddEventHandler("iblock", "OnAfterIBlockElementAdd", array($bxSocNetSearch, "IBlockElementUpdate"));
        AddEventHandler("iblock", "OnAfterIBlockElementDelete", array($bxSocNetSearch, "IBlockElementDelete"));
        AddEventHandler("iblock", "OnAfterIBlockSectionUpdate", array($bxSocNetSearch, "IBlockSectionUpdate"));
        AddEventHandler("iblock", "OnAfterIBlockSectionAdd", array($bxSocNetSearch, "IBlockSectionUpdate"));
        AddEventHandler("iblock", "OnAfterIBlockSectionDelete", array($bxSocNetSearch, "IBlockSectionDelete"));
    }
}
/********************************************************************
				Disk
********************************************************************/
if ($componentPage === 'user_disk' || $componentPage === 'user_disk_file' || $componentPage === 'user_trashcan_list' || $componentPage === 'user_trashcan_file_view' || $componentPage === 'user_external_link_list') {
    if (!CSocNetFeatures::isActiveFeature(SONET_ENTITY_USER, $arResult["VARIABLES"]["user_id"], "files")) {
        ShowError(GetMessage("SONET_FILES_IS_NOT_ACTIVE"));
        return 0;
    }
}
/********************************************************************
				Disk
********************************************************************/
/********************************************************************
				WebDav
********************************************************************/
if (strPos($componentPage, "user_files") === false && strPos($componentPage, "group_files") === false) {
    $sCurrUrl = strToLower(str_replace("//", "/", "/" . $APPLICATION->GetCurPage() . "/"));
    $arBaseUrl = array("user" => $arParams["FILES_USER_BASE_URL"], "group" => $arParams["FILES_GROUP_BASE_URL"]);
    if ($arParams["SEF_MODE"] == "Y") {
        $arBaseUrl = array("user" => $arResult["PATH_TO_USER_FILES"], "group" => $arResult["PATH_TO_GROUP_FILES"]);
 public static function onSocNetUserToGroupAdd($id, $fields)
 {
     if (isset($fields['ROLE']) && isset($fields['USER_ID']) && ($fields['ROLE'] == SONET_ROLES_USER || $fields['ROLE'] == SONET_ROLES_MODERATOR || $fields['ROLE'] == SONET_ROLES_OWNER)) {
         if (!isset($fields['GROUP_ID'])) {
             $query = \CSocNetUserToGroup::getList(array(), array('ID' => $id), false, false, array('GROUP_ID', 'INITIATED_BY_USER_ID'));
             if ($query) {
                 $row = $query->fetch();
                 if ($row) {
                     $groupId = $row['GROUP_ID'];
                 }
             }
         } else {
             $groupId = $fields['GROUP_ID'];
         }
         /** @noinspection PhpDynamicAsStaticMethodCallInspection */
         if (!empty($groupId) && \CSocNetFeatures::isActiveFeature(SONET_ENTITY_GROUP, $groupId, 'files')) {
             $storage = Driver::getInstance()->getStorageByGroupId($groupId);
             if (!$storage) {
                 return;
             }
             $rootObject = $storage->getRootObject();
             if (!$rootObject->canRead($storage->getSecurityContext($fields['USER_ID']))) {
                 return;
             }
             $errorCollection = new ErrorCollection();
             Sharing::connectToUserStorage($fields['USER_ID'], array('CREATED_BY' => empty($fields['INITIATED_BY_USER_ID']) ? $fields['USER_ID'] : $fields['INITIATED_BY_USER_ID'], 'REAL_OBJECT' => $storage->getRootObject()), $errorCollection);
         }
     }
 }
Beispiel #3
0
/********************************************************************
				Bizproc
********************************************************************/
if (IsModuleInstalled("bizproc")) {
    $arDefaultUrlTemplates404["bizproc_task_list"] = $arResult["PATH_TO_BIZPROC_TASK_LIST"] = empty($arParams["PATH_TO_BIZPROC_TASK_LIST"]) ? "/company/personal/user/#user_id#/bizproc/" : $arParams["PATH_TO_BIZPROC_TASK_LIST"];
    $arResult["PATH_TO_BIZPROC_TASK"] = empty($arParams["PATH_TO_BIZPROC_TASK"]) ? (empty($arParams['PATH_TO_USER']) ? "/company/personal/user/#user_id#/" : $arParams['PATH_TO_USER']) . "bizproc/#id#/" : $arParams["PATH_TO_BIZPROC_TASK"];
    $arDefaultUrlTemplates404["bizproc_task"] = $arResult["PATH_TO_BIZPROC_TASK"] = str_replace("#task_id#", "#id#", $arResult["PATH_TO_BIZPROC_TASK"]);
}
/********************************************************************
				Bizproc
********************************************************************/
/********************************************************************
				Disk
********************************************************************/
if (strpos($componentPage, 'group_disk') !== false) {
    if (!CSocNetFeatures::isActiveFeature(SONET_ENTITY_GROUP, $arResult["VARIABLES"]["group_id"], "files")) {
        ShowError(GetMessage("SONET_FILES_IS_NOT_ACTIVE"));
        return 0;
    }
}
/********************************************************************
				Disk
********************************************************************/
/********************************************************************
				WebDav
********************************************************************/
if (strPos($componentPage, "group_files") !== false || strPos($componentPage, "group_blog") !== false || strPos($componentPage, "group_log") !== false || $componentPage == "group") {
    if (intval($arResult["VARIABLES"]["group_id"]) > 0) {
        $cache_time = 31536000;
        $arEvent = array();
        $cache = new CPHPCache();
 /**
  * @param $userId
  * @return bool
  */
 public function canRead($userId)
 {
     if ($this->canRead !== null) {
         return $this->canRead;
     }
     if (($res = $this->getDataToCheck($this->entityId)) && !empty($res)) {
         list($message, $topic) = $res;
         $entityId = null;
         $entityType = null;
         if (!empty($topic["XML_ID"])) {
             $entityId = substr($topic["XML_ID"], strrpos($topic["XML_ID"], "_") + 1);
             $entityType = substr($topic["XML_ID"], 0, strrpos($topic["XML_ID"], "_"));
         }
         switch ($entityType) {
             case "TASK":
                 if (Loader::includeModule("tasks")) {
                     $connector = new TaskConnector($entityId, $this->attachedObject);
                     $this->canRead = $connector->canRead($userId);
                     return $this->canRead;
                 }
                 break;
             case "EVENT":
                 if (Loader::includeModule("calendar")) {
                     $connector = new CalendarEventConnector($entityId, $this->attachedObject);
                     $this->canRead = $connector->canRead($userId);
                     return $this->canRead;
                 }
                 break;
             case "IBLOCK":
                 if ((int) $topic["USER_ID"] > 0 && Loader::includeModule("socialnetwork")) {
                     $codes = array();
                     if (($res = \CSocNetLog::getList(array(), array("SOURCE_ID" => $entityId, "EVENT_ID" => array("photo_photo", "news", "wiki")), false, false, array("ID"))->fetch()) && $res) {
                         $db_res = \CSocNetLogRights::getList(array(), array("LOG_ID" => $res["ID"]));
                         while ($res = $db_res->fetch()) {
                             $codes[] = $res["GROUP_CODE"];
                         }
                     }
                     $this->canRead = $this->canAccess($userId, $codes);
                     return $this->canRead;
                 }
                 $this->canRead = true;
                 return $this->canRead;
             case "MEETING":
                 $this->canRead = (int) $message["FORUM_ID"] == (int) \COption::getOptionInt('meeting', 'comments_forum_id', 0, SITE_ID);
                 return $this->canRead;
             case "TIMEMAN_ENTRY":
                 if (Loader::includeModule("timeman")) {
                     $dbEntry = \CTimeManEntry::getList(array(), array("ID" => $entityId), false, false, array("ID", "USER_ID"));
                     if ($arEntry = $dbEntry->fetch()) {
                         if ($arEntry["USER_ID"] == $userId) {
                             $this->canRead = true;
                             return $this->canRead;
                         } else {
                             $arManagers = \CTimeMan::getUserManagers($arEntry["USER_ID"]);
                             $this->canRead = in_array($userId, $arManagers);
                             return $this->canRead;
                         }
                     }
                 }
                 $this->canRead = false;
                 return $this->canRead;
             case "TIMEMAN_REPORT":
                 if (Loader::includeModule("timeman")) {
                     $dbReport = \CTimeManReportFull::getList(array(), array("ID" => $entityId), array("ID", "USER_ID"));
                     if ($arReport = $dbReport->fetch()) {
                         if ($arReport["USER_ID"] == $userId) {
                             $this->canRead = true;
                             return $this->canRead;
                         } else {
                             $arManagers = \CTimeMan::getUserManagers($arReport["USER_ID"]);
                             $this->canRead = in_array($userId, $arManagers);
                             return $this->canRead;
                         }
                     }
                 }
                 $this->canRead = false;
                 return $this->canRead;
             case "WF":
                 $this->canRead = false;
                 if (Loader::includeModule("bizproc")) {
                     $currentUserId = (int) $this->getUser()->getId();
                     $participants = \CBPTaskService::getWorkflowParticipants($entityId);
                     if (in_array($currentUserId, $participants)) {
                         $this->canRead = true;
                     } else {
                         $state = \CBPStateService::getWorkflowStateInfo($entityId);
                         if ($state && $currentUserId === (int) $state['STARTED_BY']) {
                             $this->canRead = true;
                         }
                     }
                 }
                 return $this->canRead;
         }
         if ((!empty($topic["SOCNET_GROUP_ID"]) || !empty($topic["OWNER_ID"])) && Loader::includeModule("socialnetwork")) {
             if (!empty($topic["SOCNET_GROUP_ID"])) {
                 $this->canRead = \CSocNetFeatures::isActiveFeature(SONET_ENTITY_GROUP, $topic["SOCNET_GROUP_ID"], "forum") && \CSocNetFeaturesPerms::canPerformOperation($userId, SONET_ENTITY_GROUP, $topic["SOCNET_GROUP_ID"], "forum", "view");
                 return $this->canRead;
             } else {
                 $this->canRead = \CSocNetFeatures::isActiveFeature(SONET_ENTITY_USER, $topic["OWNER_ID"], "forum") && \CSocNetFeaturesPerms::canPerformOperation($userId, SONET_ENTITY_USER, $topic["OWNER_ID"], "forum", "view");
                 return $this->canRead;
             }
         }
         if ($message) {
             $user = $this->getUser();
             if ($user && $userId == $user->getId()) {
                 $userGroups = $user->getUserGroupArray();
             } else {
                 $userGroups = array(2);
             }
             /** @noinspection PhpDynamicAsStaticMethodCallInspection */
             if (\CForumUser::isAdmin($userId, $userGroups)) {
                 $this->canRead = true;
                 return $this->canRead;
             }
             /** @noinspection PhpDynamicAsStaticMethodCallInspection */
             $perms = \CForumNew::getUserPermission($message["FORUM_ID"], $userGroups);
             if ($perms >= "Y") {
                 $this->canRead = true;
                 return $this->canRead;
             }
             if ($perms < "E" || $perms < "Q" && $message["APPROVED"] != "Y") {
                 $this->canRead = false;
                 return $this->canRead;
             }
             /** @noinspection PhpDynamicAsStaticMethodCallInspection */
             $forum = \CForumNew::getByID($message["FORUM_ID"]);
             $this->canRead = $forum["ACTIVE"] == "Y";
             return $this->canRead;
         }
     }
     $this->canRead = false;
     return $this->canRead;
 }