Question? Invitation Codes

So, I’m in the middle of revising the invitation code system for a specific user. In the process I’ve got myself into a quandary. This user needs each invitation code to be unique, so there will be a new option to only allow invitation codes to be used once. That pretty much satisfied them for the immediate time. Now, I’ve come across two problems. First, when a user is deleted, should their invitation code be deleted too? I’m thinking we need an option for this behavior. Second, if an invitation code is deleted, what should happen? This one’s trickier and could require several changes. So, I present the question to you, loyal Redux users. Let me know what you think.




Posted in Register Plus Redux | 18 Comments

Add New User?

You know what’s awesome? There is no way to alter the admin Add New User page… at all. No actions whatsoever. Ugh. I’ll have to create my own Add New User page someday. Lame.

Posted in Register Plus Redux, Wordpress | 8 Comments

Still Kicking

Just a quick note, Redux isn’t abandoned… yet. No really, I’m working on digesting all these requests and questions, the.system I have in place to track bugs and feature requests just isn’t cutting it.

Posted in Blogging, Register Plus Redux | 68 Comments

wp_new_user_notification Conflicts

This will be where I discuss and attempt to resolve wp_new_user_notification conflicts.

Maintenance Mode
Resolved in version 5.3 of Maintenance Mode
Was loading pluggable.php from constructor. Please refer to The Case of Maintenance Mode for more information.

Login with Ajax
Resolved in version 3.0b3 of Login with Ajax.
Defines its own wp_new_user_notification. Plugin now only defines wp_new_user_notification under certain conditions.

Absolute Privacy
Defines its own wp_new_user_notification.

Events Calendar
Is loading pluggable.php from constructor.

Mingle
Is loading pluggable.php from constructor. But not quite so bluntly, Mingle’s code determines whether it needs to load pluggable before loading it. There must be some calls that need to be moved around to get Mingle to stop loading pluggable. This could be traceable, but only by a dedicated Mingle user or developer. The root offending file is MngUtils.php located in the mingle\classes\models directory.

PDF24 Article to PDF
Is loading pluggable.php from constructor.

TDO Mini Forms
Is loading pluggable.php from constructor.

Cimy User Extra Fields

WP Better Email

Posted in Register Plus Redux | 94 Comments

Conflicts Begone

As more users become aware of Register Plus Redux, more and more conflicts are coming in. Each time I receive notification I download the offending plugin and try to figure out, why this author did that, each time I’m left scratching my head. I’m sure any developer looking at Redux’s code for the first time would feel the same way. There’s no comments to guide you down the yellow brick road, no rhyme or reason either, it sometimes seems.

However, today, two completely different users came to me with two completely different questions, and between the two of them, I realized I’ve been dealing with these conflicts all wrong; I should be reducing my dependency on wp_new_user_notification. I tried to do that when I first starting developing Redux, but at that time I couldn’t make much sense of WordPress’ complicated code base. My how things change over two months. I now see the error in my ways.

The following functions are executed in order when a new user registers:

func register_new_user (wp-login)
func wp_create_user (registration)
func wp_insert_user (registration)
-> action user_register (registration)
func wp_new_user_notification (pluggable)

Previously the user metadata was taken from the $_POST and entered into the database within a defined wp_new_user_notification. Because of this, our wp_new_user_notification had to handle conditions where no changes were made. This could lead to problems in the future should WordPress change their default message I would need to modify Redux to reflect that. Not something I particularly want to keep track of (not that I even know how). Upon digging around, I found the user_register hook that happens within the wp_insert_user function, which happens just before wp_new_user_notification is triggered. Now Redux more appropriately does its metadata entry within the wp_insert_user function and only defines a wp_new_user_notification function if the user has enabled any options that modify the user or admin messages. As of 3.7.0, the following options will trigger Redux to define its own wp_new_user_notification:

verify_user_email
verify_user_admin
disable_user_message_registered
disable_user_message_created
custom_user_message
disable_admin_message_registered
disable_admin_message_created
custom_admin_message

Therefore, anyone taking advantage of those options still needs to worry about conflicting plugins, but otherwise, many users should see fewer conflicts.

This is a great change for the better and it wouldn’t have been possible without feedback from Tevya Washburn and Theron Welch. Redux wouldn’t be where it is today without dedicated users willing to report their troubles, questions, and ideas. Thank you to all the users. I’ll keep making this plugin the best it can be.

Posted in Register Plus Redux | 23 Comments

