PluginProbe
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions / 260917
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions v260917
260917 260913 260909 260829 260814 260805 110710 110731 110812 110815 110912 110913 110915 110926 110927 111002 111003 111011 111017 111029 111105 111206 111216 111220 120213 All 189 releases
← All changes | src/includes/syscon.inc.php +40 -6 260814260917 View file →
@@ -131,8 +131,17 @@
131 131 $default_options['gateway_debug_logs'] = '0';
132 132 $default_options['gateway_debug_logs_extensive'] = '0';
133 133
134 134 $default_options['lazy_load_css_js'] = '0';
135 + $default_options['static_css'] = '0'; //260903.0612 Generated static CSS delivery remains opt-in while frontend asset generation is beta.
136 + $default_options['static_css_minify'] = '0'; //260902.2107 Static CSS minification is independently opt-in while generated asset delivery is beta.
137 + $default_options['static_js'] = '0'; //260903.0437 Static frontend JavaScript delivery remains opt-in while generated assets are beta.
138 + $default_options['static_js_text'] = 'static'; //260906.2049 Keep JavaScript text in cacheable static files by default; multilingual sites can load it with each WordPress page instead.
139 + $default_options['static_js_minify'] = '0'; //260903.0437 Static JavaScript minification is independently opt-in and uses readable source files.
140 + $default_options['static_assets_combine'] = '0'; //260903.1918 Keep Framework/Pro generated files separate by default; combining is an explicit request-reduction optimization.
141 + $default_options['asset_health_wait_seconds'] = '3'; //260912.0522 Wait briefly after page load before treating an asset that cannot be confirmed active as Late.
142 + //260904.1923 Keep the repaired s2Member Dynamic Loader as the default; WordPress routing is an explicit compatibility option.
143 + $default_options['dynamic_asset_loader'] = 's2o'; //260910.0724 In current terminology, that established default is the s2Member-Only Dynamic Loader served by s2member-o.php.
135 144 $default_options['no_cache_headers_mode'] = 'always'; //260308 No-cache headers mode: `always`, `selective`, `evaluative`.
136 145 $default_options['no_cache_headers_debug'] = '0'; //260308 Adds Server-Timing no-cache debug header (support use only).
137 146 $default_options['sc_conds_allow_arbitrary_php'] = '0';
138 147 $default_options['sc_conds_whitelist'] = '';
@@ -373,14 +382,18 @@
373 382 $default_options['level'.$n.'_pages'] = '';
374 383
375 384 $default_options['specific_ids'] = '';
376 385
377 - $default_options['triggers_immediate_eot'] = 'reversals';
378 - $default_options['membership_eot_behavior'] = 'demote';
379 - $default_options['eot_time_ext_behavior'] = 'extend';
380 - $default_options['auto_eot_system_enabled'] = '1';
381 - $default_options['eots_remove_ccaps'] = '1';
382 - $default_options['eot_grace_time'] = '86400';
386 + $default_options['triggers_immediate_eot'] = 'reversals';
387 + $default_options['membership_eot_behavior'] = 'demote';
388 + $default_options['eot_demotion_to_role'] = 'subscriber';
389 + $default_options['eot_demotion_from'] = 'all'; //260916.2137 Missing options must preserve legacy behavior until a fresh activation explicitly stores the new Level-only default.
390 + $default_options['eot_time_ext_behavior'] = 'extend';
391 + $default_options['auto_eot_system_enabled'] = '1';
392 + $default_options['auto_eot_system_runtime_mode'] = 'auto';
393 + $default_options['auto_eot_system_runtime_custom'] = '30';
394 + $default_options['eots_remove_ccaps'] = '1';
395 + $default_options['eot_grace_time'] = '86400';
383 396
384 397 $default_options['wp_footer_code'] = '';
385 398
386 399 $default_options = apply_filters('ws_plugin__s2member_default_options', $default_options);
@@ -431,8 +444,16 @@
431 444
432 445 else if($key === 'lazy_load_css_js' && (!is_string($value) || !is_numeric($value)))
433 446 $value = $default_options[$key];
434 447
448 + else if(preg_match('/^static_(?:css|js)(?:_minify)?$/', $key) && (!is_string($value) || !is_numeric($value))) //260903.0437
449 + $value = $default_options[$key];
450 +
451 + //260912.0522 Keep the operator-facing wait bounded so an accidental value cannot effectively disable health checking.
452 + //260911.0010 Here, bounded means the explicit 1–60-second range exposed by the setting.
453 + else if($key === 'asset_health_wait_seconds')
454 + $value = (!is_string($value) || !is_numeric($value) || (int)$value < 1 || (int)$value > 60) ? $default_options[$key] : (string)(int)$value;
455 +
435 456 else if($key === 'no_cache_headers_mode' && (!is_string($value) || !in_array($value, array('always', 'selective', 'evaluative'), TRUE)))
436 457 $value = $default_options[$key];
437 458
438 459 else if($key === 'no_cache_headers_debug' && (!is_string($value) || !is_numeric($value)))
@@ -674,9 +695,22 @@
674 695
675 696 else if($key === 'membership_eot_behavior' && (!is_string($value) || !preg_match('/^(?:demote|delete)$/', $value)))
676 697 $value = $default_options[$key];
677 698
699 + //260916.2306 Keep bootstrap validation side-effect free; role existence is checked later when the EOT demotion role is resolved, after s2Member is fully loaded.
700 + else if($key === 'eot_demotion_to_role' && (!is_string($value) || !$value || in_array($value, array('administrator', 'editor', 'author', 'contributor', 's2member_pending_deletion'), TRUE)))
701 + $value = $default_options[$key];
702 +
703 + else if($key === 'eot_demotion_from' && (!is_string($value) || !preg_match('/^(?:s2member_level|all)$/', $value)))
704 + $value = $default_options[$key];
705 +
678 706 else if($key === 'eot_time_ext_behavior' && (!is_string($value) || !preg_match('/^(?:extend|reset)$/', $value)))
707 + $value = $default_options[$key];
708 +
709 + else if($key === 'auto_eot_system_runtime_mode' && (!is_string($value) || !preg_match('/^(?:auto|custom)$/', $value)))
710 + $value = $default_options[$key];
711 +
712 + else if($key === 'auto_eot_system_runtime_custom' && (!is_string($value) || !is_numeric($value) || (float)$value < 1 || (float)$value > 3600))
679 713 $value = $default_options[$key];
680 714
681 715 else if(preg_match('/^(?:auto_eot_system_enabled|eot_grace_time|eots_remove_ccaps)$/', $key) && (!is_string($value) || !is_numeric($value)))
682 716 $value = $default_options[$key];