Identify current user's category permissions and set as local array.
public static categoryPermissions ( boolean $Escape = false ) : array | ||
$Escape | boolean | Prepends category IDs with @ |
return | array | Protected local _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) { self::$categoryPermissions = true; } elseif (c('Garden.Permissions.Disabled.Category')) { if ($Session->checkPermission('Vanilla.Discussions.View')) { self::$categoryPermissions = true; } else { self::$categoryPermissions = []; // no permission } } else { $Categories = CategoryModel::categories(); $IDs = []; 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 = []; foreach ($IDs as $ID) { self::$categoryPermissions[] = ($Escape ? '@' : '') . $ID; } } } } return self::$categoryPermissions; }