Jake Vanderwerf
2026-08-26 ccf5e61a075c35d24befc175994b5cb8957ca322
inc/rest/routes/ShopRoutes.php
@@ -2,10 +2,13 @@
namespace JVBase\rest\routes;
use JVBase\JVB;
use JVBase\managers\Emails;
use JVBase\managers\Errors;
use JVBase\managers\ImageGenerator;
use JVBase\managers\UploadManager;
use JVBase\registrar\Registrar;
use JVBase\rest\RestRouteManager;
use JVBase\meta\MetaManager;
use JVBase\meta\Meta;
use WP_REST_Request;
use WP_REST_Response;
use WP_Error;
@@ -16,6 +19,7 @@
}
/***
 * @deprecated
 * WORKFLOW:
 *      1) Users with 'manage_shop' permissions can invite folks to this shop
 *      2) If user is already a registered member:
@@ -102,7 +106,7 @@
            ]);
        }
        $queue = JVB()->queue();
        $queue = Queue::getInstance();
        unset($data['user']);
        $operationID = $data['id'];
        unset($data['id']);
@@ -148,8 +152,8 @@
            ];
        }
        $meta = new MetaManager($shop, BASE.'shop');
      $allowed = jvbGetFields('shop', 'term');
        $meta = Meta::forTerm($shop);
      $allowed = Registrar::getFieldsFor('shop');
      $setData = array_filter(
         $data,
         function ($key) use ($allowed) {
@@ -161,18 +165,18 @@
      foreach ($setData as $name => $value) {
         if ($name === 'shop') {
            JVB()->routes('shop')->requestShopAdmission($operation->user_id, $value);
            $this->requestShopAdmission($operation->user_id, $value);
            $setData['requested_shop'] = $value;
            unset($setData['shop']);
         }
         if (array_intersect(array_keys($data), ['image_portrait', 'shop', 'city', 'type', 'top_style','display_name'])) {
                if (array_key_exists('image_portrait', $data) || $meta->getValue('image_portrait') !== '') {
                if (array_key_exists('image_portrait', $data) || $meta->get('image_portrait') !== '') {
                    $this->checkGenerateThumbnail($user_id, $this->buildThumbnailData($user_id));
                }
            }
      }
      $results = $meta->setAll($setData);
      $meta->setAll($setData);
//        $results = [];
//
@@ -184,13 +188,13 @@
//            } else {
//                if ($name === 'shop') {
//                    JVB()->routes('shop')->requestShopAdmission($operation->user_id, $value);
//                    $results[] = $meta->updateValue('requested_shop', $value);
//                    $results[] = $meta->set('requested_shop', $value);
//                }
//
//            }
//
//            if (array_intersect(array_keys($data), ['image_portrait', 'shop', 'city', 'type', 'top_style','display_name'])) {
//                if (array_key_exists('image_portrait', $data) || $meta->getValue('image_portrait') !== '') {
//                if (array_key_exists('image_portrait', $data) || $meta->get('image_portrait') !== '') {
//                    $this->checkGenerateThumbnail($user_id, $this->buildThumbnailData($user_id));
//                }
//            }
@@ -226,8 +230,8 @@
            $data['name'] = $shop->name;
        }
        if (!array_key_exists('city', $data)) {
            $meta = new MetaManager($data['shop'], 'term');
            $city = $meta->getValue('city');
            $meta = Meta::forTerm($data['shop']);
            $city = $meta->get('city');
            if ($city !== '') {
                $city = get_term($city, BASE.'city');
                if ($city && !is_wp_error($city)) {
@@ -237,7 +241,7 @@
                }
            }
        }
        $queue = JVB()->queue();
        $queue = Queue::getInstance();
        $queue->queueOperation(
            'shop_image',
            $user_id,
@@ -259,7 +263,7 @@
            return $result;
        }
        $data['imageType'] = 'shop';
        $fileGenerator = new UploadManager('shop', $operation->user_id);
        $fileGenerator = UploadManager::getInstance(); //('shop', $operation->user_id);
        $generator = new ImageGenerator($data, $fileGenerator);
        $result = $generator->generate();
        if ($result['success']) {
@@ -531,7 +535,7 @@
            return;
        }
        // Get shop managers
        $shopMeta = new MetaManager($shopID, 'term');
        $shopMeta = Meta::forTerm($shopID, 'term');
      $owners = $shopMeta->getAll(['managers', 'owner']);
        $owners = array_unique(array_merge($owners['managers'], $owners['owner']));
@@ -542,7 +546,7 @@
        // Notify each manager
        foreach ($owners as $owner) {
            JVB()->notification()->addNotification(
            NotificationManager::getInstance()->addNotification(
                $owner,
                'artist_request',
                [
@@ -678,7 +682,7 @@
        // If user exists, send notification through the system
        if ($existing_user_id) {
            JVB()->notification()->addNotification(
            NotificationManager::getInstance()->addNotification(
                $existing_user_id,
                'artist_invitation',
                $manager_id,
@@ -735,7 +739,7 @@
            esc_url($invitation_url)
        );
        return JVB()->email()->sendEmail($email, $subject, $message);
        return Emails::getInstance()->sendEmail($email, $subject, $message);
    }
    /**
@@ -799,7 +803,7 @@
        // If invitation was for an existing user, notify them
        $user_id = email_exists($invitation->email);
        if ($user_id) {
            JVB()->notification()->addNotification(
            NotificationManager::getInstance()->addNotification(
                $user_id,
                'invitation_revoked',
                $manager_id,
@@ -867,7 +871,7 @@
        // Notify the artist
        $notification_type = $status === 'accepted' ? 'shop_accepted' : 'shop_rejected';
        JVB()->notification()->addNotification(
        NotificationManager::getInstance()->addNotification(
            $request->user_id,
            $notification_type,
            [
@@ -988,7 +992,7 @@
            $inviters = json_decode($invitation['inviters'], true);
            if (!empty($inviters)) {
                foreach ($inviters as $inviter_id) {
                    JVB()->notification()->addNotification(
                    NotificationManager::getInstance()->addNotification(
                        $inviter_id,
                        'invitation_accepted',
                        [
@@ -1004,7 +1008,7 @@
            return true;
        } catch (Exception $e) {
            $wpdb->query('ROLLBACK');
            JVB()->error()->log(
            Errors::getInstance()->log(
                'shop',
                "Error accepting artist invitation: " . $e->getMessage(),
                [
@@ -1058,7 +1062,7 @@
            $inviters = json_decode($invitation['inviters'], true);
            if (!empty($inviters)) {
                foreach ($inviters as $inviter_id) {
                    JVB()->notification()->addNotification(
                    NotificationManager::getInstance()->addNotification(
                        $inviter_id,
                        'invitation_declined',
                        [
@@ -1072,7 +1076,7 @@
            return true;
        } catch (Exception $e) {
            JVB()->error()->log(
            Errors::getInstance()->log(
                'shop',
                "Error declining artist invitation: " . $e->getMessage(),
                [
@@ -1154,7 +1158,7 @@
            return true;
        } catch (Exception $e) {
            $wpdb->query('ROLLBACK');
            JVB()->error()->logError("Error adding artist to shop: " . $e->getMessage(), [
            Errors::getInstance()->logError("Error adding artist to shop: " . $e->getMessage(), [
                'user_id' => $user_id,
                'shop_id' => $shop_id
            ]);
@@ -1218,13 +1222,13 @@
            // Create a notification for the shop owner/manager
            $shop_name = get_term($shop_id, BASE . 'shop')->name;
            $shop_meta = new MetaManager($shop_id, 'term');
            $shop_meta = Meta::forTerm($shop_id);
         $owners = $shop_meta->getAll(['owner', 'managers']);
         $owners = array_unique(array_merge(explode(',', $owners['owner']),explode(',', $owners['managers'])));
            foreach ($owners as $owner_id) {
                if (!empty($owner_id)) {
                    JVB()->notification()->addNotification(
                    NotificationManager::getInstance()->addNotification(
                        $owner_id,
                        'artist_left',
                        $user_id,
@@ -1238,7 +1242,7 @@
            return true;
        } catch (Exception $e) {
            $wpdb->query('ROLLBACK');
            JVB()->error()->log(
            Errors::getInstance()->log(
                'shop',
                "Error removing artist from shop: " . $e->getMessage(),
                [
@@ -1345,10 +1349,10 @@
        $userLink = get_user_meta($user, BASE . 'link', true);
        $userMeta = new MetaManager($user, 'user');
        $artistMeta = new MetaManager($userLink, 'post');
        $userMeta = Meta::forUser($user);
        $artistMeta = Meta::forPost($userLink);
        $shopMeta = new MetaManager($shop, 'term');
        $shopMeta = Meta::forTerm($shop);
        error_log('Setting '.$type.' permissions:'.print_r([
            'userLink'  => $userLink,
@@ -1365,7 +1369,7 @@
        $user->add_cap('manage_shop', $grant);
        $user->add_cap('manage_shop_'.$shop, $grant);
        $shops = $userMeta->getValue($uMeta);
        $shops = $userMeta->get($uMeta);
        $shops = ($shops === '') ? [] : explode(',', $shops);
        if ($grant) {
            if (!in_array($shop, $shops)) {
@@ -1381,18 +1385,17 @@
        $shops = implode(',', $shops);
        $userMeta->updateValue($uMeta, $shops);
        $userMeta->set($uMeta, $shops);
        $artistMeta->updateValue($aMeta, $shops);
        $artistMeta->set($aMeta, $shops);
        $owners = $shopMeta->getValue($sMeta);
        $owners = $shopMeta->get($sMeta);
        $owners = ($owners === '') ? [] : explode(',', $shops);
        if (!in_array($user->ID, $owners)) {
            $owners[] = $user->ID;
        }
        $owners = implode(',', $owners);
        $shopMeta->updateValue($sMeta, $owners);
        $shopMeta->set($sMeta, $owners);
        return true;
    }
}