CategoriesController::discussions PHP Method

discussions() public method

Show all categories and few discussions from each.
Since: 2.0.0
public discussions ( string $Category = '' )
$Category string The url code of the parent category.
    public function discussions($Category = '')
    {
        // Setup head
        $this->addJsFile('discussions.js');
        $this->Menu->highlightRoute('/discussions');
        if (!$this->title()) {
            $Title = c('Garden.HomepageTitle');
            if ($Title) {
                $this->title($Title, '');
            } else {
                $this->title(t('All Categories'));
            }
        }
        if (!$Category) {
            $this->Description(c('Garden.Description', null));
        }
        Gdn_Theme::section('CategoryDiscussionList');
        // Set the category follow toggle before we load category data so that it affects the category query appropriately.
        $CategoryFollowToggleModule = new CategoryFollowToggleModule($this);
        $CategoryFollowToggleModule->SetToggle();
        $this->CategoryModel->Watching = !Gdn::session()->GetPreference('ShowAllCategories');
        if ($Category) {
            $Subtree = CategoryModel::GetSubtree($Category, false);
            $CategoryIDs = array_column($Subtree, 'CategoryID');
            $Categories = $this->CategoryModel->GetFull($CategoryIDs)->resultArray();
        } else {
            $Categories = $this->CategoryModel->GetFull()->resultArray();
        }
        $this->setData('Categories', $Categories);
        // Get category data and discussions
        $this->DiscussionsPerCategory = c('Vanilla.Discussions.PerCategory', 5);
        $DiscussionModel = new DiscussionModel();
        $DiscussionModel->setSort(Gdn::request()->get());
        $DiscussionModel->setFilters(Gdn::request()->get());
        $this->setData('Sort', $DiscussionModel->getSort());
        $this->setData('Filters', $DiscussionModel->getFilters());
        $this->CategoryDiscussionData = array();
        foreach ($this->CategoryData->result() as $Category) {
            if ($Category->CategoryID > 0) {
                $this->CategoryDiscussionData[$Category->CategoryID] = $DiscussionModel->get(0, $this->DiscussionsPerCategory, array('d.CategoryID' => $Category->CategoryID, 'Announce' => 'all'));
            }
        }
        // Add modules
        $this->addModule('NewDiscussionModule');
        $this->addModule('DiscussionFilterModule');
        $this->addModule('CategoriesModule');
        $this->addModule('BookmarkedModule');
        $this->addModule($CategoryFollowToggleModule);
        // Set view and render
        $this->View = 'discussions';
        $this->canonicalUrl(url('/categories', true));
        $Path = $this->fetchViewLocation('helper_functions', 'discussions', false, false);
        if ($Path) {
            include_once $Path;
        }
        // For GetOptions function
        $Path2 = $this->fetchViewLocation('helper_functions', 'categories', false, false);
        if ($Path2) {
            include_once $Path2;
        }
        $this->render();
    }