llms_current_user_can( string $cap, int $obj_id = null )
Checks LifterLMS user capabilities against an object
Parameters Parameters
- $cap
-
(string) (Required) Capability name.
- $obj_id
-
(int) (Optional) WP_Post or WP_User ID.
Default value: null
Return Return
(boolean)
Source Source
File: includes/functions/llms.functions.person.php
function llms_current_user_can( $cap, $obj_id = null ) {
$caps = LLMS_Roles::get_all_core_caps();
$grant = false;
if ( in_array( $cap, $caps, true ) ) {
// If the user has the cap, maybe do some additional checks.
if ( current_user_can( $cap ) ) {
switch ( $cap ) {
case 'view_lifterlms_reports':
// Can view others reports so its okay.
if ( current_user_can( 'view_others_lifterlms_reports' ) ) {
$grant = true;
// Can only view their own reports check if the student is their instructor.
} elseif ( $obj_id ) {
$instructor = llms_get_instructor();
$student = llms_get_student( $obj_id );
if ( $instructor && $student ) {
foreach ( $instructor->get_posts(
array(
'posts_per_page' => -1,
),
'ids'
) as $id ) {
if ( $student->get_enrollment_status( $id ) ) {
$grant = true;
break;
}
}
}
}
break;
// No other checks needed.
default:
$grant = true;
}
}
}
/**
* Filters whether or not the current user can perform the requested action
*
* The dynamic portion of this hook, `$cap`, refers to the requested user capability.
*
* @since 3.13.0
*
* @param bool $grant Whether or not the requested capability is granted to the user.
* @param int $obj_id WP_Post or WP_User ID.
*/
return apply_filters( "llms_current_user_can_{$cap}", $grant, $obj_id );
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 4.5.0 | Use strict array comparison. |
| 3.13.0 | Introduced. |