Plugin Directory

Changeset 2728787


Ignore:
Timestamp:
05/23/2022 07:01:10 PM (4 years ago)
Author:
thomasplevy
Message:

Release v6.6.0

Location:
lifterlms
Files:
44 edited
1 copied

Legend:

Unmodified
Added
Removed
  • lifterlms/tags/6.6.0/assets/js/llms-admin-addons.asset.php

    r2706637 r2728787  
    1 <?php return array('dependencies' => array('jquery', 'wp-i18n', 'wp-polyfill'), 'version' => 'e53efca973e7c1dd11b780bbcbb4d192');
     1<?php return array('dependencies' => array('jquery', 'wp-i18n', 'wp-polyfill'), 'version' => '3f38fd10c57dff239c116a4b72d83a22');
  • lifterlms/tags/6.6.0/assets/js/llms-admin-award-certificate.asset.php

    r2706637 r2728787  
    1 <?php return array('dependencies' => array('llms-components', 'llms-utils', 'wp-components', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '23e1c1ce85f28d89d057b895afe28083');
     1<?php return array('dependencies' => array('llms-components', 'llms-utils', 'wp-components', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => 'b29eba510c6eb3f2929016922545bef8');
  • lifterlms/tags/6.6.0/assets/js/llms-admin-certificate-editor.asset.php

    r2711689 r2728787  
    1 <?php return array('dependencies' => array('llms-components', 'llms-icons', 'llms-utils', 'react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-dom-ready', 'wp-edit-post', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-rich-text', 'wp-url'), 'version' => 'ce6098b1f7d7f917c52c393d73029336');
     1<?php return array('dependencies' => array('llms-components', 'llms-icons', 'llms-utils', 'react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-dom-ready', 'wp-edit-post', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-rich-text', 'wp-url'), 'version' => 'd9413d77bf5dad3f2d3163b8d59ce744');
  • lifterlms/tags/6.6.0/assets/js/llms-components.asset.php

    r2706637 r2728787  
    1 <?php return array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '05c718bdf68b15f02d456ebd3701bbb1');
     1<?php return array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => 'dc5d851259c42b2847c9087b2caf7bc4');
  • lifterlms/tags/6.6.0/assets/js/llms-icons.asset.php

    r2706637 r2728787  
    1 <?php return array('dependencies' => array('wp-element', 'wp-polyfill', 'wp-primitives'), 'version' => '89d948440efb942c982e2b869d75a378');
     1<?php return array('dependencies' => array('wp-element', 'wp-polyfill', 'wp-primitives'), 'version' => '80a071a1a1caf87759fbc247d4f980c6');
  • lifterlms/tags/6.6.0/assets/js/llms-utils.asset.php

    r2706637 r2728787  
    1 <?php return array('dependencies' => array('wp-polyfill'), 'version' => 'b004b557747fa76e54354e4c358fa90e');
     1<?php return array('dependencies' => array('wp-polyfill'), 'version' => '4d6b40d256aa387f0ac1cc68e3d124fb');
  • lifterlms/tags/6.6.0/blocks/certificate-title/index.asset.php

    r2706637 r2728787  
    1 <?php return array('dependencies' => array('llms-components', 'llms-utils', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '7e829736b959829d51c53f0c2bb47ce4');
     1<?php return array('dependencies' => array('llms-components', 'llms-utils', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '096c206ef94b9934b110e350bb39fdda');
  • lifterlms/tags/6.6.0/class-lifterlms.php

    r2722171 r2728787  
    3535     * @var string
    3636     */
    37     public $version = '6.5.0';
     37    public $version = '6.6.0';
    3838
    3939    /**
  • lifterlms/tags/6.6.0/includes/abstracts/abstract.llms.database.query.php

    r2690931 r2728787  
    9090         * @param array $args Array of default arguments to set up the query with.
    9191         */
    92         return apply_filters_deprecated( 'llms_db_query_get_default_args', array( $args ), '[version]', "llms_{$this->id}_query_get_default_args" );
     92        return apply_filters_deprecated( 'llms_db_query_get_default_args', array( $args ), '6.0.0', "llms_{$this->id}_query_get_default_args" );
    9393
    9494    }
     
    406406                __METHOD__,
    407407                sprintf( __( "Method '%s' not implemented. Must be overridden in subclass.", 'lifterlms' ), __METHOD__ ),
    408                 '[version]'
     408                '6.0.0'
    409409            );
    410410        }
  • lifterlms/tags/6.6.0/includes/class-llms-engagement-handler.php

    r2690931 r2728787  
    8585        }
    8686
    87         // Ensure we have an argument to check, engagements created prior to v[version] will not have this argument.
     87        // Ensure we have an argument to check, engagements created prior to v6.0.0 will not have this argument.
    8888        if ( ! empty( $engagement_id ) ) {
    8989            $checks[] = self::check_post( $engagement_id, 'llms_engagement' );
     
    134134        }
    135135
    136         return apply_filters_deprecated( $hook[0], array( $args ), '[version]', $hook[1] );
     136        return apply_filters_deprecated( $hook[0], array( $args ), '6.0.0', $hook[1] );
    137137
    138138    }
     
    184184            $old_obj = new $old_class();
    185185            $old_obj->init( ...$init_args );
    186             $args = apply_filters_deprecated( $deprecated, array( $args, $old_obj ), '[version]', $replacement );
     186            $args = apply_filters_deprecated( $deprecated, array( $args, $old_obj ), '6.0.0', $replacement );
    187187        }
    188188
  • lifterlms/tags/6.6.0/includes/class.llms.cache.helper.php

    r2711689 r2728787  
    66 *
    77 * @since 3.15.0
    8  * @version 6.4.0
     8 * @version 6.6.0
    99 */
    1010
     
    3333
    3434    /**
     35     * Sets a browser cookie that tells WP Engine to exclude a page from server caching.
     36     *
     37     * @see https://wpengine.com/support/cache/#Default_Cache_Exclusions
     38     * @see https://wpengine.com/support/determining-wp-engine-environment/
     39     *
     40     * @since 6.6.0
     41     *
     42     * @param int|WP_Post $post Optional. Post ID or post object. Default is the global `$post`.
     43     *
     44     * @return void
     45     */
     46    private function exclude_page_from_wpe_server_cache( $post = null ) {
     47
     48        if ( function_exists( 'is_wpe' ) && is_wpe() ) {
     49            /*
     50             * If "Settings -> Permalinks" is "Plain", i.e. the `permalink_structure` option is '',
     51             * allow the entire site to be cached by WP Engine.
     52             * Note: This will prevent users from being able to successfully use the "Lost your password?" feature.
     53             */
     54            if ( isset( $GLOBALS['wp_rewrite'] ) && ! $GLOBALS['wp_rewrite']->using_permalinks() ) {
     55                return;
     56            }
     57
     58            $path = wp_parse_url( get_permalink( $post ), PHP_URL_PATH );
     59            llms_setcookie( 'wordpress_wpe_no_cache', '1', 0, $path, COOKIE_DOMAIN, is_ssl(), true );
     60        }
     61    }
     62
     63    /**
    3564     * Retrieve a cache prefix that can be used with WP_Object_Cache methods
    3665     *
     
    84113     * @since 3.15.0
    85114     * @since 6.4.0 Force no caching on quiz pages.
    86      *               Added 'no-store' to the default WordPress nocache headers.
     115     *              Added 'no-store' to the default WordPress nocache headers.
     116     * @since 6.6.0 Added WP Engine server-side cache exclusions.
    87117     *
    88118     * @return void
     
    126156            llms_maybe_define_constant( 'DONOTCACHEDB', true );
    127157            nocache_headers();
     158            $this->exclude_page_from_wpe_server_cache();
    128159
    129160            remove_filter( 'nocache_headers', array( __CLASS__, 'additional_nocache_headers' ), 99 );
  • lifterlms/tags/6.6.0/includes/class.llms.comments.php

    r2264176 r2728787  
    11<?php
    22/**
    3  * Custom filters & actions for LifterLMS Comments
    4  *
    5  * This class owes a great debt to WooCommerce.
     3 * LLMS_Comments class file.
    64 *
    75 * @package LifterLMS/Classes
    86 *
    97 * @since 3.0.0
    10  * @version 3.37.12
     8 * @version 6.6.0
    119 */
    1210
     
    1412
    1513/**
    16  * LLMS_Comments class
     14 * Custom filters & actions for LifterLMS comments.
     15 *
     16 * This class owes a great debt to WooCommerce.
    1717 *
    1818 * @since 3.0.0
    19  * @since 3.37.12 Use strict comparisons.
    20  *                Handle empty array from `wp_count_comments` filter.
    21  *                Properly exclude "llms_order_note" comment types from comment counts..
    2219 */
    2320class LLMS_Comments {
     
    3431     *
    3532     * @since 3.37.12
     33     * @since 6.6.0 Conditionally hook `wp_count_comments` filter.
    3634     *
    3735     * @return void
     
    4442        add_action( 'comment_feed_where', array( __CLASS__, 'exclude_order_comments_from_feed_where' ) );
    4543
    46         // Remove order notes when counting comments.
    47         add_filter( 'wp_count_comments', array( __CLASS__, 'wp_count_comments' ), 999, 2 );
    48 
    4944        // Delete comments count cache whenever there is a new comment or a comment status changes.
    5045        add_action( 'wp_insert_comment', array( __CLASS__, 'delete_comments_count_cache' ) );
    5146        add_action( 'wp_set_comment_status', array( __CLASS__, 'delete_comments_count_cache' ) );
     47
     48        /**
     49         * Remove order notes when counting comments on WP versions earlier than 6.0.
     50         *
     51         * @todo This filter can be safely deprecated once support is dropped for WordPress 6.0.
     52         */
     53        if ( self::should_modify_comment_counts() ) {
     54            add_filter( 'wp_count_comments', array( __CLASS__, 'wp_count_comments' ), 999, 2 );
     55        }
    5256
    5357    }
     
    190194     * @since 3.37.12
    191195     *
     196     * @todo This method can be safely deprecated once support is dropped for WordPress 6.0.
     197     *
    192198     * @param  stdClass $stats Comment stats object. See the return of LLMS_Comments::wp_comment_counts() for object details.
    193199     * @return stdClass See LLMS_Comments::wp_comment_counts() for return object details.
     
    218224
    219225    /**
     226     * Determines whether or not comment count modification is necessary.
     227     *
     228     * Since WordPress 6.0 the `get_comment_count()` function utilizes `get_comments()` whereas in earlier versions the counts
     229     * are retrieved by a direct SQL query. This change means that the filter in this class on `comments_clauses` ensures that
     230     * our comments we hide & don't count in the comments management UI are already excluded and we do not need to filter
     231     * `wp_count_comments` to subtract our comments.
     232     *
     233     * @since 6.6.0
     234     *
     235     * @return boolean Returns `true` on WP earlier than 6.0 and `false` on 6.0 and later.
     236     */
     237    private static function should_modify_comment_counts() {
     238        global $wp_version;
     239        return version_compare( $wp_version, '6.0-src', '<' );
     240    }
     241
     242    /**
    220243     * Remove order notes from the count when counting comments
    221244     *
     
    236259     *                Fix issue encountered when $stats is an empty array.
    237260     *                Modify the stats generation method.
     261     * @since 6.6.0 Will throw `_doing_it_wrong()` when run on WP 6.0 or later and return the input `$stats` unchanged.
     262     *
     263     * @todo This method can be safely deprecated once support is dropped for WordPress 6.0.
    238264     *
    239265     * @param stdClass|array $stats   Empty array or a stdClass of stats from another plugin.
     
    253279    public static function wp_count_comments( $stats, $post_id ) {
    254280
     281        // If someone calls this directly on 6.0 or later notify them and return early.
     282        if ( ! self::should_modify_comment_counts() ) {
     283            _doing_it_wrong( __METHOD__, 'This method should not be called on WordPress 6.0 or later.', '6.6.0' );
     284            return $stats;
     285        }
     286
    255287        // Don't modify when querying for a specific post.
    256288        if ( 0 !== $post_id ) {
  • lifterlms/tags/6.6.0/includes/class.llms.engagements.php

    r2690931 r2728787  
    66 *
    77 * @since 2.3.0
    8  * @version 6.0.0
     8 * @version 6.6.0
    99 */
    1010
     
    343343
    344344    /**
    345      * Parse incoming hook / callback data to determine if an engagement should be triggered from a given hook
     345     * Parse incoming hook / callback data to determine if an engagement should be triggered from a given hook.
    346346     *
    347347     * @since 6.0.0
     348     * @since 6.6.0 Fixed an issue where the `lifterlms_external_engagement_query_arguments` filter
     349     *              would not trigger if a 3rd party registered a trigger hook.
    348350     *
    349351     * @param string $action Action hook name.
     
    365367        );
    366368
    367         // Verify that it's a supported hook.
     369        /**
     370         * Allows 3rd parties to hook into the core engagement system by parsing data passed to the hook.
     371         *
     372         * @since 2.3.0
     373         *
     374         * @param array $parsed {
     375         *     An associative array of parsed data used to trigger the engagement.
     376         *
     377         *     @type string $trigger_type    (Required) The name of the engagement trigger. See `llms_get_engagement_triggers()` for a list of valid triggers.
     378         *     @type int    $user_id         (Required) The WP_User ID of the user who the engagement is being awarded or sent to.
     379         *     @type int    $related_post_id (Optional) The WP_Post ID of a related post.
     380         *  }
     381         *  @param string $action The name of the hook which triggered the engagement.
     382         *  @param array  $args   The original arguments provided by the triggering hook.
     383         */
     384        $filtered_parsed = apply_filters(
     385            'lifterlms_external_engagement_query_arguments',
     386            $parsed,
     387            $action,
     388            $args
     389        );
     390        // If valid, return the filtered parsed data.
     391        if ( isset( $filtered_parsed['trigger_type'] ) && isset( $filtered_parsed['user_id'] ) ) {
     392            return $filtered_parsed;
     393        }
     394
     395        // Verify that the action is a supported hook.
    368396        if ( ! in_array( $action, $this->get_trigger_hooks(), true ) ) {
    369             /**
    370              * Allows 3rd parties to hook into the core engagement system by parsing data passed to the hook.
    371              *
    372              * @since Unknown
    373              *
    374              * @param array $parsed {
    375              *     An associative array of parsed data used to trigger the engagement.
    376              *
    377              *     @type string $trigger_type    (Required) The name of the engagement trigger. See `llms_get_engagement_triggers()` for a list of valid triggers.
    378              *     @type int    $user_id         (Required) The WP_User ID of the user who the engagement is being awarded or sent to.
    379              *     @type int    $related_post_id (Optional) The WP_Post ID of a related post.
    380              *  }
    381              *  @param string $action The name of the hook which triggered the engagement.
    382              *  @param array  $args   The original arguments provided by the triggering hook.
    383              */
    384             return apply_filters(
    385                 'lifterlms_external_engagement_query_arguments',
    386                 $parsed,
    387                 $action,
    388                 $args
    389             );
     397            return $parsed;
    390398        }
    391399
     
    482490
    483491    /**
    484      * Parse engagement objects from the DB and return data needed to trigger the engagements
     492     * Parse engagement objects from the DB and return data needed to trigger the engagements.
    485493     *
    486494     * @since 6.0.0
     495     * @since 6.6.0 Fixed an issue where the `lifterlms_external_engagement_handler_arguments` filter
     496     *              would not trigger if a 3rd party registered an engagement type.
    487497     *
    488498     * @param object $engagement   The engagement object from the `get_engagements()` query.
     
    502512        );
    503513
     514        /**
     515         * Enable 3rd parties to parse custom engagement types.
     516         *
     517         * @since 2.3.0
     518         *
     519         * @param array $parsed {
     520         *     An associative array of parsed data used to trigger the engagement.
     521         *
     522         *     @type string $handler_action (Required) Hook name of the action that will handle awarding the sending the engagement.
     523         *     @type array  $handler_args   (Required) Arguments passed to the `$handler_action` callback.
     524         * }
     525         * @param object $engagement      The engagement object from the `get_engagements()` query.
     526         * @param int    $user_id         WP_User ID who will be awarded the engagement.
     527         * @param int    $related_post_id WP_Post ID of the related post.
     528         * @param string $event_type      The type of engagement event.
     529         */
     530        $filtered_parsed = apply_filters(
     531            'lifterlms_external_engagement_handler_arguments',
     532            $parsed,
     533            $engagement,
     534            $trigger_data['user_id'],
     535            $trigger_data['related_post_id'],
     536            $engagement->event_type
     537        );
     538        // If valid, return the filtered parsed data.
     539        if ( isset( $filtered_parsed['handler_action'] ) && isset( $filtered_parsed['handler_args'] ) ) {
     540            return $filtered_parsed;
     541        }
     542
     543        // Verify that the engagement event type is supported.
    504544        if ( ! array_key_exists( $engagement->event_type, llms_get_engagement_types() ) ) {
    505             /**
    506              * Enable 3rd parties to parse custom engagement types
    507              *
    508              * @since Unknown
    509              *
    510              * @param array $parsed {
    511              *     An associative array of parsed data used to trigger the engagement.
    512              *
    513              *     @type string $handler_action (Required) Hook name of the action that will handle awarding the sending the engagement.
    514              *     @type array  $handler_args   (Required) Arguments passed to the `$handler_action` callback.
    515              * }
    516              * @param object $engagement      The engagement object from the `get_engagements()` query.
    517              * @param int    $user_id         WP_User ID who will be awarded the engagement.
    518              * @param int    $related_post_id WP_Post ID of the related post.
    519              * @param string $event_type      The type of engagement event.
    520              */
    521             return apply_filters(
    522                 'lifterlms_external_engagement_handler_arguments',
    523                 $parsed,
    524                 $engagement,
    525                 $trigger_data['user_id'],
    526                 $trigger_data['related_post_id'],
    527                 $engagement->event_type
    528             );
     545            return $parsed;
    529546        }
    530547
  • lifterlms/tags/6.6.0/includes/class.llms.post.relationships.php

    r2690931 r2728787  
    131131                $earned_engagement,
    132132            ),
    133             '[version]',
     133            '6.0.0',
    134134            '',
    135135            __( 'Use WordPress core  `before_delete_post` action hook', 'lifterlms' )
     
    157157                            $earned_engagement,
    158158                        ),
    159                         '[version]',
     159                        '6.0.0',
    160160                        '',
    161161                        __( 'Use WordPress core `deleted_post` action hook.', 'lifterlms' )
  • lifterlms/tags/6.6.0/includes/forms/controllers/class.llms.controller.account.php

    r2683286 r2728787  
    66 *
    77 * @since 3.7.0
    8  * @version 5.9.0
     8 * @version 6.6.0
    99 */
    1010
     
    382382     * @since 5.0.0
    383383     * @since 5.9.0 Stop using deprecated `FILTER_SANITIZE_STRING`.
     384     * @since 6.6.0 Prevented client and server caching of the password reset form page.
    384385     *
    385386     * @return void
     
    393394            $val  = sprintf( '%1$d:%2$s', $uid, wp_unslash( llms_filter_input_sanitize_string( INPUT_GET, 'key' ) ) );
    394395
     396            ( new LLMS_Cache_Helper() )->maybe_no_cache();
    395397            llms_set_password_reset_cookie( $val );
    396398            llms_redirect_and_exit( add_query_arg( 'reset-pass', 1, llms_lostpassword_url() ) );
  • lifterlms/tags/6.6.0/includes/models/model.llms.user.certificate.php

    r2711689 r2728787  
    728728            'llms_certificate_use_legacy_template',
    729729            array( false, $this ),
    730             '[version]',
     730            '6.0.0',
    731731            '', // There is no direct replacement.
    732732            __( 'Loading custom HTML from the certificate template is deprecated. All HTML should be added to the certificate directly via the editor or applied via post content filters.', 'lifterlms' )
  • lifterlms/tags/6.6.0/includes/traits/llms-trait-student-awards.php

    r2690931 r2728787  
    114114     * Retrieve certificates that the student has been awarded.
    115115     *
    116      * The default behavior of this method is deprecated since version [version]. The previous behavior
     116     * The default behavior of this method is deprecated since version 6.0.0. The previous behavior
    117117     * is retained for backwards compatibility but will be removed in the next major release.
    118118     *
  • lifterlms/tags/6.6.0/languages/lifterlms.pot

    r2722171 r2728787  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: LifterLMS 6.5.0\n"
     5"Project-Id-Version: LifterLMS 6.6.0\n"
    66"Report-Msgid-Bugs-To: https://lifterlms.com/my-account/my-tickets\n"
    77"Last-Translator: Team LifterLMS <team@lifterlms.com>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2022-05-11T11:23:16-06:00\n"
     12"POT-Creation-Date: 2022-05-23T10:13:59-06:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: llms/dev 0.0.4-alpha.1\n"
     
    25102510msgstr ""
    25112511
    2512 #. Translators: %s: Post title.
    25132512#: includes/admin/post-types/post-tables/class-llms-admin-post-table-awards.php:117
    25142513#: includes/admin/post-types/post-tables/class-llms-admin-post-table-awards.php:322
     
    40344033msgstr ""
    40354034
    4036 #. Translators: %d = the number of pending batches.
    40374035#: includes/admin/tools/class-llms-admin-tool-batch-eraser.php:44
    40384036msgid "There is currently %d pending batch that will be deleted."
     
    40784076msgstr ""
    40794077
    4080 #. Translators: %d = the number of pending batches.
    40814078#: includes/admin/tools/class-llms-admin-tool-limited-billing-order-locator.php:134
    40824079msgid "There is %d order that should be reviewed."
     
    40974094msgstr ""
    40984095
    4099 #. Translators: %d = the number of pending batches.
    41004096#: includes/admin/tools/class-llms-admin-tool-recurring-payment-rescheduler.php:46
    41014097msgid "There is %d order that will be checked."
     
    81768172#. Translators: %s = field label or id.
    81778173#: includes/forms/class-llms-form-validator.php:490
    8178 #: includes/forms/controllers/class.llms.controller.account.php:425
     8174#: includes/forms/controllers/class.llms.controller.account.php:427
    81798175msgid "%s is a required field."
    81808176msgstr ""
     
    82628258msgstr ""
    82638259
    8264 #: includes/forms/controllers/class.llms.controller.account.php:438
     8260#: includes/forms/controllers/class.llms.controller.account.php:440
    82658261msgid "The submitted passwords do must match."
    82668262msgstr ""
  • lifterlms/tags/6.6.0/lifterlms.php

    r2722171 r2728787  
    1111 * Plugin URI: https://lifterlms.com/
    1212 * Description: LifterLMS is a powerful WordPress learning management system plugin that makes it easy to create, sell, and protect engaging online courses and training based membership websites.
    13  * Version: 6.5.0
     13 * Version: 6.6.0
    1414 * Author: LifterLMS
    1515 * Author URI: https://lifterlms.com/
     
    1818 * License: GPLv3
    1919 * License URI: https://www.gnu.org/licenses/gpl-3.0.html
    20  * Requires at least: 5.5
    21  * Tested up to: 5.9
    22  * Requires PHP: 7.3
     20 * Requires at least: 5.6
     21 * Tested up to: 6.0
     22 * Requires PHP: 7.4
    2323 *
    2424 * * * * * * * * * * * * * * * * * * * * * *
  • lifterlms/tags/6.6.0/readme.txt

    r2722171 r2728787  
    55License: GPLv3
    66License URI: https://www.gnu.org/licenses/gpl-3.0.html
    7 Requires at least: 5.5
    8 Tested up to: 5.9
    9 Requires PHP: 7.3
    10 Stable tag: 6.5.0
     7Requires at least: 5.6
     8Tested up to: 6.0
     9Requires PHP: 7.4
     10Stable tag: 6.6.0
    1111
    1212LifterLMS is a powerful WordPress learning management system plugin that makes it easy to create, sell, and protect engaging online courses and training based membership websites.
     
    538538
    539539== Changelog ==
     540
     541= v6.6.0 - 2022-05-23 =
     542
     543##### PHP Minimum Required Version Change
     544
     545+ **Raised the minimum supported PHP version to 7.4.**
     546
     547##### WordPress Minimum Required Version Change
     548
     549+ **Raised the minimum supported WordPress core version to 5.6.**
     550
     551##### New Features
     552
     553+ Added support for WordPress 6.0.
     554
     555##### Bug Fixes
     556
     557+ Fixed the ability for 3rd party plugins to use the `lifterlms_external_engagement_handler_arguments` and `lifterlms_external_engagement_query_arguments` filters.
     558+ Added automatic exclusion of "no cache" pages from the WP Engine server-side cache when using "pretty" permalinks. [#1717](https://github.com/gocodebox/lifterlms/issues/1717)
     559+ Stop subtracting LifterLMS order note comments from global comment counts via the `wp_count_comments` filter on WordPress 6.0 and later. See related WordPress Trac ticket [#19901](https://core.trac.wordpress.org/ticket/19901)
     560
    540561
    541562= v6.5.0 - 2022-05-11 =
     
    10431064
    10441065
    1045 = v5.7.0 - 2022-01-11 =
    1046 
    1047 ##### Updates and Enhancements
    1048 
    1049 + Informed developers about the deprecated `LLMS_Section::get_next_available_lesson_order()` method.
    1050 + Informed developers about the deprecated `LLMS_Section::get_order()` method.
    1051 + Informed developers about the deprecated `LLMS_Section::get_parent_course()` method.
    1052 + Informed developers about the deprecated `LLMS_Section::set_parent_course()` method.
    1053 
    1054 ##### Deprecations
    1055 
    1056 + Deprecated `LLMS_Frontend_Assets::enqueue_inline_pw_script()` with no replacement.
    1057 + Deprecated the `LLMS_Lesson::get_order()` method in favor of the `LLMS_Lesson::get( 'order' )` method.
    1058 + Deprecated the `LLMS_Lesson::get_parent_course()` method in favor of the `LLMS_Lesson::get( 'parent_course' )` method.
    1059 + Deprecated the `LLMS_Lesson::set_parent_course()` method in favor of the `LLMS_Lesson::set( 'parent_course', $course_id )` method.
    1060 + Deprecated the `LLMS_AJAX_Handler::add_lesson_to_course()` method with no replacement.
    1061 + Deprecated the `LLMS_AJAX_Handler::create_lesson()` method with no replacement.
    1062 + Deprecated the `LLMS_AJAX_Handler::create_section()` method with no replacement.
    1063 + Deprecated the `LLMS_Lesson_Handler::assign_to_course()` method with no replacement.
    1064 + Deprecated the `LLMS_Post_Handler::create_section()` method with no replacement.
    1065 
    1066 ##### Updated Templates
    1067 
    1068 + [templates/course/lesson-navigation.php](https://github.com/gocodebox/lifterlms/blob/trunk/templates/course/lesson-navigation.php)
    1069 + [templates/course/lesson-preview.php](https://github.com/gocodebox/lifterlms/blob/trunk/templates/course/lesson-preview.php)
    1070 + [templates/course/parent-course.php](https://github.com/gocodebox/lifterlms/blob/trunk/templates/course/parent-course.php)
    1071 
    1072 
    10731066[Read the full changelog](https://make.lifterlms.com/tag/lifterlms)
  • lifterlms/tags/6.6.0/vendor/composer/installed.php

    r2722171 r2728787  
    66        'install_path' => __DIR__ . '/../../',
    77        'aliases' => array(),
    8         'reference' => '4449f450e762ea3b3a3ca89d14d7edef11b946e0',
     8        'reference' => 'f6ddb86520ed8fea233280be4a5048de79dcf76e',
    99        'name' => 'gocodebox/lifterlms',
    1010        'dev' => false,
     
    3535            'install_path' => __DIR__ . '/../../',
    3636            'aliases' => array(),
    37             'reference' => '4449f450e762ea3b3a3ca89d14d7edef11b946e0',
     37            'reference' => 'f6ddb86520ed8fea233280be4a5048de79dcf76e',
    3838            'dev_requirement' => false,
    3939        ),
  • lifterlms/tags/6.6.0/vendor/composer/platform_check.php

    r2625289 r2728787  
    55$issues = array();
    66
    7 if (!(PHP_VERSION_ID >= 70300)) {
    8     $issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.';
     7if (!(PHP_VERSION_ID >= 70400)) {
     8    $issues[] = 'Your Composer dependencies require a PHP version ">= 7.4.0". You are running ' . PHP_VERSION . '.';
    99}
    1010
  • lifterlms/trunk/assets/js/llms-admin-addons.asset.php

    r2706637 r2728787  
    1 <?php return array('dependencies' => array('jquery', 'wp-i18n', 'wp-polyfill'), 'version' => 'e53efca973e7c1dd11b780bbcbb4d192');
     1<?php return array('dependencies' => array('jquery', 'wp-i18n', 'wp-polyfill'), 'version' => '3f38fd10c57dff239c116a4b72d83a22');
  • lifterlms/trunk/assets/js/llms-admin-award-certificate.asset.php

    r2706637 r2728787  
    1 <?php return array('dependencies' => array('llms-components', 'llms-utils', 'wp-components', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '23e1c1ce85f28d89d057b895afe28083');
     1<?php return array('dependencies' => array('llms-components', 'llms-utils', 'wp-components', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => 'b29eba510c6eb3f2929016922545bef8');
  • lifterlms/trunk/assets/js/llms-admin-certificate-editor.asset.php

    r2711689 r2728787  
    1 <?php return array('dependencies' => array('llms-components', 'llms-icons', 'llms-utils', 'react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-dom-ready', 'wp-edit-post', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-rich-text', 'wp-url'), 'version' => 'ce6098b1f7d7f917c52c393d73029336');
     1<?php return array('dependencies' => array('llms-components', 'llms-icons', 'llms-utils', 'react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-dom-ready', 'wp-edit-post', 'wp-editor', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-rich-text', 'wp-url'), 'version' => 'd9413d77bf5dad3f2d3163b8d59ce744');
  • lifterlms/trunk/assets/js/llms-components.asset.php

    r2706637 r2728787  
    1 <?php return array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '05c718bdf68b15f02d456ebd3701bbb1');
     1<?php return array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => 'dc5d851259c42b2847c9087b2caf7bc4');
  • lifterlms/trunk/assets/js/llms-icons.asset.php

    r2706637 r2728787  
    1 <?php return array('dependencies' => array('wp-element', 'wp-polyfill', 'wp-primitives'), 'version' => '89d948440efb942c982e2b869d75a378');
     1<?php return array('dependencies' => array('wp-element', 'wp-polyfill', 'wp-primitives'), 'version' => '80a071a1a1caf87759fbc247d4f980c6');
  • lifterlms/trunk/assets/js/llms-utils.asset.php

    r2706637 r2728787  
    1 <?php return array('dependencies' => array('wp-polyfill'), 'version' => 'b004b557747fa76e54354e4c358fa90e');
     1<?php return array('dependencies' => array('wp-polyfill'), 'version' => '4d6b40d256aa387f0ac1cc68e3d124fb');
  • lifterlms/trunk/blocks/certificate-title/index.asset.php

    r2706637 r2728787  
    1 <?php return array('dependencies' => array('llms-components', 'llms-utils', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '7e829736b959829d51c53f0c2bb47ce4');
     1<?php return array('dependencies' => array('llms-components', 'llms-utils', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url'), 'version' => '096c206ef94b9934b110e350bb39fdda');
  • lifterlms/trunk/class-lifterlms.php

    r2722171 r2728787  
    3535     * @var string
    3636     */
    37     public $version = '6.5.0';
     37    public $version = '6.6.0';
    3838
    3939    /**
  • lifterlms/trunk/includes/abstracts/abstract.llms.database.query.php

    r2690931 r2728787  
    9090         * @param array $args Array of default arguments to set up the query with.
    9191         */
    92         return apply_filters_deprecated( 'llms_db_query_get_default_args', array( $args ), '[version]', "llms_{$this->id}_query_get_default_args" );
     92        return apply_filters_deprecated( 'llms_db_query_get_default_args', array( $args ), '6.0.0', "llms_{$this->id}_query_get_default_args" );
    9393
    9494    }
     
    406406                __METHOD__,
    407407                sprintf( __( "Method '%s' not implemented. Must be overridden in subclass.", 'lifterlms' ), __METHOD__ ),
    408                 '[version]'
     408                '6.0.0'
    409409            );
    410410        }
  • lifterlms/trunk/includes/class-llms-engagement-handler.php

    r2690931 r2728787  
    8585        }
    8686
    87         // Ensure we have an argument to check, engagements created prior to v[version] will not have this argument.
     87        // Ensure we have an argument to check, engagements created prior to v6.0.0 will not have this argument.
    8888        if ( ! empty( $engagement_id ) ) {
    8989            $checks[] = self::check_post( $engagement_id, 'llms_engagement' );
     
    134134        }
    135135
    136         return apply_filters_deprecated( $hook[0], array( $args ), '[version]', $hook[1] );
     136        return apply_filters_deprecated( $hook[0], array( $args ), '6.0.0', $hook[1] );
    137137
    138138    }
     
    184184            $old_obj = new $old_class();
    185185            $old_obj->init( ...$init_args );
    186             $args = apply_filters_deprecated( $deprecated, array( $args, $old_obj ), '[version]', $replacement );
     186            $args = apply_filters_deprecated( $deprecated, array( $args, $old_obj ), '6.0.0', $replacement );
    187187        }
    188188
  • lifterlms/trunk/includes/class.llms.cache.helper.php

    r2711689 r2728787  
    66 *
    77 * @since 3.15.0
    8  * @version 6.4.0
     8 * @version 6.6.0
    99 */
    1010
     
    3333
    3434    /**
     35     * Sets a browser cookie that tells WP Engine to exclude a page from server caching.
     36     *
     37     * @see https://wpengine.com/support/cache/#Default_Cache_Exclusions
     38     * @see https://wpengine.com/support/determining-wp-engine-environment/
     39     *
     40     * @since 6.6.0
     41     *
     42     * @param int|WP_Post $post Optional. Post ID or post object. Default is the global `$post`.
     43     *
     44     * @return void
     45     */
     46    private function exclude_page_from_wpe_server_cache( $post = null ) {
     47
     48        if ( function_exists( 'is_wpe' ) && is_wpe() ) {
     49            /*
     50             * If "Settings -> Permalinks" is "Plain", i.e. the `permalink_structure` option is '',
     51             * allow the entire site to be cached by WP Engine.
     52             * Note: This will prevent users from being able to successfully use the "Lost your password?" feature.
     53             */
     54            if ( isset( $GLOBALS['wp_rewrite'] ) && ! $GLOBALS['wp_rewrite']->using_permalinks() ) {
     55                return;
     56            }
     57
     58            $path = wp_parse_url( get_permalink( $post ), PHP_URL_PATH );
     59            llms_setcookie( 'wordpress_wpe_no_cache', '1', 0, $path, COOKIE_DOMAIN, is_ssl(), true );
     60        }
     61    }
     62
     63    /**
    3564     * Retrieve a cache prefix that can be used with WP_Object_Cache methods
    3665     *
     
    84113     * @since 3.15.0
    85114     * @since 6.4.0 Force no caching on quiz pages.
    86      *               Added 'no-store' to the default WordPress nocache headers.
     115     *              Added 'no-store' to the default WordPress nocache headers.
     116     * @since 6.6.0 Added WP Engine server-side cache exclusions.
    87117     *
    88118     * @return void
     
    126156            llms_maybe_define_constant( 'DONOTCACHEDB', true );
    127157            nocache_headers();
     158            $this->exclude_page_from_wpe_server_cache();
    128159
    129160            remove_filter( 'nocache_headers', array( __CLASS__, 'additional_nocache_headers' ), 99 );
  • lifterlms/trunk/includes/class.llms.comments.php

    r2264176 r2728787  
    11<?php
    22/**
    3  * Custom filters & actions for LifterLMS Comments
    4  *
    5  * This class owes a great debt to WooCommerce.
     3 * LLMS_Comments class file.
    64 *
    75 * @package LifterLMS/Classes
    86 *
    97 * @since 3.0.0
    10  * @version 3.37.12
     8 * @version 6.6.0
    119 */
    1210
     
    1412
    1513/**
    16  * LLMS_Comments class
     14 * Custom filters & actions for LifterLMS comments.
     15 *
     16 * This class owes a great debt to WooCommerce.
    1717 *
    1818 * @since 3.0.0
    19  * @since 3.37.12 Use strict comparisons.
    20  *                Handle empty array from `wp_count_comments` filter.
    21  *                Properly exclude "llms_order_note" comment types from comment counts..
    2219 */
    2320class LLMS_Comments {
     
    3431     *
    3532     * @since 3.37.12
     33     * @since 6.6.0 Conditionally hook `wp_count_comments` filter.
    3634     *
    3735     * @return void
     
    4442        add_action( 'comment_feed_where', array( __CLASS__, 'exclude_order_comments_from_feed_where' ) );
    4543
    46         // Remove order notes when counting comments.
    47         add_filter( 'wp_count_comments', array( __CLASS__, 'wp_count_comments' ), 999, 2 );
    48 
    4944        // Delete comments count cache whenever there is a new comment or a comment status changes.
    5045        add_action( 'wp_insert_comment', array( __CLASS__, 'delete_comments_count_cache' ) );
    5146        add_action( 'wp_set_comment_status', array( __CLASS__, 'delete_comments_count_cache' ) );
     47
     48        /**
     49         * Remove order notes when counting comments on WP versions earlier than 6.0.
     50         *
     51         * @todo This filter can be safely deprecated once support is dropped for WordPress 6.0.
     52         */
     53        if ( self::should_modify_comment_counts() ) {
     54            add_filter( 'wp_count_comments', array( __CLASS__, 'wp_count_comments' ), 999, 2 );
     55        }
    5256
    5357    }
     
    190194     * @since 3.37.12
    191195     *
     196     * @todo This method can be safely deprecated once support is dropped for WordPress 6.0.
     197     *
    192198     * @param  stdClass $stats Comment stats object. See the return of LLMS_Comments::wp_comment_counts() for object details.
    193199     * @return stdClass See LLMS_Comments::wp_comment_counts() for return object details.
     
    218224
    219225    /**
     226     * Determines whether or not comment count modification is necessary.
     227     *
     228     * Since WordPress 6.0 the `get_comment_count()` function utilizes `get_comments()` whereas in earlier versions the counts
     229     * are retrieved by a direct SQL query. This change means that the filter in this class on `comments_clauses` ensures that
     230     * our comments we hide & don't count in the comments management UI are already excluded and we do not need to filter
     231     * `wp_count_comments` to subtract our comments.
     232     *
     233     * @since 6.6.0
     234     *
     235     * @return boolean Returns `true` on WP earlier than 6.0 and `false` on 6.0 and later.
     236     */
     237    private static function should_modify_comment_counts() {
     238        global $wp_version;
     239        return version_compare( $wp_version, '6.0-src', '<' );
     240    }
     241
     242    /**
    220243     * Remove order notes from the count when counting comments
    221244     *
     
    236259     *                Fix issue encountered when $stats is an empty array.
    237260     *                Modify the stats generation method.
     261     * @since 6.6.0 Will throw `_doing_it_wrong()` when run on WP 6.0 or later and return the input `$stats` unchanged.
     262     *
     263     * @todo This method can be safely deprecated once support is dropped for WordPress 6.0.
    238264     *
    239265     * @param stdClass|array $stats   Empty array or a stdClass of stats from another plugin.
     
    253279    public static function wp_count_comments( $stats, $post_id ) {
    254280
     281        // If someone calls this directly on 6.0 or later notify them and return early.
     282        if ( ! self::should_modify_comment_counts() ) {
     283            _doing_it_wrong( __METHOD__, 'This method should not be called on WordPress 6.0 or later.', '6.6.0' );
     284            return $stats;
     285        }
     286
    255287        // Don't modify when querying for a specific post.
    256288        if ( 0 !== $post_id ) {
  • lifterlms/trunk/includes/class.llms.engagements.php

    r2690931 r2728787  
    66 *
    77 * @since 2.3.0
    8  * @version 6.0.0
     8 * @version 6.6.0
    99 */
    1010
     
    343343
    344344    /**
    345      * Parse incoming hook / callback data to determine if an engagement should be triggered from a given hook
     345     * Parse incoming hook / callback data to determine if an engagement should be triggered from a given hook.
    346346     *
    347347     * @since 6.0.0
     348     * @since 6.6.0 Fixed an issue where the `lifterlms_external_engagement_query_arguments` filter
     349     *              would not trigger if a 3rd party registered a trigger hook.
    348350     *
    349351     * @param string $action Action hook name.
     
    365367        );
    366368
    367         // Verify that it's a supported hook.
     369        /**
     370         * Allows 3rd parties to hook into the core engagement system by parsing data passed to the hook.
     371         *
     372         * @since 2.3.0
     373         *
     374         * @param array $parsed {
     375         *     An associative array of parsed data used to trigger the engagement.
     376         *
     377         *     @type string $trigger_type    (Required) The name of the engagement trigger. See `llms_get_engagement_triggers()` for a list of valid triggers.
     378         *     @type int    $user_id         (Required) The WP_User ID of the user who the engagement is being awarded or sent to.
     379         *     @type int    $related_post_id (Optional) The WP_Post ID of a related post.
     380         *  }
     381         *  @param string $action The name of the hook which triggered the engagement.
     382         *  @param array  $args   The original arguments provided by the triggering hook.
     383         */
     384        $filtered_parsed = apply_filters(
     385            'lifterlms_external_engagement_query_arguments',
     386            $parsed,
     387            $action,
     388            $args
     389        );
     390        // If valid, return the filtered parsed data.
     391        if ( isset( $filtered_parsed['trigger_type'] ) && isset( $filtered_parsed['user_id'] ) ) {
     392            return $filtered_parsed;
     393        }
     394
     395        // Verify that the action is a supported hook.
    368396        if ( ! in_array( $action, $this->get_trigger_hooks(), true ) ) {
    369             /**
    370              * Allows 3rd parties to hook into the core engagement system by parsing data passed to the hook.
    371              *
    372              * @since Unknown
    373              *
    374              * @param array $parsed {
    375              *     An associative array of parsed data used to trigger the engagement.
    376              *
    377              *     @type string $trigger_type    (Required) The name of the engagement trigger. See `llms_get_engagement_triggers()` for a list of valid triggers.
    378              *     @type int    $user_id         (Required) The WP_User ID of the user who the engagement is being awarded or sent to.
    379              *     @type int    $related_post_id (Optional) The WP_Post ID of a related post.
    380              *  }
    381              *  @param string $action The name of the hook which triggered the engagement.
    382              *  @param array  $args   The original arguments provided by the triggering hook.
    383              */
    384             return apply_filters(
    385                 'lifterlms_external_engagement_query_arguments',
    386                 $parsed,
    387                 $action,
    388                 $args
    389             );
     397            return $parsed;
    390398        }
    391399
     
    482490
    483491    /**
    484      * Parse engagement objects from the DB and return data needed to trigger the engagements
     492     * Parse engagement objects from the DB and return data needed to trigger the engagements.
    485493     *
    486494     * @since 6.0.0
     495     * @since 6.6.0 Fixed an issue where the `lifterlms_external_engagement_handler_arguments` filter
     496     *              would not trigger if a 3rd party registered an engagement type.
    487497     *
    488498     * @param object $engagement   The engagement object from the `get_engagements()` query.
     
    502512        );
    503513
     514        /**
     515         * Enable 3rd parties to parse custom engagement types.
     516         *
     517         * @since 2.3.0
     518         *
     519         * @param array $parsed {
     520         *     An associative array of parsed data used to trigger the engagement.
     521         *
     522         *     @type string $handler_action (Required) Hook name of the action that will handle awarding the sending the engagement.
     523         *     @type array  $handler_args   (Required) Arguments passed to the `$handler_action` callback.
     524         * }
     525         * @param object $engagement      The engagement object from the `get_engagements()` query.
     526         * @param int    $user_id         WP_User ID who will be awarded the engagement.
     527         * @param int    $related_post_id WP_Post ID of the related post.
     528         * @param string $event_type      The type of engagement event.
     529         */
     530        $filtered_parsed = apply_filters(
     531            'lifterlms_external_engagement_handler_arguments',
     532            $parsed,
     533            $engagement,
     534            $trigger_data['user_id'],
     535            $trigger_data['related_post_id'],
     536            $engagement->event_type
     537        );
     538        // If valid, return the filtered parsed data.
     539        if ( isset( $filtered_parsed['handler_action'] ) && isset( $filtered_parsed['handler_args'] ) ) {
     540            return $filtered_parsed;
     541        }
     542
     543        // Verify that the engagement event type is supported.
    504544        if ( ! array_key_exists( $engagement->event_type, llms_get_engagement_types() ) ) {
    505             /**
    506              * Enable 3rd parties to parse custom engagement types
    507              *
    508              * @since Unknown
    509              *
    510              * @param array $parsed {
    511              *     An associative array of parsed data used to trigger the engagement.
    512              *
    513              *     @type string $handler_action (Required) Hook name of the action that will handle awarding the sending the engagement.
    514              *     @type array  $handler_args   (Required) Arguments passed to the `$handler_action` callback.
    515              * }
    516              * @param object $engagement      The engagement object from the `get_engagements()` query.
    517              * @param int    $user_id         WP_User ID who will be awarded the engagement.
    518              * @param int    $related_post_id WP_Post ID of the related post.
    519              * @param string $event_type      The type of engagement event.
    520              */
    521             return apply_filters(
    522                 'lifterlms_external_engagement_handler_arguments',
    523                 $parsed,
    524                 $engagement,
    525                 $trigger_data['user_id'],
    526                 $trigger_data['related_post_id'],
    527                 $engagement->event_type
    528             );
     545            return $parsed;
    529546        }
    530547
  • lifterlms/trunk/includes/class.llms.post.relationships.php

    r2690931 r2728787  
    131131                $earned_engagement,
    132132            ),
    133             '[version]',
     133            '6.0.0',
    134134            '',
    135135            __( 'Use WordPress core  `before_delete_post` action hook', 'lifterlms' )
     
    157157                            $earned_engagement,
    158158                        ),
    159                         '[version]',
     159                        '6.0.0',
    160160                        '',
    161161                        __( 'Use WordPress core `deleted_post` action hook.', 'lifterlms' )
  • lifterlms/trunk/includes/forms/controllers/class.llms.controller.account.php

    r2683286 r2728787  
    66 *
    77 * @since 3.7.0
    8  * @version 5.9.0
     8 * @version 6.6.0
    99 */
    1010
     
    382382     * @since 5.0.0
    383383     * @since 5.9.0 Stop using deprecated `FILTER_SANITIZE_STRING`.
     384     * @since 6.6.0 Prevented client and server caching of the password reset form page.
    384385     *
    385386     * @return void
     
    393394            $val  = sprintf( '%1$d:%2$s', $uid, wp_unslash( llms_filter_input_sanitize_string( INPUT_GET, 'key' ) ) );
    394395
     396            ( new LLMS_Cache_Helper() )->maybe_no_cache();
    395397            llms_set_password_reset_cookie( $val );
    396398            llms_redirect_and_exit( add_query_arg( 'reset-pass', 1, llms_lostpassword_url() ) );
  • lifterlms/trunk/includes/models/model.llms.user.certificate.php

    r2711689 r2728787  
    728728            'llms_certificate_use_legacy_template',
    729729            array( false, $this ),
    730             '[version]',
     730            '6.0.0',
    731731            '', // There is no direct replacement.
    732732            __( 'Loading custom HTML from the certificate template is deprecated. All HTML should be added to the certificate directly via the editor or applied via post content filters.', 'lifterlms' )
  • lifterlms/trunk/includes/traits/llms-trait-student-awards.php

    r2690931 r2728787  
    114114     * Retrieve certificates that the student has been awarded.
    115115     *
    116      * The default behavior of this method is deprecated since version [version]. The previous behavior
     116     * The default behavior of this method is deprecated since version 6.0.0. The previous behavior
    117117     * is retained for backwards compatibility but will be removed in the next major release.
    118118     *
  • lifterlms/trunk/languages/lifterlms.pot

    r2722171 r2728787  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: LifterLMS 6.5.0\n"
     5"Project-Id-Version: LifterLMS 6.6.0\n"
    66"Report-Msgid-Bugs-To: https://lifterlms.com/my-account/my-tickets\n"
    77"Last-Translator: Team LifterLMS <team@lifterlms.com>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2022-05-11T11:23:16-06:00\n"
     12"POT-Creation-Date: 2022-05-23T10:13:59-06:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: llms/dev 0.0.4-alpha.1\n"
     
    25102510msgstr ""
    25112511
    2512 #. Translators: %s: Post title.
    25132512#: includes/admin/post-types/post-tables/class-llms-admin-post-table-awards.php:117
    25142513#: includes/admin/post-types/post-tables/class-llms-admin-post-table-awards.php:322
     
    40344033msgstr ""
    40354034
    4036 #. Translators: %d = the number of pending batches.
    40374035#: includes/admin/tools/class-llms-admin-tool-batch-eraser.php:44
    40384036msgid "There is currently %d pending batch that will be deleted."
     
    40784076msgstr ""
    40794077
    4080 #. Translators: %d = the number of pending batches.
    40814078#: includes/admin/tools/class-llms-admin-tool-limited-billing-order-locator.php:134
    40824079msgid "There is %d order that should be reviewed."
     
    40974094msgstr ""
    40984095
    4099 #. Translators: %d = the number of pending batches.
    41004096#: includes/admin/tools/class-llms-admin-tool-recurring-payment-rescheduler.php:46
    41014097msgid "There is %d order that will be checked."
     
    81768172#. Translators: %s = field label or id.
    81778173#: includes/forms/class-llms-form-validator.php:490
    8178 #: includes/forms/controllers/class.llms.controller.account.php:425
     8174#: includes/forms/controllers/class.llms.controller.account.php:427
    81798175msgid "%s is a required field."
    81808176msgstr ""
     
    82628258msgstr ""
    82638259
    8264 #: includes/forms/controllers/class.llms.controller.account.php:438
     8260#: includes/forms/controllers/class.llms.controller.account.php:440
    82658261msgid "The submitted passwords do must match."
    82668262msgstr ""
  • lifterlms/trunk/lifterlms.php

    r2722171 r2728787  
    1111 * Plugin URI: https://lifterlms.com/
    1212 * Description: LifterLMS is a powerful WordPress learning management system plugin that makes it easy to create, sell, and protect engaging online courses and training based membership websites.
    13  * Version: 6.5.0
     13 * Version: 6.6.0
    1414 * Author: LifterLMS
    1515 * Author URI: https://lifterlms.com/
     
    1818 * License: GPLv3
    1919 * License URI: https://www.gnu.org/licenses/gpl-3.0.html
    20  * Requires at least: 5.5
    21  * Tested up to: 5.9
    22  * Requires PHP: 7.3
     20 * Requires at least: 5.6
     21 * Tested up to: 6.0
     22 * Requires PHP: 7.4
    2323 *
    2424 * * * * * * * * * * * * * * * * * * * * * *
  • lifterlms/trunk/readme.txt

    r2722171 r2728787  
    55License: GPLv3
    66License URI: https://www.gnu.org/licenses/gpl-3.0.html
    7 Requires at least: 5.5
    8 Tested up to: 5.9
    9 Requires PHP: 7.3
    10 Stable tag: 6.5.0
     7Requires at least: 5.6
     8Tested up to: 6.0
     9Requires PHP: 7.4
     10Stable tag: 6.6.0
    1111
    1212LifterLMS is a powerful WordPress learning management system plugin that makes it easy to create, sell, and protect engaging online courses and training based membership websites.
     
    538538
    539539== Changelog ==
     540
     541= v6.6.0 - 2022-05-23 =
     542
     543##### PHP Minimum Required Version Change
     544
     545+ **Raised the minimum supported PHP version to 7.4.**
     546
     547##### WordPress Minimum Required Version Change
     548
     549+ **Raised the minimum supported WordPress core version to 5.6.**
     550
     551##### New Features
     552
     553+ Added support for WordPress 6.0.
     554
     555##### Bug Fixes
     556
     557+ Fixed the ability for 3rd party plugins to use the `lifterlms_external_engagement_handler_arguments` and `lifterlms_external_engagement_query_arguments` filters.
     558+ Added automatic exclusion of "no cache" pages from the WP Engine server-side cache when using "pretty" permalinks. [#1717](https://github.com/gocodebox/lifterlms/issues/1717)
     559+ Stop subtracting LifterLMS order note comments from global comment counts via the `wp_count_comments` filter on WordPress 6.0 and later. See related WordPress Trac ticket [#19901](https://core.trac.wordpress.org/ticket/19901)
     560
    540561
    541562= v6.5.0 - 2022-05-11 =
     
    10431064
    10441065
    1045 = v5.7.0 - 2022-01-11 =
    1046 
    1047 ##### Updates and Enhancements
    1048 
    1049 + Informed developers about the deprecated `LLMS_Section::get_next_available_lesson_order()` method.
    1050 + Informed developers about the deprecated `LLMS_Section::get_order()` method.
    1051 + Informed developers about the deprecated `LLMS_Section::get_parent_course()` method.
    1052 + Informed developers about the deprecated `LLMS_Section::set_parent_course()` method.
    1053 
    1054 ##### Deprecations
    1055 
    1056 + Deprecated `LLMS_Frontend_Assets::enqueue_inline_pw_script()` with no replacement.
    1057 + Deprecated the `LLMS_Lesson::get_order()` method in favor of the `LLMS_Lesson::get( 'order' )` method.
    1058 + Deprecated the `LLMS_Lesson::get_parent_course()` method in favor of the `LLMS_Lesson::get( 'parent_course' )` method.
    1059 + Deprecated the `LLMS_Lesson::set_parent_course()` method in favor of the `LLMS_Lesson::set( 'parent_course', $course_id )` method.
    1060 + Deprecated the `LLMS_AJAX_Handler::add_lesson_to_course()` method with no replacement.
    1061 + Deprecated the `LLMS_AJAX_Handler::create_lesson()` method with no replacement.
    1062 + Deprecated the `LLMS_AJAX_Handler::create_section()` method with no replacement.
    1063 + Deprecated the `LLMS_Lesson_Handler::assign_to_course()` method with no replacement.
    1064 + Deprecated the `LLMS_Post_Handler::create_section()` method with no replacement.
    1065 
    1066 ##### Updated Templates
    1067 
    1068 + [templates/course/lesson-navigation.php](https://github.com/gocodebox/lifterlms/blob/trunk/templates/course/lesson-navigation.php)
    1069 + [templates/course/lesson-preview.php](https://github.com/gocodebox/lifterlms/blob/trunk/templates/course/lesson-preview.php)
    1070 + [templates/course/parent-course.php](https://github.com/gocodebox/lifterlms/blob/trunk/templates/course/parent-course.php)
    1071 
    1072 
    10731066[Read the full changelog](https://make.lifterlms.com/tag/lifterlms)
  • lifterlms/trunk/vendor/composer/installed.php

    r2722171 r2728787  
    66        'install_path' => __DIR__ . '/../../',
    77        'aliases' => array(),
    8         'reference' => '4449f450e762ea3b3a3ca89d14d7edef11b946e0',
     8        'reference' => 'f6ddb86520ed8fea233280be4a5048de79dcf76e',
    99        'name' => 'gocodebox/lifterlms',
    1010        'dev' => false,
     
    3535            'install_path' => __DIR__ . '/../../',
    3636            'aliases' => array(),
    37             'reference' => '4449f450e762ea3b3a3ca89d14d7edef11b946e0',
     37            'reference' => 'f6ddb86520ed8fea233280be4a5048de79dcf76e',
    3838            'dev_requirement' => false,
    3939        ),
  • lifterlms/trunk/vendor/composer/platform_check.php

    r2625289 r2728787  
    55$issues = array();
    66
    7 if (!(PHP_VERSION_ID >= 70300)) {
    8     $issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.';
     7if (!(PHP_VERSION_ID >= 70400)) {
     8    $issues[] = 'Your Composer dependencies require a PHP version ">= 7.4.0". You are running ' . PHP_VERSION . '.';
    99}
    1010
Note: See TracChangeset for help on using the changeset viewer.