/** * Gets the category add/edit form response. * * @param array $category * * @return XenForo_ControllerResponse_Abstract */ protected function _getCategoryAddEditResponse(array $category) { $fieldModel = $this->_getFieldModel(); $userGroups = $this->_getUserGroupModel()->getAllUserGroups(); if (!empty($category['team_category_id'])) { $categories = $this->_getCategoryModel()->getPossibleParentCategories($category); $selectedFields = $fieldModel->getFieldIdsInCategory($category['team_category_id']); $selUserGroupIds = explode(',', $category['allowed_user_group_ids']); if (in_array(-1, $selUserGroupIds)) { $allUserGroups = true; $selUserGroupIds = array_keys($userGroups); } else { $allUserGroups = false; } $ribbons = @unserialize($category['ribbon_styling']); if (!$ribbons) { $ribbons = array(); } } else { $categories = $this->_getCategoryModel()->getAllCategories(); $selectedFields = array(); $allUserGroups = true; $selUserGroupIds = array_keys($userGroups); $ribbons = array('userBanner bannerHidden'); } $newTeamsPrefixes = array(); $newThreadsPrefixes = array(); $prefixModel = $this->getModelFromCache('XenForo_Model_ThreadPrefix'); if (!empty($category['thread_node_id'])) { $newTeamsPrefixes = $prefixModel->getPrefixOptions(array('node_id' => $category['thread_node_id'])); } if (!empty($category['discussion_node_id'])) { $newThreadsPrefixes = $prefixModel->getPrefixOptions(array('node_id' => $category['discussion_node_id'])); } $fields = $fieldModel->prepareTeamFields($fieldModel->getTeamFields()); $displayStyles = array('userBanner bannerHidden', 'userBanner bannerPrimary', 'userBanner bannerSecondary', 'userBanner bannerRed', 'userBanner bannerGreen', 'userBanner bannerOlive', 'userBanner bannerLightGreen', 'userBanner bannerBlue', 'userBanner bannerRoyalBlue', 'userBanner bannerSkyBlue', 'userBanner bannerGray', 'userBanner bannerSilver', 'userBanner bannerYellow', 'userBanner bannerOrange'); $disableTabs = array(); if (!empty($category['disable_tabs_default'])) { $disableTabs = array_map('trim', explode(',', $category['disable_tabs_default'])); } $viewParams = array('category' => $category, 'categories' => $categories, 'fieldsGrouped' => $fieldModel->groupTeamFields($fields), 'fieldGroups' => $fieldModel->getTeamFieldGroups(), 'selectedFields' => $selectedFields, 'allUserGroups' => $allUserGroups, 'selUserGroupIds' => $selUserGroupIds, 'userGroups' => $userGroups, 'nodes' => $this->getModelFromCache('XenForo_Model_Node')->getAllNodes(), 'newTeamsPrefixes' => $newTeamsPrefixes, 'newThreadsPrefixes' => $newThreadsPrefixes, 'displayStyles' => $displayStyles, 'ribbons' => $ribbons, 'tabs' => Nobita_Teams_Option::getTabsSupported(), 'disableTabs' => $disableTabs); return $this->responseView('Nobita_Teams_ViewAdmin_Category_Edit', 'Team_category_edit', $viewParams); }
public function getTeamViewWrapper($selectedTab, array $team, array $category, XenForo_ControllerResponse_View $subView) { $teamId = $team['team_id']; $visitor = XenForo_Visitor::getInstance(); $fieldModel = $this->_getFieldModel(); $teamModel = $this->_getTeamModel(); $memberModel = $teamModel->getModelFromCache('Nobita_Teams_Model_Member'); $customFieldsGrouped = $fieldModel->getTeamFieldsForEdit($category['team_category_id'], empty($team['team_id']) ? 0 : $team['team_id']); $customFieldsGrouped = $fieldModel->prepareTeamFields($customFieldsGrouped, true, !empty($team['customFields']) ? $team['customFields'] : array()); $admins = array(); if (array_key_exists('disableAdminQuery', $subView->params) && $subView->params['disableAdminQuery']) { // good nothing to do in this state } else { $staffIds = $memberModel->getModelFromCache('Nobita_Teams_Model_MemberGroup')->getStaffIds(); if ($staffIds) { $admins = $memberModel->getAllMembersInTeam($teamId, array('position' => $staffIds), array('join' => Nobita_Teams_Model_Member::FETCH_USER)); } } $setup = Nobita_Teams_Setup::getInstance(); if (isset($admins[$visitor['user_id']])) { $memberRecord = $admins[$visitor['user_id']]; } else { $memberRecord = $team['memberInfo']; } $canManageContent = $memberModel->assertPermissionActionViewable($team, 'canManageContent'); $statsBlock = true; if (!$this->_getTeamModel()->canViewTeamClosedAndContainer($team, $category, $null)) { $statsBlock = false; } else { if ($team['privacy_state'] == Nobita_Teams_Model_Team::PRIVACY_SECRET) { if (!$teamModel->canViewTeamSecret($team, $category, $null)) { $statsBlock = false; } } } if ($team['member_request_count']) { $requests = $memberModel->getMembersByTeamId($team['team_id'], array('member_state' => 'request'), array('limit' => 5)); foreach ($requests as &$request) { $request = $memberModel->prepareMember($request, $team); } } else { $requests = array(); } $reposition = $this->_controller->getInput()->filterSingle('reposition', XenForo_Input::UINT); $wallType = $this->_controller->getInput()->filterSingle('wtype', XenForo_Input::STRING); if (empty($wallType)) { if (Nobita_Teams_Setup::getInstance()->getOption('memberTab') && $teamModel->canViewMemberOrAdminTab(Nobita_Teams_Model_Post::POST_TYPE_MEMBER, $team, $category)) { $wallType = Nobita_Teams_Model_Post::POST_TYPE_MEMBER; } else { $wallType = Nobita_Teams_Model_Post::POST_TYPE_PUBLIC; } } $newsFeedTab = true; if (empty($memberRecord['user_id'])) { // should be hidden if empty user $newsFeedTab = $teamModel->isOpen($team); } $viewParams = array('selectedTab' => $selectedTab, 'team' => $team, 'category' => $category, 'categoryBreadcrumbs' => $this->_getCategoryModel()->getCategoryBreadcrumb($category), 'admins' => $admins, 'statsBlock' => $statsBlock, 'memberRecord' => $memberRecord, 'totalRequests' => $team['member_request_count'], 'requests' => $requests, 'canLeaveOrRequest' => $memberModel->canLeaveOrCancelRequest($memberRecord, $team), 'canViewRequest' => $memberModel->assertPermissionActionViewable($team, "canApproveOrUnapproved"), 'canManageContent' => $canManageContent, 'customFieldsGrouped' => $fieldModel->groupTeamFields($customFieldsGrouped), 'constructionWrap' => !empty($reposition), 'wallType' => $wallType, 'memberWall' => $teamModel->canViewMemberOrAdminTab('member', $team, $category), 'moderatorWall' => $teamModel->canViewMemberOrAdminTab('moderator', $team, $category), 'canViewMemberTab' => $teamModel->canViewTabAndContainer('members', $team, $category), 'canViewPhotoTab' => $teamModel->canViewTabAndContainer('photos', $team, $category), 'canViewFileTab' => $teamModel->canViewTabAndContainer('files', $team, $category), 'canViewEventTab' => $teamModel->canViewTabAndContainer('events', $team, $category), 'canViewThreadsTab' => $teamModel->canViewTabAndContainer('threads', $team, $category), 'coverDetails' => @unserialize($team['cover_crop_details']), 'newsFeedTab' => $newsFeedTab, 'photoTabTitle' => Nobita_Teams_Option::getTabsSupported()['photos']['title']); $response = $this->_controller->responseView('Nobita_Teams_ViewPublic_Team_View', 'Team_view', $viewParams); $response->subView = $subView; return $response; }
/** * Control the tabs will be display to user. * * @version 1.2.0 RC2 */ public function actionTabs() { list($team, $category) = $this->_getTeamHelper()->assertTeamValidAndViewable(); if (!$this->_getTeamModel()->canManageTabs($team, $category, $error)) { throw $this->getErrorOrNoPermissionResponseException($error); } $tabs = Nobita_Teams_Option::getTabsSupported(); if ($this->_request->isPost()) { $disableTabs = $this->_input->filterSingle('disable_tabs', XenForo_Input::ARRAY_SIMPLE); if (!empty($disableTabs)) { foreach ($disableTabs as $tabId) { if (!in_array($tabId, array_keys($tabs))) { return $this->responseError(new XenForo_Phrase('please_enter_valid_value')); } } } $disabledTabs = implode(',', $disableTabs); $dw = XenForo_DataWriter::create('Nobita_Teams_DataWriter_Team'); $dw->setExistingData($team['team_id']); $dw->set('disable_tabs', $disabledTabs); $dw->save(); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink(TEAM_ROUTE_PREFIX, $team)); } else { return $this->_getTeamViewWrapper('wall', $team, $category, $this->responseView('Nobita_Teams_ViewPublic_Team_Tab', 'Team_disable_tabs', array('team' => $team, 'category' => $category, 'tabs' => $tabs, 'disabledTabs' => $team['disabledTabs']))); } }