Added new engagement triggers for Quiz completion, quiz failure, and quiz passed.
Refactored Lesson Completion for sanity
Added function llms_mark_complete() for simple programmatic completion of courses, sections, lessons, and tracks. See usage docs for more information.
Class function LLMS_Lesson::mark_complete() has been staged for deprecation. It will still function but developers should update code to use above function.
LifterLMS background updaters will now display a progress report on the admin panel to add some transparency to how the update is doing.
Added author support to llms_membership post type
Added a way to remove all LifterLMS-generated data during plugin uninstallation.
llms_get_post() will now work with any LifterLMS Post Model post types
Removed references to LLMS_Activate class which was removed back in 2.0.
Changed include method to session related classes for better handling via phpunit
Refactored some of the LLMS_Install class for reliability and test coverage
Changed order of table and option creation during installation. Prevents a database warning from being thrown during installation.
Added function for retrieving default difficulty categories added during installation
Added function for removing default categories added during installation
llms_are_terms_and_conditions_required() ensure the page id used in this function is an absint
Removed redundant function LLMS_Lesson::single_mark_complete_text()
Add css classes for buttons to be auto-width rather than the width of their containers
Fix ID of engagement email class. Allows some filters and actions to actually be used.
Properly display quiz failures as failures on the quiz results screen
loop/feature-image.php now works for unsupported PHP 5.5 and down
Fix issue with modifying section titles from within the course builder
Fix undefined warning resulting from admin notice “flash” being undefined on pre-existing saved notices
Updated template at templates/course/complete-lesson-link.php to include a few new CSS classes and utilize llms_form_field() to standardize buttons
New course option allows displaying the video embed in place of the featured image on course tiles displayed on the course catalog screen
Courses can now be exported individually or in bulk. Export of a course includes all course content, sections, lessons, and quizzes.
Courses can now be duplicated. Duplication duplicates all course content, sections, lessons, and quizzes.
Upon completion of the Setup Wizard a sample course can be automatically installed.
Postmeta keys for Lessons and Sections which denote their relationship to their parents have been renamed for consistency, database upgrade 330 included in this release will rename the keys automatically. Read more here
Update to LLMS_Post_Model to allow easier programmatic definition and handling of extending class properties
classes extending LLMS_Post_Model can now be serialized to json and converted to arrays programmatically
new function llms_get_post() allows easier instantiation of an LLMS_Post_Model instance
Added LifterLMS Database Version to the system report
ensure every return from llms_page_restricted is filtered. Thanks to @matthalliday
Ensure purchase page can only load for valid access plans
Course / Membership taxonomy archives now obey orders defined by their respective catalog settings
Fix language of automatic validation error message for numeric field types
Fix translation function error causing course syllabus to display incorrect “x of x” text
Added correct text domain to an i18n string displayed on the checkout confirmation screen, thanks @ymashev
Ensure search result pages are viewable by members and non members regardless of result membership restrictions (unless site is restricted to sitewide membership)
Fixed tooltips on lesson preview tiles (in course syllabus and on next/prev tiles inside lessons) to show the actual reason the lesson is inaccessible rather than always showing a generic enrollment message
Removed the language “You must enroll in this course to unlock this lesson” in favor of “You do not have permission to access to this content” as a restriction message fallback when no better message is available
“Quiz Results” title is now translatable
Removed deprecated JS file “llms-metabox-data.js” which controlled UI/X for 2.x subscription data on courses and memberships
Non LMS Content (pages, posts, forums, etc…) restricted to multiple memberships will now correctly allow users access to the content as long as they have access to at least one of the memberships
Fixed a redirect loop encountered if direct access to a lesson with an incomplete prerequisite was attempted
Adds filter llms_student_dashboard_login_redirect allowing customization of the redirect upon login via the Student Dashboard
Adds a shortcode parameter, login_redirect to [lifterlms_my_account] allowing customization of the redirect upon login via the Student Dashboard
Adds a new tool under “Tools and Utilities” on the LifterLMS Settings screen which allows users to clear the cached student overall progress and overall grade data
Fixes a compatibility issue with the OptimizePress live editor
Adds a text domain to a translation function where none was present, rendering the string untranslatable