load_plugin_textdomain Timing

Interesting question, should load_plugin_textdomain() be done in the constructor, or during WordPress’ init action? I’ve found conflicting information, and I know that the constructor was working previously, but, IMO, the constructor’s a bad place to do much of anything so starting in version 3.7 of Register Plus Redux, I’ve moved this call to the init action. I’d like to learn more about this so if anyone has anymore information, please let me know.

Posted in Wordpress | Leave a comment

Adam’s Form

In which we test, Adam’s Form.

[adams-form]

Posted in Blogging | 1 Comment

Disclaimer, etc. without Checkbox

Not all disclaimers need a checkbox, add option to enable/disable the accept checkbox.

UPDATE 10/21/2010: Added this feature in 3.6.20

Biggest issue with this feature had to do with the Settings Page behavior. Normally, when savings the settings, I create a new array with all the settings from the settings page. If a setting is blank, I don’t save it, subsequently when something checks against that setting a blank is equivalent to it being unchecked. This conflicts with the behavior of the default settings check. The default settings are checked to ensure any new, or renamed settings are available to the admin. However, when the default settings is enabled, and we saved the setting as disabled (effectively deleting that setting), the default check sees this as a new settings and adds it back, enabled.

I dealt with a similar issue when saving the custom fields which are in a series of arrays. I still haven’t gotten that working perfectly, but the method I used there will work perfectly in this scenario. Now when a setting is saved, if it has a value (checked) it saves that value (1), if it does not have a value (unchecked) is saves a null value. The null preserves the fact that yes, we intentionally disabled this setting, and stops the default check from reloading the default value. In fact, I believe I will rewrite all the settings to save this way. It’s much more logical. Interesting how the smallest features create big changes.

Posted in History | 6 Comments

Date Field Type and jQuery Datepicker

skullbit’s datepicker code is so disgustingly outdated, and oddly enough, no one cares. I saw a few mentions about this on the Register Plus forum, but not a lot of complaining. Well, ok, I want to fix it, because I expect to have all the same functionality as the original Register Plus, but this isn’t a huge priority.

UPDATE 10/20/2010: Completed for 3.6.20

There’s a few caveats, first off, Datepicker doesn’t currently feature any of the customization Register Plus had. Secondly, I didn’t add any i18n. I’ll deal with either of these issues if/when someone asks for them.

The hardest part of implementing this was adding the datepicker to the user-edit and profile pages. I eventually figured out how to isolate the admin-head to those pages but it was far harder to research then I expected. I’ll have to write something up for future reference.

Posted in History | 1 Comment

The Road to 3.7

Just a quick update. I am looking to release one final 3.6 version with jQuery working in browsers other than Firefox (done), the jQuery Datepicker working (done), and one final enhancement, an option to turn on/off the accept checkbox for the disclaimer, privacy policy, and license (done). Once those features have baked for a week I will finally release 3.7 with i18n, l10n, f-u-n, etc. That will mark the end of Register Plus to Redux. Following 3.7 I will add WordPress MU and MS support. I’m currently working on that, but I’m going to put it on hold for a day or two to get 3.7 out. Also following 3.7, but perhaps not 3.8 I am going to rewrite the settings page. After reviewing a competing product I find Redux a little bit wanting in both ease of use, and power. A working framework is fundamental though, so 3.7 will stay pretty much the same, followed by 3.8 with some new features, and 4.0 rewritten from scratch to satisfy all your friends and family.

Also, I’ve mulled over the issue of charging users to register. I don’t see this on the immediate roadmap, but I think I’ve found a compromise I can live with. This will be a paid feature, I haven’t figured out all the logistics of it, but I’ll probably create a little addon that enables the feature. As of yet, this will be the only paid feature I write. I write WordPress plugins to improve the community, to give something back to all the other generous coders out there making valuable websites and other plugins. My heart isn’t it to charge people for this plugin, but, I can see the value of this feature and I want to provide it to my own exacting standards. The way I see it, if you are going to charge people to register, you can pay me to charge them. The only thing I really need to figure it out is how much should I charge? It definitely won’t be anything exorbitant, I’m thinking $10-$20. I’d welcome anyone’s opinion on the matter, for or against charging, cost, implementation, whatever.

In the meantime, look forward to a little stability. It’s time to take this stuff seriously, people are actually using this plugin for professional sites, I want a professional product for them, and myself.

Posted in Register Plus Redux | 8 Comments