CategoryModel::getFull PHP Method

getFull() public method

public getFull ( $CategoryID = false, $Permissions = false )
    public function getFull($CategoryID = false, $Permissions = false)
    {
        // Get the current category list
        $Categories = self::categories();
        // Filter out the categories we aren't supposed to view.
        if ($CategoryID && !is_array($CategoryID)) {
            $CategoryID = array($CategoryID);
        }
        if (!$CategoryID && $this->Watching) {
            $CategoryID = self::CategoryWatch(false);
        }
        switch ($Permissions) {
            case 'Vanilla.Discussions.Add':
                $Permissions = 'PermsDiscussionsAdd';
                break;
            case 'Vanilla.Disussions.Edit':
                $Permissions = 'PermsDiscussionsEdit';
                break;
            default:
                $Permissions = 'PermsDiscussionsView';
                break;
        }
        $IDs = array_keys($Categories);
        foreach ($IDs as $ID) {
            if ($ID < 0) {
                unset($Categories[$ID]);
            } elseif (!$Categories[$ID][$Permissions]) {
                unset($Categories[$ID]);
            } elseif (is_array($CategoryID) && !in_array($ID, $CategoryID)) {
                unset($Categories[$ID]);
            }
        }
        //self::JoinRecentPosts($Categories);
        foreach ($Categories as &$Category) {
            if ($Category['ParentCategoryID'] <= 0) {
                self::JoinRecentChildPosts($Category, $Categories);
            }
        }
        // This join users call can be very slow on forums with a lot of categories so we can disable it here.
        if ($this->JoinRecentUsers) {
            Gdn::userModel()->joinUsers($Categories, array('LastUserID'));
        }
        $Result = new Gdn_DataSet($Categories, DATASET_TYPE_ARRAY);
        $Result->DatasetType(DATASET_TYPE_OBJECT);
        return $Result;
    }