learn_mark_as_complete.php 4.92 KB
<?php

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'LearnDash_Settings_Metabox_Course_Users_Management' ) ) ) {
	
	class LearnDash_Settings_Metabox_Course_Users_Management extends LearnDash_Settings_Metabox {

	
		public function __construct() {
			// What screen ID are we showing on.
			$this->settings_screen_id = 'sfwd-courses';

			// Used within the Settings API to uniquely identify this section.
			$this->settings_metabox_key = 'learndash-course-users-management';

			// Section label/header.
			$this->settings_section_label = sprintf(
				// translators: placeholder: Course.
				esc_html_x( '%s Complete Management', 'placeholder: management', 'learndash' ),
				learndash_get_custom_label( 'course' )
			);

			parent::__construct();
		}

		
		protected function show_settings_metabox_fields( $metabox = null ) {
			if ( ( is_object( $metabox ) ) && ( is_a( $metabox, 'LearnDash_Settings_Metabox' ) ) && ( $metabox->settings_metabox_key === $this->settings_metabox_key ) ) {
				if ( ( isset( $metabox->post ) ) && ( is_a( $metabox->post, 'WP_Post ' ) ) ) {
					$course_id = $metabox->post->ID;
				} else {
					$course_id = get_the_ID();
				}

				if ( ( ! empty( $course_id ) ) && ( get_post_type( $course_id ) === learndash_get_post_type_slug( 'course' ) ) ) {
                   $users =  learndash_get_course_users_access_from_meta(  $course_id );
                   echo '<table width="100%"><tr><th>Username</th><th>Email</th><th>First Name</th><th>Last Name</th><th>Mark Complete</th><tr>';
					foreach($users as $user){
                        $user_info = get_userdata($user);
                        echo  '<tr><td>'. $user_info->user_login .'</td><td>'. $user_info->user_email .'</td><td>'.$user_info->first_name.'</td><td>'.$user_info->last_name.'</td><td><button class="mark_as_complete" data-user-id="'.$user.'" data-course-id="'.$course_id.'" >Mark Complete</button></td></tr>';
                    }
                    echo "</table>";
					echo"";
				}
			}
		}

		
		public function save_post_meta_box( $post_id = 0, $saved_post = null, $update = null, $settings_field_updates = null ) {
			if ( ( isset( $_POST['learndash_course_users_nonce'] ) ) && ( wp_verify_nonce( $_POST['learndash_course_users_nonce'], 'learndash_course_users_nonce_' . $post_id ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
				if ( ( isset( $_POST['learndash_course_users'] ) ) && ( isset( $_POST['learndash_course_users'][ $post_id ] ) ) && ( ! empty( $_POST['learndash_course_users'][ $post_id ] ) ) && isset( $_POST[ 'learndash_course_users-' . $post_id . '-changed' ] ) && ( ! empty( $_POST[ 'learndash_course_users-' . $post_id . '-changed' ] ) ) ) {
					$course_users = (array) json_decode( stripslashes( $_POST['learndash_course_users'][ $post_id ] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
					learndash_set_users_for_course( $post_id, $course_users );
				}
			}
		}


	}

	add_filter(
		'learndash_post_settings_metaboxes_init_' . learndash_get_post_type_slug( 'course' ),
		function( $metaboxes = array() ) {
			if ( ( ! isset( $metaboxes['LearnDash_Settings_Metabox_Course_Users_Management'] ) ) && ( class_exists( 'LearnDash_Settings_Metabox_Course_Users_Management' ) ) ) {
				$metaboxes['LearnDash_Settings_Metabox_Course_Users_Management'] = LearnDash_Settings_Metabox_Course_Users_Management::add_metabox_instance();
			}
			return $metaboxes;
		},
		50,
		1
	);
}


add_filter(
    'learndash_header_data',
    function( $header_data, $menu_tab_key, $admin_tab_sets ) {
        $header_data['tabs'] = array_merge(
            $header_data['tabs'],
            array(
                array(
                    'id'                  => 'course-complete-settings',
                    'name'                => esc_html__( 'Mark as Completed', 'learndash' ),
                    'metaboxes'           => [  'learndash-course-users-management' ],
                    'showDocumentSidebar' => 'false',
                ),
            )
        );
        return $header_data;
    },
    30,
    3
);

add_action( 'wp_ajax_mark_as_complete', 'mark_as_complete_callback' );


function mark_as_complete_callback() {

    $selected_user_id = $_POST['user_id'];
    $selected_course_id = $_POST['course_id'];
    learndash_user_course_complete_all_steps( $selected_user_id, $selected_course_id );
    wp_send_json( array( 'success' => true ) );

}


add_action( 'admin_print_scripts-post-new.php', 'course_admin_script', 11 );
add_action( 'admin_print_scripts-post.php', 'course_admin_script', 11 );

function course_admin_script() {
    global $post_type;
    if( 'sfwd-courses' == $post_type )
    wp_enqueue_script( 'course-admin-script', get_stylesheet_directory_uri() . '/js/course-admin.js' );
}