public function send_admin_mail($user_id, $plaintext_pass, $verification_code = '') { $user = get_userdata($user_id); $subject = Register_Plus_Redux::default_options('admin_message_subject'); $message = Register_Plus_Redux::default_options('admin_message_body'); add_filter('wp_mail_content_type', array($this, 'rpr_filter_mail_content_type_text'), 10, 1); if ('1' === $this->rpr_get_option('custom_admin_message')) { $subject = esc_html($this->rpr_get_option('admin_message_subject')); $message = $this->rpr_get_option('admin_message_body'); if ('1' === $this->rpr_get_option('send_admin_message_in_html') && '1' === $this->rpr_get_option('admin_message_newline_as_br')) { $message = nl2br((string) $message); } $from_name = $this->rpr_get_option('admin_message_from_name'); if (!empty($from_name)) { add_filter('wp_mail_from_name', array($this, 'rpr_filter_admin_mail_from_name'), 10, 1); } if (FALSE !== is_email($this->rpr_get_option('admin_message_from_email'))) { add_filter('wp_mail_from', array($this, 'rpr_filter_admin_mail_from'), 10, 1); } if ('1' === $this->rpr_get_option('send_admin_message_in_html')) { add_filter('wp_mail_content_type', array($this, 'rpr_filter_mail_content_type_html'), 10, 1); } } $subject = $this->replace_keywords($subject, $user); $message = $this->replace_keywords($message, $user, $plaintext_pass, $verification_code); wp_mail(get_option('admin_email'), $subject, $message); }
public function rpr_options_submenu_footer() { ?> <script type="text/javascript"> function addInvitationCode() { jQuery("#invitation_code_bank") .append(jQuery("<div>") .attr("class", "invitation_code") .append(jQuery("<input>") .attr("type", "text") .attr("name", "invitation_code_bank[]") .attr("value", "") ) .append(" ") .append(jQuery("<img>") .attr("src", "<?php echo plugins_url('images\\minus-circle.png', __FILE__); ?> ") .attr("alt", "<?php esc_attr_e('Remove Code', 'register-plus-redux'); ?> ") .attr("title", "<?php esc_attr_e('Remove Code', 'register-plus-redux'); ?> ") .attr("class", "removeInvitationCode") .attr("style", "cursor: pointer;") ) ); } function addField() { jQuery("#meta_fields").find("tbody.fields") .append(jQuery("<tr>") .append(jQuery("<td>") .append(jQuery("<img>") .attr("src", "<?php echo plugins_url('images\\asterisk-yellow.png', __FILE__); ?> ") .attr("alt", "<?php esc_attr_e('New', 'register-plus-redux'); ?> ") .attr("title", "<?php esc_attr_e('New Field', 'register-plus-redux'); ?> ") ) .append(" ") .append(jQuery("<input>") .attr("type", "text") .attr("name", "newMetaFields[]") ) .append(" ") .append(jQuery("<img>") .attr("src", "<?php echo plugins_url('images\\minus-circle.png', __FILE__); ?> ") .attr("alt", "<?php esc_attr_e('Remove', 'register-plus-redux'); ?> ") .attr("title", "<?php esc_attr_e('Remove Field', 'register-plus-redux'); ?> ") .attr("class", "removeNewButton") .attr("style", "cursor: pointer;") ) .append(" ") .append(jQuery("<img>") .attr("src", "<?php echo plugins_url('images\\question.png', __FILE__); ?> ") .attr("alt", "<?php esc_attr_e('Help', 'register-plus-redux'); ?> ") .attr("title", "<?php esc_attr_e('You must save after adding new fields before all options become available.', 'register-plus-redux'); ?> ") .attr("class", "helpButton") .attr("style", "cursor: pointer;") ) ) ); } function updateUserMessagesSummary() { jQuery("#user_message_summary").empty(); if (!jQuery("#verify_user_email").prop("checked")) { jQuery("#custom_verification_message").prop("disabled", true); jQuery("#custom_verification_message").prop("checked", false); jQuery("#custom_verification_message_settings").hide(); } else { jQuery("#custom_verification_message").prop("disabled", false); jQuery("#user_message_summary").append("<?php _e('The following message will be sent when a user is registered:', 'register-plus-redux'); ?> "); var verification_message_from_name = "<?php echo Register_Plus_Redux::default_options('verification_message_from_name'); ?> "; var verification_message_from_email = "<?php echo Register_Plus_Redux::default_options('verification_message_from_email'); ?> "; var verification_message_subject = "<?php echo Register_Plus_Redux::default_options('verification_message_subject'); ?> "; var verification_message_content_type = "text/plain"; var verification_message_body = "<?php echo str_replace("\n", '\\n', Register_Plus_Redux::default_options('verification_message_body')); ?> "; if (jQuery("#custom_verification_message").prop("checked")) { verification_message_from_name = jQuery("#verification_message_from_name").val(); verification_message_from_email = jQuery("#verification_message_from_email").val(); verification_message_subject = jQuery("#verification_message_subject").val(); if (jQuery("#send_verification_message_in_html").prop("checked")) verification_message_content_type = "text/html"; verification_message_body = jQuery("#verification_message_body").val(); } var verificationMessage = jQuery("<p>").attr("style", "font-size: 11px; display: block; width: 50%; background-color: #efefef; padding: 8px 10px; border: solid 1px #dfdfdf; margin: 1px; overflow:auto; white-space:pre;"); verificationMessage.append(jQuery("<div>").text("<?php _e('To: ', 'register-plus-redux'); ?> " + "%user_email%")); verificationMessage.append(jQuery("<div>").text("<?php _e('From: ', 'register-plus-redux'); ?> " + verification_message_from_name + " (" + verification_message_from_email + ")")); verificationMessage.append(jQuery("<div>").text("<?php _e('Subject: ', 'register-plus-redux'); ?> " + verification_message_subject)); verificationMessage.append(jQuery("<div>").text("<?php _e('Content-Type: ', 'register-plus-redux'); ?> " + verification_message_content_type)); verificationMessage.append(jQuery("<div>").text(verification_message_body)); jQuery("#user_message_summary").append(verificationMessage); } if (jQuery("#disable_user_message_registered").prop("checked") && jQuery("#disable_user_message_created").prop("checked")) { jQuery("#custom_user_message").prop("disabled", true); jQuery("#custom_user_message").prop("checked", false); jQuery("#custom_user_message_settings").hide(); jQuery("#user_message_summary").append("<?php _e('No message will be sent to user whether they are registered or created by an administrator.', 'register-plus-redux'); ?> "); } else { jQuery("#custom_user_message").prop("disabled", false); var when = "<?php _e('The following message will be sent when a user is ', 'register-plus-redux'); ?> "; if (!jQuery("#disable_user_message_registered").prop("checked")) when = when + "<?php _e('registered', 'register-plus-redux'); ?> "; if (!jQuery("#disable_user_message_registered").prop("checked") && !jQuery("#disable_user_message_created").prop("checked")) when = when + "<?php _e(' or ', 'register-plus-redux'); ?> "; if (!jQuery("#disable_user_message_created").prop("checked")) when = when + "<?php _e('created', 'register-plus-redux'); ?> "; if (jQuery("#verify_user_email").prop("checked") || jQuery("#verify_user_admin").prop("checked")) when = when + "<?php _e(' after ', 'register-plus-redux'); ?> "; if (jQuery("#verify_user_email").prop("checked")) when = when + "<?php _e('the user has verified their email address', 'register-plus-redux'); ?> "; if (jQuery("#verify_user_email").prop("checked") && jQuery("#verify_user_admin").prop("checked")) when = when + "<?php _e(' and/or ', 'register-plus-redux'); ?> "; if (jQuery("#verify_user_admin").prop("checked")) when = when + "<?php _e('an administrator has approved the new user', 'register-plus-redux'); ?> "; jQuery("#user_message_summary").append(when + ":"); var user_message_from_name = "<?php echo Register_Plus_Redux::default_options('user_message_from_name'); ?> "; var user_message_from_email = "<?php echo Register_Plus_Redux::default_options('user_message_from_email'); ?> "; var user_message_subject = "<?php echo Register_Plus_Redux::default_options('user_message_subject'); ?> "; var user_message_content_type = "text/plain"; var user_message_body = "<?php echo str_replace("\n", '\\n', Register_Plus_Redux::default_options('user_message_body')); ?> "; if (jQuery("#custom_user_message").prop("checked")) { user_message_from_name = jQuery("#user_message_from_name").val(); user_message_from_email = jQuery("#user_message_from_email").val(); user_message_subject = jQuery("#user_message_subject").val(); if (jQuery("#send_user_message_in_html").prop("checked")) user_message_content_type = "text/html"; user_message_body = jQuery("#user_message_body").val(); } var userMessage = jQuery("<p>").attr("style", "font-size: 11px; display: block; width: 50%; background-color: #efefef; padding: 8px 10px; border: solid 1px #dfdfdf; margin: 1px; overflow:auto; white-space:pre;"); userMessage.append(jQuery("<div>").text("<?php _e('To: ', 'register-plus-redux'); ?> " + "%user_email%")); userMessage.append(jQuery("<div>").text("<?php _e('From: ', 'register-plus-redux'); ?> " + user_message_from_name + " (" + user_message_from_email + ")")); userMessage.append(jQuery("<div>").text("<?php _e('Subject: ', 'register-plus-redux'); ?> " + user_message_subject)); userMessage.append(jQuery("<div>").text("<?php _e('Content-Type: ', 'register-plus-redux'); ?> " + user_message_content_type)); userMessage.append(jQuery("<div>").text(user_message_body)); jQuery("#user_message_summary").append(userMessage); } } function updateAdminMessageSummary() { jQuery("#admin_message_summary").empty(); if (jQuery("#disable_admin_message_registered").prop("checked") && jQuery("#disable_admin_message_created").prop("checked")) { jQuery("#custom_admin_message").prop("disabled", true); jQuery("#custom_admin_message").prop("checked", false); jQuery("#custom_admin_message_settings").hide(); jQuery("#admin_message_summary").append("<?php _e('No message will be sent to administrator whether a user is registered or created.', 'register-plus-redux'); ?> "); } else { jQuery("#custom_admin_message").prop("disabled", false); var when = "<?php _e('The following message will be sent when a user is ', 'register-plus-redux'); ?> "; if (!jQuery("#disable_admin_message_registered").prop("checked")) when = when + "<?php _e('registered', 'register-plus-redux'); ?> "; if (!jQuery("#disable_admin_message_registered").prop("checked") && !jQuery("#disable_admin_message_created").prop("checked")) when = when + "<?php _e(' or ', 'register-plus-redux'); ?> "; if (!jQuery("#disable_admin_message_created").prop("checked")) when = when + "<?php _e('created', 'register-plus-redux'); ?> "; jQuery("#admin_message_summary").append(when + ":"); var admin_message_from_name = "<?php echo Register_Plus_Redux::default_options('admin_message_from_name'); ?> "; var admin_message_from_email = "<?php echo Register_Plus_Redux::default_options('admin_message_from_email'); ?> "; var admin_message_subject = "<?php echo Register_Plus_Redux::default_options('admin_message_subject'); ?> "; var admin_message_content_type = "text/plain"; var admin_message_body = "<?php echo str_replace("\n", '\\n', Register_Plus_Redux::default_options('admin_message_body')); ?> "; if (jQuery("#custom_admin_message").prop("checked")) { admin_message_from_name = jQuery("#admin_message_from_name").val(); admin_message_from_email = jQuery("#admin_message_from_email").val(); admin_message_subject = jQuery("#admin_message_subject").val(); if (jQuery("#send_admin_message_in_html").prop("checked")) admin_message_content_type = "text/html"; admin_message_body = jQuery("#admin_message_body").val(); } var adminMessage = jQuery("<p>").attr("style", "font-size: 11px; display: block; width: 50%; background-color: #efefef; padding: 8px 10px; border: solid 1px #dfdfdf; margin: 1px; overflow:auto; white-space:pre;"); adminMessage.append(jQuery("<div>").text("<?php _e('To: ', 'register-plus-redux'); echo get_option('admin_email'); ?> ")); adminMessage.append(jQuery("<div>").text("<?php _e('From: ', 'register-plus-redux'); ?> " + admin_message_from_name + " (" + admin_message_from_email + ")")); adminMessage.append(jQuery("<div>").text("<?php _e('Subject: ', 'register-plus-redux'); ?> " + admin_message_subject)); adminMessage.append(jQuery("<div>").text("<?php _e('Content-Type: ', 'register-plus-redux'); ?> " + admin_message_content_type)); adminMessage.append(jQuery("<div>").text(admin_message_body)); jQuery("#admin_message_summary").append(adminMessage); } } jQuery(document).ready(function() { jQuery(".datepicker").datepicker({ beforeShow: function(input, inst) { if (jQuery(input).prop("readonly")) { inst.dpDiv = jQuery('<div style="display: none;"></div>'); } } }); jQuery(document).on("click", "#upload_custom_logo_button", function() { formfield = jQuery("#custom_logo_url").prop("name"); tb_show("<?php _e('Upload/Select Logo', 'register-plus-redux'); ?> ", "<?php echo admin_url('media-upload.php'); ?> ?post_id=0&type=image&context=custom-logo&TB_iframe=1"); }); window.send_to_editor = function(html) { jQuery("#custom_logo_url").val(jQuery("img", html).attr("src")); tb_remove(); } jQuery("#meta_fields tbody.fields").sortable({handle:'.sortHandle'}); //jQuery("#meta_fields tbody.fields").disableSelection(); jQuery(document).on("click", ".showHideSettings", function() { if (jQuery(this).prop("checked")) jQuery(this).parent().nextAll("div").first().show(); else jQuery(this).parent().nextAll("div").first().hide(); }); jQuery(document).on("click", "#showHiddenInvitationCodes", function() { jQuery(this).parent().children().show(); jQuery(this).remove(); }); jQuery(document).on("click", "#addInvitationCode", function() { addInvitationCode(); }); jQuery(document).on("click", ".removeInvitationCode", function() { jQuery(this).parent().remove(); }); jQuery(document).on("click", ".enableDisableText", function() { if (jQuery(this).prop("checked")) jQuery(this).parent().parent().next().find("input").prop("readOnly", false); else jQuery(this).parent().parent().next().find("input").prop("readOnly", true); }); jQuery(document).on("click", ".helpButton", function() { alert(jQuery(this).attr("title") ); }); jQuery(document).on("click", "#addField", function() { addField(); }); jQuery(document).on("click", ".removeNewButton", function() { jQuery(this).parent().parent().remove(); }); jQuery(document).on("click", ".removeButton", function() { jQuery(this).parent().parent().parent().parent().parent().parent().parent().remove(); }); jQuery(document).on("click", ".enableDisableFieldSettings", function() { if (jQuery(this).text() == "<?php _e('Show Settings', 'register-plus-redux'); ?> ") { jQuery(this).text("<?php _e('Hide Settings', 'register-plus-redux'); ?> "); jQuery(this).parent().parent().parent().find(".settings").show(); } else { jQuery(this).text("<?php _e('Show Settings', 'register-plus-redux'); ?> "); jQuery(this).parent().parent().parent().find(".settings").hide(); } }); jQuery(document).on("change", ".enableDisableOptions", function() { var name = jQuery(this).attr("name"); var index = name.substring(name.indexOf("[") + 1, name.indexOf("]")); if (jQuery(this).val() == "textbox") { jQuery("input[name='options[" + index + "]']").prop("readOnly", false); jQuery("input[name='show_datepicker[" + index + "]']").prop("disabled", false); } else if (jQuery(this).val() == "select" || jQuery(this).val() == "checkbox" || jQuery(this).val() == "radio" || jQuery(this).val() == "text") { jQuery("input[name='options[" + index + "]']").prop("readOnly", false); jQuery("input[name='show_datepicker[" + index + "]']").prop("disabled", true); } else { jQuery("input[name='options[" + index + "]']").prop("readOnly", true); jQuery("input[name='show_datepicker[" + index + "]']").prop("disabled", true); } }); jQuery(document).on("click", ".modifyNextCellCheckbox", function() { if (jQuery(this).prop("checked")) jQuery(this).parent().next().find("input[type='checkbox']").prop("disabled", false); else { jQuery(this).parent().next().find("input[type='checkbox']").prop("checked", false); jQuery(this).parent().next().find("input[type='checkbox']").prop("disabled", true); } }); jQuery(document).on("click", ".modifyNextRowCheckbox", function() { if (jQuery(this).prop("checked")) jQuery(this).closest("tr").next().find("input[type='checkbox']").prop("disabled", false); else { jQuery(this).closest("tr").next().find("input[type='checkbox']").prop("checked", false); jQuery(this).closest("tr").next().find("input[type='checkbox']").prop("disabled", true); } }); jQuery(document).on("click", ".upButton,.downButton", function() { var row = jQuery(this).parents("tr:first"); if (jQuery(this).is(".upButton")) { row.insertBefore(row.prev() ); } else { row.insertAfter(row.next() ); } }); jQuery("#verify_user_email,#verify_user_admin,#disable_user_message_registered,#disable_user_message_created,#custom_user_message,#user_message_from_name,#user_message_from_email,#user_message_subject,#user_message_body,#send_user_message_in_html,#custom_verification_message,#verification_message_from_name,#verification_message_from_email,#verification_message_subject,#verification_message_body,#verification_admin_message_in_html").change(function() { updateUserMessagesSummary(); }); jQuery("#disable_admin_message_registered,#disable_admin_message_created,#custom_admin_message,#admin_message_from_name,#admin_message_from_email,#admin_message_subject,#admin_message_body,#send_admin_message_in_html").change(function() { updateAdminMessageSummary(); }); updateUserMessagesSummary(); updateAdminMessageSummary(); }); </script> <?php }
public function rpr_admin_init() { global $register_plus_redux; // TODO: Write function to migrate register plus settings to redux // should not be in init, likely to use similar code to rename if (!current_user_can('manage_options')) { return; } if (RPR_ACTIVATION_REQUIRED !== get_option('register_plus_redux_last_activated')) { $register_plus_redux->rpr_activation(); } $updated = FALSE; // Rename options as necessary, prior to defaulting any new options $rename_options = array('registration_redirect' => 'registration_redirect_url'); foreach ($rename_options as $old_name => $new_name) { $old_value = $register_plus_redux->rpr_get_option($old_name); $new_value = $register_plus_redux->rpr_get_option($new_name); if (NULL === $new_value && NULL !== $old_value) { $register_plus_redux->rpr_set_option($new_name, $old_value); $register_plus_redux->rpr_unset_option($old_name); $updated = TRUE; } } // Load defaults for any options foreach (Register_Plus_Redux::default_options() as $option => $default_value) { if (NULL === $register_plus_redux->rpr_get_option($option)) { $register_plus_redux->rpr_set_option($option, $default_value); $updated = TRUE; } } if (TRUE === $updated) { $register_plus_redux->rpr_update_options(NULL); } // Added 03/28/11 in 3.7.4 converting invitation_code_bank to own option /*.array[]string.*/ $nested_invitation_code_bank = $register_plus_redux->rpr_get_option('invitation_code_bank'); /*.array[]string.*/ $invitation_code_bank = get_option('register_plus_redux_invitation_code_bank-rv1'); // TODO: This may need some work, not sure isset will fire the way I think it does if (FALSE === $invitation_code_bank && isset($nested_invitation_code_bank)) { update_option('register_plus_redux_invitation_code_bank-rv1', $nested_invitation_code_bank); //TODO: Confirm old invitation codes are migrating successfully, then kill old option //$register_plus_redux->rpr_unset_option( 'invitation_code_bank' ); } // Added 03/02/13 in 3.9.6 converting 'unverified_*' users to "Unverified" users /*.object.*/ $user_query = new WP_User_Query(array('meta_key' => 'stored_user_login')); if (!empty($user_query->results)) { global $wpdb; foreach ($user_query->results as $user) { $stored_user_login = get_user_meta($user->ID, 'stored_user_login', TRUE); $wpdb->update($wpdb->users, array('user_login' => $stored_user_login), array('ID' => $user->ID)); $user->set_role('rpr_unverified'); delete_user_meta($user->ID, 'stored_user_login'); } } // Added 03/18/13 in 3.9.9 remove capability 'rpr_can_login', rely on role 'rpr_unverified' alone global $wp_roles; foreach ($wp_roles->get_names() as $role_name => $display_name) { $wp_roles->remove_cap($role_name, 'rpr_can_login'); } // Added 03/28/11 in 3.7.4 converting custom fields /*.array[]mixed.*/ $redux_usermeta = get_option('register_plus_redux_usermeta-rv2'); if (empty($redux_usermeta)) { /*.array[]mixed.*/ $redux_usermeta_rv1 = get_option('register_plus_redux_usermeta-rv1'); /*.array[]mixed.*/ $custom_fields = get_option('register_plus_redux_custom_fields'); if (is_array($redux_usermeta_rv1)) { /*.array[]mixed.*/ $redux_usermeta = array(); foreach ($redux_usermeta_rv1 as $meta_field_rv1) { $meta_field = array(); $meta_field['label'] = $meta_field_rv1['label']; $meta_field['meta_key'] = $meta_field_rv1['meta_key']; $meta_field['display'] = $meta_field_rv1['control']; $meta_field['options'] = $meta_field_rv1['options']; $meta_field['show_datepicker'] = '0'; $meta_field['escape_url'] = '0'; $meta_field['show_on_profile'] = $meta_field_rv1['show_on_profile']; $meta_field['show_on_registration'] = $meta_field_rv1['show_on_registration']; $meta_field['require_on_registration'] = $meta_field_rv1['required_on_registration']; if ('text' === $meta_field['display']) { $meta_field['display'] = 'textbox'; } elseif ('date' === $meta_field['display']) { $meta_field['display'] = 'text'; $meta_field['show_datepicker'] = '1'; } elseif ('url' === $meta_field['display']) { $meta_field['display'] = 'text'; $meta_field['escape_url'] = '1'; } elseif ('static' === $meta_field['display']) { $meta_field['display'] = 'text'; } $redux_usermeta[] = $meta_field; } // TODO: Confirm old custom fields are migrating successfully, then kill old option //delete_option( 'register_plus_redux_usermeta-rv1' ); if (!empty($redux_usermeta)) { update_option('register_plus_redux_usermeta-rv2', $redux_usermeta); } } elseif (is_array($custom_fields)) { /*.array[]mixed.*/ $redux_usermeta = array(); foreach ($custom_fields as $custom_field) { $meta_field = array(); $meta_field['label'] = $custom_field['custom_field_name']; $meta_field['meta_key'] = Register_Plus_Redux::sanitize_text($custom_field['custom_field_name']); $meta_field['display'] = $custom_field['custom_field_type']; $meta_field['options'] = $custom_field['custom_field_options']; $meta_field['show_datepicker'] = '0'; $meta_field['escape_url'] = '0'; $meta_field['show_on_profile'] = $custom_field['show_on_profile']; $meta_field['show_on_registration'] = $custom_field['show_on_registration']; $meta_field['require_on_registration'] = $custom_field['required_on_registration']; if ('text' === $meta_field['display']) { $meta_field['display'] = 'textbox'; } elseif ('date' === $meta_field['display']) { $meta_field['display'] = 'text'; $meta_field['show_datepicker'] = '1'; } elseif ('url' === $meta_field['display']) { $meta_field['display'] = 'text'; $meta_field['escape_url'] = '1'; } elseif ('static' === $meta_field['display']) { $meta_field['display'] = 'text'; } $redux_usermeta[] = $meta_field; } // TODO: Confirm old custom fields are migrating successfully, then kill old option //delete_option( 'register_plus_redux_custom_fields' ); if (!empty($redux_usermeta)) { update_option('register_plus_redux_usermeta-rv2', $redux_usermeta); } } } update_option('register_plus_redux_version', RPR_VERSION); }