From cf7c6dae604a0bbd471afa156f82555a5a2e9ab7 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Thu, 28 May 2026 19:26:52 +0000
Subject: [PATCH] =gitblit switch
---
files/fileManagement.php | 444 -------------------------------------------------------
1 files changed, 0 insertions(+), 444 deletions(-)
diff --git a/files/fileManagement.php b/files/fileManagement.php
index 312d3aa..b3d9bbc 100644
--- a/files/fileManagement.php
+++ b/files/fileManagement.php
@@ -1,445 +1 @@
<?php
-
-/**
- * Custom upload directory structure for edmonton.ink
- * Recreates the original directory logic with shops, artists, partners, etc.
- */
-add_filter('jvb_upload_directory', 'ajv_upload_directory', 10, 4);
-function ajv_upload_directory($path, $post_type, $user_id, $term_id)
-{
- switch ($post_type) {
- case 'shop':
- // Shop directory
- return 'shops/' . $term_id;
-
- case 'partner':
- // Partner directory
- return 'partners/' . $user_id;
-
- case 'artist':
- // Artist profile directory
- return 'artists/' . $user_id;
-
- default:
- // Content directories within artist folder (tattoos, artwork, etc)
- if (!$user_id) {
- return $path; // fallback to default
- }
-
- $link = get_user_meta($user_id, BASE . 'link', true);
- $type = str_replace(BASE, '', get_post_type((int)$link));
-
- return sanitize_title($type) . '/' . $user_id . '/' . sanitize_title($post_type);
- }
-}
-
-/**
- * Custom filename generation for edmonton.ink
- * Recreates the original SEO-friendly filename logic
- */
-add_filter('jvb_upload_filename', 'ajv_filename', 10, 6);
-function ajv_filename($filename, $original_name, $user_data, $post_type, $user_id, $term_id)
-{
- // Get artist/shop/partner details
- $post = (int)get_user_meta($user_id, BASE . 'link', true);
-
- if (!$post) {
- return $filename; // fallback to default
- }
-
- $city = jvbArtistCity($post);
-
- switch ($post_type) {
- case 'shop':
- // Shop images: {city}-best-tattoo-shop-{shop-name}
- $shop_term = get_term($term_id, BASE . 'shop');
- if (!$shop_term || is_wp_error($shop_term)) {
- return $filename;
- }
-
- return sprintf(
- '%s-best-tattoo-shop-%s-%s',
- sanitize_title($city),
- sanitize_title($shop_term->name),
- ajv_get_counter($user_id, $post_type)
- );
-
- case 'artist':
- // Profile images: {city}-best-{type}-{specialties}-{name}
- $type = jvbArtistType($post);
- $specialties = ajv_get_artist_top_styles($post);
-
- return sprintf(
- '%s-best-%s-%s-%s-%s',
- sanitize_title($city),
- sanitize_title($type),
- sanitize_title($specialties),
- sanitize_title($user_data->display_name),
- ajv_get_counter($user_id, $post_type)
- );
-
- case 'partner':
- // Partner images: {city}-tattoo-{service-type}-{name}
- $service_type = jvb_partner_type($post);
-
- return sprintf(
- '%s-tattoo-%s-%s-%s',
- sanitize_title($city),
- sanitize_title($service_type),
- sanitize_title($user_data->display_name),
- ajv_get_counter($user_id, $post_type)
- );
-
- case 'tattoo':
- // Get style and subject if available
- $style = ajv_get_primary_taxonomy($post, BASE . 'style');
- $subject = ajv_get_primary_taxonomy($post, BASE . 'theme');
-
- return sprintf(
- '%s-%s-%s-tattoo-by-%s-%s',
- sanitize_title($city),
- sanitize_title($style),
- sanitize_title($subject),
- sanitize_title($user_data->display_name),
- ajv_get_counter($user_id, $post_type)
- );
-
- case 'artwork':
- // Get style and subject if available
- $style = ajv_get_primary_taxonomy($post, BASE . 'artstyle');
- $subject = ajv_get_primary_taxonomy($post, BASE . 'arttheme');
-
- return sprintf(
- '%s-%s-%s-artwork-by-%s-%s',
- sanitize_title($city),
- sanitize_title($style),
- sanitize_title($subject),
- sanitize_title($user_data->display_name),
- ajv_get_counter($user_id, $post_type)
- );
-
- case 'piercing':
- // Get style if available
- $style = ajv_get_primary_taxonomy($post, BASE . 'pstyle');
-
- return sprintf(
- '%s-%s-piercing-by-%s-%s',
- sanitize_title($city),
- sanitize_title($style),
- sanitize_title($user_data->display_name),
- ajv_get_counter($user_id, $post_type)
- );
-
- default:
- // Content: {city}-{content_type}-by-{name}
- $content_type = $post_type;
-
- return sprintf(
- '%s-%s-by-%s-%s',
- sanitize_title($city),
- sanitize_title($content_type),
- sanitize_title($user_data->display_name),
- ajv_get_counter($user_id, $post_type)
- );
- }
-}
-
-/**
- * Custom alt text generation for edmonton.ink
- * Recreates the original detailed alt text logic
- */
-add_filter('jvb_upload_alt_text', 'ajv_alt_text', 10, 7);
-function ajv_alt_text($alt_text, $file, $user_data, $post_id, $post_type, $user_id, $term_id)
-{
- $post = get_user_meta($user_id, BASE . 'link', true);
-
- if (!$post) {
- return $alt_text; // fallback to default
- }
-
- $city = jvbArtistCity($post);
- $type = jvbArtistType($post);
-
- switch ($post_type) {
- case 'shop':
- $shop_term = get_term($term_id, BASE . 'shop');
- if (!$shop_term || is_wp_error($shop_term)) {
- return $alt_text;
- }
-
- return sprintf(
- 'A photo of %s tattoo shop %s',
- $city,
- $shop_term->name
- );
-
- case 'artist':
- $specialties = ajv_get_artist_top_styles($post);
-
- return sprintf(
- 'A photo of %s %s %s, specializing in %s tattoos',
- $city,
- $type,
- $user_data->display_name,
- $specialties
- );
-
- case 'partner':
- $service_type = jvb_partner_type($post);
-
- return sprintf(
- 'A photo of %s, providing %s in %s',
- $user_data->display_name,
- $service_type,
- $city
- );
-
- default:
- if (!$post_id) {
- return $alt_text;
- }
-
- // Get primary style
- $style = wp_get_post_terms($post_id, BASE . 'style', ['fields' => 'names']);
- $first_style = !empty($style) ? $style[0] : 'custom';
-
- // Get content type
- $content_type = $post_type;
-
- // Base alt text
- $alt = sprintf(
- 'A photo of a %s %s by %s %s %s',
- $first_style,
- $content_type,
- $city,
- $type,
- $user_data->display_name
- );
-
- // Add themes for tattoos only
- if ($post_type === 'tattoo') {
- $themes = wp_get_post_terms($post_id, BASE . 'theme', [
- 'fields' => 'names',
- 'number' => 3
- ]);
-
- if (!empty($themes)) {
- $theme_list = implode(', ', $themes);
- $alt .= sprintf(', with %s', $theme_list);
- }
- }
-
- return $alt;
- }
-}
-
-/**
- * Custom image title generation for edmonton.ink
- * Recreates the original SEO-friendly title logic
- */
-add_filter('jvb_upload_image_title', 'ajv_image_title', 10, 7);
-function ajv_image_title($title, $file, $user_data, $post_id, $post_type, $user_id, $term_id)
-{
- $post = get_user_meta($user_id, BASE . 'link', true);
-
- if (!$post) {
- return $title; // fallback to default
- }
-
- $city = jvbArtistCity($post);
- $type = jvbArtistType($post);
-
- switch ($post_type) {
- case 'shop':
- $shop_term = get_term($term_id, BASE . 'shop');
- if (!$shop_term || is_wp_error($shop_term)) {
- return $title;
- }
-
- return sprintf(
- '%s | %s\'s Best Tattoo Shops',
- $shop_term->name,
- $city
- );
-
- case 'artist':
- return sprintf(
- '%s | %s\'s Best %s',
- $user_data->display_name,
- $city,
- $type
- );
-
- case 'tattoo':
- if (!$post_id) {
- return $title;
- }
-
- $style = wp_get_post_terms($post_id, BASE . 'style', ['fields' => 'names']);
- $first_style = !empty($style) ? $style[0] : 'custom';
- $content_type = str_replace(BASE, '', $post_type);
-
- return sprintf(
- '%s %s by %s | %s\'s Best %s',
- $first_style,
- $content_type,
- $user_data->display_name,
- $city,
- $type
- );
-
- case 'artwork':
- if (!$post_id) {
- return $title;
- }
-
- $style = wp_get_post_terms($post_id, BASE . 'artstyle', ['fields' => 'names']);
- $first_style = !empty($style) ? $style[0] : 'custom';
- $content_type = str_replace(BASE, '', $post_type);
-
- return sprintf(
- '%s %s by %s | %s\'s Best %s',
- $first_style,
- $content_type,
- $user_data->display_name,
- $city,
- $type
- );
-
- case 'piercing':
- if (!$post_id) {
- return $title;
- }
-
- $style = wp_get_post_terms($post_id, BASE . 'pstyle', ['fields' => 'names']);
- $first_style = !empty($style) ? $style[0] : 'custom';
- $content_type = str_replace(BASE, '', $post_type);
-
- return sprintf(
- '%s %s by %s | %s\'s Best %s',
- $first_style,
- $content_type,
- $user_data->display_name,
- $city,
- $type
- );
-
- default:
- return sprintf(
- 'Image by %s %s, %s',
- $city,
- $type,
- $user_data->display_name
- );
- }
-}
-
-/**
- * Helper Functions
- * These recreate the helper functions from the original UploadManager
- */
-
-/**
- * Get the next file counter for edmonton.ink style counters
- */
-function ajv_get_counter($user_id, $post_type)
-{
- // Get counter key for this post type
- $counter_key = BASE . str_replace(BASE, '', $post_type) . '_counter';
-
- // Get current counter value, default to 0
- $counter = (int)get_user_meta($user_id, $counter_key, true) ?: 0;
-
- // Increment counter
- $counter++;
-
- // Update counter in user meta
- update_user_meta($user_id, $counter_key, $counter);
-
- // Return formatted counter
- return sprintf('%08d', $counter);
-}
-
-/**
- * Get artist's top styles for filename generation
- */
-function ajv_get_artist_top_styles($post_id)
-{
- if (!function_exists('JVBase\\meta\\MetaManager')) {
- // Fallback if MetaManager not available
- $styles = wp_get_post_terms($post_id, BASE . 'style', array('fields' => 'names'));
- if (is_wp_error($styles) || empty($styles)) {
- return 'custom-tattoos';
- }
- return implode('-', array_slice($styles, 0, 2));
- }
-
- $styles = wp_get_post_terms($post_id, BASE . 'style', array('fields' => 'names'));
- if (is_wp_error($styles) || empty($styles)) {
- return 'custom-tattoos';
- }
-
- // Get top highlighted styles first
- $meta = new JVBase\meta\MetaManager($post_id, 'post');
- $highlighted = explode(',', $meta->getValue('top_style')) ?: array();
-
- if (!empty($highlighted)) {
- $style_names = array();
- foreach ($highlighted as $style_id) {
- $term = get_term((int)$style_id, BASE . 'style');
- if ($term && !is_wp_error($term)) {
- $style_names[] = $term->name;
- }
- }
- if (!empty($style_names)) {
- return implode('-', array_slice($style_names, 0, 2));
- }
- }
-
- // Fallback to first two styles
- return implode('-', array_slice($styles, 0, 2));
-}
-
-/**
- * Get primary taxonomy term for content
- */
-function ajv_get_primary_taxonomy($post_id, $taxonomy)
-{
- $terms = wp_get_post_terms($post_id, $taxonomy, array('fields' => 'names'));
- if (is_wp_error($terms) || empty($terms)) {
- return $taxonomy === BASE . 'style' ? 'custom' : 'tattoo';
- }
- return $terms[0];
-}
-
-/**
- * Get partner type (placeholder - implement based on your edmonton.ink logic)
- * This function was referenced in the original but not provided
- */
-function ajv_partner_type($post_id)
-{
- // Implement based on your edmonton.ink logic
- // This might look at a taxonomy or meta field
- $terms = wp_get_post_terms($post_id, BASE . 'partner_type', array('fields' => 'names'));
- if (is_wp_error($terms) || empty($terms)) {
- return 'service';
- }
- return $terms[0];
-}
-
-/**
- * Optional: Add action to schedule cleanup (from original code)
- * Uncomment if you want the original cleanup functionality
- */
-/*
-add_action('init', function() {
- if (!wp_next_scheduled('jvb_cleanup_original_uploads')) {
- wp_schedule_event(time(), 'daily', 'jvb_cleanup_original_uploads');
- }
-});
-
-add_action('jvb_cleanup_original_uploads', function() {
- // You could instantiate your upload manager here and call cleanup
- // Or implement the cleanup logic directly
-});
-*/
\ No newline at end of file
--
Gitblit v1.10.0