learn_mark_as_complete.php
4.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?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' );
}