From 11f29668ba55c9ef92865a1cfab3d76b25aef086 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 01 May 2026 17:28:13 +0000
Subject: [PATCH] =Basic setup. Still need to define fields and SEO settings for most content and taxonomies

---
 edmontonink.php |  212 +++++++++++++++++++++++++++++-----------------------
 1 files changed, 117 insertions(+), 95 deletions(-)

diff --git a/edmontonink.php b/edmontonink.php
index d2d8702..6983b8d 100644
--- a/edmontonink.php
+++ b/edmontonink.php
@@ -47,8 +47,15 @@
         return;
     }
     $site = Site::getInstance();
-    $site->set('icons', 'light');
+    $site->set('icons', 'regular');
     $site->setAll([
+        'is_directory',
+        'membership',
+        'dashboard',
+        'magic_link',
+        'feed_block',
+        'favourites',
+        'help_menu'
 //        'has_map',
 //        'referrals',
     ]);
@@ -56,100 +63,46 @@
         'cloudflare',
         'facebook',
         'gmb',
+        'maps',
         'helcim',
         'postmark',
         'instagram',
         'umami'
     ]);
+
+    $login = $site->login();
+
 }
-/**
- * Defines base options like:
- *         - directory & Membership
- *         - dashboard
- *         - membership settings (JVB_MEMBERSHIP)
- *         - post types (JVB_CONTENT)
- *         - taxonomies (JVB_TAXONOMY)
- *         - User Roles (JVB_USER)
- *         - enthusiast     = (bool) short form for a subscriber-like user that can collect content for reference
- *         - forum            = (bool) create a forum
- *         - member_only    = (bool) if forum and this is true, creates a member-only forum in the custom dashboard
- *
- * as well as central filters for
- *         - rewrite rules
- *         - archive title
- */
-add_filter('jvb_site', 'aei_setup_site');
-function aei_setup_site():array
+
+add_action('plugins_loaded', 'aei_membership_settings', 10);
+function aei_membership_settings():void
 {
-    return [
-        'icons'               => 'light',
-        'is_directory'        => false,        //as in, a membership directory
-        'has_membership'      => false,
-        'has_map'             => true,
-        'dashboard'           => true,
-        'referrals'           => true,
-        'magicLink'           => true,
-        'support'         => false,
-        'feed_block'      => false,
-        'email_notifications' => false,
-        'integrations'  => [
-            'bluesky'     => false,
-            'cloudflare'  => true,
-            'facebook'    => true,
-            'maps'        => true,
-            'gmb'         => true,
-            'helcim'      => true,
-            'postmark'    => true,
-            'instagram'   => true,
-            'square'      => false,
-            'umami'       => true,
-        ],
-        'is_restaurant'       => false,
-        'limit_hours'         => false,
-        'enthusiast'          => false,
-        'favourites'          => false,    //optional flag to allow enthusiasts, but not favourites
-    ];
+    if (!class_exists('JVBase\base\Site')) {
+        return;
+    }
+    $site = Site::getInstance();
+    $membership = $site->membership();
+    $membership->setAll([
+        'invitable',
+        'term_approval',
+        'member_verified'
+    ]);
+
+    $membership->setInvitable([
+        'artist'    => ['artist', 'enthusiast'],
+        'enthusiast' => ['enthusiast']
+    ]);
+
+    $membership->setApprovers(['artist']);
+    $membership->setCanSeeForum(['artist']);
 }
-/**
- * JVB_MEMBERSHIP defines the structure of the directory
- *         Options include:
- *         - membership_expires        = useful if members pay a yearly membership fee
- *         - hide_expired                = removes users once membership expired; only used if membership_expires is true
- *         - clip_expired                = keeps users once membership expires, but limits the information shown; only used if membership_expires is true
- *         - membership_approval        = verified users can approve other users
- *         - term_approval              = (bool) verified users can create new terms, but needs approval
- *          - member_only              = (array) if empty, open to any registered user. otherwise an array of registered user roles
- */
-//add_filter('jvb_membership', 'aei_setup_membership');
-//function aei_setup_membership():array
-//{
-//    return [
-//        'member_content'  => true,
-//        'can_invite'      => ['artist' => ['artist']],
-//        'member_verified' => true,
-//        'notifications'   => true,
-//        'forum'           => true,
-//        'member_only'     => [ 'artist' ],
-//        'member_expires'  => false,
-//        'hide_expired'    => false,
-//        'clip_expired'    => false,
-//        'term_approval'   => true,
-//        'can_approve'     => [ 'artist' ]
-//    ];
-//}
-//
-//add_filter('jvbLoadingQuips', 'aei_loading_quips');
-//function aei_loading_quips(array $quips):array
-//{
-//    return [];
-//}
 
 
-add_filter('jvbBelowHeader', 'aei_header');
-function aei_header(string $header):string
-{
-    return '<p>FREE LOCAL PICKUP at <a href="https://legacytattooremoval.ca/">Legacy Tattoo Removal</a>.</p>';
-}
+//add_filter('jvbBelowHeader', 'aei_header');
+//function aei_header(string $header):string
+//{
+//    return '<p>FREE LOCAL PICKUP at <a href="https://legacytattooremoval.ca/">Legacy Tattoo Removal</a>.</p>';
+//}
 
 
 
