LLMS_Admin_Builder::handle_ajax( array $request )
A terrible Rest API for the course builder
Parameters Parameters
- $request
-
(array) (Required) $_REQUEST
Return Return
(array)
Source Source
File: includes/admin/class.llms.admin.builder.php
public static function handle_ajax( $request ) {
if ( ! $request['course_id'] || ! current_user_can( 'edit_course', $request['course_id'] ) ) {
return array();
}
switch ( $request['action_type'] ) {
case 'ajax_save':
if ( isset( $request['llms_builder'] ) ) {
$request['llms_builder'] = stripslashes( $request['llms_builder'] );
wp_send_json( self::heartbeat_received( array(), $request ) );
}
break;
case 'get_permalink':
$id = isset( $request['id'] ) ? absint( $request['id'] ) : false;
if ( ! $id ) {
return array();
}
$parent_course = self::get_object_parent_course_id( $id );
if ( ! $parent_course || absint( $parent_course ) !== absint( $request['course_id'] ) ) {
return array();
}
$title = isset( $request['title'] ) ? sanitize_title( $request['title'] ) : null;
$slug = isset( $request['slug'] ) ? sanitize_title( $request['slug'] ) : null;
$link = get_sample_permalink( $id, $title, $slug );
wp_send_json(
array(
'slug' => $link[1],
'permalink' => str_replace( '%pagename%', $link[1], $link[0] ),
)
);
break;
case 'lazy_load':
$ret = array();
if ( isset( $request['load_id'] ) ) {
$load_id = absint( $request['load_id'] );
$post_type = get_post_type( $load_id );
$allowed_types = array( 'section', 'lesson', 'llms_quiz', 'llms_question' );
if ( ! $post_type || ! in_array( $post_type, $allowed_types, true ) ) {
wp_send_json( $ret );
break;
}
$parent_course = self::get_object_parent_course_id( $load_id );
if ( ! $parent_course || absint( $parent_course ) !== absint( $request['course_id'] ) ) {
wp_send_json( $ret );
break;
}
$post = llms_get_post( $load_id );
if ( $post && is_a( $post, 'LLMS_Post_Model' ) ) {
$ret = $post->toArray();
}
}
wp_send_json( $ret );
break;
case 'search':
$page = isset( $request['page'] ) ? $request['page'] : 1;
$term = isset( $request['term'] ) ? sanitize_text_field( $request['term'] ) : '';
$post_type = '';
if ( isset( $request['post_type'] ) ) {
if ( is_array( $request['post_type'] ) ) {
$post_type = array_map( 'sanitize_text_field', $request['post_type'] );
} else {
$post_type = sanitize_text_field( $request['post_type'] );
}
}
wp_send_json( self::get_existing_posts( $post_type, $term, $page ) );
break;
}
return array();
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 4.17.0 | Remove remove_all_* hooks added in version 4.16.0. |
| 4.16.0 | Remove all filters/actions applied to the title/content when handling the ajax_save by deafault.<br> This is specially to prevent plugin conflicts, see <a href="https://github.com/gocodebox/lifterlms/issues/1530">https://github.com/gocodebox/lifterlms/issues/1530</a>. |
| 3.19.2 | Unknown. |
| 3.13.0 | Introduced. |