Current Array of Badges (Beta 1)

Here is the current array of the short description of badges for the new prototype badging system (Beta 1) with 42 icons allocated (prototype logic written) and 6 reserved (for future use);

<?php
$badges_desc = array(
    "fauser" => "Total Post Count",
    "faaward" => "First Post",
    "fajediorder" => "100 Posts",
    "faphoenix" => "500 Posts",
    "fajedi" => "1,000 Posts",
    "faatom" => "10,000 Posts",
    "fascale" => "Moderator",
    "facrab" => "Order of the Crab",
    "fawizard" => "Order of the Wizards's Hat",
    "facrow" => "Order of the Raven",
    "fahippo" => "Order of the Hippo",
    "faspider" => "Order of the Spider",
    "fadragon" => "Order of the Dragon",
    "fabuilding" => "Administrator",
    "fabishop" => "Forum Advisor",
    "facity" => "Web Dev Ops",
    "faflask" => "Formulator",
    "fathumbsup" => "Total Thanks Received",
    "fatrophy" => "100 Thanks Received",
    "fachalkboardteacher" => "1,000 Thanks Received",
    "fashieldalt" => "2,000 Thanks Received",
    "fastroopwafel" => "3,000 Thanks Received",
    "fafirstorderalt" => "4,000 Thanks Received",
    "faidbadge" => "Member Profile",
    "faaddressbook" => "Contact Methods",
    "fabtc" => "Bits",
    "fauniversity" => "Bits Banker",
    "fausergraduate" => "Activity",
    "farocket" => "Thanks This Past Month",
    "facomment" => "Post This Past Month",
    "faterminal" => "Discussions Started This Past Month",
    "fabolt" => "Posts Per Day",
    "faknight" => "Discussions Started",
    "fadownload" => "Attachments Uploaded",
    "fatags" => "Tags Added",
    "faeye" => "Discussion Started Views",
    "fainfraction" => "Infraction Points",
    "fathanks_given" => "Thanks Given",
    "fapatreon" => "Patreon Sponsor",
    "fajoin_time" => "Years A Member",
    "fahistory" => "Days In A Row Active",   // May change this to weeks instead of days....
    "fashare" => "Shared Project or Story",
    "farook" => "Reserved",
    "fabug" => "Reserved",
    "faking" => "Reserved",
    "facode" => "Reserved",
    "facogs" => "Reserved",
    "fapawn" => "Reserved",
);

When I am back at my desk (currently out of town), I plan to:

  • Write and test the logic for the "Days In A Row Active" (may change this to weeks instead of days....) badge and change the Font Awesome icon for this new badge.
  • Continue to test the "Badge Alert" function, which works OK but needs a bit of refinement and more testing, and then implement this for all.

Then, after that is working OK, Beta 1 will be done; and I'll start on Beta 2; but before I go to Beta 2, I will spend a few days to:

  • Rest and Relax from Coding?
  • Rewrite and clean up the rapid prototyping PHP code (create functions, include files, arrays, loops, as needed).
  • Open a discussion thread for comments and questions on Beta 1.
  • Do a write up describing each badge and the description and states / levels (colors).

In a nutshell, for colors:

  • Black - Highest Badge Level
  • Indigo - Level Below Black
  • Blue - Level Below Indigo
  • Green - Starter / Beginner Level (Level Below Blue)
  • Light Gray - Neutral (No Badge)
  • Orange Red - Below Neutral
  • Red - Below Orange Red

Most badges go from Light Gray (Neutral) to Black (similar to a martial arts progressions, but not exactly); however other badges are just "awarded", so they are either Light Gray (not awarded) or Black (awarded). A small number of badges, like infractions or lack of forum activity can be "less than neutral", Orange Red or Red (martial arts progression does not work this way, so it's not strictly a martial arts color scheme, obviously).

At this time, I don't have time to write all of this up in the form of a "users manual" (like most developers) and detail in non technical terms, but when I clean up the PHP code, I will publish that code and make the actual code (logic) public so everyone can see the exact logic behind each badge.

Then, after some time, and things stabilize, someone will do a complete writeup. (I will ask someone to volunteer to do the write up).

Thanks for your patience. It's a lot of coding, but the end of the prototype is coming soon!

4 Likes

Also, I want to thank everyone for their patience as we continue to develop our new badging system.

It's going to be great and these things take time; so that you for your patience during this growth and transition phase.

When the badging system is developed it will be easier for moderators to moderate the forums and all moderation will be completely transparent to all members. In addition, the badging system will help all members understand their progress, activity and participation in the forums.

Thank you again for your patience as I code this new system for the benefit of everyone.

4 Likes

FYI,

Please see this first draft function to check the badges:

https://www.unix.com/web-programming/280729-function-check\_badges-color-uid-limit-300-_debug-true.html

I think the implementation has been really well done. The badge system the Fedora project uses is quite nice too.

1 Like

Thanks. I'm testing the alerts now, step-by-step. Also, starting to clean up my early PHP, making functions, arrays, etc.

My thoughts are that after we get past the initial beta, the new badging system will evolve to be very good for everyone here.

Will add a new "Weeks Active in a Row" (sequence) badge soon, completing the initial 42 proto-badges with 6 in reserve.

Update to two badges (infractions and thanks given to others). This only effect members with less than 5 posts.

In a nutshell these two badges will remain lightgray as default until the user has 5+ posts:

$queryi = "SELECT ipoints AS infractions FROM user WHERE userid =" . $uid;
    $resultsi = $db->query_first_slave($queryi);
    if ($resultsi['infractions'] >= 30 || $modaluser['usergroupid'] == 11) {
        $color['fainfraction'] = 'red';
    } elseif ($resultsi['infractions'] >= 10) {
        $color['fainfraction'] = 'orangered';
    } elseif ($resultsi['infractions'] >= 7) {
        $color['fainfraction'] = 'limegreen';
    } elseif ($resultsi['infractions'] >= 5) {
        $color['fainfraction'] = 'blue';
    } elseif ($resultsi['infractions'] > 0) {
        $color['fainfraction'] = 'indigo';
    } else if($modaluser['posts'] > 4) {
         $color['fainfraction'] = 'black';
    } else  {
         $color['fainfraction'] = 'lightgray';
    }
$queryTG = "SELECT post_thanks_user_amount AS thanks_given FROM user WHERE userid =" . $uid;
    $resultsTG = $db->query_first_slave($queryTG);
    if ($resultsTG['thanks_given'] >= 1000) {
        $color['fathanks_given'] = 'black';
    } elseif ($resultsTG['thanks_given'] >= 500) {
        $color['fathanks_given'] = 'indigo';
    } elseif ($resultsTG['thanks_given'] >= 50) {
        $color['fathanks_given'] = 'blue';
    } elseif ($resultsTG['thanks_given'] > 0) {
        $color['fathanks_given'] = 'limegreen';
    } elseif ($modaluser['posts'] > 4) {
        $color['fathanks_given'] = 'red';
    } else {
        $color['fathanks_given'] = 'lightgray';
    }
1 Like

FYI, I'm working on a prototype to add "on click" popovers to each badge in the grid which will explain the badge and eventually inform members what they need to do to be awarded this badge. For example, if you have 800 posts, the badge awarded at 1K Posts will inform everyone that the member needs 200 more posts to be awarded this badge. Still working things out... maybe a few days or so before I get it working in beta.

Coming soon!

2 Likes