Hotfix
- Reinstalls included dependencies on PHP 7.4.
The minimum required LifterLMS core version requirement has been raised from 5.3.0 to 6.0.0. Please upgrade LifterLMS to 6.0.0 or later in order to continue using this add-on!
LLMS_Query_Assignments_Submission::preprare_query() to LLMS_Query_Assignments_Submission::prepare_query().LLMS_Query_Assignments_Submission::$max_pages property with LLMS_Query_Assignments_Submission::get( 'max_pages' ).LLMS_PDFS_Pdflayer.This major release of LifterLMS focuses on improving the experience of creating, designing, and managing achievements and certificates: use the block editor to design certificates, sync awards with their templates, award achievements and certificates on demand without requiring an engagement trigger, and much more. In addition, this release removes a significant number of previously deprecated classes, methods, and functions. Please read the full Breaking Changes sections for more information on removed code.
post_name of earned certificate posts will be generated with a randomized 3+ character string in favor of relying on sequential numbers.llms_use_legacy_engagement_images. #1081header.php and footer.php files from the site’s theme, instead custom templates (templates/certificates/header.php and templates/certificates/footer.php) are used instead. These templates are minimal and exclude theme wrappers which reduces the visual conflicts encountered from theme wrappers, backgrounds, and more, especially when printing certificates. #463{first_name}, now outputs an empty string in favor of falling back to the user’s nickname when there is no first name for the user. #1640<code> tag instead of an <a> tag. #2033LLMS_Database_Query has been deprecated.LLMS_Database_Query::$found_results. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_found_results().LLMS_Database_Query::$max_pages. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_max_pages().LLMS_Database_Query::$number_results. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_number_results().LLMS_Database_Query::$results. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_results().LLMS_Database_Query::$query_vars. The variable as a whole cannot be publicly accessed, instead use LLMS_Database_Query::get() and LLMS_Database_Query::set() to read and write to the array.LLMS_Database_Query but the following concrete classes that utilize the abstract are also affected by this change: LLMS_Query_User_Postmeta, LLMS_Student_Query, LLMS_Query_Quiz_Attempt, LLMS_Events_Query, and LLMS_Notifications_Query.LLMS_Achievement_User is deprecated with no direct replacement.LLMS_Achievement::is_enabled() is deprecated with no replacement.LLMS_Achievement::get_blogname() is deprecated with no replacement.LLMS_Achievement::format_string() is deprecated with no replacement.LLMS_Achievement::get_title() is deprecated with no replacement.LLMS_Achievement::get_content() is deprecated with no replacement.LLMS_Achievement::get_content_html() is deprecated with no replacement.LLMS_Achievement::create() is deprecated with no replacement.LLMS_Achievements::trigger_engagement() is deprecated in favor of LLMS_Engagement_Handler::handle_achievement().LLMS_Certificate is deprecated with no direct replacement.LLMS_Certificate::is_enabled() is deprecated with no replacement.LLMS_Certificate::get_blogname() is deprecated with no replacement.LLMS_Certificate::format_string() is deprecated with no replacement.LLMS_Certificate::get_title() is deprecated with no replacement.LLMS_Certificate::get_content() is deprecated with no replacement.LLMS_Certificate::get_content_html() is deprecated with no replacement.LLMS_Certificate::get_title() is deprecated with no replacement.LLMS_Certificates::trigger_engagement() is deprecated in favor of LLMS_Engagement_Handler::handle_certificate().LLMS_Engagements::init() is deprecated with no replacement.LLMS_Engagements::handle_achievement is deprecated in favor of LLMS_Engagement_Handler::handle_achievement.LLMS_Engagements::handle_certificate is deprecated in favor of LLMS_Engagement_Handler::handle_certificate.LLMS_Engagements::handle_email is deprecated in favor of LLMS_Engagement_Handler::handle_email.LLMS_Database_Query::set_found_results() is deprecated.LLMS_Achievement_User is deprecated with no direct replacement.LLMS_Achievement_User::has_user_earned() is deprecated with no replacement.LLMS_Achievement_User::init() is deprecated with no replacement.LLMS_Achievement_User::trigger() is deprecated with no replacement.LLMS_Achievement_User::get_content_html() is deprecated with no replacement.LLMS_Certificate_User is deprecated with no direct replacement.LLMS_Certificate_User::init() is deprecated with no replacement.LLMS_Certificate_User::trigger() is deprecated with no replacement.LLMS_Certificate_User::get_content_html() is deprecated with no replacement.LLMS_Certificate_User::set_shortcode_user() is deprecated with no replacement.llms_log() directly instead.llms_db_query_get_default_args is deprecated in favor of llms_{$this->id}_query_get_default_args.llms_certificate_has_user_earned is deprecated in favor of llms_earned_certificate_dupcheck.LLMS_Achievements::$content is deprecated with no replacement.LLMS_Admin_Post_Types::meta_metabox_init() is deprecated with no replacement.lifterlms_certificate_bg_img_width, lifterlms_certificate_bg_img_height, and lifterlms_certificate_legacy_image_size are now used only for certificates and certificate templates created using the classic editor.llms_has_legacy_certificates is added when at least one certificate is found. This option will display the settings so they can continue to be used for legacy certificates.llms_has_legacy_certificates or return false from the filter llms_has_legacy_certificates.LLMS_Engagements::handle_certificate is deprecated in favor of LLMS_Engagement_Handler::handle_certificate. #290LLMS_Engagements::handle_achievement is deprecated in favor of LLMS_Engagement_Handler::handle_achievement. #290LLMS_ENGAGEMENT_DEBUG is deprecated with no replacement.LLMS_Engagements::log is deprecated. Use llms_log() instead.LLMS_Engagements::handle_email is deprecated in favor of LLMS_Engagement_Handler::handle_email.lifterlms_register_post_type_llms_my_certificate is deprecated in favor of lifterlms_register_post_type_my_certificate.LLMS_Database_Query::preprare_query() and replaced with LLMS_Database_Query::prepare_query().LLMS_Events_Query::preprare_query replaced with LLMS_Events_Query::prepare_query().LLMS_Query_Quiz_Attempt::preprare_query replaced with LLMS_Query_Quiz_Attempt::prepare_query().LLMS_Query_User_Postmeta::preprare_query replaced with LLMS_Query_User_Postmeta::prepare_query().LLMS_Student_Query::preprare_query replaced with LLMS_Student_Query::prepare_query().LLMS_Notifications_Query::preprare_query replaced with LLMS_Notifications_Query::prepare_query().LLMS_Notifications_Query::preprare_query replaced with LLMS_Notifications_Query::prepare_query(). #859templates/block-templates/single-certificate.html.LLMS() function in favor of the llms() function.LLMS_SendWP::do_remote_install() method in favor of the LLMS_Abstract_Email_Provider::do_remote_install() method.LLMS_Abstract_Email_Provider::output_css() method.LLMS_Abstract_Generator_Posts::increment() method.LLMS_Admin_Users_Table::load_dependencies() method.LLMS_Admin_Import::localize_stat() method.LLMS_Admin_Notices_Core::check_staging() method.LLMS_Admin_Setup_Wizard::generator_course_status() method.LLMS_Admin_Setup_Wizard::output_step_html() method.LLMS_Admin_Setup_Wizard::scripts() method.LLMS_Admin_Setup_Wizard::watch_course_generation() method.llms_format_decimal() function.llms_set_person_auth_cookie() function.LLMS_Course::sections property.LLMS_Course::sku property.LLMS_Frontend_Assets::enqueue_inline_pw_script() method.LLMS_Frontend_Assets::enqueue_inline_script() method.LLMS_Frontend_Assets::is_inline_script_enqueued() method.LLMS_Generator::add_custom_values() method.LLMS_Generator::add_custom_values() method.LLMS_Generator::format_date() method.LLMS_Generator::get_author_id_from_raw() method.LLMS_Generator::get_default_post_status() method.LLMS_Generator::get_generated_posts() method.LLMS_Generator::increment() method.llms__created action hook from the LLMS_Abstract_Database_Store::create() method.llms__deleted action hook from the LLMS_Abstract_Database_Store::delete() method.llms__updated action hook from the LLMS_Abstract_Database_Store::update() method.llms_user_removed_from_membership_level action hook from the LLMS_Student::unenroll() method.$purchaseable global variable in the lifterlms_template_pricing_table() function.$purchaseable global variable in the templates/product/pricing-table.php file.LLMS_Frontend_Password class.LLMS_Install::db_updates() method.LLMS_Install::update_notice() method.LLMS_Notifications::dispatch_processors() method.llms_processors_async_dispatching filter hook from the LLMS_Notifications::__construct() method.LLMS_Notifications::$_instance property.LLMS_Person_Handler::register() method.LLMS_Person_Handler::sanitize_field() method.LLMS_Person_Handler::update() method.LLMS_Person_Handler::validate_fields() method.LLMS_Person_Handler::voucher_toggle_script() method.templates/admin/notices/db-update.php file.templates/admin/notices/db-updating.php file.llms_usernames_blacklist filter hook in the llms_get_usernames_blocklist() function.includes/libraries/wp-background-processing/index.php file.includes/libraries/wp-background-processing/wp-async-request.php file.includes/libraries/wp-background-processing/wp-background-process.php file.LLMS_Section::get_next_available_lesson_order() method.LLMS_Section::get_order() method.LLMS_Section::get_parent_course() method.LLMS_Section::set_parent_course() method.LLMS_AJAX::check_voucher_duplicate() method.LLMS_AJAX::get_ajax_data() method.LLMS_AJAX::register_script() method.LLMS_Interface_Post_Audio interface.LLMS_Interface_Post_Sales_Page interface.LLMS_Interface_Post_Video interface.LLMS_Achievements::$_instance property.LLMS_Certificates::$_instance property.LLMS_Emails::$_instance property.LLMS_Engagements::$_instance property.LLMS_Events::$_instance property.LLMS_Grades::$_instance property.LLMS_Integrations::$_instance property.LLMS_Payment_Gateways::$_instance property.LLMS_Processors::$_instance property.LLMS_Sessions::$_instance property.LLMS_Awards_Query, used for querying data about awarded certificates and achievements.LLMS_Student::get_achievements() and LLMS_Student::get_certificates() now use this class under tho hood.wp_postmeta table which will result in a site-wide performance improvement, especially on large sites._llms_achievement_content and _llms_certificate_content have been removed in favor of WP_Post::$post_content._llms_achievement_title and _llms_certificate_title have been removed in favor of WP_Post::$post_title._llms_achievement_template and _llms_certificate_template have been removed in favor of WP_Post::$post_parent._llms_achievement_image and _llms_certificate_image have been moved the meta property _thumbnail_id in order to utilize the WordPress core’s featured image functionality and internal APIs.lifterlms_user_postmeta for achievement and certificate data will be removed in a future release._achievement_earned and _certificate_earned will continue to be recorded but are no longer being used internally.updated_date is now accessible via WP_Post::$post_date.user_id is now accessible via WP_Post::$post_author.@wordpress/components. Read more.@wordpress/icons. Read more.meta arg. #2016post_name of earned certificate posts will be generated with a randomized 3+ character string in favor of relying on sequential numbers.header.php and footer.php files from the site’s theme, instead custom templates (templates/certificates/header.php and templates/certificates/footer.php) are used instead. These templates are minimal and exclude theme wrappers which reduces the visual conflicts encountered from theme wrappers, backgrounds, and more, especially when printing certificates. #463llms_use_legacy_engagement_images. #1081{first_name}, now outputs an empty string in favor of falling back to the user’s nickname when there is no first name for the user. #1640LLMS_Notifications_Query::$found_results property is accessed in LLMS_Abstract_Notification_Controller::has_subscriber_received(). + Fixed how the protected LLMS_Notifications_Query::$max_pages property is accessed in lifterlms_template_student_dashboard_my_notifications().LLMS_Database_Query has been deprecated.LLMS_Database_Query::$found_results. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_found_results().LLMS_Database_Query::$max_pages. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_max_pages().LLMS_Database_Query::$number_results. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_number_results().LLMS_Database_Query::$results. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_results().LLMS_Database_Query::$query_vars. The variable as a whole cannot be publicly accessed, instead use LLMS_Database_Query::get() and LLMS_Database_Query::set() to read and write to the array.LLMS_Database_Query but the following concrete classes that utilize the abstract are also affected by this change: LLMS_Query_User_Postmeta, LLMS_Student_Query, LLMS_Query_Quiz_Attempt, LLMS_Events_Query, and LLMS_Notifications_Query.LLMS_Achievement_User is deprecated with no direct replacement.LLMS_Achievement::is_enabled() is deprecated with no replacement.LLMS_Achievement::get_blogname() is deprecated with no replacement.LLMS_Achievement::format_string() is deprecated with no replacement.LLMS_Achievement::get_title() is deprecated with no replacement.LLMS_Achievement::get_content() is deprecated with no replacement.LLMS_Achievement::get_content_html() is deprecated with no replacement.LLMS_Achievement::create() is deprecated with no replacement.LLMS_Achievements::trigger_engagement() is deprecated in favor of LLMS_Engagement_Handler::handle_achievement().LLMS_Certificate is deprecated with no direct replacement.LLMS_Certificate::is_enabled() is deprecated with no replacement.LLMS_Certificate::get_blogname() is deprecated with no replacement.LLMS_Certificate::format_string() is deprecated with no replacement.LLMS_Certificate::get_title() is deprecated with no replacement.LLMS_Certificate::get_content() is deprecated with no replacement.LLMS_Certificate::get_content_html() is deprecated with no replacement.LLMS_Certificate::get_title() is deprecated with no replacement.LLMS_Certificates::trigger_engagement() is deprecated in favor of LLMS_Engagement_Handler::handle_certificate().LLMS_Engagements::init() is deprecated with no replacement.LLMS_Engagements::handle_achievement is deprecated in favor of LLMS_Engagement_Handler::handle_achievement.LLMS_Engagements::handle_certificate is deprecated in favor of LLMS_Engagement_Handler::handle_certificate.LLMS_Engagements::handle_email is deprecated in favor of LLMS_Engagement_Handler::handle_email.LLMS_Database_Query::set_found_results() is deprecated.LLMS_Achievement_User is deprecated with no direct replacement.LLMS_Achievement_User::has_user_earned() is deprecated with no replacement.LLMS_Achievement_User::init() is deprecated with no replacement.LLMS_Achievement_User::trigger() is deprecated with no replacement.LLMS_Achievement_User::get_content_html() is deprecated with no replacement.LLMS_Certificate_User is deprecated with no direct replacement.LLMS_Certificate_User::init() is deprecated with no replacement.LLMS_Certificate_User::trigger() is deprecated with no replacement.LLMS_Certificate_User::get_content_html() is deprecated with no replacement.LLMS_Certificate_User::set_shortcode_user() is deprecated with no replacement.llms_log() directly instead.llms_db_query_get_default_args is deprecated in favor of llms_{$this->id}_query_get_default_args.llms_certificate_has_user_earned is deprecated in favor of llms_earned_certificate_dupcheck.LLMS_Achievements::$content is deprecated with no replacement.LLMS_Admin_Post_Types::meta_metabox_init() is deprecated with no replacement.lifterlms_certificate_bg_img_width, lifterlms_certificate_bg_img_height, and lifterlms_certificate_legacy_image_size are now used only for certificates and certificate templates created using the classic editor.llms_has_legacy_certificates is added when at least one certificate is found. This option will display the settings so they can continue to be used for legacy certificates.llms_has_legacy_certificates or return false from the filter llms_has_legacy_certificates.LLMS_Engagements::handle_certificate is deprecated in favor of LLMS_Engagement_Handler::handle_certificate. #290LLMS_Engagements::handle_achievement is deprecated in favor of LLMS_Engagement_Handler::handle_achievement. #290LLMS_ENGAGEMENT_DEBUG is deprecated with no replacement.LLMS_Engagements::log is deprecated. Use llms_log() instead.LLMS_Engagements::handle_email is deprecated in favor of LLMS_Engagement_Handler::handle_email.lifterlms_register_post_type_llms_my_certificate is deprecated in favor of lifterlms_register_post_type_my_certificate.LLMS_Database_Query::preprare_query() and replaced with LLMS_Database_Query::prepare_query().LLMS_Events_Query::preprare_query replaced with LLMS_Events_Query::prepare_query().LLMS_Query_Quiz_Attempt::preprare_query replaced with LLMS_Query_Quiz_Attempt::prepare_query().LLMS_Query_User_Postmeta::preprare_query replaced with LLMS_Query_User_Postmeta::prepare_query().LLMS_Student_Query::preprare_query replaced with LLMS_Student_Query::prepare_query().LLMS_Notifications_Query::preprare_query replaced with LLMS_Notifications_Query::prepare_query().LLMS_Notifications_Query::preprare_query replaced with LLMS_Notifications_Query::prepare_query(). #859templates/block-templates/single-certificate.html.LLMS() function in favor of the llms() function.LLMS_SendWP::do_remote_install() method in favor of the LLMS_Abstract_Email_Provider::do_remote_install() method.LLMS_Abstract_Email_Provider::output_css() method.LLMS_Abstract_Generator_Posts::increment() method.LLMS_Admin_Users_Table::load_dependencies() method.LLMS_Admin_Import::localize_stat() method.LLMS_Admin_Notices_Core::check_staging() method.LLMS_Admin_Setup_Wizard::generator_course_status() method.LLMS_Admin_Setup_Wizard::output_step_html() method.LLMS_Admin_Setup_Wizard::scripts() method.LLMS_Admin_Setup_Wizard::watch_course_generation() method.llms_format_decimal() function.llms_set_person_auth_cookie() function.LLMS_Course::sections property.LLMS_Course::sku property.LLMS_Frontend_Assets::enqueue_inline_pw_script() method.LLMS_Frontend_Assets::enqueue_inline_script() method.LLMS_Frontend_Assets::is_inline_script_enqueued() method.LLMS_Generator::add_custom_values() method.LLMS_Generator::add_custom_values() method.LLMS_Generator::format_date() method.LLMS_Generator::get_author_id_from_raw() method.LLMS_Generator::get_default_post_status() method.LLMS_Generator::get_generated_posts() method.LLMS_Generator::increment() method.llms__created action hook from the LLMS_Abstract_Database_Store::create() method.llms__deleted action hook from the LLMS_Abstract_Database_Store::delete() method.llms__updated action hook from the LLMS_Abstract_Database_Store::update() method.llms_user_removed_from_membership_level action hook from the LLMS_Student::unenroll() method.$purchaseable global variable in the lifterlms_template_pricing_table() function.$purchaseable global variable in the templates/product/pricing-table.php file.LLMS_Frontend_Password class.LLMS_Install::db_updates() method.LLMS_Install::update_notice() method.LLMS_Notifications::dispatch_processors() method.llms_processors_async_dispatching filter hook from the LLMS_Notifications::__construct() method.LLMS_Notifications::$_instance property.LLMS_Person_Handler::register() method.LLMS_Person_Handler::sanitize_field() method.LLMS_Person_Handler::update() method.LLMS_Person_Handler::validate_fields() method.LLMS_Person_Handler::voucher_toggle_script() method.templates/admin/notices/db-update.php file.templates/admin/notices/db-updating.php file.llms_usernames_blacklist filter hook in the llms_get_usernames_blocklist() function.includes/libraries/wp-background-processing/index.php file.includes/libraries/wp-background-processing/wp-async-request.php file.includes/libraries/wp-background-processing/wp-background-process.php file.LLMS_Section::get_next_available_lesson_order() method.LLMS_Section::get_order() method.LLMS_Section::get_parent_course() method.LLMS_Section::set_parent_course() method.LLMS_AJAX::check_voucher_duplicate() method.LLMS_AJAX::get_ajax_data() method.LLMS_AJAX::register_script() method.LLMS_Interface_Post_Audio interface.LLMS_Interface_Post_Sales_Page interface.LLMS_Interface_Post_Video interface.LLMS_Achievements::$_instance property.LLMS_Certificates::$_instance property.LLMS_Emails::$_instance property.LLMS_Engagements::$_instance property.LLMS_Events::$_instance property.LLMS_Grades::$_instance property.LLMS_Integrations::$_instance property.LLMS_Payment_Gateways::$_instance property.LLMS_Processors::$_instance property.LLMS_Sessions::$_instance property.LLMS_Awards_Query, used for querying data about awarded certificates and achievements.LLMS_Student::get_achievements() and LLMS_Student::get_certificates() now use this class under tho hood.wp_postmeta table which will result in a site-wide performance improvement, especially on large sites._llms_achievement_content and _llms_certificate_content have been removed in favor of WP_Post::$post_content._llms_achievement_title and _llms_certificate_title have been removed in favor of WP_Post::$post_title._llms_achievement_template and _llms_certificate_template have been removed in favor of WP_Post::$post_parent._llms_achievement_image and _llms_certificate_image have been moved the meta property _thumbnail_id in order to utilize the WordPress core’s featured image functionality and internal APIs.lifterlms_user_postmeta for achievement and certificate data will be removed in a future release._achievement_earned and _certificate_earned will continue to be recorded but are no longer being used internally.updated_date is now accessible via WP_Post::$post_date.user_id is now accessible via WP_Post::$post_author.@wordpress/components. Read more.@wordpress/icons. Read more.meta arg. #2016