/** * Identify current user's category permissions and set as local array. * * @since 2.0.0 * @access public * * @param bool $Escape Prepends category IDs with @ * @return array Protected local _CategoryPermissions */ public static function categoryPermissions($Escape = false) { if (is_null(self::$_CategoryPermissions)) { $Session = Gdn::session(); if (is_object($Session->User) && $Session->User->Admin) { self::$_CategoryPermissions = true; } elseif (c('Garden.Permissions.Disabled.Category')) { if ($Session->checkPermission('Vanilla.Discussions.View')) { self::$_CategoryPermissions = true; } else { self::$_CategoryPermissions = array(); // no permission } } else { $Categories = CategoryModel::categories(); $IDs = array(); foreach ($Categories as $ID => $Category) { if ($Category['PermsDiscussionsView']) { $IDs[] = $ID; } } // Check to see if the user has permission to all categories. This is for speed. $CategoryCount = count($Categories); if (count($IDs) == $CategoryCount) { self::$_CategoryPermissions = true; } else { self::$_CategoryPermissions = array(); foreach ($IDs as $ID) { self::$_CategoryPermissions[] = ($Escape ? '@' : '') . $ID; } } } } return self::$_CategoryPermissions; }
/** * Identify current user's category permissions and set as local array. * * @since 2.0.0 * @access public * * @param bool $Escape Prepends category IDs with @ * @return array Protected local _CategoryPermissions */ public static function CategoryPermissions($Escape = FALSE) { if(is_null(self::$_CategoryPermissions)) { $Session = Gdn::Session(); if((is_object($Session->User) && $Session->User->Admin == '1')) { self::$_CategoryPermissions = TRUE; } elseif(C('Garden.Permissions.Disabled.Category')) { if($Session->CheckPermission('Vanilla.Discussions.View')) self::$_CategoryPermissions = TRUE; else self::$_CategoryPermissions = array(); // no permission } else { $SQL = Gdn::SQL(); $Data = $SQL ->Select('c.CategoryID') ->From('Category c') ->Permission('Vanilla.Discussions.View', 'c', 'PermissionCategoryID', 'Category') ->Get(); $Data = $Data->ResultArray(); // Check to see if the user has permission to all categories. This is for speed. $CategoryCount = $SQL ->Select('c.CategoryID', 'count', 'CategoryCount') ->From('Category c') ->Get()->Value('CategoryCount', 0); if (count($Data) == $CategoryCount) self::$_CategoryPermissions = TRUE; else { self::$_CategoryPermissions = array(); foreach($Data as $Row) { self::$_CategoryPermissions[] = ($Escape ? '@' : '').$Row['CategoryID']; } } } } return self::$_CategoryPermissions; }