public static function threadViewDispatch(XenForo_Controller $controller, $response, $controllerName, $action) { if (!$response instanceof XenForo_ControllerResponse_View) { return; } if ($response->viewName != 'XenForo_ViewPublic_Thread_View' || empty($response->params['thread'])) { return; } $thread = $response->params['thread']; if ($thread['discussion_type'] != 'team' || !XenForo_Visitor::getInstance()->hasPermission('Teams', 'view')) { return; } if (!$thread['team_id']) { return; } $teamModel = $controller->getModelFromCache('Nobita_Teams_Model_Team'); $team = $teamModel->getFullTeamById($thread['team_id'], array('join' => Nobita_Teams_Model_Team::FETCH_CATEGORY)); if (!$team) { return; } if (!$teamModel->canViewTeamAndContainer($team, $team)) { return; } $team = $teamModel->prepareTeam($team, $team); //$team = $teamModel->prepareTeamCustomFields($team, $team); $response->params['team'] = $team; }
public static function updateResponseRedirect(XenForo_Controller $controller, XenForo_ControllerResponse_Redirect $controllerResponse) { $action = false; $userId = 0; if ($controller instanceof XenForo_ControllerPublic_Login) { /** @var bdApiConsumer_XenForo_ControllerPublic_Login $controller */ if (XenForo_Visitor::getUserId() > 0 && XenForo_Visitor::getUserId() != $controller->bdApiConsumer_getBeforeLoginVisitorId()) { // a successful login $action = 'login'; $userId = XenForo_Visitor::getUserId(); } } elseif ($controller instanceof XenForo_ControllerPublic_Logout) { /** @var bdApiConsumer_XenForo_ControllerPublic_Logout $controller */ if (XenForo_Visitor::getUserId() == 0) { // a successful logout $action = 'logout'; $userId = $controller->bdApiConsumer_getBeforeLogoutVisitorId(); } } if ($action !== false && $userId > 0) { $redirectTarget = $controllerResponse->redirectTarget; $originalTarget = $redirectTarget; /** @var bdApiConsumer_XenForo_Model_UserExternal $userExternalModel */ $userExternalModel = $controller->getModelFromCache('XenForo_Model_UserExternal'); $auths = $userExternalModel->bdApiConsumer_getExternalAuthAssociations($userId); if (!empty($auths)) { foreach ($auths as $auth) { $provider = bdApiConsumer_Option::getProviderByCode($auth['provider']); if (empty($provider)) { continue; } $accessToken = $userExternalModel->bdApiConsumer_getAccessTokenFromAuth($provider, $auth); if (empty($accessToken)) { continue; } $ott = bdApiConsumer_Helper_Api::generateOneTimeToken($provider, $auth['provider_key'], $accessToken); $redirectTarget = XenForo_Link::convertUriToAbsoluteUri($redirectTarget, true); switch ($action) { case 'login': $redirectTarget = bdApiConsumer_Helper_Api::getLoginLink($provider, $ott, $redirectTarget); break; case 'logout': $redirectTarget = bdApiConsumer_Helper_Api::getLogoutLink($provider, $ott, $redirectTarget); break; } } } if ($redirectTarget !== $originalTarget) { $controllerResponse->redirectTarget = $redirectTarget; } } }
protected static function _xenMediaPhotoIndexParams($team) { $categoryModel = self::$controller->getModelFromCache('XenGallery_Model_Category'); $category = $categoryModel->getCategoryById(self::$setup->getOption('XenMediaCategoryId')); $noPermission = false; if (!$category) { $noPermission = true; } else { if (!$categoryModel->canAddMediaToCategory($category)) { $noPermission = true; } } if ($noPermission) { return array('templateName' => 'Team_photo', 'viewName' => '', 'provider' => 'XenGallery', 'noPermission' => true); } $mediaModel = self::$controller->getModelFromCache('XenGallery_Model_Media'); $albumModel = self::$controller->getModelFromCache('XenGallery_Model_Album'); $order = self::$input->filterSingle('order', XenForo_Input::STRING); $type = self::$input->filterSingle('type', XenForo_Input::STRING); $page = self::$input->filterSingle('page', XenForo_Input::UINT); $perPage = XenForo_Application::getOptions()->xengalleryMediaMaxPerPage; $visitor = XenForo_Visitor::getInstance(); $conditions = array('deleted' => $mediaModel->canViewDeletedMedia(), 'type' => $type ? $type : 'all', 'privacyUserId' => $visitor->user_id, 'viewAlbums' => $albumModel->canViewAlbums(), 'viewCategoryIds' => $mediaModel->getViewableCategoriesForVisitor($visitor->toArray()), 'newerThan' => $mediaModel->getMediaHomeCutOff(), 'social_group_id' => $team['team_id']); $fetchOptions = self::_getMediaFetchOptions() + array('order' => $order ? $order : 'media_date', 'orderDirection' => 'desc', 'page' => $page, 'perPage' => $perPage); $fetchOptions['join'] |= XenGallery_Model_Media::FETCH_PRIVACY; $media = $mediaModel->getMedia($conditions, $fetchOptions); $media = $mediaModel->prepareMediaItems($media); $inlineModOptions = $mediaModel->prepareInlineModOptions($media); $ignoredNames = array(); foreach ($media as $item) { if (!empty($item['isIgnored'])) { $ignoredNames[] = $item['username']; } } $mediaCount = $mediaModel->countMedia($conditions, $fetchOptions); self::$controller->canonicalizePageNumber($page, $perPage, $mediaCount, TEAM_ROUTE_PREFIX . '/photos', $team); self::$controller->canonicalizeRequestUrl(XenForo_Link::buildPublicLink(TEAM_ROUTE_PREFIX . '/photos', $team, array('page' => $page))); $pageNavParams = array('order' => $order, 'type' => $type); return array('templateName' => 'Team_photo', 'viewName' => '', 'provider' => 'XenGallery', 'canViewRatings' => $mediaModel->canViewRatings(), 'mediaHome' => true, 'media' => $media, 'ignoredNames' => array_unique($ignoredNames), 'mediaCount' => $mediaCount, 'page' => $page <= 1 ? '' : $page, 'perPage' => $perPage, 'pageNavParams' => $pageNavParams, 'order' => $order, 'type' => $type, 'time' => XenForo_Application::$time, 'showTypeTabs' => $albumModel->canViewAlbums(), 'inlineModOptions' => $inlineModOptions, 'userPage' => false); }