With Nubay, there were no badges set in their CiviCRM record - I'm not sure if that's set automatically or manually. Manually entering '["contributor-empowering","partner-empowering"]' and badges appeared as expected.
The join date issue is more problematic - the year is from the CiviMember join date. As an 'empowering partner' that should be 2015, but it seems to be using the CiviSpark 2018 join date, it could also use an ESR join date. I'm not sure if Views/CiviMember integration is setup for multiple memberships, so don't know what the quick fix would be, other than a manual date field. This is probably a problem on any record who has multiple memberships.
Indeed I did implement it originally, though that was a good few years ago now and I wouldn't be surprised if stuff has moved underneath it. I think people might have tweaked the implementation also. Might be just as easy to think it through again / come up with a simpler solution.
I'm in favor a rework. It seems to be becoming increasingly problematic. It seems like the "partner since" should be rather easy given that it's pulling from the membership start date. We could just adjust those on a case by case basis.
The bugginess is most frequent in the display of the badge(s).
Updated 6 partners today, some of which I've done previously. Added priority tag to this because it's not good when partners raise it to our attention. Rework options seem to be:
fix existing code
redo new code
create a manual process
We should not invest too much time as we are preparing for some sort of site transition.
@michaelmcandrew since you're the original author, do you have any interest in taking a look?
I can't promise that I will have a lot of time to spend on it but can take a quick look. @bgm (or anyone else) could you point me to the repo containing custom drupal modules and extensions for the civicrm site is these days. I have lost track of that. I should then be able to narrow down where the custom code is for all this.
Manually making changes to the badges is not a good approach because it is always going to be overridden next time something triggers the badges to be updated automatically, e.g. a membership is updated, and you will be constantly trying to guess when this has happened. Better to identify the root cause, or turn off the automatic update and handle everything manually.
First thing to check would be that the code is functioning correctly. Running civicrm_org_providers_update_provider(37138) would run the code for nubay.
If it is not working correctly, we can then fix the function.
If it is working correctly, then something else, outside of the code I wrote, is deleting that field and really we need to track down what that is causing that.
If in the end you can't track that down, then you could potentially add code to update all providers each time drupal's cron runs, hence making sure the badges are recalculated often enough that it only a short lived problem. But if it whatever is happening to change it is happening often enough, it could still be wrong a significant amount of the time.
Could there be a non-custom fix using CiviRules? ie create sub-tags or a custom multi-select for all the different badge types and apply this based on conditions:
Membership type
Contribution hours above a certain level
And then the /experts View can use that tag to load the right badge(s), similar to how it does now, e,g. {tag}-badge.png?
As a partner, I have mixed feelings about removing them:
Odoo does display an equivalent to badges (gold/silver/bronze, and more specific badges, such as the certification level)
Not everyone agrees with the current ranking method (well, more specifically, I don't)
I'd be in favour of adding even more badges, such as "does maintenance-upgrades-and-not-just-free-kittens", "does not hack core", "uses a relatively recent version of CiviCRM", "uses ESR", etc.
Symbiotic does display the badge (page footer). So does CiviDesk, AGH (although outdated badge), etc.
While supporting CiviCRM is the "right thing to do", there still needs to be some incentives to do so. For Symbiotic, increasing our partnership translated into a direct significant increase of our sales leads, and the quality of the sales leads.
Even for contributors, having a badge that represents the number of hours logged is a form of incentive to logging hours (even if, personally, I hate logging hours, because it's more overhead and most of my contributions are in sets of 15 minutes interruptions between two tasks, but they probably add up to 1-2 hour per day).
I would prefer if the partner listing:
Sorted by financial contributions first, then listed volunteer contributions
Instead of a badge, it could be a more simple textual representation (design is not my cup of tea)
We could automatically select the country of the person, if there are partners in that country (which is what Moodle does, and it works well, because there are only 4-5 partners per country: https://moodle.com/partners/)
There has been some discussion about changing the partner programme but it is not clear yet what direction that is taking. I would prefer to see conclusion on that bigger picture first rather than ad-hoc removal of badges now. Let's figure out why we have a partner programme and what we want to achieve with it, then badges or not are an outflow of that. Barcelona?
Added a filter: "Membership Type IN (partner types)"
Missing Badges:
module civicrm_org_providers, fixed the SQL query so that it checks only Memberships Types linked to "CiviCRM" and not Membership Types linked to other orgs (CiviCRM ES, CiviCRM Spark). It was already checking against Spark, but not ESR. The new query should be more future-proof.