Changeset 2747283
- Timestamp:
- 06/23/2022 08:07:44 PM (3 years ago)
- Location:
- lifterlms
- Files:
-
- 16 edited
- 1 copied
-
tags/7.0.0-alpha.2 (copied) (copied from lifterlms/trunk)
-
tags/7.0.0-alpha.2/class-lifterlms.php (modified) (1 diff)
-
tags/7.0.0-alpha.2/includes/abstracts/abstract.llms.payment.gateway.php (modified) (2 diffs)
-
tags/7.0.0-alpha.2/includes/admin/class.llms.admin.settings.php (modified) (16 diffs)
-
tags/7.0.0-alpha.2/includes/admin/llms.functions.admin.php (modified) (1 diff)
-
tags/7.0.0-alpha.2/includes/theme-support/class-llms-twenty-twenty-two.php (modified) (3 diffs)
-
tags/7.0.0-alpha.2/languages/lifterlms.pot (modified) (5 diffs)
-
tags/7.0.0-alpha.2/lifterlms.php (modified) (1 diff)
-
tags/7.0.0-alpha.2/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/class-lifterlms.php (modified) (1 diff)
-
trunk/includes/abstracts/abstract.llms.payment.gateway.php (modified) (2 diffs)
-
trunk/includes/admin/class.llms.admin.settings.php (modified) (16 diffs)
-
trunk/includes/admin/llms.functions.admin.php (modified) (1 diff)
-
trunk/includes/theme-support/class-llms-twenty-twenty-two.php (modified) (3 diffs)
-
trunk/languages/lifterlms.pot (modified) (5 diffs)
-
trunk/lifterlms.php (modified) (1 diff)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lifterlms/tags/7.0.0-alpha.2/class-lifterlms.php
r2743094 r2747283 35 35 * @var string 36 36 */ 37 public $version = '7.0.0-alpha. 1';37 public $version = '7.0.0-alpha.2'; 38 38 39 39 /** -
lifterlms/tags/7.0.0-alpha.2/includes/abstracts/abstract.llms.payment.gateway.php
r2743094 r2747283 620 620 * 621 621 * @since 3.0.0 622 * @since [version] Added the force filter, `llms_gateway_{$this->id}_logging_enabled`. 622 623 * 623 624 * @return string 624 625 */ 625 626 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 } 626 640 return $this->get_option( 'logging_enabled' ); 627 641 } … … 691 705 692 706 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; 694 708 } 695 709 -
lifterlms/tags/7.0.0-alpha.2/includes/admin/class.llms.admin.settings.php
r2690931 r2747283 6 6 * 7 7 * @since 1.0.0 8 * @version 5.9.08 * @version [version] 9 9 */ 10 10 … … 218 218 * @since 3.37.9 Add option for fields to show an asterisk for required fields. 219 219 * @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 * } 222 259 * @return void 223 260 */ … … 227 264 $field = self::set_field_defaults( $field ); 228 265 229 $custom_attributes_field = array_key_exists( 'custom_attributes', $field ) ? $field['custom_attributes'] : array();230 266 // 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() ); 232 268 233 269 // Setup field description and tooltip. 234 // This will return an associative array of with the keys "description" and "tooltip".235 270 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. 245 277 $disabled_class = ( isset( $field['disabled'] ) && true === $field['disabled'] ) ? 'llms-disabled-field' : ''; 246 278 … … 251 283 case 'title': 252 284 if ( ! empty( $field['title'] ) ) { 253 254 285 echo '<p class="llms-label">' . esc_html( $field['title'] ) . '</p>'; 255 256 286 } 257 287 if ( ! empty( $field['desc'] ) ) { 258 259 288 echo '<p class="llms-description">' . wpautop( wptexturize( wp_kses_post( $field['desc'] ) ) ) . '</p>'; 260 261 289 } 262 290 … … 414 442 <?php echo implode( ' ', $custom_attributes ); ?> 415 443 <?php echo $required ? 'required="required"' : ''; ?> 416 /> <?php echo $description; ?> <?php echo isset( $field['after_html'] ) ? $field['after_html'] : ''; ?>444 /> <?php echo $description; ?> 417 445 </td> 418 446 </tr> … … 656 684 class="<?php echo esc_attr( $field['class'] ); ?>" 657 685 <?php echo implode( ' ', $custom_attributes ); ?> 658 /> <?php echo $description; ?> <?php echo isset( $field['after_html'] ) ? $field['after_html'] : ''; ?>686 /> <?php echo $description; ?> 659 687 </td> 660 688 </tr> … … 737 765 } 738 766 739 740 741 767 /** 742 768 * Add and set default values for a field when looping 743 769 * 744 * @param array $value associative array of field data745 * @return array associative array of field data746 *747 770 * @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 } 770 795 771 796 /** … … 903 928 * Save admin fields. 904 929 * 905 * Loops th ough the lifterlms options array and outputs each field.930 * Loops through a LifterLMS settings field options array and saves the values via `update_option()`. 906 931 * 907 932 * @since 1.0.0 … … 910 935 * @since 3.35.2 Don't strip tags on editor and textarea fields that allow HTML. 911 936 * @since 5.9.0 Stop using deprecated `FILTER_SANITIZE_STRING`. 937 * @since [version] Add handling for array fields for standard input types. 912 938 * 913 939 * @param array $settings Opens array to output … … 925 951 926 952 // 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'] ) ) { 937 956 continue; 938 957 } 939 958 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 940 967 // Get the option name. 941 968 $option_value = null; 942 969 970 // Determines if the option value is an array. 971 $is_array_option = false !== strpos( $field['id'], '[' ); 972 943 973 switch ( $type ) { 944 974 945 // Standard types.946 975 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'] ] ) ) { 958 979 $option_value = 'yes'; 959 980 } else { 960 981 $option_value = 'no'; 961 982 } 962 963 983 break; 964 984 965 985 case 'textarea': 966 986 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 ) ) ); 969 989 } else { 970 990 $option_value = ''; 971 991 } 972 973 992 break; 974 993 … … 983 1002 case 'hidden': 984 1003 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'] ); 987 1008 } else { 988 1009 $option_value = ''; 989 1010 } 990 1011 991 if ( isset( $ value['sanitize'] ) && 'slug' === $value['sanitize'] ) {1012 if ( isset( $field['sanitize'] ) && 'slug' === $field['sanitize'] ) { 992 1013 $option_value = sanitize_title( $option_value ); 993 1014 } … … 996 1017 997 1018 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 ) ); 1000 1021 } else { 1001 1022 $option_value = ''; … … 1003 1024 break; 1004 1025 1005 // Custom handling.1006 1026 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]' ); 1010 1036 1011 1037 } 1012 1038 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 1013 1053 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 ); 1018 1058 1019 1059 // Option name is first key. … … 1022 1062 // Get old option value. 1023 1063 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 } 1025 1066 1026 1067 if ( ! is_array( $update_options[ $option_name ] ) ) { 1027 $update_options[ $option_name ] = array(); } 1068 $update_options[ $option_name ] = array(); 1069 } 1028 1070 1029 1071 // Set keys and value. … … 1032 1074 $update_options[ $option_name ][ $key ] = $option_value; 1033 1075 1034 // Single value.1035 1076 } else { 1036 $update_options[ $ value['id'] ] = $option_value;1077 $update_options[ $field['id'] ] = $option_value; 1037 1078 } 1038 1079 } 1039 1080 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 1043 1095 // Now save the options. 1044 1096 foreach ( $update_options as $name => $value ) { 1045 1046 1097 update_option( $name, $value ); 1047 1048 1098 } 1049 1099 … … 1051 1101 1052 1102 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 1053 1123 } 1054 1124 -
lifterlms/tags/7.0.0-alpha.2/includes/admin/llms.functions.admin.php
r2690931 r2747283 136 136 137 137 /** 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 */ 154 function 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 /** 138 181 * Get an array of available course/membership sales page options 139 182 * -
lifterlms/tags/7.0.0-alpha.2/includes/theme-support/class-llms-twenty-twenty-two.php
r2679500 r2747283 6 6 * 7 7 * @since 5.8.0 8 * @version 5.9.08 * @version [version] 9 9 */ 10 10 … … 73 73 * @since 5.8.0 74 74 * @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. 75 76 * 76 77 * @param string|null $context Inline CSS context. Accepts "editor" to define styles loaded within the block editor or `null` for frontend styles. … … 93 94 94 95 // 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; }'; 96 97 97 98 // Payment gateway stylized radio buttons. -
lifterlms/tags/7.0.0-alpha.2/languages/lifterlms.pot
r2743094 r2747283 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: LifterLMS 7.0.0-alpha. 1\n"5 "Project-Id-Version: LifterLMS 7.0.0-alpha.2\n" 6 6 "Report-Msgid-Bugs-To: https://lifterlms.com/my-account/my-tickets\n" 7 7 "Last-Translator: Team LifterLMS <[email protected]>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "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" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: llms/dev 0.0.5\n" … … 179 179 msgstr "" 180 180 181 #: includes/abstracts/abstract.llms.payment.gateway.php: 787181 #: includes/abstracts/abstract.llms.payment.gateway.php:801 182 182 msgid "The selected payment gateway \"%s\" does not support payment method switching." 183 183 msgstr "" … … 1093 1093 msgstr "" 1094 1094 1095 #: includes/admin/class.llms.admin.settings.php:6 451095 #: includes/admin/class.llms.admin.settings.php:673 1096 1096 #: includes/admin/views/import.php:17 1097 1097 msgid "Upload" 1098 1098 msgstr "" 1099 1099 1100 #: includes/admin/class.llms.admin.settings.php: 6851100 #: includes/admin/class.llms.admin.settings.php:713 1101 1101 msgid "Select a page…" 1102 1102 msgstr "" 1103 1103 1104 #: includes/admin/class.llms.admin.settings.php:7 121104 #: includes/admin/class.llms.admin.settings.php:740 1105 1105 #: includes/class.llms.l10n.js.php:147 1106 1106 #: includes/class.llms.l10n.js.php:343 … … 1230 1230 msgstr "" 1231 1231 1232 #: includes/admin/llms.functions.admin.php:148 1232 #: includes/admin/llms.functions.admin.php:160 1233 msgid "More information" 1234 msgstr "" 1235 1236 #: includes/admin/llms.functions.admin.php:191 1233 1237 msgid "Display default course content" 1234 1238 msgstr "" 1235 1239 1236 #: includes/admin/llms.functions.admin.php:1 491240 #: includes/admin/llms.functions.admin.php:192 1237 1241 msgid "Show custom content" 1238 1242 msgstr "" 1239 1243 1240 #: includes/admin/llms.functions.admin.php:1 501244 #: includes/admin/llms.functions.admin.php:193 1241 1245 msgid "Redirect to WordPress Page" 1242 1246 msgstr "" 1243 1247 1244 #: includes/admin/llms.functions.admin.php:1 511248 #: includes/admin/llms.functions.admin.php:194 1245 1249 msgid "Redirect to custom URL" 1246 1250 msgstr "" 1247 1251 1248 #: includes/admin/llms.functions.admin.php: 1671252 #: includes/admin/llms.functions.admin.php:210 1249 1253 msgid "Course/Membership" 1250 1254 msgstr "" 1251 1255 1252 #: includes/admin/llms.functions.admin.php: 1721256 #: includes/admin/llms.functions.admin.php:215 1253 1257 msgid "(Default) Return to %s" 1254 1258 msgstr "" 1255 1259 1256 #: includes/admin/llms.functions.admin.php: 1731260 #: includes/admin/llms.functions.admin.php:216 1257 1261 msgid "Redirect to a WordPress Page" 1258 1262 msgstr "" 1259 1263 1260 #: includes/admin/llms.functions.admin.php: 1741264 #: includes/admin/llms.functions.admin.php:217 1261 1265 msgid "Redirect to a custom URL" 1262 1266 msgstr "" 1263 1267 1264 #: includes/admin/llms.functions.admin.php:2 071268 #: includes/admin/llms.functions.admin.php:250 1265 1269 msgid "Website Title" 1266 1270 msgstr "" 1267 1271 1268 #: includes/admin/llms.functions.admin.php:2 081272 #: includes/admin/llms.functions.admin.php:251 1269 1273 msgid "Website URL" 1270 1274 msgstr "" 1271 1275 1272 #: includes/admin/llms.functions.admin.php:2 091276 #: includes/admin/llms.functions.admin.php:252 1273 1277 msgid "Student Email Address" 1274 1278 msgstr "" 1275 1279 1276 #: includes/admin/llms.functions.admin.php:2 101280 #: includes/admin/llms.functions.admin.php:253 1277 1281 #: includes/functions/llms.functions.certificate.php:205 1278 1282 msgid "Student Username" 1279 1283 msgstr "" 1280 1284 1281 #: includes/admin/llms.functions.admin.php:2 111285 #: includes/admin/llms.functions.admin.php:254 1282 1286 #: includes/functions/llms.functions.certificate.php:201 1283 1287 msgid "Student First Name" 1284 1288 msgstr "" 1285 1289 1286 #: includes/admin/llms.functions.admin.php:2 121290 #: includes/admin/llms.functions.admin.php:255 1287 1291 #: includes/functions/llms.functions.certificate.php:202 1288 1292 msgid "Student Last Name" 1289 1293 msgstr "" 1290 1294 1291 #: includes/admin/llms.functions.admin.php:2 131295 #: includes/admin/llms.functions.admin.php:256 1292 1296 #: includes/functions/llms.functions.certificate.php:199 1293 1297 msgid "Current Date" -
lifterlms/tags/7.0.0-alpha.2/lifterlms.php
r2743094 r2747283 11 11 * Plugin URI: https://lifterlms.com/ 12 12 * 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. 113 * Version: 7.0.0-alpha.2 14 14 * Author: LifterLMS 15 15 * Author URI: https://lifterlms.com/ -
lifterlms/tags/7.0.0-alpha.2/vendor/composer/installed.php
r2743094 r2747283 6 6 'install_path' => __DIR__ . '/../../', 7 7 'aliases' => array(), 8 'reference' => ' 9d4a7e5b1f86f640b0674b2068bdbf029713c021',8 'reference' => 'c952eed1f14828f4de13eaa2740dd5a2f675cc19', 9 9 'name' => 'gocodebox/lifterlms', 10 10 'dev' => false, … … 35 35 'install_path' => __DIR__ . '/../../', 36 36 'aliases' => array(), 37 'reference' => ' 9d4a7e5b1f86f640b0674b2068bdbf029713c021',37 'reference' => 'c952eed1f14828f4de13eaa2740dd5a2f675cc19', 38 38 'dev_requirement' => false, 39 39 ), -
lifterlms/trunk/class-lifterlms.php
r2743094 r2747283 35 35 * @var string 36 36 */ 37 public $version = '7.0.0-alpha. 1';37 public $version = '7.0.0-alpha.2'; 38 38 39 39 /** -
lifterlms/trunk/includes/abstracts/abstract.llms.payment.gateway.php
r2743094 r2747283 620 620 * 621 621 * @since 3.0.0 622 * @since [version] Added the force filter, `llms_gateway_{$this->id}_logging_enabled`. 622 623 * 623 624 * @return string 624 625 */ 625 626 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 } 626 640 return $this->get_option( 'logging_enabled' ); 627 641 } … … 691 705 692 706 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; 694 708 } 695 709 -
lifterlms/trunk/includes/admin/class.llms.admin.settings.php
r2690931 r2747283 6 6 * 7 7 * @since 1.0.0 8 * @version 5.9.08 * @version [version] 9 9 */ 10 10 … … 218 218 * @since 3.37.9 Add option for fields to show an asterisk for required fields. 219 219 * @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 * } 222 259 * @return void 223 260 */ … … 227 264 $field = self::set_field_defaults( $field ); 228 265 229 $custom_attributes_field = array_key_exists( 'custom_attributes', $field ) ? $field['custom_attributes'] : array();230 266 // 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() ); 232 268 233 269 // Setup field description and tooltip. 234 // This will return an associative array of with the keys "description" and "tooltip".235 270 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. 245 277 $disabled_class = ( isset( $field['disabled'] ) && true === $field['disabled'] ) ? 'llms-disabled-field' : ''; 246 278 … … 251 283 case 'title': 252 284 if ( ! empty( $field['title'] ) ) { 253 254 285 echo '<p class="llms-label">' . esc_html( $field['title'] ) . '</p>'; 255 256 286 } 257 287 if ( ! empty( $field['desc'] ) ) { 258 259 288 echo '<p class="llms-description">' . wpautop( wptexturize( wp_kses_post( $field['desc'] ) ) ) . '</p>'; 260 261 289 } 262 290 … … 414 442 <?php echo implode( ' ', $custom_attributes ); ?> 415 443 <?php echo $required ? 'required="required"' : ''; ?> 416 /> <?php echo $description; ?> <?php echo isset( $field['after_html'] ) ? $field['after_html'] : ''; ?>444 /> <?php echo $description; ?> 417 445 </td> 418 446 </tr> … … 656 684 class="<?php echo esc_attr( $field['class'] ); ?>" 657 685 <?php echo implode( ' ', $custom_attributes ); ?> 658 /> <?php echo $description; ?> <?php echo isset( $field['after_html'] ) ? $field['after_html'] : ''; ?>686 /> <?php echo $description; ?> 659 687 </td> 660 688 </tr> … … 737 765 } 738 766 739 740 741 767 /** 742 768 * Add and set default values for a field when looping 743 769 * 744 * @param array $value associative array of field data745 * @return array associative array of field data746 *747 770 * @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 } 770 795 771 796 /** … … 903 928 * Save admin fields. 904 929 * 905 * Loops th ough the lifterlms options array and outputs each field.930 * Loops through a LifterLMS settings field options array and saves the values via `update_option()`. 906 931 * 907 932 * @since 1.0.0 … … 910 935 * @since 3.35.2 Don't strip tags on editor and textarea fields that allow HTML. 911 936 * @since 5.9.0 Stop using deprecated `FILTER_SANITIZE_STRING`. 937 * @since [version] Add handling for array fields for standard input types. 912 938 * 913 939 * @param array $settings Opens array to output … … 925 951 926 952 // 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'] ) ) { 937 956 continue; 938 957 } 939 958 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 940 967 // Get the option name. 941 968 $option_value = null; 942 969 970 // Determines if the option value is an array. 971 $is_array_option = false !== strpos( $field['id'], '[' ); 972 943 973 switch ( $type ) { 944 974 945 // Standard types.946 975 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'] ] ) ) { 958 979 $option_value = 'yes'; 959 980 } else { 960 981 $option_value = 'no'; 961 982 } 962 963 983 break; 964 984 965 985 case 'textarea': 966 986 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 ) ) ); 969 989 } else { 970 990 $option_value = ''; 971 991 } 972 973 992 break; 974 993 … … 983 1002 case 'hidden': 984 1003 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'] ); 987 1008 } else { 988 1009 $option_value = ''; 989 1010 } 990 1011 991 if ( isset( $ value['sanitize'] ) && 'slug' === $value['sanitize'] ) {1012 if ( isset( $field['sanitize'] ) && 'slug' === $field['sanitize'] ) { 992 1013 $option_value = sanitize_title( $option_value ); 993 1014 } … … 996 1017 997 1018 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 ) ); 1000 1021 } else { 1001 1022 $option_value = ''; … … 1003 1024 break; 1004 1025 1005 // Custom handling.1006 1026 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]' ); 1010 1036 1011 1037 } 1012 1038 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 1013 1053 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 ); 1018 1058 1019 1059 // Option name is first key. … … 1022 1062 // Get old option value. 1023 1063 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 } 1025 1066 1026 1067 if ( ! is_array( $update_options[ $option_name ] ) ) { 1027 $update_options[ $option_name ] = array(); } 1068 $update_options[ $option_name ] = array(); 1069 } 1028 1070 1029 1071 // Set keys and value. … … 1032 1074 $update_options[ $option_name ][ $key ] = $option_value; 1033 1075 1034 // Single value.1035 1076 } else { 1036 $update_options[ $ value['id'] ] = $option_value;1077 $update_options[ $field['id'] ] = $option_value; 1037 1078 } 1038 1079 } 1039 1080 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 1043 1095 // Now save the options. 1044 1096 foreach ( $update_options as $name => $value ) { 1045 1046 1097 update_option( $name, $value ); 1047 1048 1098 } 1049 1099 … … 1051 1101 1052 1102 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 1053 1123 } 1054 1124 -
lifterlms/trunk/includes/admin/llms.functions.admin.php
r2690931 r2747283 136 136 137 137 /** 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 */ 154 function 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 /** 138 181 * Get an array of available course/membership sales page options 139 182 * -
lifterlms/trunk/includes/theme-support/class-llms-twenty-twenty-two.php
r2679500 r2747283 6 6 * 7 7 * @since 5.8.0 8 * @version 5.9.08 * @version [version] 9 9 */ 10 10 … … 73 73 * @since 5.8.0 74 74 * @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. 75 76 * 76 77 * @param string|null $context Inline CSS context. Accepts "editor" to define styles loaded within the block editor or `null` for frontend styles. … … 93 94 94 95 // 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; }'; 96 97 97 98 // Payment gateway stylized radio buttons. -
lifterlms/trunk/languages/lifterlms.pot
r2743094 r2747283 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: LifterLMS 7.0.0-alpha. 1\n"5 "Project-Id-Version: LifterLMS 7.0.0-alpha.2\n" 6 6 "Report-Msgid-Bugs-To: https://lifterlms.com/my-account/my-tickets\n" 7 7 "Last-Translator: Team LifterLMS <[email protected]>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "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" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: llms/dev 0.0.5\n" … … 179 179 msgstr "" 180 180 181 #: includes/abstracts/abstract.llms.payment.gateway.php: 787181 #: includes/abstracts/abstract.llms.payment.gateway.php:801 182 182 msgid "The selected payment gateway \"%s\" does not support payment method switching." 183 183 msgstr "" … … 1093 1093 msgstr "" 1094 1094 1095 #: includes/admin/class.llms.admin.settings.php:6 451095 #: includes/admin/class.llms.admin.settings.php:673 1096 1096 #: includes/admin/views/import.php:17 1097 1097 msgid "Upload" 1098 1098 msgstr "" 1099 1099 1100 #: includes/admin/class.llms.admin.settings.php: 6851100 #: includes/admin/class.llms.admin.settings.php:713 1101 1101 msgid "Select a page…" 1102 1102 msgstr "" 1103 1103 1104 #: includes/admin/class.llms.admin.settings.php:7 121104 #: includes/admin/class.llms.admin.settings.php:740 1105 1105 #: includes/class.llms.l10n.js.php:147 1106 1106 #: includes/class.llms.l10n.js.php:343 … … 1230 1230 msgstr "" 1231 1231 1232 #: includes/admin/llms.functions.admin.php:148 1232 #: includes/admin/llms.functions.admin.php:160 1233 msgid "More information" 1234 msgstr "" 1235 1236 #: includes/admin/llms.functions.admin.php:191 1233 1237 msgid "Display default course content" 1234 1238 msgstr "" 1235 1239 1236 #: includes/admin/llms.functions.admin.php:1 491240 #: includes/admin/llms.functions.admin.php:192 1237 1241 msgid "Show custom content" 1238 1242 msgstr "" 1239 1243 1240 #: includes/admin/llms.functions.admin.php:1 501244 #: includes/admin/llms.functions.admin.php:193 1241 1245 msgid "Redirect to WordPress Page" 1242 1246 msgstr "" 1243 1247 1244 #: includes/admin/llms.functions.admin.php:1 511248 #: includes/admin/llms.functions.admin.php:194 1245 1249 msgid "Redirect to custom URL" 1246 1250 msgstr "" 1247 1251 1248 #: includes/admin/llms.functions.admin.php: 1671252 #: includes/admin/llms.functions.admin.php:210 1249 1253 msgid "Course/Membership" 1250 1254 msgstr "" 1251 1255 1252 #: includes/admin/llms.functions.admin.php: 1721256 #: includes/admin/llms.functions.admin.php:215 1253 1257 msgid "(Default) Return to %s" 1254 1258 msgstr "" 1255 1259 1256 #: includes/admin/llms.functions.admin.php: 1731260 #: includes/admin/llms.functions.admin.php:216 1257 1261 msgid "Redirect to a WordPress Page" 1258 1262 msgstr "" 1259 1263 1260 #: includes/admin/llms.functions.admin.php: 1741264 #: includes/admin/llms.functions.admin.php:217 1261 1265 msgid "Redirect to a custom URL" 1262 1266 msgstr "" 1263 1267 1264 #: includes/admin/llms.functions.admin.php:2 071268 #: includes/admin/llms.functions.admin.php:250 1265 1269 msgid "Website Title" 1266 1270 msgstr "" 1267 1271 1268 #: includes/admin/llms.functions.admin.php:2 081272 #: includes/admin/llms.functions.admin.php:251 1269 1273 msgid "Website URL" 1270 1274 msgstr "" 1271 1275 1272 #: includes/admin/llms.functions.admin.php:2 091276 #: includes/admin/llms.functions.admin.php:252 1273 1277 msgid "Student Email Address" 1274 1278 msgstr "" 1275 1279 1276 #: includes/admin/llms.functions.admin.php:2 101280 #: includes/admin/llms.functions.admin.php:253 1277 1281 #: includes/functions/llms.functions.certificate.php:205 1278 1282 msgid "Student Username" 1279 1283 msgstr "" 1280 1284 1281 #: includes/admin/llms.functions.admin.php:2 111285 #: includes/admin/llms.functions.admin.php:254 1282 1286 #: includes/functions/llms.functions.certificate.php:201 1283 1287 msgid "Student First Name" 1284 1288 msgstr "" 1285 1289 1286 #: includes/admin/llms.functions.admin.php:2 121290 #: includes/admin/llms.functions.admin.php:255 1287 1291 #: includes/functions/llms.functions.certificate.php:202 1288 1292 msgid "Student Last Name" 1289 1293 msgstr "" 1290 1294 1291 #: includes/admin/llms.functions.admin.php:2 131295 #: includes/admin/llms.functions.admin.php:256 1292 1296 #: includes/functions/llms.functions.certificate.php:199 1293 1297 msgid "Current Date" -
lifterlms/trunk/lifterlms.php
r2743094 r2747283 11 11 * Plugin URI: https://lifterlms.com/ 12 12 * 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. 113 * Version: 7.0.0-alpha.2 14 14 * Author: LifterLMS 15 15 * Author URI: https://lifterlms.com/ -
lifterlms/trunk/vendor/composer/installed.php
r2743094 r2747283 6 6 'install_path' => __DIR__ . '/../../', 7 7 'aliases' => array(), 8 'reference' => ' 9d4a7e5b1f86f640b0674b2068bdbf029713c021',8 'reference' => 'c952eed1f14828f4de13eaa2740dd5a2f675cc19', 9 9 'name' => 'gocodebox/lifterlms', 10 10 'dev' => false, … … 35 35 'install_path' => __DIR__ . '/../../', 36 36 'aliases' => array(), 37 'reference' => ' 9d4a7e5b1f86f640b0674b2068bdbf029713c021',37 'reference' => 'c952eed1f14828f4de13eaa2740dd5a2f675cc19', 38 38 'dev_requirement' => false, 39 39 ),
Note: See TracChangeset
for help on using the changeset viewer.