Ejemplo n.º 1
0
 /**
  * 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);
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 /**
  * 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'])));
     }
 }