Jake Vanderwerf
2026-08-25 3d25ad7de4fdbb3eba2cde2a62422e6be5d79a0a
inc/helpers/members.php
@@ -1,7 +1,9 @@
<?php
use JVBase\managers\Cache;
use JVBase\managers\Roles;
use JVBase\meta\Meta;
use JVBase\registrar\Registrar;
if (!defined('ABSPATH')) {
   exit;
@@ -16,7 +18,7 @@
 */
function jvbShareName(int $userID):string
{
    $cache = Cache::for('usernames')->connect('user');
    $cache = Cache::for('usernames', 'user');
   return $cache->remember(
      $userID,
      function() use ($userID) {
@@ -33,7 +35,7 @@
 */
function jvbGetUserByFirstName(string $first_name):WP_User|false
{
    $cache = Cache::for('userFirstname')->connect('user', true);
    $cache = Cache::for('userFirstname', 'user');
   return $cache->remember(
      $first_name,
      function() use ($first_name) {
@@ -73,7 +75,7 @@
 */
function jvbGetUserByDisplayName(string $display_name):WP_User|false
{
    $cache = Cache::for('displayNames')->connect('user', true);
    $cache = Cache::for('displayNames', 'user');
    $cached = $cache->get($display_name)??false;
    if ($cached && is_int($cached)) {
@@ -112,7 +114,7 @@
function jvbGetUsername(int $user_id):string
{
    $key = 'user_display_names';
    $cache = Cache::for('userNames', WEEK_IN_SECONDS)->connect('user');
    $cache = Cache::for('userNames', 'user',WEEK_IN_SECONDS);
    $cached = $cache->get($user_id);
    if ($cached) {
@@ -153,7 +155,7 @@
        return false;
    }
    $cache = Cache::for('artist', 3600)->connect('post');
    $cache = Cache::for('artist', 'post', 3600);
   $cached = $cache->get($userID);
   if ($cached) {
      return match ($return) {
@@ -172,7 +174,7 @@
    if (!$user) {
        return [];
    }
    $id = (int) get_user_meta($userID, BASE.'link', true);
    $id = (int) get_user_meta($userID, BASE.'profile_link', true);
   $meta = Meta::forPost($id);
   $artist = $meta->getAll(['first_name','type','city','shop']);
@@ -209,11 +211,41 @@
      return 'admin';
   }
    $user = ($ID === 0) ? wp_get_current_user() : get_userdata($ID);
    return array_values(array_intersect(
        array_keys(array_merge(JVB_USER, ['administrator'])),
        array_map(function ($role) {
            return jvbNoBase($role);
        },
        $user->roles)
    ))[0];
    return array_values(array_values(array_intersect(
      array_merge(Registrar::getRegistered('user'), ['administrator']),
      array_map(function ($role) {
         return jvbNoBase($role);
      },
         $user->roles)
   )))[0];
}
function  jvbUserProfileLink(int $userID):string|false
{
   $cache = Cache::for('userLink', 'user');
   return $cache->remember(
      $userID,
      function() use ($userID) {
         $user = get_userdata($userID);
         if (!$user) {
            return false;
         }
         $role = jvbUserRole($userID);
         $registrar = Registrar::getInstance($role);
         if (!$registrar || !$registrar->profile_link) {
            return false;
         }
         $link = get_user_meta($userID, BASE.'profile_link', true);
         //Try to create it
         if (empty($link)) {
            $link = Roles::getInstance()()->addUserLink($user, $role);
            if (!$link) {
               return false;
            }
         }
         $status = get_post_status($link);
         return ($status === 'publish') ? get_the_permalink($link) : false;
      }
   );
}