예제 #1
0
 function BeforeIndexForum($arFields, $entity_type, $entity_id, $feature, $operation, $path_template)
 {
     global $USER;
     static $arSiteData;
     $SECTION_ID = "";
     $ELEMENT_ID = intval($_REQUEST["photo_element_id"]);
     if (empty($ELEMENT_ID)) {
         $ELEMENT_ID = intval($_REQUEST["ELEMENT_ID"]);
     }
     if ($ELEMENT_ID > 0 && CModule::IncludeModule('iblock')) {
         $rsSections = CIBlockElement::GetElementGroups($ELEMENT_ID, true);
         $arSection = $rsSections->Fetch();
         if ($arSection) {
             $SECTION_ID = $arSection["ID"];
         }
     }
     if (count($arFields["LID"]) > 1 && ($entity_type == SONET_ENTITY_GROUP && CModule::IncludeModule("extranet") || $entity_type == SONET_ENTITY_USER)) {
         if (!$arSiteData) {
             $arSiteData = CSocNetLogTools::GetSiteData();
         }
         foreach ($arSiteData as $siteId => $arUrl) {
             if ($entity_type == SONET_ENTITY_GROUP && strpos($path_template, $arUrl["GROUPS_PATH"]) === 0) {
                 $path_template = str_replace($arUrl["GROUPS_PATH"], "#GROUP_PATH#", $path_template);
                 break;
             } elseif ($entity_type == SONET_ENTITY_USER && strpos($path_template, $arUrl["USER_PATH"]) === 0) {
                 $path_template = str_replace($arUrl["USER_PATH"], "#USER_PATH#", $path_template);
                 break;
             }
         }
     }
     foreach ($arFields["LID"] as $site_id => $url) {
         $arFields["URL"] = $arFields["LID"][$site_id] = str_replace(array("#user_id#", "#group_id#", "#topic_id#", "#message_id#", "#action#", "#user_alias#", "#section_id#", "#element_id#", "#task_id#", "#GROUP_PATH#", "#USER_PATH#"), array($this->_user_id > 0 ? $this->_user_id : $USER->GetID(), $this->_group_id, $arFields["PARAM2"], $arFields["ITEM_ID"], "view", ($entity_type == "G" ? "group_" : "user_") . $entity_id, $SECTION_ID, $ELEMENT_ID, $ELEMENT_ID, $arSiteData ? $arSiteData[$site_id]["GROUPS_PATH"] : "", $arSiteData ? $arSiteData[$site_id]["USER_PATH"] : ""), $path_template);
     }
     if ($feature == 'tasks' && COption::GetOptionString("intranet", "use_tasks_2_0", "N") == 'Y' && $arFields["PARAM1"] == COption::GetOptionString("tasks", "task_forum_id", 0) && CModule::IncludeModule('tasks')) {
         if (!preg_match('/^EVENT_[0-9]+/', $arFields["TITLE"], $match)) {
             $rsTask = CTasks::GetList(array(), array("FORUM_TOPIC_ID" => $arFields['PARAM2']));
             if ($arTask = $rsTask->Fetch()) {
                 $arFields['PERMISSIONS'] = CTasks::__GetSearchPermissions($arTask);
             }
         }
     } else {
         $arFields["PERMISSIONS"] = $this->GetSearchGroups($entity_type, $entity_id, $feature, $operation);
         $paramsTmp = $this->GetSearchParams($entity_type, $entity_id, $feature, $operation);
         $arFields["PARAMS"] = !empty($arFields["PARAMS"]) ? array_merge($paramsTmp, $arFields["PARAMS"]) : $paramsTmp;
     }
     return $arFields;
 }
예제 #2
0
파일: search.php 프로젝트: ASDAFF/bitrix-5
	function BeforeIndexForum($arFields, $entity_type, $entity_id, $feature, $operation, $path_template)
	{
		global $USER;

		$SECTION_ID = "";
		$ELEMENT_ID = intval($_REQUEST["photo_element_id"]);
		if (empty($ELEMENT_ID))
			$ELEMENT_ID = intval($_REQUEST["ELEMENT_ID"]);

		if($ELEMENT_ID > 0 && CModule::IncludeModule('iblock'))
		{
			$rsSections = CIBlockElement::GetElementGroups($ELEMENT_ID, true);
			$arSection = $rsSections->Fetch();
			if($arSection)
				$SECTION_ID = $arSection["ID"];
		}

		foreach($arFields["LID"] as $site_id => $url)
		{
			$arFields["URL"] = $arFields["LID"][$site_id] = str_replace(
				array(
					"#user_id#",
					"#group_id#",
					"#topic_id#",
					"#message_id#",
					"#action#",
					"#user_alias#",
					"#section_id#",
					"#element_id#",
					"#task_id#",
				),
				array(
					($this->_user_id > 0 ? $this->_user_id : $USER->GetID()),
					$this->_group_id,
					$arFields["PARAM2"],
					$arFields["ITEM_ID"],
					"view",
					($entity_type=="G"? "group_": "user_").$entity_id,
					$SECTION_ID,
					$ELEMENT_ID,
					$ELEMENT_ID,
				),
				$path_template
			);
		}

		if (
			($feature == 'tasks') &&
			(COption::GetOptionString("intranet", "use_tasks_2_0", "N") == 'Y') &&
			($arFields["PARAM1"] == COption::GetOptionString("tasks", "task_forum_id", 0)) &&
			CModule::IncludeModule('tasks')
		)
		{
			$rsTask = CTasks::GetList(array(), array("FORUM_TOPIC_ID" => $arFields['PARAM2']));
			if ($arTask = $rsTask->Fetch())
				$arFields['PERMISSIONS'] = CTasks::__GetSearchPermissions($arTask);
		}
		else
		{
			$arFields["PERMISSIONS"] = $this->GetSearchGroups(
				$entity_type,
				$entity_id,
				$feature,
				$operation
			);

			$arFields["PARAMS"] = $this->GetSearchParams(
				$entity_type,
				$entity_id,
				$feature,
				$operation
			);
		}

		return $arFields;
	}
