WordPress.org

Plugin Directory

Ticket #1287: register-plus-redux.php.8.patch

File register-plus-redux.php.8.patch, 86.0 KB (added by garnser, 3 years ago)
Line 
1*** a/register-plus-redux/register-plus-redux.php       2011-03-17 10:43:51.000000000 +0100
2--- b/register-plus-redux/register-plus-redux.php       2011-03-17 10:31:26.000000000 +0100
3***************
4*** 3,14 ****
5  Author: radiok
6  Plugin Name: Register Plus Redux
7  Author URI: http://radiok.info/
8! Plugin URI: http://radiok.info/category/register-plus-redux/
9  Description: Enhances the user registration process with complete customization and additional administration options.
10! Version: 3.7.1
11  Text Domain: register-plus-redux
12  */
13 
14  if ( !class_exists("RegisterPlusReduxPlugin") ) {
15        class RegisterPlusReduxPlugin {
16                function RegisterPlusReduxPlugin() {
17--- 3,18 ----
18  Author: radiok
19  Plugin Name: Register Plus Redux
20  Author URI: http://radiok.info/
21! Plugin URI: http://radiok.info/blog/category/register-plus-redux/
22  Description: Enhances the user registration process with complete customization and additional administration options.
23! Version: 3.6.22
24  Text Domain: register-plus-redux
25  */
26 
27+ $ops = get_option("register_plus_redux_options");
28+ if ( isset($_POST["enable_invitation_tracking_widget"]) && $ops["enable_invitation_tracking_widget"] )
29+       include_once("dash_widget.php");
30+
31  if ( !class_exists("RegisterPlusReduxPlugin") ) {
32        class RegisterPlusReduxPlugin {
33                function RegisterPlusReduxPlugin() {
34***************
35*** 24,29 ****
36--- 28,34 ----
37                        add_filter("registration_redirect", array($this, "filter_registration_redirect"));
38 
39                        add_action("login_form", array($this, "AlterLoginForm")); //Runs just before the end of the HTML head section of the login page.
40+                       add_action("profile_form", array($this, "AlterProfileForm"));
41                       
42                        //add_action("wpmu_activate_user", array($this, "UpdateSignup"), 10, 3);
43                        //add_action("signup_extra_fields", array($this, "AlterSignupForm"));
44***************
45*** 32,42 ****
46                        add_action("admin_head-user-edit.php", array($this, "DatepickerHead"));
47                        add_action("show_user_profile", array($this, "ShowCustomFields")); //Runs near the end of the user profile editing screen.
48                        add_action("edit_user_profile", array($this, "ShowCustomFields")); //Runs near the end of the user profile editing screen in the admin menus.
49!                       add_action("profile_update", array($this, "SaveCustomFields")); //Runs when a user's profile is updated. Action function argument: user ID.
50!                       add_action("user_register", array($this, "SaveAddedFields"));
51                       
52                        add_filter("allow_password_reset", array($this, "filter_password_reset"), 10, 2);
53 
54                        if ( $wp_version < 3.0 )
55                                add_action("admin_notices", array($this, "VersionWarning"));
56                }
57--- 37,50 ----
58                        add_action("admin_head-user-edit.php", array($this, "DatepickerHead"));
59                        add_action("show_user_profile", array($this, "ShowCustomFields")); //Runs near the end of the user profile editing screen.
60                        add_action("edit_user_profile", array($this, "ShowCustomFields")); //Runs near the end of the user profile editing screen in the admin menus.
61!                       add_action("profile_update", array($this, "SaveCustomFields")); //Runs when a user's profile is updated. Action function argument: user ID.
62                       
63                        add_filter("allow_password_reset", array($this, "filter_password_reset"), 10, 2);
64 
65+                       //LOCALIZATION
66+                       //Place your language file in the plugin folder and name it "register-plus-redux-{language}.mo replace {language} with your language value from wp-config.php
67+                       load_plugin_textdomain("register-plus-redux", false, dirname(plugin_basename(__FILE__)));
68+                       
69                        if ( $wp_version < 3.0 )
70                                add_action("admin_notices", array($this, "VersionWarning"));
71                }
72***************
73*** 74,83 ****
74                                }
75                                if ( !empty($update) ) update_option("register_plus_redux_options", $options);
76                        }
77!
78!                       //LOCALIZATION
79!                       //Place your language file in the plugin folder and name it "register-plus-redux-{language}.mo replace {language} with your language value from wp-config.php
80!                       load_plugin_textdomain("register-plus-redux", false, dirname(plugin_basename(__FILE__)));
81                }
82 
83                function DeleteExpiredUsers() {
84--- 82,103 ----
85                                }
86                                if ( !empty($update) ) update_option("register_plus_redux_options", $options);
87                        }
88!                       $default = $this->defaultFields();
89!                       if ( !get_option("register_plus_redux_fields") ) {
90!                         //Check if fields exist, add defaults if necessary
91!                         add_option("register_plus_redux_fields", $default);
92!                       } else {
93!                         //Check settings for new fields, add as necessary
94!                         $options = get_option("register_plus_redux_fields");
95!                         for ($row = 0; $row < count($default); $row++) {
96!                           foreach ( $default[$row] as $k => $v ) {
97!                             if ( !isset($options[$k] ) ) {
98!                               $options[$k] = $v;
99!                               $update = true;
100!                             }
101!                           }
102!                         }
103!                       }
104                }
105 
106                function DeleteExpiredUsers() {
107***************
108*** 119,125 ****
109                        $options_page = add_submenu_page("options-general.php", "Register Plus Redux Settings", "Register Plus Redux", "manage_options", "register-plus-redux", array($this, "OptionsPage"));
110                        //$options_page = settings_page_register-plus-redux
111                        add_action("admin_head-$options_page", array($this, "OptionsHead"));
112-                       add_action("admin_footer-$options_page", array($this, "OptionsFoot"));
113                        add_filter("plugin_action_links_".plugin_basename(__FILE__), array($this, "filter_plugin_actions"), 10, 4);
114                        if ( !empty($options["verify_user_email"]) || !empty($options["verify_user_admin"]) || $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->usermeta WHERE meta_key='stored_user_login'") )
115                                add_submenu_page("users.php", "Unverified Users", "Unverified Users", "promote_users", "unverified-users", array($this, "UnverifiedUsersPage"));
116--- 139,144 ----
117***************
118*** 127,135 ****
119 
120                function OptionsHead() {
121                        wp_enqueue_script("jquery");
122-               }
123-
124-               function OptionsFoot() {
125                        $options = get_option("register_plus_redux_options");
126                        ?>
127                        <script type="text/javascript">
128--- 146,151 ----
129***************
130*** 180,185 ****
131--- 196,203 ----
132                                                                .append("<option value=\"date\"><?php esc_attr_e("Date Field", "register-plus-redux"); ?></option>")
133                                                                .append("<option value=\"url\"><?php esc_attr_e("URL Field", "register-plus-redux"); ?></option>")
134                                                                .append("<option value=\"hidden\"><?php esc_attr_e("Hidden Field", "register-plus-redux"); ?></option>")
135+                                                               .append("<option value=\"password\"><?php esc_attr_e("Password Field", "register-plus-redux"); ?></option>")
136+                                                               .append("<option value=\"sectiontitle\"><?php esc_attr_e("Section Title", "register-plus-redux"); ?></option>")
137                                                        )
138                                                )
139                                                .append(jQuery("<td>")
140***************
141*** 355,363 ****
142                                jQuery("#admin_message_summary").html(when + msg);
143                        }
144 
145!                       jQuery(document).ready(function() {
146!                               //alert("document ready");
147 
148                                <?php if ( empty($options["verify_user_email"]) ) echo "\njQuery('#verify_user_email_settings').hide();"; ?>
149                                <?php if ( empty($options["verify_user_admin"]) ) echo "\njQuery('#verify_user_admin_settings').hide();"; ?>
150                                <?php if ( empty($options["user_set_password"]) ) echo "\njQuery('#password_settings').hide();"; ?>
151--- 373,384 ----
152                                jQuery("#admin_message_summary").html(when + msg);
153                        }
154 
155!                       jQuery(window).load(function () {
156!                               updateUserMessagesSummary();
157!                               updateAdminMessageSummary();
158!                       });
159 
160+                       jQuery(document).ready(function() {
161                                <?php if ( empty($options["verify_user_email"]) ) echo "\njQuery('#verify_user_email_settings').hide();"; ?>
162                                <?php if ( empty($options["verify_user_admin"]) ) echo "\njQuery('#verify_user_admin_settings').hide();"; ?>
163                                <?php if ( empty($options["user_set_password"]) ) echo "\njQuery('#password_settings').hide();"; ?>
164***************
165*** 369,374 ****
166--- 390,396 ----
167                                <?php if ( empty($options["custom_user_message"]) ) echo "\njQuery('#custom_user_message_settings').hide();"; ?>
168                                <?php if ( empty($options["custom_verification_message"]) ) echo "\njQuery('#custom_verification_message_settings').hide();"; ?>
169                                <?php if ( empty($options["custom_admin_message"]) ) echo "\njQuery('#custom_admin_message_settings').hide();"; ?>
170+
171                                jQuery(".disabled").hide();
172 
173                                jQuery(".showHideSettings").bind("click", function() {
174***************
175*** 402,408 ****
176                                });
177 
178                                jQuery(".enableDisableOptions").live("change", function() {
179!                                       if ( jQuery(this).val() == "select" || jQuery(this).val() == "checkbox" || jQuery(this).val() == "radio" )
180                                                jQuery(this).parent().next().find("input").removeAttr("readonly");
181                                        else
182                                                jQuery(this).parent().next().find("input").attr("readonly", "readonly");
183--- 424,430 ----
184                                });
185 
186                                jQuery(".enableDisableOptions").live("change", function() {
187!                                       if ( jQuery(this).val() == "select" || jQuery(this).val() == "checkbox" || jQuery(this).val() == "radio")
188                                                jQuery(this).parent().next().find("input").removeAttr("readonly");
189                                        else
190                                                jQuery(this).parent().next().find("input").attr("readonly", "readonly");
191***************
192*** 433,441 ****
193                                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() {
194                                        updateAdminMessageSummary();
195                                });
196-
197-                               updateUserMessagesSummary();
198-                               updateAdminMessageSummary();
199                        });
200                        </script>
201                        <?php
202--- 455,460 ----
203***************
204*** 508,564 ****
205                                                <td><label><input type="checkbox" name="double_check_email" value="1" <?php if ( !empty($options["double_check_email"]) ) echo "checked='checked'"; ?> />&nbsp;<?php _e("Require new users to enter e-mail address twice during registration.", "register-plus-redux"); ?></label></td>
206                                        </tr>
207                                        <tr valign="top">
208-                                               <th scope="row"><?php _e("Profile Fields", "register-plus-redux"); ?></th>
209-                                               <td>
210-                                                       <table>
211-                                                               <thead valign="top">
212-                                                                       <td style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px;"></td>
213-                                                                       <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><?php _e("Show", "register-plus-redux"); ?></td>
214-                                                                       <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><?php _e("Require", "register-plus-redux"); ?></td>
215-                                                               </thead>
216-                                                               <tbody>
217-                                                                       <?php if ( !is_array($options["show_fields"]) ) $options["show_fields"] = array(); ?>
218-                                                                       <?php if ( !is_array($options["required_fields"]) ) $options["required_fields"] = array(); ?>
219-                                                                       <tr valign="center">
220-                                                                               <td style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px;"><?php _e("First Name", "register-plus-redux"); ?></td>
221-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="show_fields[]" value="first_name" <?php if ( in_array("first_name", $options["show_fields"]) ) echo "checked='checked'"; ?> class="modifyNextCellInput" /></td>
222-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="required_fields[]" value="first_name" <?php if ( in_array("first_name", $options["required_fields"]) ) echo "checked='checked'"; ?> <?php if ( !in_array("first_name", $options["show_fields"]) ) echo "disabled='disabled'"; ?> /></td>
223-                                                                       </tr>
224-                                                                       <tr valign="center">
225-                                                                               <td style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px;"><?php _e("Last Name", "register-plus-redux"); ?></td>
226-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="show_fields[]" value="last_name" <?php if ( in_array("last_name", $options["show_fields"]) ) echo "checked='checked'"; ?> class="modifyNextCellInput" /></td>
227-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="required_fields[]" value="last_name" <?php if ( in_array("last_name", $options["required_fields"]) ) echo "checked='checked'"; ?> <?php if ( !in_array("last_name", $options["show_fields"]) ) echo "disabled='disabled'"; ?> /></td>
228-                                                                       </tr>
229-                                                                       <tr valign="center">
230-                                                                               <td style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px;"><?php _e("Website", "register-plus-redux"); ?></td>
231-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="show_fields[]" value="user_url" <?php if ( in_array("user_url", $options["show_fields"]) ) echo "checked='checked'"; ?> class="modifyNextCellInput" /></td>
232-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="required_fields[]" value="user_url" <?php if ( in_array("user_url", $options["required_fields"]) ) echo "checked='checked'"; ?> <?php if ( !in_array("user_url", $options["show_fields"]) ) echo "disabled='disabled'"; ?> /></td>
233-                                                                       </tr>
234-                                                                       <tr valign="center">
235-                                                                               <td style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px;"><?php _e("AIM", "register-plus-redux"); ?></td>
236-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="show_fields[]" value="aim" <?php if ( in_array("aim", $options["show_fields"]) ) echo "checked='checked'"; ?> class="modifyNextCellInput" /></td>
237-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="required_fields[]" value="aim" <?php if ( in_array("aim", $options["required_fields"]) ) echo "checked='checked'"; ?> <?php if ( !in_array("aim", $options["show_fields"]) ) echo "disabled='disabled'"; ?> /></td>
238-                                                                       </tr>
239-                                                                       <tr valign="center">
240-                                                                               <td style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px;"><?php _e("Yahoo IM", "register-plus-redux"); ?></td>
241-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="show_fields[]" value="yahoo" <?php if ( in_array("yahoo", $options["show_fields"]) ) echo "checked='checked'"; ?> class="modifyNextCellInput" /></td>
242-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="required_fields[]" value="yahoo" <?php if ( in_array("yahoo", $options["required_fields"]) ) echo "checked='checked'"; ?> <?php if ( !in_array("yahoo", $options["show_fields"]) ) echo "disabled='disabled'"; ?> /></td>
243-                                                                       </tr>
244-                                                                       <tr valign="center">
245-                                                                               <td style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px;"><?php _e("Jabber / Google Talk", "register-plus-redux"); ?></td>
246-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="show_fields[]" value="jabber" <?php if ( in_array("jabber", $options["show_fields"]) ) echo "checked='checked'"; ?> class="modifyNextCellInput" /></td>
247-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="required_fields[]" value="jabber" <?php if ( in_array("jabber", $options["required_fields"]) ) echo "checked='checked'"; ?> <?php if ( !in_array("jabber", $options["show_fields"]) ) echo "disabled='disabled'"; ?> /></td>
248-                                                                       </tr>
249-                                                                       <tr valign="center">
250-                                                                               <td style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px;"><?php _e("About Yourself", "register-plus-redux"); ?></td>
251-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="show_fields[]" value="about" <?php if ( in_array("about", $options["show_fields"]) ) echo "checked='checked'"; ?> class="modifyNextCellInput" /></td>
252-                                                                               <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><input type="checkbox" name="required_fields[]" value="about" <?php if ( in_array("about", $options["required_fields"]) ) echo "checked='checked'"; ?> <?php if ( !in_array("about", $options["show_fields"]) ) echo "disabled='disabled'"; ?> /></td>
253-                                                                       </tr>
254-                                                               </tbody>
255-                                                       </table>
256-                                               </td>
257-                                       </tr>
258-                                       <tr valign="top">
259                                                <th scope="row"><?php _e("User Set Password", "register-plus-redux"); ?></th>
260                                                <td>
261                                                        <label><input type="checkbox" name="user_set_password" id="user_set_password" value="1" <?php if ( !empty($options["user_set_password"]) ) echo "checked='checked'"; ?> class="showHideSettings" />&nbsp;<?php _e("Require new users enter a password during registration...", "register-plus-redux"); ?></label><br />
262--- 527,532 ----
263***************
264*** 732,739 ****
265                                                </td>
266                                        </tr>
267                                </table>
268!                               <h3 class="title"><?php _e("Additional Fields", "register-plus-redux"); ?></h3>
269!                               <p><?php _e("Enter additional fields to show on the User Profile and/or Registration Pages. Additional fields will be shown after existing profile fields on User Profile, and after selected profile fields on Registration Page but before Password, Invitation Code, Disclaimer, License Agreement, or Privacy Policy (if any of those fields are enabled). Options must be entered for Select, Checkbox, and Radio fields. Options should be entered with commas seperating each possible value. For example, a Radio field named \"Gender\" could have the following options, \"Male,Female\".", "register-plus-redux"); ?></p>
270                                <table id="custom_fields" style="width: 80%;">
271                                        <thead valign="top">
272                                                <td style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px;"><?php _e("Name", "register-plus-redux"); ?></td>
273--- 700,707 ----
274                                                </td>
275                                        </tr>
276                                </table>
277!                               <h3 class="title"><?php _e("Fields", "register-plus-redux"); ?></h3>
278!                               <p><?php _e("Enter additional fields to show on the User Profile and/or Registration Pages. Options must be entered for Select, Checkbox, and Radio fields. Options should be entered with commas seperating each possible value. For example, a Radio field named \"Gender\" could have the following options, \"Male,Female\".", "register-plus-redux"); ?></p>
279                                <table id="custom_fields" style="width: 80%;">
280                                        <thead valign="top">
281                                                <td style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px;"><?php _e("Name", "register-plus-redux"); ?></td>
282***************
283*** 745,758 ****
284                                                <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><?php _e("Actions", "register-plus-redux"); ?></td>
285                                        </thead>
286                                        <tbody>
287!                                               <?php
288!                                               $custom_fields = get_option("register_plus_redux_custom_fields");
289                                                if ( !is_array($custom_fields) ) $custom_fields = array();
290                                                foreach ( $custom_fields as $k => $v ) {
291                                                        echo "\n<tr valign='center' class='custom_field'>";
292!                                                       echo "\n        <td style='padding-top: 0px; padding-bottom: 0px;'><input type='text' name='custom_field_name[$k]' value=\"", stripslashes($v["custom_field_name"]), "\" style='width: 100%;' /></td>";
293                                                        echo "\n        <td style='padding-top: 0px; padding-bottom: 0px;'>";
294!                                                       echo "\n                <select name='custom_field_type[$k]' class='enableDisableOptions' style='width: 100%;'>";
295                                                        echo "\n                        <option value='text'"; if ( $v["custom_field_type"] == "text" ) echo " selected='selected'"; echo ">", __("Text Field", "register-plus-redux"), "</option>";
296                                                        echo "\n                        <option value='select'"; if ( $v["custom_field_type"] == "select" ) echo " selected='selected'"; echo ">", __("Select Field", "register-plus-redux"), "</option>";
297                                                        echo "\n                        <option value='checkbox'"; if ( $v["custom_field_type"] == "checkbox" ) echo " selected='selected'"; echo ">", __("Checkbox Fields", "register-plus-redux"), "</option>";
298--- 713,730 ----
299                                                <td align="center" style="padding-top: 0px; padding-bottom: 0px;"><?php _e("Actions", "register-plus-redux"); ?></td>
300                                        </thead>
301                                        <tbody>
302! <?php
303!                                               $custom_fields = get_option("register_plus_redux_fields");
304                                                if ( !is_array($custom_fields) ) $custom_fields = array();
305+                                               ?>
306+
307+ <?php
308                                                foreach ( $custom_fields as $k => $v ) {
309                                                        echo "\n<tr valign='center' class='custom_field'>";
310!                                                       if ($v["required_field"] == 0) { echo "\n       <td style='padding-top: 0px; padding-bottom: 0px;'><input type='text' name='custom_field_name[$k]' value=\"", stripslashes($v["custom_field_name"]), "\" style='width: 100%;' /></td>"; } else { echo "\n       <td style='padding-top: 0px; padding-bottom: 0px;'><input type='text' name='custom_field_name[$k]' value=\"", stripslashes($v["custom_field_name"]), "\" style='width: 100%;' readonly='readonly' /></td>"; }
311                                                        echo "\n        <td style='padding-top: 0px; padding-bottom: 0px;'>";
312!                                                       if ( $v["required_field"] == 1 ) echo "<input type='hidden' value='" , $v["custom_field_type"] , "' name='custom_field_type[$k]' />";
313!                                                       echo "\n                <select name='custom_field_type[$k]' class='enableDisableOptions' style='width: 100%;'"; if ( $v["required_field"] == 1 ) echo 'disabled="disabled"'; echo ">";
314                                                        echo "\n                        <option value='text'"; if ( $v["custom_field_type"] == "text" ) echo " selected='selected'"; echo ">", __("Text Field", "register-plus-redux"), "</option>";
315                                                        echo "\n                        <option value='select'"; if ( $v["custom_field_type"] == "select" ) echo " selected='selected'"; echo ">", __("Select Field", "register-plus-redux"), "</option>";
316                                                        echo "\n                        <option value='checkbox'"; if ( $v["custom_field_type"] == "checkbox" ) echo " selected='selected'"; echo ">", __("Checkbox Fields", "register-plus-redux"), "</option>";
317***************
318*** 761,800 ****
319                                                        echo "\n                        <option value='date'"; if ( $v["custom_field_type"] == "date" ) echo " selected='selected'"; echo ">", __("Date Field", "register-plus-redux"), "</option>";
320                                                        echo "\n                        <option value='url'"; if ( $v["custom_field_type"] == "url" ) echo " selected='selected'"; echo ">", __("URL Field", "register-plus-redux"), "</option>";
321                                                        echo "\n                        <option value='hidden'"; if ( $v["custom_field_type"] == "hidden" ) echo " selected='selected'"; echo ">", __("Hidden Field", "register-plus-redux"), "</option>";
322                                                        echo "\n                </select>";
323                                                        echo "\n        </td>";
324!                                                       echo "\n        <td style='padding-top: 0px; padding-bottom: 0px;'><input type='text' name='custom_field_options[$k]' value=\"", stripslashes($v["custom_field_options"]), "\""; if ( $v["custom_field_type"] != "select" && $v["custom_field_type"] != "checkbox" && $v["custom_field_type"] != "radio" ) echo " readonly='readonly'"; echo " style='width: 100%;' /></td>";
325                                                        echo "\n        <td align='center' style='padding-top: 0px; padding-bottom: 0px;'><input type='checkbox' name='show_on_profile[$k]' value='1'"; if ( !empty($v["show_on_profile"]) ) echo " checked='checked'"; echo " /></td>";
326!                                                       echo "\n        <td align='center' style='padding-top: 0px; padding-bottom: 0px;'><input type='checkbox' name='show_on_registration[$k]' value='1'"; if ( !empty($v["show_on_registration"]) ) echo " checked='checked'"; echo " class='modifyNextCellInput' /></td>";
327!                                                       echo "\n        <td align='center' style='padding-top: 0px; padding-bottom: 0px;'><input type='checkbox' name='required_on_registration[$k]' value='1'"; if ( !empty($v["required_on_registration"]) ) echo " checked='checked'"; if ( empty($v["show_on_registration"]) ) echo " disabled='disabled'"; echo " /></td>";
328                                                        echo "\n        <td align='center' style='padding-top: 0px; padding-bottom: 0px;'>";
329!                                                       echo "\n        <img src='", plugins_url("images\delete.png", __FILE__), "' alt='", __("Remove Field", "register-plus-redux"), "' title='", __("Remove Field", "register-plus-redux"), "' class='removeCustomField' style='cursor: pointer;' />";
330!                                                       echo "\n        <img src='", plugins_url("images\arrow_up.png", __FILE__), "' alt='", __("Move this Field Up", "register-plus-redux"), "' title='", __("Move this Field Up", "register-plus-redux"), "' class='up' style='cursor: pointer;' />";
331!                                                       echo "\n        <img src='", plugins_url("images\arrow_down.png", __FILE__), "' alt='", __("Move this Field Down", "register-plus-redux"), "' title='", __("Move this Field Down", "register-plus-redux"), "' class='down' style='cursor: pointer;' />";
332!                                                       echo "\n        </td>";
333!                                                       echo "\n</tr>";
334!                                               }
335!                                               if ( empty($custom_fields) ) {
336!                                                       echo "\n<tr valign='center' class='custom_field'>";
337!                                                       echo "\n        <td style='padding-top: 0px; padding-bottom: 0px; padding-left: 0px;'><input type='text' name='custom_field_name[]' value='' style='width: 100%;'/></td>";
338!                                                       echo "\n        <td style='padding-top: 0px; padding-bottom: 0px;'>";
339!                                                       echo "\n                <select name='custom_field_type[]' class='enableDisableOptions' style='width: 100%;'>";
340!                                                       echo "\n                        <option value='text'>", __("Text Field", "register-plus-redux"), "</option>";
341!                                                       echo "\n                        <option value='select'>", __("Select Field", "register-plus-redux"), "</option>";
342!                                                       echo "\n                        <option value='checkbox'>", __("Checkbox Fields", "register-plus-redux"), "</option>";
343!                                                       echo "\n                        <option value='radio'>", __("Radio Fields", "register-plus-redux"), "</option>";
344!                                                       echo "\n                        <option value='textarea'>", __("Text Area", "register-plus-redux"), "</option>";
345!                                                       echo "\n                        <option value='date'>", __("Date Field", "register-plus-redux"), "</option>";
346!                                                       echo "\n                        <option value='url'>", __("URL Field", "register-plus-redux"), "</option>";
347!                                                       echo "\n                        <option value='hidden'>", __("Hidden Field", "register-plus-redux"), "</option>";
348!                                                       echo "\n                </select>";
349!                                                       echo "\n        </td>";
350!                                                       echo "\n        <td style='padding-top: 0px; padding-bottom: 0px;'><input type='text' name='custom_field_options[]' value='' readonly='readonly' style='width: 100%;'/></td>";
351!                                                       echo "\n        <td align='center' style='padding-top: 0px; padding-bottom: 0px;'><input type='checkbox' name='show_on_profile[]' value='1' /></td>";
352!                                                       echo "\n        <td align='center' style='padding-top: 0px; padding-bottom: 0px;'><input type='checkbox' name='show_on_registration[]' value='1' class='modifyNextCellInput' /></td>";
353!                                                       echo "\n        <td align='center' style='padding-top: 0px; padding-bottom: 0px;'><input type='checkbox' name='required_on_registration[]' value='1' disabled='disabled' /></td>";
354                                                        echo "\n        <td align='center' style='padding-top: 0px; padding-bottom: 0px;'>";
355!                                                       echo "\n        <img src='", plugins_url("images\delete.png", __FILE__), "' alt='", __("Remove Field", "register-plus-redux"), "' title='", __("Remove Field", "register-plus-redux"), "' class='removeCustomField' style='cursor: pointer;' />";
356                                                        echo "\n        <img src='", plugins_url("images\arrow_up.png", __FILE__), "' alt='", __("Move this Field Up", "register-plus-redux"), "' title='", __("Move this Field Up", "register-plus-redux"), "' class='up' style='cursor: pointer;' />";
357                                                        echo "\n        <img src='", plugins_url("images\arrow_down.png", __FILE__), "' alt='", __("Move this Field Down", "register-plus-redux"), "' title='", __("Move this Field Down", "register-plus-redux"), "' class='down' style='cursor: pointer;' />";
358                                                        echo "\n        </td>";
359--- 733,754 ----
360                                                        echo "\n                        <option value='date'"; if ( $v["custom_field_type"] == "date" ) echo " selected='selected'"; echo ">", __("Date Field", "register-plus-redux"), "</option>";
361                                                        echo "\n                        <option value='url'"; if ( $v["custom_field_type"] == "url" ) echo " selected='selected'"; echo ">", __("URL Field", "register-plus-redux"), "</option>";
362                                                        echo "\n                        <option value='hidden'"; if ( $v["custom_field_type"] == "hidden" ) echo " selected='selected'"; echo ">", __("Hidden Field", "register-plus-redux"), "</option>";
363+                                                       echo "\n                        <option value='password'"; if ( $v["custom_field_type"] == "password" ) echo " selected='selected'"; echo ">", __("Password Field", "register-plus-redux"), "</option>";
364+                                                       echo "\n                        <option value='sectiontitle'"; if ( $v["custom_field_type"] == "sectiontitle" ) echo " selected='selected'"; echo ">", __("Section Title", "register-plus-redux"), "</option>";
365                                                        echo "\n                </select>";
366                                                        echo "\n        </td>";
367!                                                       echo "\n        <td style='padding-top: 0px; padding-bottom: 0px;'><input type='text' name='custom_field_options[$k]' value=\"", stripslashes($v["custom_field_options"]), "\""; if ( $v["custom_field_type"] != "select" && $v["custom_field_type"] != "checkbox" && $v["custom_field_type"] != "radio") echo " readonly='readonly'"; echo " style='width: 100%;' /></td>";
368                                                        echo "\n        <td align='center' style='padding-top: 0px; padding-bottom: 0px;'><input type='checkbox' name='show_on_profile[$k]' value='1'"; if ( !empty($v["show_on_profile"]) ) echo " checked='checked'"; echo " /></td>";
369!                                                       echo "\n        <td align='center' style='padding-top: 0px; padding-bottom: 0px;'><input type='checkbox' name='show_on_registration[$k]' value='1'"; if ( !empty($v["show_on_registration"]) ) echo " checked='checked'"; if ($v["custom_field_type"] != "sectiontitle" && $v["custom_field_type"] != "password") { echo " class='modifyNextCellInput'"; }; echo "/></td>";
370                                                        echo "\n        <td align='center' style='padding-top: 0px; padding-bottom: 0px;'>";
371!                                                         echo "<input type='checkbox' name='required_on_registration[$k]' value='1'"; if ( !empty($v["required_on_registration"]) ) echo " checked='checked'"; if ( empty($v["show_on_registration"]) || $v["custom_field_type"] == "sectiontitle" || $v["custom_field_type"] == "password") echo " disabled='disabled'"; echo " />";
372!                                                       echo "</td>";
373                                                        echo "\n        <td align='center' style='padding-top: 0px; padding-bottom: 0px;'>";
374!                                                       if ($v["required_field"] == 0) {
375!                                                         echo "\n      <img src='", plugins_url("images\delete.png", __FILE__), "' alt='", __("Remove Field", "register-plus-redux"), "' title='", __("Remove Field", "register-plus-redux"), "' class='removeCustomField' style='cursor: pointer;' />";
376!                                                       } else {
377!                                                         echo "\n      <img src='", plugins_url("images\delete_gray.png", __FILE__), "' alt='", __("Remove Field", "register-plus-redux"), "' title='", __("Remove Field", "register-plus-redux"), "' style='cursor: pointer;' />";
378!                                                       };
379                                                        echo "\n        <img src='", plugins_url("images\arrow_up.png", __FILE__), "' alt='", __("Move this Field Up", "register-plus-redux"), "' title='", __("Move this Field Up", "register-plus-redux"), "' class='up' style='cursor: pointer;' />";
380                                                        echo "\n        <img src='", plugins_url("images\arrow_down.png", __FILE__), "' alt='", __("Move this Field Down", "register-plus-redux"), "' title='", __("Move this Field Down", "register-plus-redux"), "' class='down' style='cursor: pointer;' />";
381                                                        echo "\n        </td>";
382***************
383*** 843,849 ****
384                                <h3 class="title"><?php _e("Auto-Complete Queries", "register-plus-redux"); ?></h3>
385                                <p><?php _e("You can now link to the registration page with queries to autocomplete specific fields for the user. I have included the query keys below and an example of a query URL.", "register-plus-redux"); ?></p>
386                                <?php
387!                               $registration_fields = "%first_name% %last_name% %user_url% %aim% %yahoo% %jabber% %about% %invitation_code%";
388                                foreach ( $custom_fields as $k => $v ) {
389                                        if ( !empty($v["show_on_registration"]) ) $registration_fields .= " %".$this->sanitizeText($v["custom_field_name"])."%";
390                                }
391--- 797,803 ----
392                                <h3 class="title"><?php _e("Auto-Complete Queries", "register-plus-redux"); ?></h3>
393                                <p><?php _e("You can now link to the registration page with queries to autocomplete specific fields for the user. I have included the query keys below and an example of a query URL.", "register-plus-redux"); ?></p>
394                                <?php
395!                               $registration_fields = "%first_name% %last_name% %user_url% %aim% %yim% %jabber% %about% %invitation_code%";
396                                foreach ( $custom_fields as $k => $v ) {
397                                        if ( !empty($v["show_on_registration"]) ) $registration_fields .= " %".$this->sanitizeText($v["custom_field_name"])."%";
398                                }
399***************
400*** 1083,1096 ****
401 
402                        if ( isset($_POST["custom_field_name"]) ) {
403                                foreach ( $_POST["custom_field_name"] as $k => $v ) {
404!                                       if ( !empty($v) ) {
405                                                $custom_fields[$k] = array(
406                                                        "custom_field_name" => $v,
407                                                        "custom_field_type" => isset($_POST["custom_field_type"][$k]) ? $_POST["custom_field_type"][$k] : "",
408                                                        "custom_field_options" => isset($_POST["custom_field_options"][$k]) ? $_POST["custom_field_options"][$k] : "",
409                                                        "show_on_profile" => isset($_POST["show_on_profile"][$k]) ? $_POST["show_on_profile"][$k] : "",
410                                                        "show_on_registration" => isset($_POST["show_on_registration"][$k]) ? $_POST["show_on_registration"][$k] : "",
411!                                                       "required_on_registration" => isset($_POST["required_on_registration"][$k]) ? $_POST["required_on_registration"][$k] : "");
412                                        }
413                                }
414                        }
415--- 1037,1073 ----
416 
417                        if ( isset($_POST["custom_field_name"]) ) {
418                                foreach ( $_POST["custom_field_name"] as $k => $v ) {
419!                                       if ( !empty($v) ) {
420!                                         $required_fields = array("First Name" => "first_name", "Last Name" => "last_name", "Website" => "user_url", "AIM" => "aim", "Yahoo IM" => "yim", "Jabber / Google Talk" => "jabber", "About Yourself" => "description", "E-mail" => "user_email", "Username" => "user_login");
421!                               $required_field = 0;
422!                               $profile_field_key;
423!                               $required_field_key = "";
424!
425!                               switch ($v) {
426!                               case "E-mail":
427!                                 $profile_field_key = "email";
428!                                 break;
429!                               case "Website":
430!                                 $profile_field_key = "url";
431!                                 break;
432!                               default:
433!                                 unset($profile_field_key);
434!                               }
435!
436!                               if ( isset($required_fields["$v"])) {
437!                                 $required_field = 1;
438!                                 $required_field_key = $required_fields["$v"];
439!                               }
440                                                $custom_fields[$k] = array(
441                                                        "custom_field_name" => $v,
442                                                        "custom_field_type" => isset($_POST["custom_field_type"][$k]) ? $_POST["custom_field_type"][$k] : "",
443                                                        "custom_field_options" => isset($_POST["custom_field_options"][$k]) ? $_POST["custom_field_options"][$k] : "",
444                                                        "show_on_profile" => isset($_POST["show_on_profile"][$k]) ? $_POST["show_on_profile"][$k] : "",
445                                                        "show_on_registration" => isset($_POST["show_on_registration"][$k]) ? $_POST["show_on_registration"][$k] : "",
446!                                                       "required_on_registration" => isset($_POST["required_on_registration"][$k]) ? $_POST["required_on_registration"][$k] : "",
447!                                                       "required_field" => $required_field,
448!                                                       "required_field_key" => $required_field_key,
449!                                                       "profile_field_key" => $profile_field_key);
450                                        }
451                                }
452                        }
453***************
454*** 1135,1141 ****
455                        $options["disable_url_fopen"] = isset($_POST["disable_url_fopen"]) ? $_POST["disable_url_fopen"] : "";
456 
457                        update_option("register_plus_redux_options", $options);
458!                       update_option("register_plus_redux_custom_fields", $custom_fields);
459                }
460 
461                function UnverifiedUsersPage() {
462--- 1112,1118 ----
463                        $options["disable_url_fopen"] = isset($_POST["disable_url_fopen"]) ? $_POST["disable_url_fopen"] : "";
464 
465                        update_option("register_plus_redux_options", $options);
466!                       update_option("register_plus_redux_fields", $custom_fields);
467                }
468 
469                function UnverifiedUsersPage() {
470***************
471*** 1323,1345 ****
472                                <?php
473                        }
474                        if ( isset($_GET["action"]) && $_GET["action"] == "register" ) {
475!                               if ( isset($_GET["user_login"]) ) $_POST["user_login"] = $_GET["user_login"];
476!                               if ( isset($_GET["user_email"]) ) $_POST["user_email"] = $_GET["user_email"];
477!                               if ( !empty($_POST["user_login"]) || !empty($_POST["user_email"]) ) {
478!                                       if ( empty($jquery_loaded) ) {
479!                                               wp_print_scripts("jquery");
480!                                               $jquery_loaded = true;
481!                                       }
482!                                       ?>
483!                                       <script type="text/javascript">
484!                                       jQuery(document).ready(function() {
485!                                               jQuery("#user_login").val("<?php echo $_POST["user_login"]; ?>");
486!                                               jQuery("#user_email").val("<?php echo $_POST["user_email"]; ?>");
487!                                       });
488!                                       </script>
489!                                       <?php
490!                               }
491!                               $custom_fields = get_option("register_plus_redux_custom_fields");
492                                if ( !is_array($custom_fields) ) $custom_fields = array();
493                                foreach ( $custom_fields as $k => $v ) {
494                                        if ( !empty($v["show_on_registration"]) ) {
495--- 1300,1306 ----
496                                <?php
497                        }
498                        if ( isset($_GET["action"]) && $_GET["action"] == "register" ) {
499!                               $custom_fields = get_option("register_plus_redux_fields");
500                                if ( !is_array($custom_fields) ) $custom_fields = array();
501                                foreach ( $custom_fields as $k => $v ) {
502                                        if ( !empty($v["show_on_registration"]) ) {
503***************
504*** 1555,1644 ****
505                                $tabindex++;
506                        }
507                        if ( !is_array($options["show_fields"]) ) $options["show_fields"] = array();
508!                       if ( in_array("first_name", $options["show_fields"]) ) {
509!                               if ( isset($_GET["first_name"]) ) $_POST["first_name"] = $_GET["first_name"];
510!                               echo "\n<p id='first_name-p'><label id='first_name-label'>";
511!                               if ( !empty($options["required_fields_asterisk"]) && in_array("first_name", $options["required_fields"]) ) echo "*";
512!                               echo __("First Name", "register-plus-redux"), "<br /><input type='text' name='first_name' id='first_name' class='input' value='", $_POST["first_name"],"' size='25' ";
513!                               if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
514!                               echo "/></label></p>";
515!                               $tabindex++;
516!                       }
517!                       if ( in_array("last_name", $options["show_fields"]) ) {
518!                               if ( isset($_GET["last_name"]) ) $_POST["last_name"] = $_GET["last_name"];
519!                               echo "\n<p id='last_name-p'><label id='last_name-label'>";
520!                               if ( !empty($options["required_fields_asterisk"]) && in_array("last_name", $options["required_fields"]) ) echo "*";
521!                               echo __("Last Name", "register-plus-redux"), "<br /><input type='text' name='last_name' id='last_name' class='input' value='", $_POST["last_name"], "' size='25' ";
522!                               if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
523!                               echo "/></label></p>";
524!                               $tabindex++;
525!                       }
526!                       if ( in_array("user_url", $options["show_fields"]) ) {
527!                               if ( isset($_GET["url"]) ) $_POST["url"] = $_GET["url"];
528!                               echo "\n<p id='user_url-p'><label id='user_url-label'>";
529!                               if ( !empty($options["required_fields_asterisk"]) && in_array("user_url", $options["required_fields"]) ) echo "*";
530!                               echo __("Website", "register-plus-redux"), "<br /><input type='text' name='url' id='user_url' class='input' value='", $_POST["url"], "' size='25' ";
531!                               if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
532!                               echo "/></label></p>";
533!                               $tabindex++;
534!                       }
535!                       if ( in_array("aim", $options["show_fields"]) ) {
536!                               if ( isset($_GET["aim"]) ) $_POST["aim"] = $_GET["aim"];
537!                               echo "\n<p id='aim-p'><label id='aim-label'>";
538!                               if ( !empty($options["required_fields_asterisk"]) && in_array("aim", $options["required_fields"]) ) echo "*";
539!                               echo __("AIM", "register-plus-redux"), "<br /><input type='text' name='aim' id='aim' class='input' value='", $_POST["aim"], "' size='25' ";
540!                               if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
541!                               echo "/></label></p>";
542!                               $tabindex++;
543!                       }
544!                       if ( in_array("yahoo", $options["show_fields"]) ) {
545!                               if ( isset($_GET["yahoo"]) ) $_POST["yahoo"] = $_GET["yahoo"];
546!                               echo "\n<p id='yahoo-p'><label id='yahoo-label'>";
547!                               if ( !empty($options["required_fields_asterisk"]) && in_array("yahoo", $options["required_fields"]) ) echo "*";
548!                               echo __("Yahoo IM", "register-plus-redux"), "<br /><input type='text' name='yahoo' id='yahoo' class='input' value='", $_POST["yahoo"], "' size='25' ";
549!                               if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
550!                               echo "/></label></p>";
551!                               $tabindex++;
552!                       }
553!                       if ( in_array("jabber", $options["show_fields"]) ) {
554!                               if ( isset($_GET["jabber"]) ) $_POST["jabber"] = $_GET["jabber"];
555!                               echo "\n<p id='jabber-p'><label id='jabber-label'>";
556!                               if ( !empty($options["required_fields_asterisk"]) && in_array("jabber", $options["required_fields"]) ) echo "*";
557!                               echo __("Jabber / Google Talk", "register-plus-redux"), "<br /><input type='text' name='jabber' id='jabber' class='input' value='", $_POST["jabber"], "' size='25' ";
558!                               if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
559!                               echo "/></label></p>";
560!                               $tabindex++;
561!                       }
562!                       if ( in_array("about", $options["show_fields"]) ) {
563!                               if ( isset($_GET["about"]) ) $_POST["about"] = $_GET["about"];
564!                               echo "\n<p id='about-p'><label id='about-label' for='about'>";
565!                               if ( !empty($options["required_fields_asterisk"]) && in_array("about", $options["required_fields"]) ) echo "*";
566!                               echo __("About Yourself", "register-plus-redux"), "</label><br />";
567!                               echo "\n<small id='about_msg'>", __("Share a little biographical information to fill out your profile. This may be shown publicly.", "register-plus-redux"), "</small><br />";
568!                               echo "\n<textarea name='about' id='about' cols='25' rows='5'";
569!                               if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
570!                               echo ">", stripslashes($_POST["about"]), "</textarea></p>";
571!                               $tabindex++;
572!                       }
573!                       $custom_fields = get_option("register_plus_redux_custom_fields");
574                        if ( !is_array($custom_fields) ) $custom_fields = array();
575                        foreach ( $custom_fields as $k => $v ) {
576                                if ( !empty($v["show_on_registration"]) ) {
577!                                       $key = $this->sanitizeText($v["custom_field_name"]);
578                                        if ( isset($_GET[$key]) ) $_POST[$key] = $_GET[$key];
579                                        switch ( $v["custom_field_type"] ) {
580                                                case "text":
581!                                                       echo "\n<p id='$key-p'><label id='$key-label'>";
582                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
583!                                                       echo stripslashes($v["custom_field_name"]), "<br /><input type='text' name='$key' id='$key' class='input' value='", $_POST[$key], "' size='25' ";
584                                                        if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
585                                                        echo "/></label></p>";
586                                                        $tabindex++;
587                                                        break;
588                                                case "select":
589!                                                       echo "\n<p id='$key-p'><label id='$key-label'>";
590                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
591!                                                       echo stripslashes($v["custom_field_name"]), "<br />";
592                                                        echo "\n<select name='$key' id='$key'";
593                                                        if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
594                                                        echo ">";
595--- 1516,1546 ----
596                                $tabindex++;
597                        }
598                        if ( !is_array($options["show_fields"]) ) $options["show_fields"] = array();
599!                       $custom_fields = get_option("register_plus_redux_fields");
600                        if ( !is_array($custom_fields) ) $custom_fields = array();
601                        foreach ( $custom_fields as $k => $v ) {
602                                if ( !empty($v["show_on_registration"]) ) {
603!                                 if ( !empty($v["required_field_key"])) {
604!                                   $key = $v["required_field_key"];
605!                                   $key_id = $key;
606!                                 } else {
607!                                   $key = $this->sanitizeText($v["custom_field_name"]);
608!                                   $key_id = "$key-p";
609!                                 }
610                                        if ( isset($_GET[$key]) ) $_POST[$key] = $_GET[$key];
611                                        switch ( $v["custom_field_type"] ) {
612                                                case "text":
613!                                                       echo "\n<p id='$key_id'><label id='$key-label'>";
614                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
615!                                                       echo stripslashes($v["custom_field_name"]), "<input type='text' name='$key' id='$key' class='input' value='", $_POST[$key], "' size='25' ";
616                                                        if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
617                                                        echo "/></label></p>";
618                                                        $tabindex++;
619                                                        break;
620                                                case "select":
621!                                                       echo "\n<p id='$key_id'><label id='$key-label'>";
622                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
623!                                                       echo stripslashes($v["custom_field_name"]);
624                                                        echo "\n<select name='$key' id='$key'";
625                                                        if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
626                                                        echo ">";
627***************
628*** 1654,1662 ****
629                                                        echo "\n</label></p>";
630                                                        break;
631                                                case "checkbox":
632!                                                       echo "\n<p id='$key-p' style='margin-bottom:16px;'><label id='$key-label'>";
633                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
634!                                                       echo stripslashes($v["custom_field_name"]), "</label><br />";
635                                                        $custom_field_options = explode(",", $v["custom_field_options"]);
636                                                        foreach ( $custom_field_options as $custom_field_option ) {
637                                                                $option = $this->sanitizeText($custom_field_option);
638--- 1556,1564 ----
639                                                        echo "\n</label></p>";
640                                                        break;
641                                                case "checkbox":
642!                                                       echo "\n<p id='$key_id' style='margin-bottom:16px;'><label id='$key-label'>";
643                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
644!                                                       echo stripslashes($v["custom_field_name"]), "</label>";
645                                                        $custom_field_options = explode(",", $v["custom_field_options"]);
646                                                        foreach ( $custom_field_options as $custom_field_option ) {
647                                                                $option = $this->sanitizeText($custom_field_option);
648***************
649*** 1664,1709 ****
650                                                                if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
651                                                                if ( is_array($_POST[$key]) && in_array(stripslashes($custom_field_option), $_POST[$key]) ) echo " checked='checked'";
652                                                                if ( !is_array($_POST[$key]) && $_POST[$key] == stripslashes($custom_field_option) ) echo " checked='checked'";
653!                                                               echo " /><label id='$option-label' class='$key' for='$option'>&nbsp;", stripslashes($custom_field_option), "</label><br />";
654                                                                $tabindex++;
655                                                        }
656                                                        echo "\n</p>";
657                                                        break;
658                                                case "radio":
659!                                                       echo "\n<p id='$key-p' style='margin-bottom:16px;'><label id='$key-label'>";
660                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
661!                                                       echo stripslashes($v["custom_field_name"]), "</label><br />";
662                                                        $custom_field_options = explode(",", $v["custom_field_options"]);
663                                                        foreach ( $custom_field_options as $custom_field_option ) {
664                                                                $option = $this->sanitizeText($custom_field_option);
665                                                                echo "\n<input type='radio' name='$key' id='$option' value=\"", stripslashes($custom_field_option), "\"";
666                                                                if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
667                                                                if ( $_POST[$key] == stripslashes($custom_field_option) ) echo " checked='checked'";
668!                                                               echo " /><label id='$option-label' class='$key' for='$option'>&nbsp;", stripslashes($custom_field_option), "</label><br />";
669                                                                $tabindex++;
670                                                        }
671                                                        echo "\n</p>";
672                                                        break;
673                                                case "textarea":
674!                                                       echo "\n<p id='$key-p'><label id='$key-label'>";
675                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
676!                                                       echo stripslashes($v["custom_field_name"]), "<br /><textarea name='$key' id='$key' cols='25' rows='5'";
677                                                        if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
678                                                        echo ">", $_POST[$key], "</textarea></label></p>";
679                                                        $tabindex++;
680                                                        break;
681                                                case "date":
682!                                                       echo "\n<p id='$key-p'><label id='$key-label'>";
683                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
684!                                                       echo stripslashes($v["custom_field_name"]), "<br /><input type='text' name='$key' id='$key' class='datepicker' value='", $_POST[$key], "' size='25' ";
685                                                        if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
686                                                        echo " /></label></p>";
687                                                        $tabindex++;
688                                                        break;
689                                                case "url":
690!                                                       echo "\n<p id='$key-p'><label id='$key-label'>";
691                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
692!                                                       echo stripslashes($v["custom_field_name"]), "<br /><input type='text' name='$key' id='$key' class='input' value='", $_POST[$key], "' size='25' ";
693                                                        if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
694                                                        echo "/></label></p>";
695                                                        $tabindex++;
696--- 1566,1611 ----
697                                                                if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
698                                                                if ( is_array($_POST[$key]) && in_array(stripslashes($custom_field_option), $_POST[$key]) ) echo " checked='checked'";
699                                                                if ( !is_array($_POST[$key]) && $_POST[$key] == stripslashes($custom_field_option) ) echo " checked='checked'";
700!                                                               echo " /><label id='$option-label' class='$key' for='$option'>&nbsp;", stripslashes($custom_field_option), "</label>";
701                                                                $tabindex++;
702                                                        }
703                                                        echo "\n</p>";
704                                                        break;
705                                                case "radio":
706!                                                       echo "\n<p id='$key_id' style='margin-bottom:16px;'><label id='$key-label'>";
707                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
708!                                                       echo stripslashes($v["custom_field_name"]), "</label>";
709                                                        $custom_field_options = explode(",", $v["custom_field_options"]);
710                                                        foreach ( $custom_field_options as $custom_field_option ) {
711                                                                $option = $this->sanitizeText($custom_field_option);
712                                                                echo "\n<input type='radio' name='$key' id='$option' value=\"", stripslashes($custom_field_option), "\"";
713                                                                if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
714                                                                if ( $_POST[$key] == stripslashes($custom_field_option) ) echo " checked='checked'";
715!                                                               echo " /><label id='$option-label' class='$key' for='$option'>&nbsp;", stripslashes($custom_field_option), "</label>";
716                                                                $tabindex++;
717                                                        }
718                                                        echo "\n</p>";
719                                                        break;
720                                                case "textarea":
721!                                                       echo "\n<p id='$key_id'><label id='$key-label'>";
722                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
723!                                                       echo stripslashes($v["custom_field_name"]), "<textarea name='$key' id='$key' cols='25' rows='5'";
724                                                        if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
725                                                        echo ">", $_POST[$key], "</textarea></label></p>";
726                                                        $tabindex++;
727                                                        break;
728                                                case "date":
729!                                                       echo "\n<p id='$key_id'><label id='$key-label'>";
730                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
731!                                                       echo stripslashes($v["custom_field_name"]), "<input type='text' name='$key' id='$key' class='datepicker' value='", $_POST[$key], "' size='25' ";
732                                                        if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
733                                                        echo " /></label></p>";
734                                                        $tabindex++;
735                                                        break;
736                                                case "url":
737!                                                       echo "\n<p id='$key_id'><label id='$key-label'>";
738                                                        if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
739!                                                       echo stripslashes($v["custom_field_name"]), "<input type='text' name='$key' id='$key' class='input' value='", $_POST[$key], "' size='25' ";
740                                                        if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
741                                                        echo "/></label></p>";
742                                                        $tabindex++;
743***************
744*** 1714,1741 ****
745                                                        echo "/>";
746                                                        $tabindex++;
747                                                        break;
748                                        }
749                                }
750                        }
751!                       if ( !empty($options["user_set_password"]) ) {
752!                               if ( isset($_GET["password"]) ) $_POST["password"] = $_GET["password"];
753!                               echo "\n<p id='pass1-p'><label id='pass1-label'>";
754!                               if ( !empty($options["required_fields_asterisk"]) ) echo "*";
755!                               echo __("Password", "register-plus-redux"), "<br /><input type='password' autocomplete='off' name='pass1' id='pass1' value='", $_POST["password"], "' size='25' ";
756!                               if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
757!                               echo "/></label></p>";
758!                               $tabindex++;
759!                               echo "\n<p id='pass2-p'><label id='pass2-label'>";
760!                               if ( !empty($options["required_fields_asterisk"]) ) echo "*";
761!                               echo __("Confirm Password", "register-plus-redux"), "<br /><input type='password' autocomplete='off' name='pass2' id='pass2' value='", $_POST["password"], "' size='25' ";
762!                               if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
763!                               echo "/></label></p>";
764!                               $tabindex++;
765!                               if ( !empty($options["show_password_meter"]) ) {
766!                                       echo "\n<div id='pass-strength-result'>", stripslashes($options["message_empty_password"]), "</div>";
767!                                       echo "\n<small id='pass_strength_msg'>", sprintf(__("Your password must be at least %d characters long. To make your password stronger, use upper and lower case letters, numbers, and the following symbols !@#$%%^&amp;*()", "register-plus-redux"), $options["min_password_length"]), "</small>";
768!                               }
769!                       }
770                        if ( !empty($options["enable_invitation_code"]) ) {
771                                if ( isset($_GET["invitation_code"]) ) $_POST["invitation_code"] = $_GET["invitation_code"];
772                                echo "\n<p id='invitation_code-p'><label id='invitation_code-label'>";
773--- 1616,1651 ----
774                                                        echo "/>";
775                                                        $tabindex++;
776                                                        break;
777+                                               case "password":
778+                                                 if ( !empty($options["user_set_password"]) ) {
779+                                                   if ( isset($_GET["password"]) ) $_POST["password"] = $_GET["password"];
780+                                                   echo "\n<p id='pass1-p'><label id='pass1-label'>";
781+                                                   if ( !empty($options["required_fields_asterisk"]) ) echo "*";
782+                                                   echo __("Password", "register-plus-redux"), "<input type='password' autocomplete='off' name='pass1' id='pass1' value='", $_POST["password"], "' size='25' ";
783+                                                   if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
784+                                                   echo "/></label></p>";
785+                                                   $tabindex++;
786+                                                   echo "\n<p id='pass2-p'><label id='pass2-label'>";
787+                                                   if ( !empty($options["required_fields_asterisk"]) ) echo "*";
788+                                                   echo __("Confirm Password", "register-plus-redux"), "<input type='password' autocomplete='off' name='pass2' id='pass2' value='", $_POST["password"], "' size='25' ";
789+                                                   if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
790+                                                   echo "/></label></p>";
791+                                                   $tabindex++;
792+                                                   if ( !empty($options["show_password_meter"]) ) {
793+                                                     echo "\n<div id='pass-strength-result'>", stripslashes($options["message_empty_password"]), "</div>";
794+                                                     echo "\n<small id='pass_strength_msg'>", sprintf(__("Your password must be at least %d characters long. To make your password stronger, use upper and lower case letters, numbers, and the following symbols !@#$%%^&amp;*()", "register-plus-redux"), $options["min_password_length"]), "</small>";
795+                                                   }
796+                                                 }
797+                                                 break;
798+                                               case "sectiontitle":
799+                                                       echo "\n<h2>";
800+                                                       echo stripslashes($v["custom_field_name"]), "</h2>";
801+                                                       $tabindex++;
802+                                                       break;
803                                        }
804                                }
805                        }
806!
807                        if ( !empty($options["enable_invitation_code"]) ) {
808                                if ( isset($_GET["invitation_code"]) ) $_POST["invitation_code"] = $_GET["invitation_code"];
809                                echo "\n<p id='invitation_code-p'><label id='invitation_code-label'>";
810***************
811*** 1812,1822 ****
812                                        $errors->add("empty_first_name", __("<strong>ERROR</strong>: Please enter your first name.", "register-plus-redux"));
813                                }
814                        }
815!                       if ( in_array("last_name", $options["show_fields"]) && in_array("last_name", $options["required_fields"]) ) {
816                                if ( empty($_POST["last_name"]) ) {
817                                        $errors->add("empty_last_name", __("<strong>ERROR</strong>: Please enter your last name.", "register-plus-redux"));
818                                }
819!                       }
820                        if ( in_array("user_url", $options["show_fields"]) && in_array("user_url", $options["required_fields"]) ) {
821                                if ( empty($_POST["url"]) ) {
822                                        $errors->add("empty_user_url", __("<strong>ERROR</strong>: Please enter your website URL.", "register-plus-redux"));
823--- 1722,1732 ----
824                                        $errors->add("empty_first_name", __("<strong>ERROR</strong>: Please enter your first name.", "register-plus-redux"));
825                                }
826                        }
827!                       /*                      if ( in_array("last_name", $options["show_fields"]) && in_array("last_name", $options["required_fields"]) ) {
828                                if ( empty($_POST["last_name"]) ) {
829                                        $errors->add("empty_last_name", __("<strong>ERROR</strong>: Please enter your last name.", "register-plus-redux"));
830                                }
831!                               }*/
832                        if ( in_array("user_url", $options["show_fields"]) && in_array("user_url", $options["required_fields"]) ) {
833                                if ( empty($_POST["url"]) ) {
834                                        $errors->add("empty_user_url", __("<strong>ERROR</strong>: Please enter your website URL.", "register-plus-redux"));
835***************
836*** 1827,1835 ****
837                                        $errors->add("empty_aim", __("<strong>ERROR</strong>: Please enter your AIM username.", "register-plus-redux"));
838                                }
839                        }
840!                       if ( in_array("yahoo", $options["show_fields"]) && in_array("yahoo", $options["required_fields"]) ) {
841!                               if ( empty($_POST["yahoo"]) ) {
842!                                       $errors->add("empty_yahoo", __("<strong>ERROR</strong>: Please enter your Yahoo IM username.", "register-plus-redux"));
843                                }
844                        }
845                        if ( in_array("jabber", $options["show_fields"]) && in_array("jabber", $options["required_fields"]) ) {
846--- 1737,1745 ----
847                                        $errors->add("empty_aim", __("<strong>ERROR</strong>: Please enter your AIM username.", "register-plus-redux"));
848                                }
849                        }
850!                       if ( in_array("yim", $options["show_fields"]) && in_array("yim", $options["required_fields"]) ) {
851!                               if ( empty($_POST["yim"]) ) {
852!                                       $errors->add("empty_yim", __("<strong>ERROR</strong>: Please enter your Yahoo IM username.", "register-plus-redux"));
853                                }
854                        }
855                        if ( in_array("jabber", $options["show_fields"]) && in_array("jabber", $options["required_fields"]) ) {
856***************
857*** 1842,1852 ****
858                                        $errors->add("empty_about", __("<strong>ERROR</strong>: Please enter some information about yourself.", "register-plus-redux"));
859                                }
860                        }
861!                       $custom_fields = get_option("register_plus_redux_custom_fields");
862                        if ( !is_array($custom_fields) ) $custom_fields = array();
863                        foreach ( $custom_fields as $k => $v ) {
864                                if ( !empty($v["show_on_registration"]) && !empty($v["required_on_registration"]) ) {
865!                                       $key = $this->sanitizeText($v["custom_field_name"]);
866                                        if ( empty($_POST[$key]) ) {
867                                                $errors->add("empty_$key", sprintf(__("<strong>ERROR</strong>: Please complete %s.", "register-plus-redux"), $v["custom_field_name"]));
868                                        }
869--- 1752,1766 ----
870                                        $errors->add("empty_about", __("<strong>ERROR</strong>: Please enter some information about yourself.", "register-plus-redux"));
871                                }
872                        }
873!                       $custom_fields = get_option("register_plus_redux_fields");
874                        if ( !is_array($custom_fields) ) $custom_fields = array();
875                        foreach ( $custom_fields as $k => $v ) {
876                                if ( !empty($v["show_on_registration"]) && !empty($v["required_on_registration"]) ) {
877!                                 if ( !empty($v["required_field_key"])) {
878!                                   $key = $v["required_field_key"];
879!                                 } else {
880!                                   $key = $this->sanitizeText($v["custom_field_name"]);
881!                                 }
882                                        if ( empty($_POST[$key]) ) {
883                                                $errors->add("empty_$key", sprintf(__("<strong>ERROR</strong>: Please complete %s.", "register-plus-redux"), $v["custom_field_name"]));
884                                        }
885***************
886*** 1897,1902 ****
887--- 1811,1951 ----
888                        }
889                }
890 
891+               function AlterProfileForm( $profileuser ) {
892+                 $profileuser = $profileuser->data;
893+                 $options = get_option("register_plus_redux_options");
894+                 if ( !empty($options["starting_tabindex"]) ) $tabindex = $options["starting_tabindex"];
895+                       if ( !is_array($options["profile_fields"]) ) $options["profile_fields"] = array();
896+                       $custom_fields = get_option("register_plus_redux_fields");
897+                       if ( !is_array($custom_fields) ) $custom_fields = array();
898+                       foreach ( $custom_fields as $k => $v ) {
899+                               if ( !empty($v["show_on_profile"]) ) {
900+                                 if( !empty($v["required_field_key"])) {
901+                                     $key = $v["required_field_key"];
902+                                     $key_id = $key;
903+                                 } else {
904+                                   $key = $this->sanitizeText($v["custom_field_name"]);
905+                                   $key_id = "$key-p";
906+                                 }
907+                                       if ( isset($_GET[$key]) ) $_POST[$key] = $_GET[$key];
908+                                       switch ( $v["custom_field_type"] ) {
909+                                               case "text":
910+                                                       echo "\n<p id='$key_id'><label id='$key-label'>";
911+                                                       if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
912+                                                       echo stripslashes($v["custom_field_name"]), "<input type='text' name='" , (empty($v["profile_field_key"])) ? $key : $v["profile_field_key"] , "' id='" , (empty($v["profile_field_key"])) ? $key : $v["profile_field_key"] , "' class='input' value='", $profileuser->$key, "' size='25' ";
913+                                                       if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
914+                                                       echo "/></label></p>";
915+                                                       $tabindex++;
916+                                                       break;
917+                                               case "select":
918+                                                       echo "\n<p id='$key_id'><label id='$key-label'>";
919+                                                       if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
920+                                                       echo stripslashes($v["custom_field_name"]);
921+                                                       echo "\n<select name='$key' id='$key'";
922+                                                       if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
923+                                                       echo ">";
924+                                                       $tabindex++;
925+                                                       $custom_field_options = explode(",", $v["custom_field_options"]);
926+                                                       foreach ( $custom_field_options as $custom_field_option ) {
927+                                                               $option = $this->sanitizeText($custom_field_option);
928+                                                               echo "<option id='$option' value=\"", stripslashes($custom_field_option), "\"";
929+                                                               if ( $profileuser->$key == stripslashes($custom_field_option) ) echo " selected='selected'";
930+                                                               echo ">", stripslashes($custom_field_option), "</option>";
931+                                                       }
932+                                                       echo "</select>";
933+                                                       echo "\n</label></p>";
934+                                                       break;
935+                                               case "checkbox":
936+                                                       echo "\n<p id='$key_id' style='margin-bottom:16px;'><label id='$key-label'>";
937+                                                       if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
938+                                                       echo stripslashes($v["custom_field_name"]), "</label>";
939+                                                       $custom_field_options = explode(",", $v["custom_field_options"]);
940+                                                       foreach ( $custom_field_options as $custom_field_option ) {
941+                                                               $option = $this->sanitizeText($custom_field_option);
942+                                                               echo "\n<input type='checkbox' name='", $key, "[]' id='$option' value=\"", stripslashes($custom_field_option), "\"";
943+                                                               if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
944+                                                               if ( is_array($profileuser->$key) && in_array(stripslashes($custom_field_option), $profileuser->$key) ) echo " checked='checked'";
945+                                                               if ( !is_array($profileuser->$key) && $profileuser->$key == stripslashes($custom_field_option) ) echo " checked='checked'";
946+                                                               echo " /><label id='$option-label' class='$key' for='$option'>&nbsp;", stripslashes($custom_field_option), "</label>";
947+                                                               $tabindex++;
948+                                                       }
949+                                                       echo "\n</p>";
950+                                                       break;
951+                                               case "radio":
952+                                                       echo "\n<p id='$key_id' style='margin-bottom:16px;'><label id='$key-label'>";
953+                                                       if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
954+                                                       echo stripslashes($v["custom_field_name"]), "</label>";
955+                                                       $custom_field_options = explode(",", $v["custom_field_options"]);
956+                                                       foreach ( $custom_field_options as $custom_field_option ) {
957+                                                               $option = $this->sanitizeText($custom_field_option);
958+                                                               echo "\n<input type='radio' name='$key' id='$option' value=\"", stripslashes($custom_field_option), "\"";
959+                                                               if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
960+                                                               if ( $profileuser->$key == stripslashes($custom_field_option) ) echo " checked='checked'";
961+                                                               echo " /><label id='$option-label' class='$key' for='$option'>&nbsp;", stripslashes($custom_field_option), "</label>";
962+                                                               $tabindex++;
963+                                                       }
964+                                                       echo "\n</p>";
965+                                                       break;
966+                                               case "textarea":
967+                                                       echo "\n<p id='$key_id'><label id='$key-label'>";
968+                                                       if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
969+                                                       echo stripslashes($v["custom_field_name"]), "<textarea name='" , (empty($v["profile_field_key"])) ? $key : $v["profile_field_key"] , "' id='" , (empty($v["profile_field_key"])) ? $key : $v["profile_field_key"] , "' cols='25' rows='5'";
970+                                                       if ( !empty($options["starting_tabindex"]) ) echo " tabindex='$tabindex'";
971+                                                       echo ">", $profileuser->$key, "</textarea></label></p>";
972+                                                       $tabindex++;
973+                                                       break;
974+                                               case "date":
975+                                                       echo "\n<p id='$key_id'><label id='$key-label'>";
976+                                                       if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
977+                                                       echo stripslashes($v["custom_field_name"]), "<input type='text' name='$key' id='$key' class='datepicker' value='", $profileuser->$key, "' size='25' ";
978+                                                       if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
979+                                                       echo " /></label></p>";
980+                                                       $tabindex++;
981+                                                       break;
982+                                               case "url":
983+                                                       echo "\n<p id='$key_id'><label id='$key-label'>";
984+                                                       if ( !empty($options["required_fields_asterisk"]) && !empty($v["required_on_registration"]) ) echo "*";
985+                                                       echo stripslashes($v["custom_field_name"]), "<input type='text' name='$key' id='$key' class='input' value='", $profileuser->$key, "' size='25' ";
986+                                                       if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
987+                                                       echo "/></label></p>";
988+                                                       $tabindex++;
989+                                                       break;
990+                                               case "hidden":
991+                                                       echo "\n<input type='hidden' name='$key' id='$key' value='", $profileuser->$key, "' ";
992+                                                       if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
993+                                                       echo "/>";
994+                                                       $tabindex++;
995+                                                       break;
996+                                               case "password":
997+                                                 if ( !empty($options["user_set_password"]) ) {
998+                                                   echo "\n<p id='pass1-p'><label id='pass1-label'>";
999+                                                   echo __("Password", "register-plus-redux"), "<input type='password' autocomplete='off' name='pass1' id='pass1' value='' size='25' ";
1000+                                                   if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
1001+                                                   echo "/></label></p>";
1002+                                                   $tabindex++;
1003+                                                   echo "\n<p id='pass2-p'><label id='pass2-label'>";
1004+                                                   echo __("Confirm Password", "register-plus-redux"), "<input type='password' autocomplete='off' name='pass2' id='pass2' value='' size='25' ";
1005+                                                   if ( !empty($options["starting_tabindex"]) ) echo "tabindex='$tabindex' ";
1006+                                                   echo "/></label></p>";
1007+                                                   $tabindex++;
1008+                                                   if ( !empty($options["show_password_meter"]) ) {
1009+                                                     echo "\n<div id='pass-strength-result'>", stripslashes($options["message_empty_password"]), "</div>";
1010+                                                     echo "\n<small id='pass_strength_msg'>", sprintf(__("Your password must be at least %d characters long. To make your password stronger, use upper and lower case letters, numbers, and the following symbols !@#$%%^&amp;*()", "register-plus-redux"), $options["min_password_length"]), "</small>";
1011+                                                   }
1012+                                                 }
1013+                                                 break;
1014+                                               case "sectiontitle":
1015+                                                       echo "\n<h2>";
1016+                                                       echo stripslashes($v["custom_field_name"]), "</h2>";
1017+                                                       $tabindex++;
1018+                                                       break;
1019+                                       }
1020+                               }
1021+                       }
1022+
1023+
1024+               }
1025+
1026                function AlterLoginForm() {
1027                        $options = get_option("register_plus_redux_options");
1028                        if ( isset($_GET["verification_code"]) ) {
1029***************
1030*** 1931,1937 ****
1031                function DatepickerHead() {
1032                        //global $pagenow;
1033                        //echo $pagenow;
1034!                       $custom_fields = get_option("register_plus_redux_custom_fields");
1035                        if ( !is_array($custom_fields) ) $custom_fields = array();
1036                        foreach ( $custom_fields as $k => $v ) {
1037                                if ( !empty($v["show_on_profile"]) ) {
1038--- 1980,1986 ----
1039                function DatepickerHead() {
1040                        //global $pagenow;
1041                        //echo $pagenow;
1042!                       $custom_fields = get_option("register_plus_redux_fields");
1043                        if ( !is_array($custom_fields) ) $custom_fields = array();
1044                        foreach ( $custom_fields as $k => $v ) {
1045                                if ( !empty($v["show_on_profile"]) ) {
1046***************
1047*** 1957,1963 ****
1048                }
1049 
1050                function ShowCustomFields( $profileuser ) {
1051!                       $custom_fields = get_option("register_plus_redux_custom_fields");
1052                       
1053                        if ( !empty($profileuser->invitation_code) || is_array($custom_fields) ) {
1054                                echo "<h3>", __("Additional Information", "register-plus-redux"), "</h3>";
1055--- 2006,2012 ----
1056                }
1057 
1058                function ShowCustomFields( $profileuser ) {
1059!                       $custom_fields = get_option("register_plus_redux_fields");
1060                       
1061                        if ( !empty($profileuser->invitation_code) || is_array($custom_fields) ) {
1062                                echo "<h3>", __("Additional Information", "register-plus-redux"), "</h3>";
1063***************
1064*** 2035,2041 ****
1065 
1066                function SaveCustomFields( $user_id ) {
1067                        global $wpdb;
1068!                       $custom_fields = get_option("register_plus_redux_custom_fields");
1069                        if ( !is_array($custom_fields) ) $custom_fields = array();
1070                        foreach ( $custom_fields as $k => $v ) {
1071                                if ( !empty($v["show_on_profile"]) ) {
1072--- 2084,2090 ----
1073 
1074                function SaveCustomFields( $user_id ) {
1075                        global $wpdb;
1076!                       $custom_fields = get_option("register_plus_redux_fields");
1077                        if ( !is_array($custom_fields) ) $custom_fields = array();
1078                        foreach ( $custom_fields as $k => $v ) {
1079                                if ( !empty($v["show_on_profile"]) ) {
1080***************
1081*** 2050,2110 ****
1082                        }
1083                }
1084 
1085-               function SaveAddedFields ( $user_id ) {
1086-                       global $wpdb;
1087-                       $options = get_option("register_plus_redux_options");
1088-                       $custom_fields = get_option("register_plus_redux_custom_fields");
1089-                       if ( !is_array($options["show_fields"]) ) $options["show_fields"] = array();
1090-                       if ( !empty($_POST["first_name"]) ) update_user_meta($user_id, "first_name", $wpdb->prepare($_POST["first_name"]));
1091-                       if ( !empty($_POST["last_name"]) ) update_user_meta($user_id, "last_name", $wpdb->prepare($_POST["last_name"]));
1092-                       if ( !empty($_POST["url"]) ) {
1093-                               $user_url = esc_url_raw( $_POST["url"] );
1094-                               $user_url = preg_match("/^(https?|ftps?|mailto|news|irc|gopher|nntp|feed|telnet):/is", $user_url) ? $user_url : "http://".$user_url;
1095-                               wp_update_user(array("ID" => $user_id, "user_url" => $wpdb->prepare($user_url)));
1096-                       }
1097-                       if ( in_array("aim", $options["show_fields"]) && !empty($_POST["aim"]) ) update_user_meta($user_id, "aim", $wpdb->prepare($_POST["aim"]));
1098-                       if ( in_array("yahoo", $options["show_fields"]) && !empty($_POST["yahoo"]) ) update_user_meta($user_id, "yim", $wpdb->prepare($_POST["yahoo"]));
1099-                       if ( in_array("jabber", $options["show_fields"]) && !empty($_POST["jabber"]) ) update_user_meta($user_id, "jabber", $wpdb->prepare($_POST["jabber"]));
1100-                       if ( in_array("about", $options["show_fields"]) && !empty($_POST["about"]) ) update_user_meta($user_id, "description", $wpdb->prepare($_POST["about"]));
1101-                       if ( !is_array($custom_fields) ) $custom_fields = array();
1102-                       foreach ( $custom_fields as $k => $v ) {
1103-                               $key = $this->sanitizeText($v["custom_field_name"]);
1104-                               if ( !empty($v["show_on_registration"]) && !empty($_POST[$key]) ) {
1105-                                       if ( is_array($_POST[$key]) ) $_POST[$key] = implode(",", $_POST[$key]);
1106-                                       if ( $v["custom_field_type"] == "url" ) {
1107-                                               $_POST[$key] = esc_url_raw( $_POST[$key] );
1108-                                               $_POST[$key] = preg_match("/^(https?|ftps?|mailto|news|irc|gopher|nntp|feed|telnet):/is", $_POST[$key]) ? $_POST[$key] : "http://".$_POST[$key];
1109-                                       }
1110-                                       update_user_meta($user_id, $key, $wpdb->prepare($_POST[$key]));
1111-                               }
1112-                       }
1113-                       if ( !empty($options["user_set_password"]) && !empty($_POST["password"]) ) {
1114-                               $plaintext_pass = $wpdb->prepare($_POST["password"]);
1115-                               update_user_option( $user_id, "default_password_nag", false, true );
1116-                               wp_set_password($plaintext_pass, $user_id);
1117-                       }
1118-                       if ( $created_by == "admin" && !empty($_POST["pass1"]) ) {
1119-                               $plaintext_pass = $wpdb->prepare($_POST["pass1"]);
1120-                               update_user_option( $user_id, "default_password_nag", false, true );
1121-                               wp_set_password($plaintext_pass, $user_id);
1122-                       }
1123-                       if ( !empty($options["enable_invitation_code"]) && !empty($_POST["invitation_code"]) )
1124-                               update_user_meta($user_id, "invitation_code", $wpdb->prepare($_POST["invitation_code"]));
1125-
1126-                       $created_by = "user";
1127-                       $ref = explode("?", $_SERVER["HTTP_REFERER"]);
1128-                       if ( $ref[0] == site_url("wp-admin/user-new.php") )
1129-                               $created_by = "admin";
1130-
1131-                       $user_info = get_userdata($user_id);
1132-                       if ( $created_by == "user" && (!empty($options["verify_user_email"]) || !empty($options["verify_user_admin"])) ) {
1133-                               update_user_meta($user_id, "stored_user_login", $wpdb->prepare($user_info->user_login));
1134-                               update_user_meta($user_id, "stored_user_password", $wpdb->prepare($plaintext_pass));
1135-                               $temp_user_login = $wpdb->prepare("unverified_".wp_generate_password(7, false));
1136-                               $wpdb->query("UPDATE $wpdb->users SET user_login = '$temp_user_login' WHERE ID = '$user_id'");
1137-                       }
1138-               }
1139-
1140                function defaultOptions( $key = "" )
1141                {
1142                        $blogname = stripslashes(wp_specialchars_decode(get_option("blogname"), ENT_QUOTES));
1143--- 2099,2104 ----
1144***************
1145*** 2201,2206 ****
1146--- 2195,2219 ----
1147                                return $default;
1148                }
1149 
1150+               function defaultFields( $key = '' )
1151+               {
1152+                 $default = array(
1153+                                  array("custom_field_name" => "First Name","custom_field_type" => "text","custom_field_options" => "","show_on_profile" => "","show_on_registration" => "","required_on_registration" => "","required_field" => 1,"required_field_key" => "first_name"),
1154+                                  array("custom_field_name" => "Last Name","custom_field_type" => "text","custom_field_options" => "","show_on_profile" => "","show_on_registration" => "","required_on_registration" => "","required_field" => 1,"required_field_key" => "last_name"),
1155+                                  array("custom_field_name" => "Website","custom_field_type" => "text","custom_field_options" => "","show_on_profile" => "","show_on_registration" => "","required_on_registration" => "","required_field" => 1,"required_field_key" => "url","profile_field_key" => "user_url"),
1156+                                  array("custom_field_name" => "AIM","custom_field_type" => "text","custom_field_options" => "","show_on_profile" => "","show_on_registration" => "","required_on_registration" => "","required_field" => 1,"required_field_key" => "aim"),
1157+                                  array("custom_field_name" => "Yahoo IM","custom_field_type" => "text","custom_field_options" => "","show_on_profile" => "","show_on_registration" => "","required_on_registration" => "","required_field" => 1,"required_field_key" => "yim"),
1158+                                  array("custom_field_name" => "Jabber / Google Talk","custom_field_type" => "text","custom_field_options" => "","show_on_profile" => "","show_on_registration" => "","required_on_registration" => "","required_field" => 1,"required_field_key" => "jabber"),
1159+                                  array("custom_field_name" => "About Yourself","custom_field_type" => "textarea","custom_field_options" => "","show_on_profile" => "","show_on_registration" => "","required_on_registration" => "","required_field" => 1,"required_field_key" => "description", "profile_field_key" => "description"),
1160+                                  array("custom_field_name" => "E-mail","custom_field_type" => "text","custom_field_options" => "","show_on_profile" => "","show_on_registration" => "","required_on_registration" => "","required_field" => 1,"required_field_key" => "user_email","profile_field_key" => "email"),
1161+                                  array("custom_field_name" => "Username","custom_field_type" => "text","custom_field_options" => "","show_on_profile" => "","show_on_registration" => "","required_on_registration" => "","required_field" => 1,"required_field_key" => "user_login")
1162+                                  );
1163+                 if ( !empty($key) )
1164+                   return $default[$key];
1165+                 else
1166+                   return $default;
1167+               }
1168+
1169                function sendVerificationMessage ( $user_id ) {
1170                        $user_info = get_userdata($user_id);
1171                        $options = get_option("register_plus_redux_options");
1172***************
1173*** 2250,2256 ****
1174                        wp_mail($user_info->user_email, $subject, $message);
1175                }
1176 
1177!               function sendAdminMessage ( $user_id, $plaintext_pass ) {
1178                        $user_info = get_userdata($user_id);
1179                        $options = get_option("register_plus_redux_options");
1180                        $subject = stripslashes($this->defaultOptions("admin_message_subject"));
1181--- 2263,2269 ----
1182                        wp_mail($user_info->user_email, $subject, $message);
1183                }
1184 
1185!               function sendAdminMessage ( $user_id ) {
1186                        $user_info = get_userdata($user_id);
1187                        $options = get_option("register_plus_redux_options");
1188                        $subject = stripslashes($this->defaultOptions("admin_message_subject"));
1189***************
1190*** 2294,2304 ****
1191                        $message = str_replace("%last_name%", stripslashes(get_user_meta($user_info->ID, "last_name", true)), $message);
1192                        $message = str_replace("%user_url%", get_user_meta($user_info->ID, "user_url", true), $message);
1193                        $message = str_replace("%aim%", get_user_meta($user_info->ID, "aim", true), $message);
1194!                       $message = str_replace("%yahoo%", get_user_meta($user_info->ID, "yahoo", true), $message);
1195                        $message = str_replace("%jabber%", get_user_meta($user_info->ID, "jabber", true), $message);
1196                        $message = str_replace("%about%", stripslashes(get_user_meta($user_info->ID, "about", true)), $message);
1197                        $message = str_replace("%invitation_code%", get_user_meta($user_info->ID, "invitation_code", true), $message);
1198!                       $custom_fields = get_option("register_plus_redux_custom_fields");
1199                        if ( !is_array($custom_fields) ) $custom_fields = array();
1200                        foreach ( $custom_fields as $k => $v ) {
1201                                $key = $this->sanitizeText($v["custom_field_name"]);
1202--- 2307,2317 ----
1203                        $message = str_replace("%last_name%", stripslashes(get_user_meta($user_info->ID, "last_name", true)), $message);
1204                        $message = str_replace("%user_url%", get_user_meta($user_info->ID, "user_url", true), $message);
1205                        $message = str_replace("%aim%", get_user_meta($user_info->ID, "aim", true), $message);
1206!                       $message = str_replace("%yim%", get_user_meta($user_info->ID, "yim", true), $message);
1207                        $message = str_replace("%jabber%", get_user_meta($user_info->ID, "jabber", true), $message);
1208                        $message = str_replace("%about%", stripslashes(get_user_meta($user_info->ID, "about", true)), $message);
1209                        $message = str_replace("%invitation_code%", get_user_meta($user_info->ID, "invitation_code", true), $message);
1210!                       $custom_fields = get_option("register_plus_redux_fields");
1211                        if ( !is_array($custom_fields) ) $custom_fields = array();
1212                        foreach ( $custom_fields as $k => $v ) {
1213                                $key = $this->sanitizeText($v["custom_field_name"]);
1214***************
1215*** 2388,2449 ****
1216        }
1217  }
1218 
1219! if ( class_exists("RegisterPlusReduxPlugin") )
1220!       $registerPlusRedux = new RegisterPlusReduxPlugin();
1221 
1222! function custom_wp_new_user_notification() {
1223!       $options = get_option("register_plus_redux_options");
1224!       $do_create = false;
1225!       if ( !empty($options["verify_user_email"]) ) $do_create = true;
1226!       if ( !empty($options["disable_user_message_registered"]) ) $do_create = true;
1227!       if ( !empty($options["disable_user_message_created"]) ) $do_create = true;
1228!       if ( !empty($options["custom_user_message"]) ) $do_create = true;
1229!       if ( !empty($options["verify_user_admin"]) ) $do_create = true;
1230!       if ( !empty($options["disable_admin_message_registered"]) ) $do_create = true;
1231!       if ( !empty($options["disable_admin_message_created"]) ) $do_create = true;
1232!       if ( !empty($options["custom_admin_message"]) ) $do_create = true;
1233!       return $do_create;
1234! }
1235 
1236! if ( custom_wp_new_user_notification() == true ) {
1237!       if ( function_exists("wp_new_user_notification") ) {
1238!               add_action("admin_notices", array($registerPlusRedux, "ConflictWarning"));
1239!       }
1240!       
1241!       // Called after user completes registration from wp-login.php
1242!       // Called after admin creates user from wp-admin/user-new.php
1243!       // Called after admin creates new site, which also creates new user from wp-admin/network/edit.php (MS)
1244!       // Called after admin creates user from wp-admin/network/edit.php (MS)
1245!       if ( !function_exists("wp_new_user_notification") ) {
1246!               function wp_new_user_notification($user_id, $plaintext_pass = "") {
1247!                       global $wpdb, $registerPlusRedux;
1248!                       $created_by = "user";
1249!                       $ref = explode("?", $_SERVER["HTTP_REFERER"]);
1250!                       if ( $ref[0] == site_url("wp-admin/user-new.php") )
1251!                               $created_by = "admin";
1252!                       $options = get_option("register_plus_redux_options");
1253!                       if ( !empty($options["user_set_password"]) && !empty($_POST["password"]) )
1254!                               $plaintext_pass = $wpdb->prepare($_POST["password"]);
1255!                       if ( $created_by == "admin" && !empty($_POST["pass1"]) )
1256!                               $plaintext_pass = $wpdb->prepare($_POST["pass1"]);
1257!                       if ( $created_by == "user" && !empty($options["verify_user_email"]) ) {
1258!                               $registerPlusRedux->sendVerificationMessage($user_id);
1259!                       }
1260!                       if ( $created_by == "user" && empty($options["disable_user_message_registered"]) ||
1261!                               $created_by == "admin" && empty($options["disable_user_message_created"]) ) {
1262!                               if ( empty($options["verify_user_email"]) && empty($options["verify_user_admin"]) ) {
1263!                                       $registerPlusRedux->sendUserMessage($user_id, $plaintext_pass);
1264!                               }
1265!                       }
1266!                       if ( $created_by == "user" && empty($options["disable_admin_message_registered"]) ||
1267!                               $created_by == "admin" && empty($options["disable_admin_message_created"]) ) {
1268!                               $registerPlusRedux->sendAdminMessage($user_id, $plaintext_pass);
1269!                       }
1270                }
1271        }
1272  }
1273-
1274- $options = get_option("register_plus_redux_options");
1275- if ( !empty($options["enable_invitation_tracking_widget"]) )
1276-       include_once("dashboard_invitation_tracking_widget.php");
1277  ?>
1278\ No newline at end of file
1279--- 2401,2485 ----
1280        }
1281  }
1282 
1283! if ( class_exists("RegisterPlusReduxPlugin") ) $registerPlusRedux = new RegisterPlusReduxPlugin();
1284 
1285! if ( function_exists("wp_new_user_notification") )
1286!       add_action("admin_notices", array($registerPlusRedux, "ConflictWarning"));
1287 
1288! // Called after user completes registration from wp-login.php
1289! // Called after admin creates user from wp-admin/user-new.php
1290! // Called after admin creates new site, which also creates new user from wp-admin/network/edit.php (MS)
1291! // Called after admin creates user from wp-admin/network/edit.php (MS)
1292! if ( !function_exists("wp_new_user_notification") ) {
1293!       function wp_new_user_notification($user_id, $plaintext_pass = "") {
1294!               global $wpdb, $registerPlusRedux;
1295!               $ref = explode("?", $_SERVER["HTTP_REFERER"]);
1296!               $created_by = "user";
1297!               if ( $ref[0] == site_url("wp-admin/user-new.php") )
1298!                       $created_by = "admin";
1299!               $options = get_option("register_plus_redux_options");
1300!               if ( !is_array($options["show_fields"]) ) $options["show_fields"] = array();
1301!               if ( !empty($_POST["first_name"]) ) update_user_meta($user_id, "first_name", $wpdb->prepare($_POST["first_name"]));
1302!               if ( !empty($_POST["last_name"]) ) update_user_meta($user_id, "last_name", $wpdb->prepare($_POST["last_name"]));
1303!               if ( !empty($_POST["url"]) ) {
1304!                       $user_url = esc_url_raw( $_POST["url"] );
1305!                       $user_url = preg_match("/^(https?|ftps?|mailto|news|irc|gopher|nntp|feed|telnet):/is", $user_url) ? $user_url : "http://".$user_url;
1306!                       wp_update_user(array("ID" => $user_id, "user_url" => $wpdb->prepare($user_url)));
1307!               }
1308!               if ( in_array("aim", $options["show_fields"]) && !empty($_POST["aim"]) ) update_user_meta($user_id, "aim", $wpdb->prepare($_POST["aim"]));
1309!               if ( in_array("yim", $options["show_fields"]) && !empty($_POST["yim"]) ) update_user_meta($user_id, "yim", $wpdb->prepare($_POST["yim"]));
1310!               if ( in_array("jabber", $options["show_fields"]) && !empty($_POST["jabber"]) ) update_user_meta($user_id, "jabber", $wpdb->prepare($_POST["jabber"]));
1311!               if ( in_array("about", $options["show_fields"]) && !empty($_POST["about"]) ) update_user_meta($user_id, "description", $wpdb->prepare($_POST["about"]));
1312!               $custom_fields = get_option("register_plus_redux_fields");
1313!               if ( !is_array($custom_fields) ) $custom_fields = array();
1314!               foreach ( $custom_fields as $k => $v ) {
1315!                       $key = $registerPlusRedux->sanitizeText($v["custom_field_name"]);
1316!                       if ( !empty($v["show_on_registration"]) && !empty($_POST[$key]) ) {
1317!                               if ( is_array($_POST[$key]) ) $_POST[$key] = implode(",", $_POST[$key]);
1318!                               if ( $v["custom_field_type"] == "url" ) {
1319!                                       $_POST[$key] = esc_url_raw( $_POST[$key] );
1320!                                       $_POST[$key] = preg_match("/^(https?|ftps?|mailto|news|irc|gopher|nntp|feed|telnet):/is", $_POST[$key]) ? $_POST[$key] : "http://".$_POST[$key];
1321!                               }
1322!                               update_user_meta($user_id, $key, $wpdb->prepare($_POST[$key]));
1323!                       }
1324!               }
1325!               if ( !empty($options["user_set_password"]) && !empty($_POST["password"]) ) {
1326!                       $plaintext_pass = $wpdb->prepare($_POST["password"]);
1327!                       update_user_option( $user_id, "default_password_nag", false, true );
1328!                       wp_set_password($plaintext_pass, $user_id);
1329!               }
1330!               if ( $created_by == "admin" && !empty($_POST["pass1"]) ) {
1331!                       $plaintext_pass = $wpdb->prepare($_POST["pass1"]);
1332!                       update_user_option( $user_id, "default_password_nag", false, true );
1333!                       wp_set_password($plaintext_pass, $user_id);
1334!               }
1335!               if ( empty($plaintext_pass) ) {
1336!                       $plaintext_pass = wp_generate_password();
1337!                       update_user_option( $user_id, "default_password_nag", true, true );
1338!                       wp_set_password($plaintext_pass, $user_id);
1339!               }
1340!               if ( !empty($options["enable_invitation_code"]) && !empty($_POST["invitation_code"]) )
1341!                       update_user_meta($user_id, "invitation_code", $wpdb->prepare($_POST["invitation_code"]));
1342!               $user_info = get_userdata($user_id);
1343!               if ( $created_by == "user" && (!empty($options["verify_user_email"]) || !empty($options["verify_user_admin"])) ) {
1344!                       update_user_meta($user_id, "stored_user_login", $wpdb->prepare($user_info->user_login));
1345!                       update_user_meta($user_id, "stored_user_password", $wpdb->prepare($plaintext_pass));
1346!                       $temp_user_login = $wpdb->prepare("unverified_".wp_generate_password(7, false));
1347!                       $wpdb->query("UPDATE $wpdb->users SET user_login = '$temp_user_login' WHERE ID = '$user_id'");
1348!               }
1349!               if ( $created_by == "user" && !empty($options["verify_user_email"]) ) {
1350!                       $registerPlusRedux->sendVerificationMessage($user_id);
1351!               }
1352!               if ( $created_by == "user" && empty($options["disable_user_message_registered"]) ||
1353!                       $created_by == "admin" && empty($options["disable_user_message_created"]) ) {
1354!                       if ( empty($options["verify_user_email"]) && empty($options["verify_user_admin"]) ) {
1355!                               $registerPlusRedux->sendUserMessage($user_id, $plaintext_pass);
1356!                       }
1357!               }
1358!               if ( $created_by == "user" && empty($options["disable_admin_message_registered"]) ||
1359!                       $created_by == "admin" && empty($options["disable_admin_message_created"]) ) {
1360!                       $registerPlusRedux->sendAdminMessage($user_id);
1361                }
1362        }
1363  }
1364  ?>
1365\ No newline at end of file