LLMS_Student::delete_enrollment( int $product_id, string $trigger = 'any' )
Delete a student enrollment.
Contents
Description Description
See also See also
- `llms_delete_student_enrollment()`: calls this function without having to instantiate the LLMS_Student class first.
Parameters Parameters
- $product_id
-
(int) (Required) WP Post ID of the course or membership.
- $trigger
-
(string) (Optional) Only delete the student's enrollment if the original enrollment trigger matches the submitted value.<br> "any" will remove regardless of enrollment trigger. Default "any".
Default value: 'any'
Return Return
(bool) Whether or not the enrollment records have been successfully removed.
Source Source
File: includes/models/model.llms.student.php
public function delete_enrollment( $product_id, $trigger = 'any' ) {
// Assume we can't delete the enrollment.
$delete = false;
// Get the stored trigger.
$enrollment_trigger = $this->get_enrollment_trigger( $product_id );
// Okay to delete if trigger is "any" or if it matches the stored enrollment trigger.
if ( 'any' === $trigger || $enrollment_trigger === $trigger ) {
$delete = true;
} elseif ( ! $enrollment_trigger ) {
/**
* Customize the behavior of enrollment deletion for "legacy" orders.
*
* These orders were created before version 3.0.0 when there was no stored
* enrollment trigger.
*
* By default, we'll automatically delete these enrollments regardless of trigger.
*
* @since 3.33.0
*
* @param boolean $delete Whether or not to delete the enrollment.
*/
$delete = apply_filters( 'lifterlms_legacy_delete_enrollment_action', true );
// Ensure we have an `$enrollment_trigger` when firing the `llms_user_enrollment_deleted` hook.
$enrollment_trigger = $trigger;
}
// Delete the enrollment.
if ( $delete && $this->delete_enrollment_postmeta( $product_id ) ) {
// Clean the cache.
$this->cache_delete( sprintf( 'enrollment_status_%d', $product_id ) );
$this->cache_delete( sprintf( 'date_enrolled_%d', $product_id ) );
$this->cache_delete( sprintf( 'date_updated_%d', $product_id ) );
if ( 'llms_membership' === get_post_type( $product_id ) ) {
// Physically remove from the membership level & remove enrollments data on related products.
$this->remove_membership_level( $product_id, '', true );
}
/**
* Fires after an user enrollment has been deleted.
*
* @since 3.33.0
* @since 4.2.0 The `$enrollment_trigger` parameter was added.
*
* @param int $user_id WP User ID.
* @param int $product_id WP Post ID of the course or membership.
* @param string $enrollment_trigger The enrollment trigger.
*/
do_action( 'llms_user_enrollment_deleted', $this->get_id(), $product_id, $enrollment_trigger );
// Success.
return true;
}
// Nothing was deleted.
return false;
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 4.2.0 | The $enrollment_trigger parameter was added to the llms_user_enrollment_deleted action hook. |
| 3.36.2 | Added logic to physically remove from the membership level and remove enrollments data on related products. |
| 3.33.0 | Introduced. |