1267c3c0 by Jeff Balicki

mark as completed

Signed-off-by: Jeff <jeff@gotenzing.com>
1 parent 780641d1
......@@ -122,23 +122,3 @@ function certs(){
error_log("certs()". $e->getMessage()) ;
}
}
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' => $screen_post_type . '-settings',
'name' => esc_html__( 'Mark as Completed', 'learndash' ),
'metaboxes' => [ 'learndash-course-users-management' ],
'showDocumentSidebar' => 'false',
),
)
);
return $header_data;
},
30,
3
);
......
<?php
/**
* LearnDash Settings Metabox for Course Access Settings.
*
* @since 3.1.0
* @package LearnDash\Settings\Metaboxes
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'LearnDash_Settings_Metabox_Course_Users_Management' ) ) ) {
/**
* Class LearnDash Settings Metabox for Course Access Settings.
*
* @since 3.1.0
*/
class LearnDash_Settings_Metabox_Course_Users_Management extends LearnDash_Settings_Metabox {
/**
* Public constructor for class
*
* @since 3.1.0
*/
public function __construct() {
// What screen ID are we showing on.
$this->settings_screen_id = 'sfwd-courses';
......@@ -33,20 +19,14 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear
// Section label/header.
$this->settings_section_label = sprintf(
// translators: placeholder: Course.
esc_html_x( '%s Users management', 'placeholder: management', 'learndash' ),
esc_html_x( '%s Complete Management', 'placeholder: management', 'learndash' ),
learndash_get_custom_label( 'course' )
);
parent::__construct();
}
/**
* Show Settings Section Fields.
*
* @since 3.1.0
*
* @param object $metabox Metabox object.
*/
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 ' ) ) ) {
......@@ -57,26 +37,18 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear
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><tr><th>Username</th><th>Email</th><th>first_name</th><th>last_name</th><th>Mark Complete</th><tr>';
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>Mark Complete</td></tr>';
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"";
}
}
}
/**
* Save Settings Metabox
*
* @since 3.1.0
*
* @param integer $post_id $Post ID is post being saved.
* @param object $saved_post WP_Post object being saved.
* @param boolean $update If update true, otherwise false.
* @param array $settings_field_updates array of settings fields to update.
*/
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' ] ) ) ) {
......@@ -86,7 +58,7 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear
}
}
// End of functions.
}
add_filter(
......@@ -95,7 +67,6 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear
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,
......@@ -104,4 +75,44 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear
}
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' );
}
\ No newline at end of file
......
jQuery(document).ready(function($) {
$(document).on('click','.mark_as_complete', function() {
var button = $(this);
var user_id = $(this).attr('data-user-id');
var course_id = $(this).attr('data-course-id');
$.ajax({
url: ajaxurl,
type: 'POST',
data: {
action: 'mark_as_complete', user_id : user_id, course_id : course_id,
},
success: function(response) {
button.html('completed');
},
error: function(xhr, status, error) {
console.log(error);
}
});
});
});
\ No newline at end of file
......@@ -3,4 +3,4 @@
This file is used by the Wordfence Web Application Firewall. Read
more at https://docs.wordfence.com/en/Web_Application_Firewall_FAQ
******************************************************************
a:12:{s:22:"attackDataNextInterval";N;s:16:"rulesLastUpdated";N;s:12:"premiumCount";N;s:12:"filePatterns";N;s:24:"filePatternCommonStrings";N;s:18:"filePatternIndexes";N;s:21:"signaturesLastUpdated";N;s:21:"signaturePremiumCount";N;s:23:"createInitialRulesDelay";i:1680297390;s:10:"watchedIPs";N;s:15:"blockedPrefixes";N;s:21:"blacklistAllowedCache";N;}
\ No newline at end of file
a:12:{s:22:"attackDataNextInterval";N;s:16:"rulesLastUpdated";N;s:12:"premiumCount";N;s:12:"filePatterns";N;s:24:"filePatternCommonStrings";N;s:18:"filePatternIndexes";N;s:21:"signaturesLastUpdated";N;s:21:"signaturePremiumCount";N;s:23:"createInitialRulesDelay";i:1680300292;s:10:"watchedIPs";N;s:15:"blockedPrefixes";N;s:21:"blacklistAllowedCache";N;}
\ No newline at end of file
......