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. "any" will remove regardless of enrollment trigger. Default "any".
Default value: 'any'
Return Return
(boolean) 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. |