예제 #3
0
 function OnSearchReindex($NS = array(), $oCallback = NULL, $callback_method = "")
 {
     $arResult = array();
     $arOrder = array('ID' => 'ASC');
     $arFilter = array();
     if (isset($NS['MODULE']) && $NS['MODULE'] === 'tasks' && isset($NS['ID']) && $NS['ID'] > 0) {
         $arFilter['>ID'] = (int) $NS['ID'];
     } else {
         $arFilter['>ID'] = 0;
     }
     $rsTasks = CTasks::GetList($arOrder, $arFilter);
     while ($arTask = $rsTasks->Fetch()) {
         $rsTags = CTaskTags::GetList(array(), array("TASK_ID" => $arTask["ID"]));
         $arTags = array();
         while ($arTag = $rsTags->Fetch()) {
             $arTags[] = $arTag["NAME"];
         }
         $arTask["ACCOMPLICES"] = $arTask["AUDITORS"] = array();
         $rsMembers = CTaskMembers::GetList(array(), array("TASK_ID" => $arTask["ID"]));
         while ($arMember = $rsMembers->Fetch()) {
             if ($arMember["TYPE"] == "A") {
                 $arTask["ACCOMPLICES"][] = $arMember["USER_ID"];
             } elseif ($arMember["TYPE"] == "U") {
                 $arTask["AUDITORS"][] = $arMember["USER_ID"];
             }
         }
         if ($arTask["GROUP_ID"] > 0) {
             $path = str_replace("#group_id#", $arTask["GROUP_ID"], COption::GetOptionString("tasks", "paths_task_group_entry", "/workgroups/group/#group_id#/tasks/task/view/#task_id#/", $arTask["SITE_ID"]));
         } else {
             $path = str_replace("#user_id#", $arTask["RESPONSIBLE_ID"], COption::GetOptionString("tasks", "paths_task_user_entry", "/company/personal/user/#user_id#/tasks/task/view/#task_id#/", $arTask["SITE_ID"]));
         }
         $path = str_replace("#task_id#", $arTask["ID"], $path);
         $arPermissions = CTasks::__GetSearchPermissions($arTask);
         $Result = array("ID" => $arTask["ID"], "LAST_MODIFIED" => $arTask["CHANGED_DATE"] ? $arTask["CHANGED_DATE"] : $arTask["CREATED_DATE"], "TITLE" => $arTask["TITLE"], "BODY" => strip_tags($arTask["DESCRIPTION"]) ? strip_tags($arTask["DESCRIPTION"]) : $arTask["TITLE"], "TAGS" => implode(",", $arTags), "URL" => $path, "SITE_ID" => $arTask["SITE_ID"], "PERMISSIONS" => $arPermissions);
         if ($oCallback) {
             $index_res = call_user_func(array($oCallback, $callback_method), $Result);
             if (!$index_res) {
                 return $Result["ID"];
             }
         } else {
             $arResult[] = $Result;
         }
         CTasks::UpdateForumTopicIndex($arTask["FORUM_TOPIC_ID"], "U", $arTask["RESPONSIBLE_ID"], "tasks", "view_all", $path, $arPermissions, $arTask["SITE_ID"]);
     }
     if ($oCallback) {
         return false;
     }
     return $arResult;
 }