@@ -200,7 +153,7 @@
 function alyns_acknowledgement():string
 {
 
-    return '<p>amiskwacîwâskahikan ᐊᒥᐢᑲᐧᒋᐋᐧᐢᑲᐦᐃᑲᐣ</p><p><a href="https://www.treatysix.org/#comp-lkljqlw1" title="Learn More">Treaty 6 territory</a></p><p>Edmonton, Alberta, Canada</p>';
+    return '<p class="text-center">Respectfully, this land was <a href="https://edmonton.ink/amiskwaciwaskahikan/" data-type="page" data-id="4659">Amiskwaciwâskahikan</a> before it was ever Edmonton.</p>';
 }
 
 
@@ -227,19 +180,88 @@
 add_filter('jvbRandomFooterText', 'aei_footer_text');
 function aei_footer_text(string $text):string
 {
-    $privacy = get_privacy_policy_url();
-    $privacy = ($privacy === '') ? '' : ' | <a href="'.$privacy.'">Privacy Policy</a>';
-    return '<p class="font-small">©'.date('Y').' <a href="https://madimori.ca/">Madi Mori</a>'.$privacy.'</p><p class="font-small">Built with ♡ by <a href="https://jakevan.ca">Jake Van</a></p>';
+    $aOpen = '<a href="https://legacytattooremoval.ca" title="Learn more about Legacy Tattoo Removal">';
+    $options = array(
+        [
+            'text'      => 'Built with ♡ by '.$aOpen.'your friendly neighbourhood laser nerds</a>.',
+            'weight'    => 25
+        ],
+        [
+            'text'      => 'Built with ♡ by your friends at '.$aOpen.'Legacy Tattoo Removal</a>.',
+            'weight'    => 15
+        ],
+        [
+            'text'      => 'Your friendly '.$aOpen.'Edmonton tattoo removal</a> crew.',
+            'weight'    => 15
+        ],
+        [
+            'text'      => $aOpen.'tattoo removal with ♡</a>',
+            'weight'    => 15
+        ],
+        [
+            'text'      => 'From '.$aOpen.'cover ups to fresh starts</a> - we\'re the laser nerds with ♡.',
+            'weight'    => 10
+        ],
+        [
+            'text'      => $aOpen.'See the difference at Legacy Tattoo Removal</a>',
+            'weight'    => 10
+        ],
+        [
+            'text'      => 'Make space for your next tattoo at '.$aOpen.'Legacy Tattoo Removal</a>.',
+            'weight'    => 10
+        ],
+        [
+            'text'      => $aOpen.'We\'re your artist\'s secret weapon</a>.',
+            'weight'    => 15
+        ]
+    );
+        $totalWeight = 0;
+        foreach ($options as $option) {
+            $totalWeight += (int)$option['weight'];
+        }
+
+        $randomNumber = mt_rand(1, $totalWeight);
+        $weightSum = 0;
+
+        foreach ($options as $option) {
+            $weightSum += (int)$option['weight'];
+            if ($randomNumber <= $weightSum) {
+                return '<p>'.$option['text'].'</p>';
+            }
+        }
+
+    return '<p>'.$options[0]['text'].'</p>';
 }
 
 add_filter('jvbRegisterCustomIcons', 'aei_custom_icons');
 function aei_custom_icons(array $icons):array
 {
-    $icons['background'] = AEI_DIR . '/assets/icons/background.svg';
-//    $icons['logo-jakevan'] = AEI_DIR . '/assets/icons/logo-concentric-jakevan.svg';
-//    $icons['logo-right'] = AEI_DIR . '/assets/icons/logo-right-aligned.svg';
-//    $icons['logo-right-jakevan'] = AEI_DIR . '/assets/icons/logo-right-aligned-jakevan.svg';
-//    $icons['jakevan'] = AEI_DIR . '/assets/icons/jakevan.svg';
-//    $icons['loading'] = AEI_DIR . '/assets/icons/loading.svg';
+    $icons['logo'] = AEI_DIR . '/assets/icons/edmonton-ink-logo.svg';
+    $icons['logo-text'] = AEI_DIR . '/assets/icons/edmonton-ink-circle.svg';
     return $icons;
+}
+add_filter('jvbMapIcons', 'aei_icons_map');
+function aei_icons_map(array $icons):array
+{
+    return array_merge($icons, [
+       'tattoo'     => 'drop-simple',
+       'event'      => 'calendar',
+       'piercing'   => 'needle',
+       'artwork'    => 'palette',
+       'artform'    => 'shapes',
+       'city'       => 'map-pin',
+        'piercing-type' => 'nut',
+        'theme'     => 'folder-open',
+        'style'     => 'hash',
+        'colour'    => 'drop',
+        'placement' => 'person-arms-spread',
+        'media'     => 'squares-four',
+        'artist'    => 'user',
+        'artists'   => 'users-three',
+        'partner'   => 'currency-circle-dollar',
+        'shop'      => 'storefront',
+        'past'      => 'clock-counter-clockwise',
+        'future'    => 'clock-clockwise',
+        'offer'     => 'hand-heart',
+    ]);
 }
\ No newline at end of file

--
Gitblit v1.10.0