LLMS_Student_Dashboard
LLMS_Student_Dashboard class.
Contents
Source Source
File: includes/class.llms.student.dashboard.php
class LLMS_Student_Dashboard { /** * Constructor * * @since 3.0.0 * @version 3.24.0 */ public function __construct() { add_filter( 'llms_get_endpoints', array( $this, 'add_endpoints' ) ); add_filter( 'lifterlms_student_dashboard_title', array( $this, 'modify_dashboard_title' ), 5 ); add_filter( 'rewrite_rules_array', array( $this, 'modify_rewrite_rules_order' ) ); } /** * Add endpoints to the LLMS_Query class to be automatically registered * * @param array $endpoints updated array of endpoints * @since 3.0.0 * @version 3.0.0 */ public function add_endpoints( $endpoints ) { return array_merge( $endpoints, $this->get_endpoints() ); } /** * Retrieve an array of all endpoint data for student dashboard endpoints * * @return array * @since 3.0.0 * @version 3.0.0 */ public function get_endpoints() { $endpoints = array(); foreach ( self::get_tabs() as $var => $data ) { if ( empty( $data['endpoint'] ) ) { continue; } $endpoints[ $var ] = $data['endpoint']; } return $endpoints; } /** * Get list of student's courses used for recent courses on the dashboard * and all courses (paginated) on the "View Courses" endpoint * * @param integer $limit number of courses to return * @param integer $skip number of courses to skip (for pagination) * @return array * @since 3.6.0 * @version 3.6.0 */ private static function get_courses( $limit = 10, $skip = 0 ) { // Get sorting option. $option = get_option( 'lifterlms_myaccount_courses_in_progress_sorting', 'date,DESC' ); // Parse to order & orderby. $option = explode( ',', $option ); $orderby = ! empty( $option[0] ) ? $option[0] : 'date'; $order = ! empty( $option[1] ) ? $option[1] : 'DESC'; $student = new LLMS_Student(); return $student->get_courses( array( 'limit' => $limit, 'order' => $order, 'orderby' => $orderby, 'skip' => $skip, 'status' => 'enrolled', ) ); } /** * Retrieve the current tab when on the student dashboard * * @param string $return type of return, either "data" for an array of data or 'slug' for just the slug * @return mixed * @since 3.0.0 * @version 3.0.0 */ public static function get_current_tab( $return = 'data' ) { global $wp; // Set default tab. $current_tab = apply_filters( 'llms_student_dashboard_default_tab', 'dashboard' ); $tabs = self::get_tabs(); foreach ( $tabs as $var => $data ) { if ( isset( $wp->query_vars[ $var ] ) ) { $current_tab = $var; break; } } if ( 'data' === $return ) { return $tabs[ $current_tab ]; } else { return $current_tab; } } /** * Retrieve all dashboard tabs and related data * * @since 3.0.0 * @since 3.28.2 Unknown. * @since 6.0.0 Add pagination to the view-achievements and view-certificates tabs. * @since 7.5.0 Add view-favorites tab. * * @return array */ public static function get_tabs() { $tabs = array( 'dashboard' => array( 'content' => 'lifterlms_template_student_dashboard_home', 'endpoint' => false, 'nav_item' => true, 'title' => __( 'Dashboard', 'lifterlms' ), 'url' => llms_get_page_url( 'myaccount' ), ), 'view-courses' => array( 'content' => 'lifterlms_template_student_dashboard_my_courses', 'endpoint' => get_option( 'lifterlms_myaccount_courses_endpoint', 'my-courses' ), 'paginate' => true, 'nav_item' => true, 'title' => __( 'My Courses', 'lifterlms' ), ), 'my-grades' => array( 'content' => 'lifterlms_template_student_dashboard_my_grades', 'endpoint' => get_option( 'lifterlms_myaccount_grades_endpoint', 'my-grades' ), 'paginate' => true, 'nav_item' => true, 'title' => __( 'My Grades', 'lifterlms' ), ), 'view-memberships' => array( 'content' => 'lifterlms_template_student_dashboard_my_memberships', 'endpoint' => get_option( 'lifterlms_myaccount_memberships_endpoint', 'my-memberships' ), 'nav_item' => true, 'title' => __( 'My Memberships', 'lifterlms' ), ), 'view-achievements' => array( 'content' => 'lifterlms_template_student_dashboard_my_achievements', 'endpoint' => get_option( 'lifterlms_myaccount_achievements_endpoint', 'my-achievements' ), 'paginate' => true, 'nav_item' => true, 'title' => __( 'My Achievements', 'lifterlms' ), ), 'view-certificates' => array( 'content' => 'lifterlms_template_student_dashboard_my_certificates', 'endpoint' => get_option( 'lifterlms_myaccount_certificates_endpoint', 'my-certificates' ), 'paginate' => true, 'nav_item' => true, 'title' => __( 'My Certificates', 'lifterlms' ), ), 'notifications' => array( 'content' => 'lifterlms_template_student_dashboard_my_notifications', 'endpoint' => get_option( 'lifterlms_myaccount_notifications_endpoint', 'notifications' ), 'paginate' => true, 'nav_item' => true, 'title' => __( 'Notifications', 'lifterlms' ), ), 'edit-account' => array( 'content' => array( __CLASS__, 'output_edit_account_content' ), 'endpoint' => get_option( 'lifterlms_myaccount_edit_account_endpoint', 'edit-account' ), 'nav_item' => true, 'title' => __( 'Edit Account', 'lifterlms' ), ), 'redeem-voucher' => array( 'content' => array( __CLASS__, 'output_redeem_voucher_content' ), 'endpoint' => get_option( 'lifterlms_myaccount_redeem_vouchers_endpoint', 'redeem-voucher' ), 'nav_item' => true, 'title' => __( 'Redeem a Voucher', 'lifterlms' ), ), 'orders' => array( 'content' => array( __CLASS__, 'output_orders_content' ), 'endpoint' => get_option( 'lifterlms_myaccount_orders_endpoint', 'orders' ), 'nav_item' => true, 'title' => __( 'Order History', 'lifterlms' ), ), 'signout' => array( 'endpoint' => false, 'title' => __( 'Sign Out', 'lifterlms' ), 'nav_item' => false, 'url' => wp_logout_url( llms_get_page_url( 'myaccount' ) ), ), ); if ( llms_is_favorites_enabled() ) { $tabs = llms_assoc_array_insert( $tabs, 'view-certificates', 'view-favorites', array( 'content' => 'llms_template_student_dashboard_my_favorites', 'endpoint' => get_option( 'lifterlms_myaccount_favorites_endpoint', 'my-favorites' ), 'paginate' => true, 'nav_item' => true, 'title' => __( 'My Favorites', 'lifterlms' ), ) ); } return apply_filters( 'llms_get_student_dashboard_tabs', $tabs ); } /** * Retrieve dashboard tab data as required to display navigation links * Excludes any endpoint disabled by deleting the slug from account settings * * @return array * @since 3.17.5 * @version 3.17.5 */ public static function get_tabs_for_nav() { $tabs = array(); foreach ( self::get_tabs() as $var => $data ) { if ( isset( $data['url'] ) ) { $url = $data['url']; } elseif ( ! empty( $data['endpoint'] ) ) { $url = llms_get_endpoint_url( $var, '', llms_get_page_url( 'myaccount' ) ); } else { continue; } $tabs[ $var ] = array( 'url' => $url, 'title' => $data['title'], ); } return apply_filters( 'llms_get_student_dashboard_tabs_for_nav', $tabs ); } /** * Determine if an endpoint is disabled * If the custom endpoint option is an empty string (blank) the settings define the endpoint as disabled * * @param string $endpoint endpoint slug (eg: my-courses) * @return bool * @since 3.19.0 * @version 3.19.0 */ public static function is_endpoint_enabled( $endpoint ) { $tabs = self::get_tabs(); if ( isset( $tabs[ $endpoint ] ) && ! empty( $tabs[ $endpoint ]['endpoint'] ) ) { return true; } return false; } /** * Handle modification of the default dashboard title for certain pages and sub pages * * @param string $title default title HTML * @return string * @since 3.24.0 * @version 3.24.0 */ public function modify_dashboard_title( $title ) { global $wp_query; $tab = self::get_current_tab( 'tab' ); if ( 'my-grades' === $tab && ! empty( $wp_query->query['my-grades'] ) ) { $course = get_posts( array( 'name' => $wp_query->query['my-grades'], 'post_type' => 'course', ) ); $course = array_shift( $course ); if ( $course ) { $data = self::get_current_tab(); $new_title = '<a href="' . esc_url( llms_get_endpoint_url( 'my-grades' ) ) . '">' . $data['title'] . '</a>'; $new_title .= sprintf( ' %1$s <a href="%2$s">%3$s</a>', apply_filters( 'llms_student_dashboard_title_separator', '<small>></small>' ), get_permalink( $course->ID ), get_the_title( $course->ID ) ); $title = str_replace( $data['title'], $new_title, $title ); } } return $title; } public function modify_rewrite_rules_order( $rules ) { return $rules; } /** * Callback to output the edit account content * * @return void * @since 3.0.0 * @version 3.0.0 */ public static function output_edit_account_content() { llms_get_template( 'myaccount/form-edit-account.php', array( 'user' => get_user_by( 'id', get_current_user_id() ), ) ); } /** * Endpoint to output orders content * * @since 3.0.0 * @since 3.8.0 Unknown. * @since 6.0.0 Use `llms_template_view_order()` in favor of including the template file directly. * * @return void */ public static function output_orders_content() { global $wp; $args = array(); if ( ! empty( $wp->query_vars['orders'] ) ) { $order = llms_get_post( $wp->query_vars['orders'] ); llms_template_view_order( $order ); } else { $student = new LLMS_Student(); llms_get_template( 'myaccount/my-orders.php', array( 'orders' => $student->get_orders( array( 'page' => isset( $_GET['opage'] ) ? intval( $_GET['opage'] ) : 1, ) ), ) ); } } /**
Expand full source code Collapse full source code View on GitHub
Methods Methods
- __construct — Constructor
- add_endpoints — Add endpoints to the LLMS_Query class to be automatically registered
- get_courses — Get list of student's courses used for recent courses on the dashboard and all courses (paginated) on the "View Courses" endpoint
- get_current_tab — Retrieve the current tab when on the student dashboard
- get_endpoints — Retrieve an array of all endpoint data for student dashboard endpoints
- get_tabs — Retrieve all dashboard tabs and related data
- get_tabs_for_nav — Retrieve dashboard tab data as required to display navigation links Excludes any endpoint disabled by deleting the slug from account settings
- is_endpoint_enabled — Determine if an endpoint is disabled If the custom endpoint option is an empty string (blank) the settings define the endpoint as disabled
- modify_dashboard_title — Handle modification of the default dashboard title for certain pages and sub pages
- modify_rewrite_rules_order
- output_edit_account_content — Callback to output the edit account content
- output_orders_content — Endpoint to output orders content
- output_redeem_voucher_content — Callback to output content for the voucher endpoint
Changelog Changelog
Version | Description |
---|---|
4.0.0 | Removed deprecated methods. |
3.28.2 | Unknown. |
3.0.0 | Introduced. |