Last active
April 27, 2020 12:42
-
-
Save jom/6aab3343df53eeba33d5de48ad4f614b to your computer and use it in GitHub Desktop.
Sensei Enrolment Related Snippets
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Below are some snippets for modifying behavior related to Sensei LMS v3.0.0's new enrolment strategy. | |
* | |
* Most of these should be in place prior to upgrading to Sensei LMS 3.0.0. | |
* | |
* These may change in later releases and are just meant to be a guide. | |
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// This enables a feature in Learner Management that allows teachers/admins to hover over `Enrolled` to see a list of | |
// providers and their individual enrolment status. | |
add_filter( 'sensei_feature_flag_enrolment_provider_tooltip', '__return_true' ); | |
/** | |
* With Sensei LMS Status and Tools (https://wordpress.org/plugins/sensei-lms-status-and-tools/) installed | |
* and activated, this enables a button in Learner Management to quickly debug a learner's enrolment in a course. | |
*/ | |
add_filter( 'sensei_show_enrolment_debug_button', '__return_true' ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Below are some strategies for disabling/changing part of the enrolment system. | |
* | |
* Note: This is not officially supported and may break with future releases. | |
*/ | |
// Disable the enrolment system and have it just use if they have course progress. | |
add_filter( | |
'sensei_is_enrolled', | |
function( $is_enrolled, $user_id, $course_id ) { | |
return Sensei_Utils::has_started_course( $course_id, $user_id ); | |
}, | |
10, | |
3 | |
); | |
// Disable manual enrolment provider (and all other providers). | |
add_filter( 'sensei_course_enrolment_providers', '__return_empty_array', 100 ); | |
// Disable the background jobs for the enrolment system. Note: This may change and its usage is unsupported. | |
add_action( | |
'after_setup_theme', | |
function() { | |
if ( ! class_exists( 'Sensei_Course_Enrolment_Manager' ) || ! class_exists( 'Sensei_Enrolment_Job_Scheduler' ) ) { | |
return; | |
} | |
$enrolment_scheduler = Sensei_Enrolment_Job_Scheduler::instance(); | |
remove_action( 'init', [ $enrolment_scheduler, 'maybe_start_learner_calculation' ], 101 ); | |
remove_action( 'sensei_calculate_learner_enrolments', [ $enrolment_scheduler, 'run_learner_calculation' ] ); | |
remove_action( 'sensei_calculate_course_enrolments', [ $enrolment_scheduler, 'run_course_calculation' ] ); | |
remove_action( 'sensei_before_learners_enrolled_courses_query', [ Sensei_Course_Enrolment_Manager::instance(), 'recalculate_enrolments' ] ); | |
} | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Use this filter to ensure manual enrolment is not given to learners with cancelled or otherwise ended | |
* memberships. | |
* | |
* Note: This only runs _once_ during the initial migration. To re-run migration delete all `{db_prefix}sensei_*` | |
* usermeta. Additionally, this filter is only used for users with course progress. | |
*/ | |
add_filter( 'sensei_wc_paid_courses_migration_inactive_memberships_provide_manual_enrolment', '__return_false' ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Use this filter to change the strategy used to provide manual enrolment. | |
* | |
* Note: This only runs _once_ during the initial migration. To re-run migration delete all `{db_prefix}sensei_*` | |
* usermeta. Additionally, this filter is only used for users with course progress. | |
* | |
* Without WooCommerce Paid Courses, all users with course progress will be given manual enrolment. | |
* | |
* With WooCommerce Paid Courses installed, manual enrolment will not be given to any user who current is enrolled via | |
* WooCommerce simple products, subscriptions, or memberships. For subscriptions, it will also attempt to check if they | |
* might have had a subscription when they started the course. If so, they will not be given manual enrolment. | |
*/ | |
add_filter( | |
'sensei_is_legacy_enrolled', | |
function( $is_legacy_enrolled, $user_id, $course_id, $course_progress_comment_id ) { | |
// By returning false, we will not give any user manual enrolment on migration. | |
return false; | |
}, | |
100, | |
4 | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Partial revert tasks to go from Sensei v3 to v2. Make sure you backup your database before running this. We don't | |
* support this path so make sure you know what you're doing. | |
* | |
* Run this script once after reverting files to Sensei 2.x. Recommended route is using WP-CLI's `eval` command. If you | |
* have a smaller instance, you can also use the Code Snippet plugin to create a "Run Once" snippet. | |
*/ | |
global $wpdb; | |
$legacy_enrolment_time = get_option( 'sensei_enrolment_legacy' ); | |
update_option( 'sensei-version', Sensei()->version ); | |
delete_option( 'sensei-wc-paid-courses-memberships-cancelled-orders' ); | |
delete_option( 'sensei_course_enrolment_site_salt' ); | |
delete_option( 'sensei-scheduler-calculation-version' ); | |
$blog_prefix = preg_quote( $wpdb->get_blog_prefix(), null ); | |
$user_meta_keys = [ | |
'^' . $blog_prefix . 'sensei_learner_calculated_version$', | |
'^' . $blog_prefix . 'sensei_course_enrolment_[0-9]+$', | |
'^' . $blog_prefix . 'sensei_enrolment_providers_state$', | |
'^' . $blog_prefix . 'sensei_enrolment_providers_journal$', | |
]; | |
foreach ( $user_meta_keys as $meta_key ) { | |
$wpdb->query( | |
$wpdb->prepare( | |
"DELETE FROM {$wpdb->usermeta} WHERE meta_key RLIKE %s", | |
$meta_key | |
) | |
); | |
} | |
foreach ( [ 'sensei_learner' ] as $taxonomy ) { | |
$terms = $wpdb->get_results( | |
$wpdb->prepare( | |
"SELECT term_id, term_taxonomy_id FROM $wpdb->term_taxonomy WHERE taxonomy = %s", | |
$taxonomy | |
) | |
); | |
// Delete all data for each term. | |
foreach ( $terms as $term ) { | |
$wpdb->delete( $wpdb->term_relationships, array( 'term_taxonomy_id' => $term->term_taxonomy_id ) ); | |
$wpdb->delete( $wpdb->term_taxonomy, array( 'term_taxonomy_id' => $term->term_taxonomy_id ) ); | |
$wpdb->delete( $wpdb->terms, array( 'term_id' => $term->term_id ) ); | |
$wpdb->delete( $wpdb->termmeta, array( 'term_id' => $term->term_id ) ); | |
} | |
} | |
$args = [ | |
'post_type' => 'course', | |
'post_status' => 'any', | |
'nopaging' => true, | |
]; | |
foreach ( get_posts( $args ) as $course ) { | |
delete_post_meta( $course->ID, '_course_enrolment_version' ); | |
} | |
delete_option( 'sensei_enrolment_legacy' ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment