If no junction table is specified, will return ONLY non-junction permissions.
If you need every permission regardless of junction & suffix, see CachePermissions.
public getUserPermissions ( integer $UserID, string $LimitToSuffix = '', string $JunctionTable = false, string $JunctionColumn = false, string $ForeignKey = false, integer $ForeignID = false ) : array | ||
$UserID | integer | Unique identifier for user. |
$LimitToSuffix | string | String permission name must match, starting on right (ex: 'View' would match *.*.View) |
$JunctionTable | string | Optionally limit returned permissions to 1 junction (ex: 'Category'). |
$JunctionColumn | string | Column to join junction table on (ex: 'CategoryID'). Required if using $JunctionTable. |
$ForeignKey | string | Foreign table column to join on. |
$ForeignID | integer | Foreign ID to limit join to. |
return | array | Permission records. |
/** * Check whether a user has access to view discussions in a particular category. * * @since 2.0.18 * @example $UserModel->GetCategoryViewPermission($UserID, $CategoryID). * * @param $Sender UserModel. * @return bool Whether user has permission. */ public function userModel_getCategoryViewPermission_create($Sender) { static $PermissionModel = null; $UserID = val(0, $Sender->EventArguments, ''); $CategoryID = val(1, $Sender->EventArguments, ''); $Permission = val(2, $Sender->EventArguments, 'Vanilla.Discussions.View'); if ($UserID && $CategoryID) { if ($PermissionModel === null) { $PermissionModel = new PermissionModel(); } $Category = CategoryModel::categories($CategoryID); if ($Category) { $PermissionCategoryID = $Category['PermissionCategoryID']; } else { $PermissionCategoryID = -1; } $Result = $PermissionModel->getUserPermissions($UserID, $Permission, 'Category', 'PermissionCategoryID', 'CategoryID', $PermissionCategoryID); return val($Permission, val(0, $Result), false) ? true : false; } return false; }