Email-Users v4.4.1-beta-4 now available

This evening I updated the beta version of Email Users 4.4.1 to beta-4.  This version addresses the issue with user settings reverting which was reported here, here, and here.  I have implemented the solution proposed by @maximinime on the WordPress Support Forums.

Email Users Custom List (726 downloads)

Please download and test the beta release.  Report back any issues and I’ll do what I can to fix them quickly.

Email Users Beta (678 downloads)

Odd behavior with PHP’s method_exists() function

I recently had a report from a user that many of the pages within the wp-SwimTeam plugin were blank.  This is odd and incorrect behavior but I have seen it before.  When I last chased it down I found that the way various versions of PHP 5.2.x and 5.3.x handled Constructors was different and in some versions Constructors in parent classes would be called and in some versions they wouldn’t.

I assumed this new report of blank pages meant that I had missed one of these Constructor issues somewhere.  It turns out that wasn’t the case.  This time I found that PHP’s method_exists() function behaves differently between different versions of PHP on different platforms.

The report came in from a site running PHP 5.3.13 which is the same as what I am running in my development area.  The only difference I can see between the two servers is mine is running on Windows under IIS where as the problematic site is running Apache under Linux.

When a page is rendered for wp-SwimTeam, the objects on the page are traversed and HTML code is generated.  The objects which comprise the page content can either be strings (HTML code) or objects themselves which then traversed recursively until all of the leaf HTML is assembled.  This is core functionality in phpHtmlLib that I have been using for years without any issues until now.

What I found was that if the variable passed to method_exists() was a string instead of an object, PHP goes out in the weeds and never returns which ultimately results in the blank page.  This is the code that has been rendering objects in phpHtmlLib for 10+ years:

if (method_exists($item, "render") ) {

It was fairly simple to fix it.  By checking to see if the item is an object prior to checking for it’s render method, the problem is resolves and the page renders correctly.

if (is_object($item) && method_exists($item, "render") ) {

I will be updating phpHtmlLib with this fix shortly.

Email-Users 4.4.1-beta-3 available

This afternoon I updated the beta version of Email Users 4.4.1 to beta-3.  This version improves the Custom Group filter options by introducing a new Custom Group Meta Key filter.  It builds on the Custom Group Meta Filter but eliminates a lot of the work required if a filter on a Meta Key is desired instead of a Meta Key and Value pair.

For example the following code will yield a Send to Group Form with selections based on any possible value of a User Meta Key by the name of ‘department’:

add_action( 'mailusers_group_custom_meta_key_filter', 'send_to_departments', 5 );
function send_to_departments()
{
mailusers_register_group_custom_meta_key_filter('department', null, 'send_to_departments_label');
}
function send_to_departments_label($mk, $mv)
{
return(ucwords($mk) . ' = ' . ucwords($mv)) ;
}

The only required argument is the first one, which is the name of the Meta Key.  The second argument is an optional Meta Value and the third argument is an optional callback which accepts two strings, Meta Key and Meta Value, and returns a string which is used as the selection text on the form.

EU_SS_07

I have updated the example plugin again to create the filter which results in the image above, the examples I have done previously are still in the file however are commented out.  You can download it and drop it into  your plugins directory to see menus like shown in the beta-1 post.

Email Users Custom List (726 downloads)

Please download and test the beta release.  Report back any issues and I’ll do what I can to fix them quickly.

Email Users Beta (678 downloads)

Email-Users 4.4.1-beta-2 available

I have uploaded v4.4.1. beta-2 for Email Users.  This version changes the custom filters previously defined to be a “user” filter and introduces a “group” filter.  If you have used the “Send to Group” feature, you can now define a series of filters that you can send to.   There are examples of sending to the “Police” and “Fire” departments in the example filter plugin (see below).

EU_SS_06

I have updated the example plugin to create the filters, you download it and drop it into  your plugins directory to see menus like shown in the beta-1 post.

There is also a new option on the plugin settings page to control where bounced emails are sent.

Email Users Custom List (726 downloads)

Please download and test the beta release.  Report back any issues and I’ll do what I can to fix them quickly.

Email Users Beta (678 downloads)

Work-Around for Google Forms problem

It is no longer necessary to use this work-around, the WordPress Google Forms plugin now supports the new version of Google Forms.  This post remains here are part of the development history of the plugin.

Thanks to a tip form Kevin Dillon, a work-around to the problem with new Google Forms has been identified!  Legacy Google Forms are still available IF you start creating the form by opening a SpreadSheet first.  Once the spreadsheet is open, select “Create a legacy Form” from the “Tools” menu.  The form editor and published URL will be the same as those that had worked prior to the Google Forms update.

wpGForm_SS-002wpGForm_SS-003

WordPress Google Form Update

I have spent some time comparing low level WP_Http results against wget results and have come to the conclusion that Google Cookies aren’t being passed through the series of redirect which happens when viewing a Google Form with the new URL scheme.

Unfortunately I am not sure what to do about it yet.  The usually very helpful WordPress Hackers mailing list is surprising quiet right now.  I am trying to figure out if I can “remember” cookies and pass them along each time a redirect happens.  I am reasonably confident that is what is needed however making it happen within the WordPress context is another story!

Google change to breaks WordPress Google Form

Last week Google introduced a significant update to Google Forms.  In addition to a very different UI, the format of the public URL has changed AND more importantly, it has broken my WordPress Google Form plugin.

The change only seems to affect forms created from scratch using the new version of Google Forms.  My plugin is dependent on the WordPress HTTP API to retrieve the form from Google and with the new URL format, the API is returning an error.  I am trying to figure out what Google doesn’t like.

What is odd is I am able to successfully retrieve the form using the wget utility (a Unix command line tool for retrieving remote content) however wp_remote_get() doesn’t work.

I wish had some better news to report but right now I am stumped as to why this isn’t working.

If anyone has any ideas, I have posted some of the low level debug stuff on PastBin.

Email-Users 4.4.1-beta-1 available

I have fixed a couple of minor bugs, added German Language support and introduced new functionality to send email to a custom list of users based on meta data.  The ability to target a specific list of users based on user meta data is a feature that was requested a while back on the WordPress support form.

The new Customer Meta Filter List functionality allows the the site to create a custom list of users by adding an action in either the theme’s functions.php file or in a stand-alone plugin.

EU_SS_04 EU_SS_05

Unfortunately I ran into a WordPress limitation while working on this functionality.  The  ability to match user meta data through the WordPress get_users() API doesn’t work as expected with the LIKE and NOT LIKE comparisons.  In an effort to protect the SQL, WordPress wraps the value being compared with wildcards to the match is either too permissive (matches too much) or too restrictive (matches to little).

I have opened a WordPress Trac ticket and submitted a patch for this problem but until it gets fixed (or the patch in the Trac ticket is applied), only standard comparisons work.  The “Last Name: M” example won’t work without the patch nor will the “First Name: Not D”.

I have written an example plugin to create the above filters, you download it and drop it into  your plugins directory to see menus like shown above:

Email Users Custom List (726 downloads)

Please download and test the beta release.  Report back any issues and I’ll do what I can to fix them quickly.

Email Users Beta (678 downloads)