예제 #4
0
                    }
                    $APPLICATION->IncludeComponent("bitrix:tasks.task.detail.parts", ".default", array('INNER_HTML' => $_POST['INNER_HTML'], 'MODE' => $_POST['MODE'], 'BLOCKS' => array($_POST['BLOCK']), 'IS_IFRAME' => $isIframe, 'PATH_TO_TEMPLATES_TEMPLATE' => $_POST['PATH_TO_TEMPLATES_TEMPLATE'], 'PATH_TO_USER_PROFILE' => $_POST['PATH_TO_USER_PROFILE'], 'PATH_TO_TASKS_TASK' => $_POST['PATH_TO_TASKS_TASK'], 'FIRE_ON_CHANGED_EVENT' => $_POST['FIRE_ON_CHANGED_EVENT'], 'NAME_TEMPLATE' => $nameTemplate, 'LOAD_TASK_DATA' => 'Y', 'TASK_ID' => (int) $_POST['TASK_ID']), null, array('HIDE_ICONS' => 'Y'));
                    break;
                default:
                    CTaskAssert::logError('[0x4fae6498] Unexpected $_POST[\'BLOCK\'] value: ' . $_POST['BLOCK']);
                    break;
            }
        } else {
            CTaskAssert::logError('[0x0907bb31] $_POST[\'BLOCK\'] expected, but not given');
        }
    } elseif ($action === 'render_comments') {
        CModule::IncludeModule('tasks');
        CModule::IncludeModule('forum');
        $permission = 'A';
        $oTask = CTaskItem::getInstanceFromPool($_POST['taskId'], $loggedInUserId);
        $arTask = $oTask->getData($bEscape = false);
        $arTaskUsers = CTasks::__GetSearchPermissions($arTask);
        if ($USER->CanAccess($arTaskUsers) === true || $USER->IsAdmin() || CTasksTools::IsPortalB24Admin()) {
            $permission = 'M';
        }
        $APPLICATION->RestartBuffer();
        header('Content-Type: text/html; charset=' . LANG_CHARSET);
        $APPLICATION->IncludeComponent("bitrix:forum.comments", "bitrix24", array("FORUM_ID" => $_POST['forumId'], "ENTITY_TYPE" => "TK", "ENTITY_ID" => $_POST['taskId'], "ENTITY_XML_ID" => "TASK_" . $_POST['taskId'], "URL_TEMPLATES_PROFILE_VIEW" => $_POST['PATH_TO_USER_PROFILE'], "MESSAGES_PER_PAGE" => $_POST['ITEM_DETAIL_COUNT'], "PAGE_NAVIGATION_TEMPLATE" => "arrows", "DATE_TIME_FORMAT" => CDatabase::DateFormatToPHP(FORMAT_DATETIME), "PATH_TO_SMILE" => $_POST['PATH_TO_FORUM_SMILE'], "EDITOR_CODE_DEFAULT" => "N", "SHOW_MODERATION" => "Y", "SHOW_AVATAR" => "Y", "SHOW_RATING" => $_POST['SHOW_RATING'], "RATING_TYPE" => $_POST['RATING_TYPE'], "SHOW_MINIMIZED" => "N", "USE_CAPTCHA" => "N", 'PREORDER' => 'N', "SHOW_LINK_TO_FORUM" => "N", "SHOW_SUBSCRIBE" => "N", "FILES_COUNT" => 10, "SHOW_WYSIWYG_EDITOR" => "Y", "AUTOSAVE" => true, "PERMISSION" => $permission, "NAME_TEMPLATE" => $_POST["NAME_TEMPLATE"], "MESSAGE_COUNT" => 3), null, array('HIDE_ICONS' => 'Y'));
        require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php';
        exit;
    } else {
        CTaskAssert::logError('[0x447f7b28] Unknown action: ' . $action);
    }
}
CMain::FinalActions();
// to make events work on bitrix24
예제 #5
0
        $arResult['TASK'] = $arTask;
    }
}
if ($arResult['TASK']) {
    $arResult["FORUM_TOPIC_ID"] = (int) $arResult["TASK"]["FORUM_TOPIC_ID"];
    if ($arResult["FORUM_TOPIC_ID"]) {
        $arTopic = CForumTopic::GetByID($arResult["FORUM_TOPIC_ID"]);
        if ($arTopic) {
            $arParams["FORUM_ID"] = $arTopic["FORUM_ID"];
        } else {
            $arResult["FORUM_TOPIC_ID"] = 0;
        }
    }
}
$arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? CSite::GetNameFormat(false) : str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]);
$arTaskUsers = CTasks::__GetSearchPermissions($arResult["TASK"]);
/* * ******************************************************************
	External permissions from tasks
 * ****************************************************************** */
// A - NO ACCESS		E - READ			I - ANSWER
// M - NEW TOPIC		Q - MODERATE	U - EDIT			Y - FULL_ACCESS
if ($USER->CanAccess($arTaskUsers) === true || $USER->IsAdmin() || CTasksTools::IsPortalB24Admin()) {
    $arParams['PERMISSION'] = 'M';
} else {
    $arParams['PERMISSION'] = 'A';
}
if (!CForumNew::CanUserViewForum($arParams["FORUM_ID"], $USER->GetUserGroupArray(), $arParams["PERMISSION"])) {
    if (!($USER->IsAdmin() || CTasksTools::IsPortalB24Admin())) {
        ShowError(GetMessage("F_ERR_FORUM_NO_ACCESS"));
        return false;
    }