wp-SwimTeam v1.40-beta-6 available

I have just uploaded beta-6 of wp-SwimTeam v1.40.  This is a very minor update, the only fix is to deal with a typo which causes the activation process to fail.  If you had updated the plugin by simply dropping the beta release on top of your existing install, you would not have encountered this problem.

The type came about as I have started adding roles and capabilities to wp-SwimTeam (which has been a long standing request).  I have some basic roles and capabilities defined however they are not currently being used for anything.  Their first use will be to allow access to the plugin menus on the Dashboard.  More to come on this later.

wp-SwimTeam Beta (276 downloads)

wp-SwimTeam v1.40-beta-4 available

This morning I posted beta-4 of wp-SwimTeam v1.40.  This beta update addresses a number of issues mentioned recently on the WordPress Support Forum.

  1. Support for Age Groups where min and max age are identical.
  2. Mapping zero (0) as upper and lower max age in event files to min and max age in wp-SwimTeam.

There are a few other fixes as well plus some debug code cleanup.  I still have a couple of things to clean up before releasing v1.40.  Also in this build as are the basic building blocks for Roles and Capabilities.  If you use a Roles and Capabilities plugin, you may see some new swim team related data which has been defined but is not yet being used.

wp-SwimTeam Beta (276 downloads)

Roster Export Improvements – Coming Soon!

Here is a tease of some improvements I am making to the Roster Export functionality.



Currently when the roster is exported there is no control over which swimmers are included.  All active swimmers are always included.  Similarly, each format must be exported separately.

This new functionality will allow the ability to export gender specific rosters and/or multiple formats at the same time.

The next release of wp-SwimTeam will also require an update to phpHtmlLib which I had to make in order to properly implement this functionality.

Stay tuned!

wp-SwimTeam v1.40-beta-1 now available

I have uploaded a preliminary build of wp-SwimTeam v1.40-beta-1.  This build introduces new functionality to support mixed gender and combined age groups.  It also fixes a number of small bugs I encountered along the way.

I have not done thorough testing on it as I don’t have access to MM and TM right now to validate the changes.  However, I am reasonably confident that the changes I’ve made will have little to no impact on Hy-tek compatibility.

If you run into any issues, let me know and I’ll get them fixed as quickly as I can.

wp-SwimTeam Beta (276 downloads)

Changes to Age Groups

I am working on some new functionality to support mixed gender events.  While I am at it I have decided to fix a limitation with the current Age Groups where the need to define overlapping age groups works but causes some discrepancies on the roster and other reports.

I have enhanced the definition of an Age Group so it can either be “Standard” (which is what it has always been) or “Combined”.  A combined age group can support mixed genders and/or age ranges that span multiple age groups.  By differentiating two types of age groups it cleans up the issues with overlapping age groups too.

Here are a couple of screen shots of what the changes look like.  I am running through some testing now to make sure everything still works.

wpst_SS_03 wpst_SS_04

Supporting Mixed-Gender Events

It turns out adding support for mixed-gender events isn’t as simple as I thought it might be.  Because so much of wp-SwimTeam revolves around age groups, I haven’t made it very easy on myself to add this enhancement.

Events are tied to age groups so in order to add a mixed gender event, I need a mixed gender age group to associate it with.  A mixed-gender age group doesn’t really make any sense although it is similar to another feature which isn’t easy to support – age groups which are supersets of other age groups.

I have learned that some leagues have “special” events which are open to swimmers from multiple age groups.  For example:  The league my niece and nephew swim in has open freestyle events at the end of the meet.  There are two age groups (10 and under, 11-18) for each gender.  The wp-SwimTeam definition of an age group doesn’t work well for these groups either although it isn’t as problematic as a mixed gender event it.

After noodling around with a few ideas I think I have come to the conclusion that I need some sort of Age Group classification to allow defining a group which spans ages and/or genders.  I am struggling with nomenclature for these groups but I believe the fundamental idea is sound.

For now I am referring to these special age groups as a “Combined” age group.  They will not be counted in swimmer population numbers but will be used for Events and Entries.

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.

phpHtmlLib v2.6.5.3569 released

This morning I release an update to phpHtmlLib which resolves an issue for users still running sites based on PHP 5.2.  The recent update to address early PHP 5.3.x releases contained code which was not 5.2.x compatible.  This update addresses that problem.  You can find the update on the Download and Installation page or as a Dashboard Update from the WordPress plugin repository.

wp-SwimTeam v1.36.973 released

This morning I released v1.36.973 of wp-SwimTeam.  This build addresses a bug which prevents Users from signing up for job from the Jobs tab.

Yesterday I released v1.35.971 which addressed a problem when there were zero swimmers (aka a new installation) in the system.  This bug caused some of the pages to display oddly for the Roster and list of Swimmers.  Lastly, I enhanced the registration email such that it includes the Optional Field data defined for a swimmer.  This enhancement is only included when using HTML formatted email.  The Plain Text email continues to be very brief in nature.

You can find the latest version of wp-SwimTeam on the Download and  Installation page or in the WordPress Plugin repository.  I also released an update to phpHtmlLib yesterday which addresses the very odd situation which resulted in blank pages within the wp-SwimTeam Dashboard.