LLMS_Blocks_Post_Visibility
LLMS_Blocks_Post_Visibility class.
Contents
Source Source
File: libraries/lifterlms-blocks/includes/class-llms-blocks-post-visibility.php
class LLMS_Blocks_Post_Visibility {
/**
* Constructor.
*
* @since 1.3.0
* @version 1.3.0
*/
public function __construct() {
add_action( 'init', array( $this, 'register_meta' ) );
}
/**
* Meta field update authorization callback.
*
* @param bool $allowed Is the update allowed.
* @param string $meta_key Meta keyname.
* @param int $object_id WP Object ID (post,comment,etc)...
* @param int $user_id WP User ID.
* @param string $cap requested capability.
* @param array $caps user capabilities.
* @return bool
* @since 1.3.0
* @version 1.3.0
*/
public function authorize_callback( $allowed, $meta_key, $object_id, $user_id, $cap, $caps ) {
return user_can( $user_id, 'edit_post', $object_id );
}
/**
* Retrieve visibility information for a give object.
*
* @param array $obj Assoc. array of WP_Post data.
* @param WP_REST_Request $request Full details about the request.
* @return WP_Error|string Visibility term slug or WP_Error object.
* @since 1.3.0
* @version 1.3.0
*/
public function get_callback( $obj, $request ) {
$ret = array();
$obj = new LLMS_Product( $obj['id'] );
if ( $obj ) {
$ret = $obj->get_catalog_visibility();
}
return $ret;
}
/**
* Update visibility information for a given object.
*
* @param string $value new visibility status value.
* @param WP_Post $object WP_Post object.
* @param string $key name of the field.
* @return null|WP_Error
* @since 1.3.0
* @version 1.3.0
*/
public function update_callback( $value, $object, $key ) {
if ( ! current_user_can( 'edit_post', $object->ID ) ) {
return new WP_Error(
'rest_cannot_update',
__( 'Sorry, you are not allowed to edit the object visibility.', 'lifterlms' ),
array(
'key' => $name,
'status' => rest_authorization_required_code(),
)
);
}
$obj = new LLMS_Product( $object->ID );
if ( $obj ) {
$obj->set_catalog_visibility( $value );
}
return null;
}
/**
* Register custom meta fields.
*
* @return void
* @since 1.3.0
* @version 1.3.0
*/
public function register_meta() {
foreach ( array( 'course', 'llms_membership' ) as $post_type ) {
register_rest_field(
$post_type,
'visibility',
array(
'get_callback' => array( $this, 'get_callback' ),
'update_callback' => array( $this, 'update_callback' ),
'schema' => array(
'description' => __( 'Post visibility.', 'lifterlms' ),
'type' => 'object',
'context' => array( 'view', 'edit' ),
'properties' => array(),
'arg_options' => array(
'sanitize_callback' => null,
'validate_callback' => null,
),
),
)
);
}
}
}
Expand full source code Collapse full source code View on GitHub
Methods Methods
- __construct — Constructor.
- authorize_callback — Meta field update authorization callback.
- get_callback — Retrieve visibility information for a give object.
- register_meta — Register custom meta fields.
- update_callback — Update visibility information for a given object.