Plugin Directory

Changeset 2747283


Ignore:
Timestamp:
06/23/2022 08:07:44 PM (3 years ago)
Author:
thomasplevy
Message:

Release v7.0.0-alpha.2

Location:
lifterlms
Files:
16 edited
1 copied

Legend:

Unmodified
Added
Removed
  • lifterlms/tags/7.0.0-alpha.2/class-lifterlms.php

    r2743094 r2747283  
    3535     * @var string
    3636     */
    37     public $version = '7.0.0-alpha.1';
     37    public $version = '7.0.0-alpha.2';
    3838
    3939    /**
  • lifterlms/tags/7.0.0-alpha.2/includes/abstracts/abstract.llms.payment.gateway.php

    r2743094 r2747283  
    620620     *
    621621     * @since 3.0.0
     622     * @since [version] Added the force filter, `llms_gateway_{$this->id}_logging_enabled`.
    622623     *
    623624     * @return string
    624625     */
    625626    public function get_logging_enabled() {
     627        /**
     628         * Enables forcing the logging status for the gateway on or off.
     629         *
     630         * The dynamic portion of this hook, `{$this->id}`, refers to the gateway's ID.
     631         *
     632         * @since [version]
     633         *
     634         * @param null|bool $forced The forced status. If `null`, the default status derived from the gateway options will be used.
     635         */
     636        $forced = apply_filters( "llms_gateway_{$this->id}_logging_enabled", null );
     637        if ( ! is_null( $forced ) ) {
     638            return $forced ? 'yes' : 'no';
     639        }
    626640        return $this->get_option( 'logging_enabled' );
    627641    }
     
    691705
    692706        if ( ! isset( $this->supports['modify_recurring_payments'] ) || is_null( $this->supports['modify_recurring_payments'] ) ) {
    693             $this->supports['modify_recurring_payments'] = $this->supports['recurring_payments'];
     707            $this->supports['modify_recurring_payments'] = $this->supports['recurring_payments'] ?? false;
    694708        }
    695709
  • lifterlms/tags/7.0.0-alpha.2/includes/admin/class.llms.admin.settings.php

    r2690931 r2747283  
    66 *
    77 * @since 1.0.0
    8  * @version 5.9.0
     8 * @version [version]
    99 */
    1010
     
    218218     * @since 3.37.9 Add option for fields to show an asterisk for required fields.
    219219     * @since 5.0.2 Pass any option value sanitized as a "slug" through `urldecode()` prior to displaying it.
    220      *
    221      * @param array $field Array of field settings.
     220     * @since [version] Add `$after_html` to all field types.
     221     *
     222     * @param array $field {
     223     *     Array of field settings.
     224     *
     225     *     @type string $id                The setting ID. Used as the from element's `name` and `id` attributes and
     226     *                                     automatically correspond to an option key using the WP options API.
     227     *     @type string $type              The field type. Accepts: 'title', 'table', 'subtitle', 'desc', 'custom-html',
     228     *                                     'custom-html-no-wrap', 'sectionstart', 'sectionend', 'button', 'hidden', 'keyval',
     229     *                                     'text', 'email', 'number', 'password', 'textarea', 'wpeditor', 'select', 'multiselect',
     230     *                                     'radio', 'checkbox', 'image', 'single_select_page', 'single_select_membership'.
     231     *     @type string $title             The title / name of the option as displayed to the user.
     232     *     @type string $name              For "button" fields only: used as HTML `name` attribute. If not supplied the default
     233     *                                     value "save" will be used. For other field types used as a fallback for `$title` if
     234     *                                     no value is supplied.
     235     *     @type string $class             A space-separated list of CSS class names to apply the setting form element (the
     236     *                                     `<input>`, `<select>` etc...).
     237     *     @type string $css               An inline CSS style string.
     238     *     @type string $default           The default value of the setting.
     239     *     @type string $desc              The setting's description.
     240     *     @type bool   $desc_tooltip      If `true`, displays `$desc` in a hoverable tooltip.
     241     *     @type string $value             The value of the setting. If supplied this will override the automatic setting retrieval
     242     *                                     using `get_option( $id, $default )`.
     243     *     @type array  $custom_attributes An associative array of custom HTML attributes to be added to the form element (the
     244     *                                     `<input>`, `<select>` etc...).
     245     *     @type bool   $disabled          If `true` adds the `llms-disabled-field` class to the settings field wrapper.
     246     *     @type bool   $required          If `true`, text, email, number, and password fields will require user input.
     247     *     @type string $secure_option     The name of settings secure option equivalent. If specified, the fields value will be
     248     *                                     automatically removed from the database and the value will be masked when displayed on
     249     *                                     on screen. See {@see llms_get_secure_option()} for more information.
     250     *     @type string $sanitize          Automatically apply the specified sanitization to the value before storing and outputting
     251     *                                     the stored value. Supported filters:
     252     *                                       + "slug": Uses `sanitize_title()` on the value when storing and `urldecode()` when displaying.
     253     *     @type string $after_html        Additional HTML to add after the field's form element.
     254     *     @type array  $editor_settings   Used with "wpeditor" field type only. An array of options to pass to `wp_editor()` as the `$settings` argument.
     255     *     @type array  $options           For "select", "multiselect", and "radio" fields, an array of key/value pairs where the
     256     *                                     key is the setting value stored in database and the value is the setting label displayed
     257     *                                     on screen.
     258     * }
    222259     * @return void
    223260     */
     
    227264        $field = self::set_field_defaults( $field );
    228265
    229         $custom_attributes_field = array_key_exists( 'custom_attributes', $field ) ? $field['custom_attributes'] : array();
    230266        // Setup custom attributes.
    231             $custom_attributes = self::format_field_custom_attributes( $custom_attributes_field );
     267        $custom_attributes = self::format_field_custom_attributes( $field['custom_attributes'] ?? array() );
    232268
    233269        // Setup field description and tooltip.
    234         // This will return an associative array of with the keys "description" and "tooltip".
    235270        extract( self::set_field_descriptions( $field ) );
    236 
    237         // Allow using value not retrieved via this class.
    238         if ( isset( $field['value'] ) ) {
    239             $option_value = $field['value'];
    240         } else {
    241             // Get the option value.
    242             $option_value = self::get_option( $field['id'], $field['default'] );
    243         }
    244 
     271        $description .= ' ' . $field['after_html'];
     272
     273        // Get the field value.
     274        $option_value = isset( $field['value'] ) ? $field['value'] : self::get_option( $field['id'], $field['default'] );
     275
     276        // Setup the disabled CSS class.
    245277        $disabled_class = ( isset( $field['disabled'] ) && true === $field['disabled'] ) ? 'llms-disabled-field' : '';
    246278
     
    251283            case 'title':
    252284                if ( ! empty( $field['title'] ) ) {
    253 
    254285                    echo '<p class="llms-label">' . esc_html( $field['title'] ) . '</p>';
    255 
    256286                }
    257287                if ( ! empty( $field['desc'] ) ) {
    258 
    259288                    echo '<p class="llms-description">' . wpautop( wptexturize( wp_kses_post( $field['desc'] ) ) ) . '</p>';
    260 
    261289                }
    262290
     
    414442                            <?php echo implode( ' ', $custom_attributes ); ?>
    415443                            <?php echo $required ? 'required="required"' : ''; ?>
    416                             /> <?php echo $description; ?> <?php echo isset( $field['after_html'] ) ? $field['after_html'] : ''; ?>
     444                            /> <?php echo $description; ?>
    417445                    </td>
    418446                </tr>
     
    656684                            class="<?php echo esc_attr( $field['class'] ); ?>"
    657685                            <?php echo implode( ' ', $custom_attributes ); ?>
    658                             /> <?php echo $description; ?> <?php echo isset( $field['after_html'] ) ? $field['after_html'] : ''; ?>
     686                            /> <?php echo $description; ?>
    659687                    </td>
    660688                </tr>
     
    737765    }
    738766
    739 
    740 
    741767    /**
    742768     * Add and set default values for a field when looping
    743769     *
    744      * @param array $value   associative array of field data
    745      * @return array          associative array of field data
    746      *
    747770     * @since 1.4.5
    748      */
    749     public static function set_field_defaults( $value = array() ) {
    750 
    751         if ( ! isset( $value['id'] ) ) {
    752             $value['id'] = ''; }
    753         if ( ! isset( $value['title'] ) ) {
    754             $value['title'] = isset( $value['name'] ) ? $value['name'] : ''; }
    755         if ( ! isset( $value['class'] ) ) {
    756             $value['class'] = ''; }
    757         if ( ! isset( $value['css'] ) ) {
    758             $value['css'] = ''; }
    759         if ( ! isset( $value['default'] ) ) {
    760             $value['default'] = ''; }
    761         if ( ! isset( $value['desc'] ) ) {
    762             $value['desc'] = ''; }
    763         if ( ! isset( $value['desc_tooltip'] ) ) {
    764             $value['desc_tooltip'] = false; }
    765 
    766         return $value;
    767 
    768     }
    769 
     771     * @since [version] Use `wp_parse_args()` to simplify method logic & add `after_html` default.
     772     *
     773     * @param array $field Associative array of field data, {@see LLMS_Admin_Settings::output_field()} for a full description.
     774     * @return array
     775     */
     776    public static function set_field_defaults( $field = array() ) {
     777
     778        $field = wp_parse_args(
     779            $field,
     780            array(
     781                'id'           => '',
     782                'title'        => $field['name'] ?? '',
     783                'class'        => '',
     784                'css'          => '',
     785                'default'      => '',
     786                'desc'         => '',
     787                'desc_tooltip' => '',
     788                'after_html'   => '',
     789            )
     790        );
     791
     792        return $field;
     793
     794    }
    770795
    771796    /**
     
    903928     * Save admin fields.
    904929     *
    905      * Loops though the lifterlms options array and outputs each field.
     930     * Loops through a LifterLMS settings field options array and saves the values via `update_option()`.
    906931     *
    907932     * @since 1.0.0
     
    910935     * @since 3.35.2 Don't strip tags on editor and textarea fields that allow HTML.
    911936     * @since 5.9.0 Stop using deprecated `FILTER_SANITIZE_STRING`.
     937     * @since [version] Add handling for array fields for standard input types.
    912938     *
    913939     * @param array $settings Opens array to output
     
    925951
    926952        // Loop options and get values to save.
    927         foreach ( $settings as $value ) {
    928 
    929             if ( ! isset( $value['id'] ) ) {
    930                 continue; }
    931 
    932             $type = isset( $value['type'] ) ? sanitize_title( $value['type'] ) : '';
    933 
    934             // Remove secure options from the database.
    935             if ( isset( $value['secure_option'] ) && llms_get_secure_option( $value['secure_option'] ) ) {
    936                 delete_option( $value['id'] );
     953        foreach ( $settings as $field ) {
     954
     955            if ( ! isset( $field['id'] ) ) {
    937956                continue;
    938957            }
    939958
     959            $type = isset( $field['type'] ) ? sanitize_title( $field['type'] ) : '';
     960
     961            // Remove secure options from the database.
     962            if ( isset( $field['secure_option'] ) && llms_get_secure_option( $field['secure_option'] ) ) {
     963                delete_option( $field['id'] );
     964                continue;
     965            }
     966
    940967            // Get the option name.
    941968            $option_value = null;
    942969
     970            // Determines if the option value is an array.
     971            $is_array_option = false !== strpos( $field['id'], '[' );
     972
    943973            switch ( $type ) {
    944974
    945                 // Standard types.
    946975                case 'checkbox':
    947                     // Ooboi this is gross.
    948                     if ( strstr( $value['id'], '[' ) ) {
    949                         parse_str( $value['id'], $option_data );
    950                         $main_option_names = array_keys( $option_data );
    951                         $main_option_vals  = array_keys( $option_data[ $main_option_names[0] ] );
    952                         if ( isset( $_POST[ $main_option_names[0] ] ) && in_array( $main_option_vals[0], array_keys( $_POST[ $main_option_names[0] ] ) ) ) {
    953                             $option_value = 'yes';
    954                         } else {
    955                             $option_value = 'no';
    956                         }
    957                     } elseif ( isset( $_POST[ $value['id'] ] ) ) {
     976                    if ( $is_array_option ) {
     977                        $option_value = self::get_array_field_posted_value( $field['id'] ) ? 'yes' : 'no';
     978                    } elseif ( isset( $_POST[ $field['id'] ] ) ) {
    958979                        $option_value = 'yes';
    959980                    } else {
    960981                        $option_value = 'no';
    961982                    }
    962 
    963983                    break;
    964984
    965985                case 'textarea':
    966986                case 'wpeditor':
    967                     if ( isset( $_POST[ $value['id'] ] ) ) {
    968                         $option_value = wp_kses_post( trim( llms_filter_input( INPUT_POST, $value['id'], FILTER_DEFAULT ) ) );
     987                    if ( isset( $_POST[ $field['id'] ] ) ) {
     988                        $option_value = wp_kses_post( trim( llms_filter_input( INPUT_POST, $field['id'], FILTER_DEFAULT ) ) );
    969989                    } else {
    970990                        $option_value = '';
    971991                    }
    972 
    973992                    break;
    974993
     
    9831002                case 'hidden':
    9841003                case 'image':
    985                     if ( isset( $_POST[ $value['id'] ] ) ) {
    986                         $option_value = llms_filter_input_sanitize_string( INPUT_POST, $value['id'] );
     1004                    if ( $is_array_option ) {
     1005                        $option_value = self::get_array_field_posted_value( $field['id'] );
     1006                    } elseif ( isset( $_POST[ $field['id'] ] ) ) {
     1007                        $option_value = llms_filter_input_sanitize_string( INPUT_POST, $field['id'] );
    9871008                    } else {
    9881009                        $option_value = '';
    9891010                    }
    9901011
    991                     if ( isset( $value['sanitize'] ) && 'slug' === $value['sanitize'] ) {
     1012                    if ( isset( $field['sanitize'] ) && 'slug' === $field['sanitize'] ) {
    9921013                        $option_value = sanitize_title( $option_value );
    9931014                    }
     
    9961017
    9971018                case 'multiselect':
    998                     if ( isset( $_POST[ $value['id'] ] ) ) {
    999                         $option_value = llms_filter_input_sanitize_string( INPUT_POST, $value['id'], array( FILTER_REQUIRE_ARRAY ) );
     1019                    if ( isset( $_POST[ $field['id'] ] ) ) {
     1020                        $option_value = llms_filter_input_sanitize_string( INPUT_POST, $field['id'], array( FILTER_REQUIRE_ARRAY ) );
    10001021                    } else {
    10011022                        $option_value = '';
     
    10031024                    break;
    10041025
    1005                 // Custom handling.
    10061026                default:
    1007                     do_action( 'lifterlms_update_option_' . $type, $value );
    1008 
    1009                     break;
     1027                    /**
     1028                     * Action run for external field types.
     1029                     *
     1030                     * @since Unknown
     1031                     * @deprecated [version] Use `llms_update_option_{$type}` filter hook instead.
     1032                     *
     1033                     * @param type $arg Description.
     1034                     */
     1035                    do_action_deprecated( "lifterlms_update_option_{$type}", array( $field ), '[version]' );
    10101036
    10111037            }
    10121038
     1039            /**
     1040             * Filters the value of a settings field after it has been parsed and sanitized
     1041             * and before it is saved to the database.
     1042             *
     1043             * The dynamic portion of this hook, `{$type}` refers to the setting field type:
     1044             * email, text, checkbox, etc...
     1045             *
     1046             * @since [version]
     1047             *
     1048             * @param string|null $option_value The sanitized option value or `null`.
     1049             * @param array       $field        The settings field array.
     1050             */
     1051            $option_value = apply_filters( "llms_update_option_{$type}", $option_value, $field );
     1052
    10131053            if ( ! is_null( $option_value ) ) {
    1014                 // Check if option is an array.
    1015                 if ( strstr( $value['id'], '[' ) ) {
    1016 
    1017                     parse_str( $value['id'], $option_array );
     1054
     1055                if ( $is_array_option ) {
     1056
     1057                    parse_str( $field['id'], $option_array );
    10181058
    10191059                    // Option name is first key.
     
    10221062                    // Get old option value.
    10231063                    if ( ! isset( $update_options[ $option_name ] ) ) {
    1024                          $update_options[ $option_name ] = get_option( $option_name, array() ); }
     1064                        $update_options[ $option_name ] = get_option( $option_name, array() );
     1065                    }
    10251066
    10261067                    if ( ! is_array( $update_options[ $option_name ] ) ) {
    1027                         $update_options[ $option_name ] = array(); }
     1068                        $update_options[ $option_name ] = array();
     1069                    }
    10281070
    10291071                    // Set keys and value.
     
    10321074                    $update_options[ $option_name ][ $key ] = $option_value;
    10331075
    1034                     // Single value.
    10351076                } else {
    1036                     $update_options[ $value['id'] ] = $option_value;
     1077                    $update_options[ $field['id'] ] = $option_value;
    10371078                }
    10381079            }
    10391080
    1040             // Custom handling.
    1041             do_action( 'lifterlms_update_option', $value );
    1042         }
     1081            /**
     1082             * Action run prior to the update of a LifterLMS setting field option.
     1083             *
     1084             * An update isn't guaranteed after this action if the method's logic can't
     1085             * find a valid posted valued to persist to the database.
     1086             *
     1087             * @since Unknown
     1088             *
     1089             * @param array $field The admin setting field array to be updated.
     1090             */
     1091            do_action( 'lifterlms_update_option', $field );
     1092
     1093        }
     1094
    10431095        // Now save the options.
    10441096        foreach ( $update_options as $name => $value ) {
    1045 
    10461097            update_option( $name, $value );
    1047 
    10481098        }
    10491099
     
    10511101
    10521102        return true;
     1103
     1104    }
     1105
     1106    /**
     1107     * Retrieves the posted value for an array type setting field.
     1108     *
     1109     * @since [version]
     1110     *
     1111     * @param string $id The field ID, eg: "my_setting[field_one]".
     1112     * @return string Returns the (sanitized) posted value or an empty string if it wasn't posted.
     1113     */
     1114    private static function get_array_field_posted_value( $id ) {
     1115
     1116        parse_str( $id, $parsed_id );
     1117        $opt_id  = key( $parsed_id );
     1118        $opt_key = key( $parsed_id[ $opt_id ] );
     1119        $posted  = llms_filter_input_sanitize_string( INPUT_POST, $opt_id, array( FILTER_REQUIRE_ARRAY ) );
     1120
     1121        return $posted[ $opt_key ] ?? '';
     1122
    10531123    }
    10541124
  • lifterlms/tags/7.0.0-alpha.2/includes/admin/llms.functions.admin.php

    r2690931 r2747283  
    136136
    137137/**
     138 * Retrieves HTML for a Dashicon wrapped in an anchor.
     139 *
     140 * A utility for adding links to external documentation.
     141 *
     142 * @since [version]
     143 *
     144 * @param string $url The URL of the anchor tag.
     145 * @param array  $args {
     146 *     An array of optional configuration options.
     147 *
     148 *     @type integer $size  The size of the icon. Default 18.
     149 *     @type string  $title The title attribute of the anchor tag. Default: "More information".
     150 *     @type string  $icon  The Dashicon icon to use, {@see @link https://developer.wordpress.org/resource/dashicons/}. Default: "external".
     151 * }
     152 * @return string
     153 */
     154function llms_get_dashicon_link( $url, $args = array() ) {
     155
     156    $args = wp_parse_args(
     157        $args,
     158        array(
     159            'size'  => 18,
     160            'title' => esc_attr__( 'More information', 'lifterlms' ),
     161            'icon'  => 'external',
     162        )
     163    );
     164
     165    $dashicon = sprintf(
     166        '<span class="dashicons dashicons-%1$s" style="font-size:%2$dpx;width:%2$dpx;height:%2$dpx"></span>',
     167        esc_attr( $args['icon'] ),
     168        $args['size']
     169    );
     170
     171    return sprintf(
     172        '<a href="%1$s" style="text-decoration:none;" target="_blank" rel="noreferrer" title="%2$s">%3$s</a>',
     173        esc_url( $url ),
     174        esc_attr( $args['title'] ),
     175        $dashicon
     176    );
     177
     178}
     179
     180/**
    138181 * Get an array of available course/membership sales page options
    139182 *
  • lifterlms/tags/7.0.0-alpha.2/includes/theme-support/class-llms-twenty-twenty-two.php

    r2679500 r2747283  
    66 *
    77 * @since 5.8.0
    8  * @version 5.9.0
     8 * @version [version]
    99 */
    1010
     
    7373     * @since 5.8.0
    7474     * @since 5.9.0 Fixed stretched images in questions with pictures, and images in quiz/questions description.
     75     * @since [version] Fixed label/text alignment by removing text’s margin top. Also, removed now outdated width rule.
    7576     *
    7677     * @param string|null $context Inline CSS context. Accepts "editor" to define styles loaded within the block editor or `null` for frontend styles.
     
    9394
    9495            // Question layout.
    95             $styles[] = '.llms-question-wrapper ol.llms-question-choices li.llms-choice .llms-choice-text { width: calc( 100% - 110px); }';
     96            $styles[] = '.llms-question-wrapper ol.llms-question-choices li.llms-choice .llms-choice-text { margin-top: 0; }';
    9697
    9798            // Payment gateway stylized radio buttons.
  • lifterlms/tags/7.0.0-alpha.2/languages/lifterlms.pot

    r2743094 r2747283  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: LifterLMS 7.0.0-alpha.1\n"
     5"Project-Id-Version: LifterLMS 7.0.0-alpha.2\n"
    66"Report-Msgid-Bugs-To: https://lifterlms.com/my-account/my-tickets\n"
    77"Last-Translator: Team LifterLMS <[email protected]>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2022-06-15T13:28:35-06:00\n"
     12"POT-Creation-Date: 2022-06-23T14:02:01-06:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: llms/dev 0.0.5\n"
     
    179179msgstr ""
    180180
    181 #: includes/abstracts/abstract.llms.payment.gateway.php:787
     181#: includes/abstracts/abstract.llms.payment.gateway.php:801
    182182msgid "The selected payment gateway \"%s\" does not support payment method switching."
    183183msgstr ""
     
    10931093msgstr ""
    10941094
    1095 #: includes/admin/class.llms.admin.settings.php:645
     1095#: includes/admin/class.llms.admin.settings.php:673
    10961096#: includes/admin/views/import.php:17
    10971097msgid "Upload"
    10981098msgstr ""
    10991099
    1100 #: includes/admin/class.llms.admin.settings.php:685
     1100#: includes/admin/class.llms.admin.settings.php:713
    11011101msgid "Select a page&hellip;"
    11021102msgstr ""
    11031103
    1104 #: includes/admin/class.llms.admin.settings.php:712
     1104#: includes/admin/class.llms.admin.settings.php:740
    11051105#: includes/class.llms.l10n.js.php:147
    11061106#: includes/class.llms.l10n.js.php:343
     
    12301230msgstr ""
    12311231
    1232 #: includes/admin/llms.functions.admin.php:148
     1232#: includes/admin/llms.functions.admin.php:160
     1233msgid "More information"
     1234msgstr ""
     1235
     1236#: includes/admin/llms.functions.admin.php:191
    12331237msgid "Display default course content"
    12341238msgstr ""
    12351239
    1236 #: includes/admin/llms.functions.admin.php:149
     1240#: includes/admin/llms.functions.admin.php:192
    12371241msgid "Show custom content"
    12381242msgstr ""
    12391243
    1240 #: includes/admin/llms.functions.admin.php:150
     1244#: includes/admin/llms.functions.admin.php:193
    12411245msgid "Redirect to WordPress Page"
    12421246msgstr ""
    12431247
    1244 #: includes/admin/llms.functions.admin.php:151
     1248#: includes/admin/llms.functions.admin.php:194
    12451249msgid "Redirect to custom URL"
    12461250msgstr ""
    12471251
    1248 #: includes/admin/llms.functions.admin.php:167
     1252#: includes/admin/llms.functions.admin.php:210
    12491253msgid "Course/Membership"
    12501254msgstr ""
    12511255
    1252 #: includes/admin/llms.functions.admin.php:172
     1256#: includes/admin/llms.functions.admin.php:215
    12531257msgid "(Default) Return to %s"
    12541258msgstr ""
    12551259
    1256 #: includes/admin/llms.functions.admin.php:173
     1260#: includes/admin/llms.functions.admin.php:216
    12571261msgid "Redirect to a WordPress Page"
    12581262msgstr ""
    12591263
    1260 #: includes/admin/llms.functions.admin.php:174
     1264#: includes/admin/llms.functions.admin.php:217
    12611265msgid "Redirect to a custom URL"
    12621266msgstr ""
    12631267
    1264 #: includes/admin/llms.functions.admin.php:207
     1268#: includes/admin/llms.functions.admin.php:250
    12651269msgid "Website Title"
    12661270msgstr ""
    12671271
    1268 #: includes/admin/llms.functions.admin.php:208
     1272#: includes/admin/llms.functions.admin.php:251
    12691273msgid "Website URL"
    12701274msgstr ""
    12711275
    1272 #: includes/admin/llms.functions.admin.php:209
     1276#: includes/admin/llms.functions.admin.php:252
    12731277msgid "Student Email Address"
    12741278msgstr ""
    12751279
    1276 #: includes/admin/llms.functions.admin.php:210
     1280#: includes/admin/llms.functions.admin.php:253
    12771281#: includes/functions/llms.functions.certificate.php:205
    12781282msgid "Student Username"
    12791283msgstr ""
    12801284
    1281 #: includes/admin/llms.functions.admin.php:211
     1285#: includes/admin/llms.functions.admin.php:254
    12821286#: includes/functions/llms.functions.certificate.php:201
    12831287msgid "Student First Name"
    12841288msgstr ""
    12851289
    1286 #: includes/admin/llms.functions.admin.php:212
     1290#: includes/admin/llms.functions.admin.php:255
    12871291#: includes/functions/llms.functions.certificate.php:202
    12881292msgid "Student Last Name"
    12891293msgstr ""
    12901294
    1291 #: includes/admin/llms.functions.admin.php:213
     1295#: includes/admin/llms.functions.admin.php:256
    12921296#: includes/functions/llms.functions.certificate.php:199
    12931297msgid "Current Date"
  • lifterlms/tags/7.0.0-alpha.2/lifterlms.php

    r2743094 r2747283  
    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: 7.0.0-alpha.1
     13 * Version: 7.0.0-alpha.2
    1414 * Author: LifterLMS
    1515 * Author URI: https://lifterlms.com/
  • lifterlms/tags/7.0.0-alpha.2/vendor/composer/installed.php

    r2743094 r2747283  
    66        'install_path' => __DIR__ . '/../../',
    77        'aliases' => array(),
    8         'reference' => '9d4a7e5b1f86f640b0674b2068bdbf029713c021',
     8        'reference' => 'c952eed1f14828f4de13eaa2740dd5a2f675cc19',
    99        'name' => 'gocodebox/lifterlms',
    1010        'dev' => false,
     
    3535            'install_path' => __DIR__ . '/../../',
    3636            'aliases' => array(),
    37             'reference' => '9d4a7e5b1f86f640b0674b2068bdbf029713c021',
     37            'reference' => 'c952eed1f14828f4de13eaa2740dd5a2f675cc19',
    3838            'dev_requirement' => false,
    3939        ),
  • lifterlms/trunk/class-lifterlms.php

    r2743094 r2747283  
    3535     * @var string
    3636     */
    37     public $version = '7.0.0-alpha.1';
     37    public $version = '7.0.0-alpha.2';
    3838
    3939    /**
  • lifterlms/trunk/includes/abstracts/abstract.llms.payment.gateway.php

    r2743094 r2747283  
    620620     *
    621621     * @since 3.0.0
     622     * @since [version] Added the force filter, `llms_gateway_{$this->id}_logging_enabled`.
    622623     *
    623624     * @return string
    624625     */
    625626    public function get_logging_enabled() {
     627        /**
     628         * Enables forcing the logging status for the gateway on or off.
     629         *
     630         * The dynamic portion of this hook, `{$this->id}`, refers to the gateway's ID.
     631         *
     632         * @since [version]
     633         *
     634         * @param null|bool $forced The forced status. If `null`, the default status derived from the gateway options will be used.
     635         */
     636        $forced = apply_filters( "llms_gateway_{$this->id}_logging_enabled", null );
     637        if ( ! is_null( $forced ) ) {
     638            return $forced ? 'yes' : 'no';
     639        }
    626640        return $this->get_option( 'logging_enabled' );
    627641    }
     
    691705
    692706        if ( ! isset( $this->supports['modify_recurring_payments'] ) || is_null( $this->supports['modify_recurring_payments'] ) ) {
    693             $this->supports['modify_recurring_payments'] = $this->supports['recurring_payments'];
     707            $this->supports['modify_recurring_payments'] = $this->supports['recurring_payments'] ?? false;
    694708        }
    695709
  • lifterlms/trunk/includes/admin/class.llms.admin.settings.php

    r2690931 r2747283  
    66 *
    77 * @since 1.0.0
    8  * @version 5.9.0
     8 * @version [version]
    99 */
    1010
     
    218218     * @since 3.37.9 Add option for fields to show an asterisk for required fields.
    219219     * @since 5.0.2 Pass any option value sanitized as a "slug" through `urldecode()` prior to displaying it.
    220      *
    221      * @param array $field Array of field settings.
     220     * @since [version] Add `$after_html` to all field types.
     221     *
     222     * @param array $field {
     223     *     Array of field settings.
     224     *
     225     *     @type string $id                The setting ID. Used as the from element's `name` and `id` attributes and
     226     *                                     automatically correspond to an option key using the WP options API.
     227     *     @type string $type              The field type. Accepts: 'title', 'table', 'subtitle', 'desc', 'custom-html',
     228     *                                     'custom-html-no-wrap', 'sectionstart', 'sectionend', 'button', 'hidden', 'keyval',
     229     *                                     'text', 'email', 'number', 'password', 'textarea', 'wpeditor', 'select', 'multiselect',
     230     *                                     'radio', 'checkbox', 'image', 'single_select_page', 'single_select_membership'.
     231     *     @type string $title             The title / name of the option as displayed to the user.
     232     *     @type string $name              For "button" fields only: used as HTML `name` attribute. If not supplied the default
     233     *                                     value "save" will be used. For other field types used as a fallback for `$title` if
     234     *                                     no value is supplied.
     235     *     @type string $class             A space-separated list of CSS class names to apply the setting form element (the
     236     *                                     `<input>`, `<select>` etc...).
     237     *     @type string $css               An inline CSS style string.
     238     *     @type string $default           The default value of the setting.
     239     *     @type string $desc              The setting's description.
     240     *     @type bool   $desc_tooltip      If `true`, displays `$desc` in a hoverable tooltip.
     241     *     @type string $value             The value of the setting. If supplied this will override the automatic setting retrieval
     242     *                                     using `get_option( $id, $default )`.
     243     *     @type array  $custom_attributes An associative array of custom HTML attributes to be added to the form element (the
     244     *                                     `<input>`, `<select>` etc...).
     245     *     @type bool   $disabled          If `true` adds the `llms-disabled-field` class to the settings field wrapper.
     246     *     @type bool   $required          If `true`, text, email, number, and password fields will require user input.
     247     *     @type string $secure_option     The name of settings secure option equivalent. If specified, the fields value will be
     248     *                                     automatically removed from the database and the value will be masked when displayed on
     249     *                                     on screen. See {@see llms_get_secure_option()} for more information.
     250     *     @type string $sanitize          Automatically apply the specified sanitization to the value before storing and outputting
     251     *                                     the stored value. Supported filters:
     252     *                                       + "slug": Uses `sanitize_title()` on the value when storing and `urldecode()` when displaying.
     253     *     @type string $after_html        Additional HTML to add after the field's form element.
     254     *     @type array  $editor_settings   Used with "wpeditor" field type only. An array of options to pass to `wp_editor()` as the `$settings` argument.
     255     *     @type array  $options           For "select", "multiselect", and "radio" fields, an array of key/value pairs where the
     256     *                                     key is the setting value stored in database and the value is the setting label displayed
     257     *                                     on screen.
     258     * }
    222259     * @return void
    223260     */
     
    227264        $field = self::set_field_defaults( $field );
    228265
    229         $custom_attributes_field = array_key_exists( 'custom_attributes', $field ) ? $field['custom_attributes'] : array();
    230266        // Setup custom attributes.
    231             $custom_attributes = self::format_field_custom_attributes( $custom_attributes_field );
     267        $custom_attributes = self::format_field_custom_attributes( $field['custom_attributes'] ?? array() );
    232268
    233269        // Setup field description and tooltip.
    234         // This will return an associative array of with the keys "description" and "tooltip".
    235270        extract( self::set_field_descriptions( $field ) );
    236 
    237         // Allow using value not retrieved via this class.
    238         if ( isset( $field['value'] ) ) {
    239             $option_value = $field['value'];
    240         } else {
    241             // Get the option value.
    242             $option_value = self::get_option( $field['id'], $field['default'] );
    243         }
    244 
     271        $description .= ' ' . $field['after_html'];
     272
     273        // Get the field value.
     274        $option_value = isset( $field['value'] ) ? $field['value'] : self::get_option( $field['id'], $field['default'] );
     275
     276        // Setup the disabled CSS class.
    245277        $disabled_class = ( isset( $field['disabled'] ) && true === $field['disabled'] ) ? 'llms-disabled-field' : '';
    246278
     
    251283            case 'title':
    252284                if ( ! empty( $field['title'] ) ) {
    253 
    254285                    echo '<p class="llms-label">' . esc_html( $field['title'] ) . '</p>';
    255 
    256286                }
    257287                if ( ! empty( $field['desc'] ) ) {
    258 
    259288                    echo '<p class="llms-description">' . wpautop( wptexturize( wp_kses_post( $field['desc'] ) ) ) . '</p>';
    260 
    261289                }
    262290
     
    414442                            <?php echo implode( ' ', $custom_attributes ); ?>
    415443                            <?php echo $required ? 'required="required"' : ''; ?>
    416                             /> <?php echo $description; ?> <?php echo isset( $field['after_html'] ) ? $field['after_html'] : ''; ?>
     444                            /> <?php echo $description; ?>
    417445                    </td>
    418446                </tr>
     
    656684                            class="<?php echo esc_attr( $field['class'] ); ?>"
    657685                            <?php echo implode( ' ', $custom_attributes ); ?>
    658                             /> <?php echo $description; ?> <?php echo isset( $field['after_html'] ) ? $field['after_html'] : ''; ?>
     686                            /> <?php echo $description; ?>
    659687                    </td>
    660688                </tr>
     
    737765    }
    738766
    739 
    740 
    741767    /**
    742768     * Add and set default values for a field when looping
    743769     *
    744      * @param array $value   associative array of field data
    745      * @return array          associative array of field data
    746      *
    747770     * @since 1.4.5
    748      */
    749     public static function set_field_defaults( $value = array() ) {
    750 
    751         if ( ! isset( $value['id'] ) ) {
    752             $value['id'] = ''; }
    753         if ( ! isset( $value['title'] ) ) {
    754             $value['title'] = isset( $value['name'] ) ? $value['name'] : ''; }
    755         if ( ! isset( $value['class'] ) ) {
    756             $value['class'] = ''; }
    757         if ( ! isset( $value['css'] ) ) {
    758             $value['css'] = ''; }
    759         if ( ! isset( $value['default'] ) ) {
    760             $value['default'] = ''; }
    761         if ( ! isset( $value['desc'] ) ) {
    762             $value['desc'] = ''; }
    763         if ( ! isset( $value['desc_tooltip'] ) ) {
    764             $value['desc_tooltip'] = false; }
    765 
    766         return $value;
    767 
    768     }
    769 
     771     * @since [version] Use `wp_parse_args()` to simplify method logic & add `after_html` default.
     772     *
     773     * @param array $field Associative array of field data, {@see LLMS_Admin_Settings::output_field()} for a full description.
     774     * @return array
     775     */
     776    public static function set_field_defaults( $field = array() ) {
     777
     778        $field = wp_parse_args(
     779            $field,
     780            array(
     781                'id'           => '',
     782                'title'        => $field['name'] ?? '',
     783                'class'        => '',
     784                'css'          => '',
     785                'default'      => '',
     786                'desc'         => '',
     787                'desc_tooltip' => '',
     788                'after_html'   => '',
     789            )
     790        );
     791
     792        return $field;
     793
     794    }
    770795
    771796    /**
     
    903928     * Save admin fields.
    904929     *
    905      * Loops though the lifterlms options array and outputs each field.
     930     * Loops through a LifterLMS settings field options array and saves the values via `update_option()`.
    906931     *
    907932     * @since 1.0.0
     
    910935     * @since 3.35.2 Don't strip tags on editor and textarea fields that allow HTML.
    911936     * @since 5.9.0 Stop using deprecated `FILTER_SANITIZE_STRING`.
     937     * @since [version] Add handling for array fields for standard input types.
    912938     *
    913939     * @param array $settings Opens array to output
     
    925951
    926952        // Loop options and get values to save.
    927         foreach ( $settings as $value ) {
    928 
    929             if ( ! isset( $value['id'] ) ) {
    930                 continue; }
    931 
    932             $type = isset( $value['type'] ) ? sanitize_title( $value['type'] ) : '';
    933 
    934             // Remove secure options from the database.
    935             if ( isset( $value['secure_option'] ) && llms_get_secure_option( $value['secure_option'] ) ) {
    936                 delete_option( $value['id'] );
     953        foreach ( $settings as $field ) {
     954
     955            if ( ! isset( $field['id'] ) ) {
    937956                continue;
    938957            }
    939958
     959            $type = isset( $field['type'] ) ? sanitize_title( $field['type'] ) : '';
     960
     961            // Remove secure options from the database.
     962            if ( isset( $field['secure_option'] ) && llms_get_secure_option( $field['secure_option'] ) ) {
     963                delete_option( $field['id'] );
     964                continue;
     965            }
     966
    940967            // Get the option name.
    941968            $option_value = null;
    942969
     970            // Determines if the option value is an array.
     971            $is_array_option = false !== strpos( $field['id'], '[' );
     972
    943973            switch ( $type ) {
    944974
    945                 // Standard types.
    946975                case 'checkbox':
    947                     // Ooboi this is gross.
    948                     if ( strstr( $value['id'], '[' ) ) {
    949                         parse_str( $value['id'], $option_data );
    950                         $main_option_names = array_keys( $option_data );
    951                         $main_option_vals  = array_keys( $option_data[ $main_option_names[0] ] );
    952                         if ( isset( $_POST[ $main_option_names[0] ] ) && in_array( $main_option_vals[0], array_keys( $_POST[ $main_option_names[0] ] ) ) ) {
    953                             $option_value = 'yes';
    954                         } else {
    955                             $option_value = 'no';
    956                         }
    957                     } elseif ( isset( $_POST[ $value['id'] ] ) ) {
     976                    if ( $is_array_option ) {
     977                        $option_value = self::get_array_field_posted_value( $field['id'] ) ? 'yes' : 'no';
     978                    } elseif ( isset( $_POST[ $field['id'] ] ) ) {
    958979                        $option_value = 'yes';
    959980                    } else {
    960981                        $option_value = 'no';
    961982                    }
    962 
    963983                    break;
    964984
    965985                case 'textarea':
    966986                case 'wpeditor':
    967                     if ( isset( $_POST[ $value['id'] ] ) ) {
    968                         $option_value = wp_kses_post( trim( llms_filter_input( INPUT_POST, $value['id'], FILTER_DEFAULT ) ) );
     987                    if ( isset( $_POST[ $field['id'] ] ) ) {
     988                        $option_value = wp_kses_post( trim( llms_filter_input( INPUT_POST, $field['id'], FILTER_DEFAULT ) ) );
    969989                    } else {
    970990                        $option_value = '';
    971991                    }
    972 
    973992                    break;
    974993
     
    9831002                case 'hidden':
    9841003                case 'image':
    985                     if ( isset( $_POST[ $value['id'] ] ) ) {
    986                         $option_value = llms_filter_input_sanitize_string( INPUT_POST, $value['id'] );
     1004                    if ( $is_array_option ) {
     1005                        $option_value = self::get_array_field_posted_value( $field['id'] );
     1006                    } elseif ( isset( $_POST[ $field['id'] ] ) ) {
     1007                        $option_value = llms_filter_input_sanitize_string( INPUT_POST, $field['id'] );
    9871008                    } else {
    9881009                        $option_value = '';
    9891010                    }
    9901011
    991                     if ( isset( $value['sanitize'] ) && 'slug' === $value['sanitize'] ) {
     1012                    if ( isset( $field['sanitize'] ) && 'slug' === $field['sanitize'] ) {
    9921013                        $option_value = sanitize_title( $option_value );
    9931014                    }
     
    9961017
    9971018                case 'multiselect':
    998                     if ( isset( $_POST[ $value['id'] ] ) ) {
    999                         $option_value = llms_filter_input_sanitize_string( INPUT_POST, $value['id'], array( FILTER_REQUIRE_ARRAY ) );
     1019                    if ( isset( $_POST[ $field['id'] ] ) ) {
     1020                        $option_value = llms_filter_input_sanitize_string( INPUT_POST, $field['id'], array( FILTER_REQUIRE_ARRAY ) );
    10001021                    } else {
    10011022                        $option_value = '';
     
    10031024                    break;
    10041025
    1005                 // Custom handling.
    10061026                default:
    1007                     do_action( 'lifterlms_update_option_' . $type, $value );
    1008 
    1009                     break;
     1027                    /**
     1028                     * Action run for external field types.
     1029                     *
     1030                     * @since Unknown
     1031                     * @deprecated [version] Use `llms_update_option_{$type}` filter hook instead.
     1032                     *
     1033                     * @param type $arg Description.
     1034                     */
     1035                    do_action_deprecated( "lifterlms_update_option_{$type}", array( $field ), '[version]' );
    10101036
    10111037            }
    10121038
     1039            /**
     1040             * Filters the value of a settings field after it has been parsed and sanitized
     1041             * and before it is saved to the database.
     1042             *
     1043             * The dynamic portion of this hook, `{$type}` refers to the setting field type:
     1044             * email, text, checkbox, etc...
     1045             *
     1046             * @since [version]
     1047             *
     1048             * @param string|null $option_value The sanitized option value or `null`.
     1049             * @param array       $field        The settings field array.
     1050             */
     1051            $option_value = apply_filters( "llms_update_option_{$type}", $option_value, $field );
     1052
    10131053            if ( ! is_null( $option_value ) ) {
    1014                 // Check if option is an array.
    1015                 if ( strstr( $value['id'], '[' ) ) {
    1016 
    1017                     parse_str( $value['id'], $option_array );
     1054
     1055                if ( $is_array_option ) {
     1056
     1057                    parse_str( $field['id'], $option_array );
    10181058
    10191059                    // Option name is first key.
     
    10221062                    // Get old option value.
    10231063                    if ( ! isset( $update_options[ $option_name ] ) ) {
    1024                          $update_options[ $option_name ] = get_option( $option_name, array() ); }
     1064                        $update_options[ $option_name ] = get_option( $option_name, array() );
     1065                    }
    10251066
    10261067                    if ( ! is_array( $update_options[ $option_name ] ) ) {
    1027                         $update_options[ $option_name ] = array(); }
     1068                        $update_options[ $option_name ] = array();
     1069                    }
    10281070
    10291071                    // Set keys and value.
     
    10321074                    $update_options[ $option_name ][ $key ] = $option_value;
    10331075
    1034                     // Single value.
    10351076                } else {
    1036                     $update_options[ $value['id'] ] = $option_value;
     1077                    $update_options[ $field['id'] ] = $option_value;
    10371078                }
    10381079            }
    10391080
    1040             // Custom handling.
    1041             do_action( 'lifterlms_update_option', $value );
    1042         }
     1081            /**
     1082             * Action run prior to the update of a LifterLMS setting field option.
     1083             *
     1084             * An update isn't guaranteed after this action if the method's logic can't
     1085             * find a valid posted valued to persist to the database.
     1086             *
     1087             * @since Unknown
     1088             *
     1089             * @param array $field The admin setting field array to be updated.
     1090             */
     1091            do_action( 'lifterlms_update_option', $field );
     1092
     1093        }
     1094
    10431095        // Now save the options.
    10441096        foreach ( $update_options as $name => $value ) {
    1045 
    10461097            update_option( $name, $value );
    1047 
    10481098        }
    10491099
     
    10511101
    10521102        return true;
     1103
     1104    }
     1105
     1106    /**
     1107     * Retrieves the posted value for an array type setting field.
     1108     *
     1109     * @since [version]
     1110     *
     1111     * @param string $id The field ID, eg: "my_setting[field_one]".
     1112     * @return string Returns the (sanitized) posted value or an empty string if it wasn't posted.
     1113     */
     1114    private static function get_array_field_posted_value( $id ) {
     1115
     1116        parse_str( $id, $parsed_id );
     1117        $opt_id  = key( $parsed_id );
     1118        $opt_key = key( $parsed_id[ $opt_id ] );
     1119        $posted  = llms_filter_input_sanitize_string( INPUT_POST, $opt_id, array( FILTER_REQUIRE_ARRAY ) );
     1120
     1121        return $posted[ $opt_key ] ?? '';
     1122
    10531123    }
    10541124
  • lifterlms/trunk/includes/admin/llms.functions.admin.php

    r2690931 r2747283  
    136136
    137137/**
     138 * Retrieves HTML for a Dashicon wrapped in an anchor.
     139 *
     140 * A utility for adding links to external documentation.
     141 *
     142 * @since [version]
     143 *
     144 * @param string $url The URL of the anchor tag.
     145 * @param array  $args {
     146 *     An array of optional configuration options.
     147 *
     148 *     @type integer $size  The size of the icon. Default 18.
     149 *     @type string  $title The title attribute of the anchor tag. Default: "More information".
     150 *     @type string  $icon  The Dashicon icon to use, {@see @link https://developer.wordpress.org/resource/dashicons/}. Default: "external".
     151 * }
     152 * @return string
     153 */
     154function llms_get_dashicon_link( $url, $args = array() ) {
     155
     156    $args = wp_parse_args(
     157        $args,
     158        array(
     159            'size'  => 18,
     160            'title' => esc_attr__( 'More information', 'lifterlms' ),
     161            'icon'  => 'external',
     162        )
     163    );
     164
     165    $dashicon = sprintf(
     166        '<span class="dashicons dashicons-%1$s" style="font-size:%2$dpx;width:%2$dpx;height:%2$dpx"></span>',
     167        esc_attr( $args['icon'] ),
     168        $args['size']
     169    );
     170
     171    return sprintf(
     172        '<a href="%1$s" style="text-decoration:none;" target="_blank" rel="noreferrer" title="%2$s">%3$s</a>',
     173        esc_url( $url ),
     174        esc_attr( $args['title'] ),
     175        $dashicon
     176    );
     177
     178}
     179
     180/**
    138181 * Get an array of available course/membership sales page options
    139182 *
  • lifterlms/trunk/includes/theme-support/class-llms-twenty-twenty-two.php

    r2679500 r2747283  
    66 *
    77 * @since 5.8.0
    8  * @version 5.9.0
     8 * @version [version]
    99 */
    1010
     
    7373     * @since 5.8.0
    7474     * @since 5.9.0 Fixed stretched images in questions with pictures, and images in quiz/questions description.
     75     * @since [version] Fixed label/text alignment by removing text’s margin top. Also, removed now outdated width rule.
    7576     *
    7677     * @param string|null $context Inline CSS context. Accepts "editor" to define styles loaded within the block editor or `null` for frontend styles.
     
    9394
    9495            // Question layout.
    95             $styles[] = '.llms-question-wrapper ol.llms-question-choices li.llms-choice .llms-choice-text { width: calc( 100% - 110px); }';
     96            $styles[] = '.llms-question-wrapper ol.llms-question-choices li.llms-choice .llms-choice-text { margin-top: 0; }';
    9697
    9798            // Payment gateway stylized radio buttons.
  • lifterlms/trunk/languages/lifterlms.pot

    r2743094 r2747283  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: LifterLMS 7.0.0-alpha.1\n"
     5"Project-Id-Version: LifterLMS 7.0.0-alpha.2\n"
    66"Report-Msgid-Bugs-To: https://lifterlms.com/my-account/my-tickets\n"
    77"Last-Translator: Team LifterLMS <[email protected]>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2022-06-15T13:28:35-06:00\n"
     12"POT-Creation-Date: 2022-06-23T14:02:01-06:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: llms/dev 0.0.5\n"
     
    179179msgstr ""
    180180
    181 #: includes/abstracts/abstract.llms.payment.gateway.php:787
     181#: includes/abstracts/abstract.llms.payment.gateway.php:801
    182182msgid "The selected payment gateway \"%s\" does not support payment method switching."
    183183msgstr ""
     
    10931093msgstr ""
    10941094
    1095 #: includes/admin/class.llms.admin.settings.php:645
     1095#: includes/admin/class.llms.admin.settings.php:673
    10961096#: includes/admin/views/import.php:17
    10971097msgid "Upload"
    10981098msgstr ""
    10991099
    1100 #: includes/admin/class.llms.admin.settings.php:685
     1100#: includes/admin/class.llms.admin.settings.php:713
    11011101msgid "Select a page&hellip;"
    11021102msgstr ""
    11031103
    1104 #: includes/admin/class.llms.admin.settings.php:712
     1104#: includes/admin/class.llms.admin.settings.php:740
    11051105#: includes/class.llms.l10n.js.php:147
    11061106#: includes/class.llms.l10n.js.php:343
     
    12301230msgstr ""
    12311231
    1232 #: includes/admin/llms.functions.admin.php:148
     1232#: includes/admin/llms.functions.admin.php:160
     1233msgid "More information"
     1234msgstr ""
     1235
     1236#: includes/admin/llms.functions.admin.php:191
    12331237msgid "Display default course content"
    12341238msgstr ""
    12351239
    1236 #: includes/admin/llms.functions.admin.php:149
     1240#: includes/admin/llms.functions.admin.php:192
    12371241msgid "Show custom content"
    12381242msgstr ""
    12391243
    1240 #: includes/admin/llms.functions.admin.php:150
     1244#: includes/admin/llms.functions.admin.php:193
    12411245msgid "Redirect to WordPress Page"
    12421246msgstr ""
    12431247
    1244 #: includes/admin/llms.functions.admin.php:151
     1248#: includes/admin/llms.functions.admin.php:194
    12451249msgid "Redirect to custom URL"
    12461250msgstr ""
    12471251
    1248 #: includes/admin/llms.functions.admin.php:167
     1252#: includes/admin/llms.functions.admin.php:210
    12491253msgid "Course/Membership"
    12501254msgstr ""
    12511255
    1252 #: includes/admin/llms.functions.admin.php:172
     1256#: includes/admin/llms.functions.admin.php:215
    12531257msgid "(Default) Return to %s"
    12541258msgstr ""
    12551259
    1256 #: includes/admin/llms.functions.admin.php:173
     1260#: includes/admin/llms.functions.admin.php:216
    12571261msgid "Redirect to a WordPress Page"
    12581262msgstr ""
    12591263
    1260 #: includes/admin/llms.functions.admin.php:174
     1264#: includes/admin/llms.functions.admin.php:217
    12611265msgid "Redirect to a custom URL"
    12621266msgstr ""
    12631267
    1264 #: includes/admin/llms.functions.admin.php:207
     1268#: includes/admin/llms.functions.admin.php:250
    12651269msgid "Website Title"
    12661270msgstr ""
    12671271
    1268 #: includes/admin/llms.functions.admin.php:208
     1272#: includes/admin/llms.functions.admin.php:251
    12691273msgid "Website URL"
    12701274msgstr ""
    12711275
    1272 #: includes/admin/llms.functions.admin.php:209
     1276#: includes/admin/llms.functions.admin.php:252
    12731277msgid "Student Email Address"
    12741278msgstr ""
    12751279
    1276 #: includes/admin/llms.functions.admin.php:210
     1280#: includes/admin/llms.functions.admin.php:253
    12771281#: includes/functions/llms.functions.certificate.php:205
    12781282msgid "Student Username"
    12791283msgstr ""
    12801284
    1281 #: includes/admin/llms.functions.admin.php:211
     1285#: includes/admin/llms.functions.admin.php:254
    12821286#: includes/functions/llms.functions.certificate.php:201
    12831287msgid "Student First Name"
    12841288msgstr ""
    12851289
    1286 #: includes/admin/llms.functions.admin.php:212
     1290#: includes/admin/llms.functions.admin.php:255
    12871291#: includes/functions/llms.functions.certificate.php:202
    12881292msgid "Student Last Name"
    12891293msgstr ""
    12901294
    1291 #: includes/admin/llms.functions.admin.php:213
     1295#: includes/admin/llms.functions.admin.php:256
    12921296#: includes/functions/llms.functions.certificate.php:199
    12931297msgid "Current Date"
  • lifterlms/trunk/lifterlms.php

    r2743094 r2747283  
    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: 7.0.0-alpha.1
     13 * Version: 7.0.0-alpha.2
    1414 * Author: LifterLMS
    1515 * Author URI: https://lifterlms.com/
  • lifterlms/trunk/vendor/composer/installed.php

    r2743094 r2747283  
    66        'install_path' => __DIR__ . '/../../',
    77        'aliases' => array(),
    8         'reference' => '9d4a7e5b1f86f640b0674b2068bdbf029713c021',
     8        'reference' => 'c952eed1f14828f4de13eaa2740dd5a2f675cc19',
    99        'name' => 'gocodebox/lifterlms',
    1010        'dev' => false,
     
    3535            'install_path' => __DIR__ . '/../../',
    3636            'aliases' => array(),
    37             'reference' => '9d4a7e5b1f86f640b0674b2068bdbf029713c021',
     37            'reference' => 'c952eed1f14828f4de13eaa2740dd5a2f675cc19',
    3838            'dev_requirement' => false,
    3939        ),
Note: See TracChangeset for help on using the changeset viewer.