| @@ -184,10 +184,11 @@ | ||
| 184 | 184 | |
| 185 | 185 | $default_options['custom_reg_auto_opt_outs'] = array(); |
| 186 | 186 | $default_options['custom_reg_auto_opt_out_transitions'] = '0'; |
| 187 | 187 | |
| 188 | - $default_options['custom_reg_fields_4bp'] = array(); | |
| 189 | - $default_options['custom_reg_force_personal_emails'] = ''; | |
| 188 | + $default_options['custom_reg_fields_4bp'] = array(); | |
| 189 | + $default_options['custom_reg_force_personal_emails'] = ''; | |
| 190 | + $default_options['custom_reg_require_valid_email_domain'] = '0'; //261005.0548 Opt-in DNS mail-domain validation during account creation and s2Member Profile email changes. | |
| 190 | 191 | |
| 191 | 192 | $default_options['allow_subscribers_in'] = '0'; |
| 192 | 193 | $default_options['force_admin_lockouts'] = '0'; |
| 193 | 194 | $default_options['filter_wp_query'] = array('all'); |
| @@ -384,8 +385,10 @@ | ||
| 384 | 385 | $default_options['specific_ids'] = ''; |
| 385 | 386 | |
| 386 | 387 | $default_options['triggers_immediate_eot'] = 'reversals'; |
| 387 | 388 | $default_options['membership_eot_behavior'] = 'demote'; |
| 389 | + $default_options['eot_demotion_to_role'] = 'subscriber'; | |
| 390 | + $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. | |
| 388 | 391 | $default_options['eot_time_ext_behavior'] = 'extend'; |
| 389 | 392 | $default_options['auto_eot_system_enabled'] = '1'; |
| 390 | 393 | $default_options['auto_eot_system_runtime_mode'] = 'auto'; |
| 391 | 394 | $default_options['auto_eot_system_runtime_custom'] = '30'; |
| @@ -507,9 +510,9 @@ | ||
| 507 | 510 | |
| 508 | 511 | else if($key === 'custom_reg_fields' && (!is_string($value) || !strlen($value))) |
| 509 | 512 | $value = $default_options[$key]; |
| 510 | 513 | |
| 511 | - else if(preg_match('/^custom_reg_(?:names|password|password_min_length|opt_in|auto_opt_out_transitions)$/', $key) && (!is_string($value) || !is_numeric($value))) | |
| 514 | + else if(preg_match('/^custom_reg_(?:names|password|password_min_length|opt_in|auto_opt_out_transitions|require_valid_email_domain)$/', $key) && (!is_string($value) || !is_numeric($value))) | |
| 512 | 515 | $value = $default_options[$key]; |
| 513 | 516 | |
| 514 | 517 | else if($key === 'custom_reg_password_min_strength' && (!is_string($value) || !strlen($value))) |
| 515 | 518 | $value = $default_options[$key]; |
| @@ -691,8 +694,15 @@ | ||
| 691 | 694 | else if($key === 'triggers_immediate_eot' && (!is_string($value) || !preg_match('/^(?:none|refunds|reversals|refunds,reversals|refunds,partial_refunds,reversals)$/', $value))) |
| 692 | 695 | $value = $default_options[$key]; |
| 693 | 696 | |
| 694 | 697 | else if($key === 'membership_eot_behavior' && (!is_string($value) || !preg_match('/^(?:demote|delete)$/', $value))) |
| 698 | + $value = $default_options[$key]; | |
| 699 | + | |
| 700 | + //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. | |
| 701 | + else if($key === 'eot_demotion_to_role' && (!is_string($value) || !$value || in_array($value, array('administrator', 'editor', 'author', 'contributor', 's2member_pending_deletion'), TRUE))) | |
| 702 | + $value = $default_options[$key]; | |
| 703 | + | |
| 704 | + else if($key === 'eot_demotion_from' && (!is_string($value) || !preg_match('/^(?:s2member_level|all)$/', $value))) | |
| 695 | 705 | $value = $default_options[$key]; |
| 696 | 706 | |
| 697 | 707 | else if($key === 'eot_time_ext_behavior' && (!is_string($value) || !preg_match('/^(?:extend|reset)$/', $value))) |
| 698 | 708 | $value = $default_options[$key]; |