Status of Badging System - Beta 1

Dear All,

Here is the current status of the badging system:

  • The Beta 1 phase of the new badging system is close to completion.
  • 42 prototype badges have been "allocated"
  • 6 prototype badge slots are held in reserve
  • The "alert you have new badges" prototype is running and is currently under testing.
  • The Beta 1 system seems to be running OK.

TODO:

  • Continue logging, testing and debugging the "new badge" alerting system.
  • Clean up PHP code including creating include files, functions, arrays, etc.
  • Let the current Beta 1 system run for a "while" before adding any new major features.
  • Award and write up various member achievement awards based on input and recommendations (when not developing code).

Overall, I'm happy with how quickly we were able to get this rapid development prototype badging system up and running and the results.

Again, a Big Thank You to Ravinder Singh for this idea. Much appreciated. I have enjoyed coding this project and now see how valuable a badging system can be for forum Members, Moderators and Admins. Great idea Ravinder.

Also, I greatly appreciate those who have been patience with me as I have quickly put this prototype together over the holidays. Thank You.

4 Likes

Update:

Based on testing, I just changed the "Time A Member" badge (the clock) logic to:

if ($time_inactive < $year) {
    if ($years_a_member >= 10) {
        $color['fajoin_time'] = 'black';
    } elseif ($years_a_member >= 5) {
        $color['fajoin_time'] = 'indigo';
    } elseif ($years_a_member >= 2) {
        $color['fajoin_time'] = 'blue';
    } elseif ($years_a_member >= 1) {
        $color['fajoin_time'] = 'limegreen';
    } else {
        $color['fajoin_time'] = 'lightgray';
    }
} else {
    $color['fajoin_time'] = 'red';
}

Basically, changed the colors to make the badge more accurate and appealing.

Note: Some recent members (over the past week) with only a few years active here may see a badge color change.

Update:

  • Testing is going well. Worked out a very few minor bugs with the alerts formatting.
  • Installed the alert code to mobile (bottom of the screen) and testing. Works fine.
  • Still testing for exceptional conditions, etc.
1 Like

I have been testing the badging system, and it works really good.

The only hiccup (with I have a work-around for) is that when I add new badges to the grid in the future, which includes enabling the "Reserved" badges, this causes a change in the hash values and also in the arrays, so a "new badge alert" is issued.

I created a work-around which reverses the order of the PHP array_diff_assoc() call and then compares the size of the two arrays (in forward and reverse order), and so when I bring a new badge on line to the grid, there is no alert generated.

So, I may bring all of the badges "online" even though they are now in "reserve" so that all badges will have a default color assigned; and then assigning a new color to a member (assigning the badge a state) will insure a proper alert.

These are small nuances from testing, and actually, could just bring them all on line and turn off alerts for a day or two, and then turn alerts back on, and it would work out as well.

At some point, when we code a new live application, we need to say "it's good enough" and stop trying to make the code perfect, and I'm getting close to that point.

Basically, the badging system and the alerts work fine and I continue to test them for exceptional situations, and basically, not 100% as I would like, but very good :slight_smile:

2 Likes

TODO Idea:

  • Create database table and upload user "new badge" messages to the DB.
  • Create a page which updates in near real-time when users are issued new badges.
  • Create a filter selection on that page where the badge-alerts can be filtered based on status, user group id, registration time, etc.

This kind of a page will useful for both moderators and members a large.

However, this kind of page will be a specific page application, so the updates will only be seen when viewing that page, not just popping up when unwanted. Having this on a single, app-specific page will keep this from being annoying or intrusive.