diff --git a/.drone.yml b/.drone.yml index e1fefd3..c852380 100644 --- a/.drone.yml +++ b/.drone.yml @@ -15,4 +15,4 @@ steps: from_secret: drone_ssh_server.example.com when: branch: - - main + - main diff --git a/wp-content/themes/mont58-coffee/functions.php b/wp-content/themes/mont58-coffee/functions.php index 5f675e4..ef62330 100644 --- a/wp-content/themes/mont58-coffee/functions.php +++ b/wp-content/themes/mont58-coffee/functions.php @@ -3,28 +3,32 @@ /** * Equeue the child theme stylesheet. */ -function mont58coffee_enqueue_styles() { - - wp_enqueue_style('child-style', - get_stylesheet_uri(), - array( 'bridge' ), - wp_get_theme()->get( 'Version' ) - ); +function mont58coffee_enqueue_styles() +{ + wp_enqueue_style( + "child-style", + get_stylesheet_uri(), + ["bridge"], + wp_get_theme()->get("Version") + ); } -add_action( 'wp_enqueue_scripts', 'mont58coffee_enqueue_styles' ); +add_action("wp_enqueue_scripts", "mont58coffee_enqueue_styles"); -add_filter( 'get_terms', 'ts_get_subcategory_terms', 10, 3 ); -function ts_get_subcategory_terms( $terms, $taxonomies, $args ) { -$new_terms = array(); -// if it is a product category and on the shop page -if ( in_array( 'product_cat', $taxonomies ) && ! is_admin() &&is_shop() ) { -foreach( $terms as $key => $term ) { -if ( !in_array( $term->slug, array( 'african-coffees' ) ) ) { //pass the slug name here -$new_terms[] = $term; -}} -$terms = $new_terms; -} -return $terms; +add_filter("get_terms", "ts_get_subcategory_terms", 10, 3); +function ts_get_subcategory_terms($terms, $taxonomies, $args) +{ + $new_terms = []; + // if it is a product category and on the shop page + if (in_array("product_cat", $taxonomies) && !is_admin() && is_shop()) { + foreach ($terms as $key => $term) { + if (!in_array($term->slug, ["african-coffees"])) { + //pass the slug name here + $new_terms[] = $term; + } + } + $terms = $new_terms; + } + return $terms; } /** @@ -36,13 +40,19 @@ return $terms; * License: GPL v2 */ -function eg_extend_subscription_period_intervals( $intervals ) { +function eg_extend_subscription_period_intervals($intervals) +{ + $intervals[10] = sprintf( + __("every %s", "my-text-domain"), + WC_Subscriptions::append_numeral_suffix(10) + ); - $intervals[10] = sprintf( __( 'every %s', 'my-text-domain' ), WC_Subscriptions::append_numeral_suffix( 10 ) ); - - return $intervals; + return $intervals; } -add_filter( 'woocommerce_subscription_period_interval_strings', 'eg_extend_subscription_period_intervals' ); +add_filter( + "woocommerce_subscription_period_interval_strings", + "eg_extend_subscription_period_intervals" +); /** * Snippet Name: Mont58 Coffee Label @@ -51,149 +61,188 @@ add_filter( 'woocommerce_subscription_period_interval_strings', 'eg_extend_subsc * Author: Autonomic Co-op * Author URI: https://autonomic.zone/ * License: GPL2 -*/ + */ -function process_coffee_items($order, &$order_coffees, &$seen_subscriptions) { - // Iterate through all items in the order - foreach ($order->get_items() as $order_item) { - // Check if the item is a subscription (based on name containing "subscription") - if (stripos($order_item->get_name(), "subscription") !== false) { - // Get the coffee list associated with the subscription item - $coffee_list = get_field("coffee_list", $order_item->get_product_id()); +function process_coffee_items($order, &$order_coffees, &$seen_subscriptions) +{ + // Iterate through all items in the order + foreach ($order->get_items() as $order_item) { + // Check if the item is a subscription (based on name containing "subscription") + if (stripos($order_item->get_name(), "subscription") !== false) { + // Get the coffee list associated with the subscription item + $coffee_list = get_field( + "coffee_list", + $order_item->get_product_id() + ); - // TODO log or display this error - if (!$coffee_list) { - continue; - } + // TODO log or display this error + if (!$coffee_list) { + continue; + } - // Get the list of coffees from the coffee list - $coffees_in_list = get_field("coffees", $coffee_list); - // Get the quantity of this specific item in the order - $item_quantity = $order_item->get_quantity(); + // Get the list of coffees from the coffee list + $coffees_in_list = get_field("coffees", $coffee_list); + // Get the quantity of this specific item in the order + $item_quantity = $order_item->get_quantity(); - // Process each quantity of the subscription item - for ($x = 0; $x < $item_quantity; $x++) { - $coffee_list_id = $coffee_list->ID; + // Process each quantity of the subscription item + for ($x = 0; $x < $item_quantity; $x++) { + $coffee_list_id = $coffee_list->ID; - // Check if this coffee list has been seen before in this order - if (array_key_exists($coffee_list_id, $seen_subscriptions)) { - // Increment the count of times this coffee list has been encountered - $seen_subscriptions[$coffee_list_id]++; - // Calculate the index to select a coffee from the list - $index = $seen_subscriptions[$coffee_list_id]; - $coffee = $coffees_in_list[$index % sizeof($coffees_in_list)]; - } else { - // If this coffee list is encountered for the first time in this order - $seen_subscriptions[$coffee_list_id] = 0; - // Select the last coffee from the list - $coffee = array_pop(array_reverse($coffees_in_list)); - } + // Check if this coffee list has been seen before in this order + if (array_key_exists($coffee_list_id, $seen_subscriptions)) { + // Increment the count of times this coffee list has been encountered + $seen_subscriptions[$coffee_list_id]++; + // Calculate the index to select a coffee from the list + $index = $seen_subscriptions[$coffee_list_id]; + $coffee = + $coffees_in_list[$index % sizeof($coffees_in_list)]; + } else { + // If this coffee list is encountered for the first time in this order + $seen_subscriptions[$coffee_list_id] = 0; + // Select the last coffee from the list + $coffee = array_pop(array_reverse($coffees_in_list)); + } - // Add the selected coffee with its associated coffee list to the order_coffees array - array_push($order_coffees, array("coffee_list" => $coffee_list, "coffee" => $coffee)); - } - } - } + // Add the selected coffee with its associated coffee list to the order_coffees array + array_push($order_coffees, [ + "coffee_list" => $coffee_list, + "coffee" => $coffee, + ]); + } + } + } } // Handle new order creation event -function action_woocommerce_new_order($order_id, $order) { - // Initialize arrays to store processed data - $order_coffees = array(); - $seen_subscriptions = array(); +function action_woocommerce_new_order($order_id, $order) +{ + // Initialize arrays to store processed data + $order_coffees = []; + $seen_subscriptions = []; - // Process coffee items in the new order - process_coffee_items($order, $order_coffees, $seen_subscriptions); + // Process coffee items in the new order + process_coffee_items($order, $order_coffees, $seen_subscriptions); - // Update the custom field "coffees" with the processed coffee data for the order - update_field("coffees", $order_coffees, $order_id); + // Update the custom field "coffees" with the processed coffee data for the order + update_field("coffees", $order_coffees, $order_id); } // Hook the above function to the 'woocommerce_new_order' action -add_action('woocommerce_new_order', 'action_woocommerce_new_order', 10, 2); +add_action("woocommerce_new_order", "action_woocommerce_new_order", 10, 2); // Handle renewal order creation event -function action_wcs_renewal_order_created($order, $subscription) { - // Retrieve related orders of the subscription excluding the current renewal order - $last_orders = wcs_get_subscription($subscription)->get_related_orders('ids', array('parent', 'renewal')); - unset($last_orders[$order->get_ID()]); +function action_wcs_renewal_order_created($order, $subscription) +{ + // Retrieve related orders of the subscription excluding the current renewal order + $last_orders = wcs_get_subscription($subscription)->get_related_orders( + "ids", + ["parent", "renewal"] + ); + unset($last_orders[$order->get_ID()]); - // If there are previous orders related to the subscription - if (sizeof($last_orders) > 0) { - // Get the ID of the most recent previous order - $last_order_id = max($last_orders); - $last_order = wc_get_order($last_order_id); - // Get the processed coffees from the most recent previous order - $last_order_coffees = get_field("coffees", $last_order_id); + // If there are previous orders related to the subscription + if (sizeof($last_orders) > 0) { + // Get the ID of the most recent previous order + $last_order_id = max($last_orders); + $last_order = wc_get_order($last_order_id); + // Get the processed coffees from the most recent previous order + $last_order_coffees = get_field("coffees", $last_order_id); - // Initialize arrays to store processed data for the current order - $order_coffees = array(); - $seen_subscriptions = array(); + // Initialize arrays to store processed data for the current order + $order_coffees = []; + $seen_subscriptions = []; - // Get the latest coffee seen in each coffee list from the previous order - foreach(array_reverse($last_order_coffees) as $last_order_coffee) { - if (array_key_exists($last_order_coffee["coffee_list"]->ID, $seen_subscriptions)) { - continue; - } - $position_in_list = array_search( - $last_order_coffee["coffee"]->ID, - $last_order_coffee["coffee_list"]->coffees - ); - if (!$position_in_list) { - // ignore this, can't find it in list anymore - continue; - } - $seen_subscriptions[$last_order_coffee["coffee_list"]->ID] = $position_in_list; - } + // Get the latest coffee seen in each coffee list from the previous order + foreach (array_reverse($last_order_coffees) as $last_order_coffee) { + if ( + array_key_exists( + $last_order_coffee["coffee_list"]->ID, + $seen_subscriptions + ) + ) { + continue; + } + $position_in_list = array_search( + $last_order_coffee["coffee"]->ID, + $last_order_coffee["coffee_list"]->coffees + ); + if (!$position_in_list) { + // ignore this, can't find it in list anymore + continue; + } + $seen_subscriptions[ + $last_order_coffee["coffee_list"]->ID + ] = $position_in_list; + } - // Process coffee items based on the coffees in the last order - process_coffee_items($last_order, $order_coffees, $seen_subscriptions); + // Process coffee items based on the coffees in the last order + process_coffee_items($last_order, $order_coffees, $seen_subscriptions); - // Update the custom field "coffees" with the processed coffee data for the current renewal order - update_field("coffees", $order_coffees, $order->get_ID()); - } + // Update the custom field "coffees" with the processed coffee data for the current renewal order + update_field("coffees", $order_coffees, $order->get_ID()); + } } // Hook the above function to the 'wcs_renewal_order_created' action -add_action('wcs_renewal_order_created', 'action_wcs_renewal_order_created', 10, 2); +add_action( + "wcs_renewal_order_created", + "action_wcs_renewal_order_created", + 10, + 2 +); // Add a sidepanel on WooCommerce order pages -add_action('add_meta_boxes', 'mont58_coffee_label_add_sidepanel'); +add_action("add_meta_boxes", "mont58_coffee_label_add_sidepanel"); -function mont58_coffee_label_add_sidepanel() { - add_meta_box( - 'mont58_coffee_label_sidepanel', - 'Coffee Label', - 'mont58_coffee_label_render_sidepanel', - 'shop_order', - 'side', - 'high' - ); +function mont58_coffee_label_add_sidepanel() +{ + add_meta_box( + "mont58_coffee_label_sidepanel", + "Coffee Label", + "mont58_coffee_label_render_sidepanel", + "shop_order", + "side", + "high" + ); } -function mont58_coffee_label_render_sidepanel($post) { - // Render the content of the sidepanel here - $order_ids = array($post->ID); - echo 'View Label'; +function mont58_coffee_label_render_sidepanel($post) +{ + // Render the content of the sidepanel here + $order_ids = [$post->ID]; + echo 'View Label'; } // Load custom template -function load_custom_template($template) { - if (is_page('coffee-label')) { - return plugin_dir_path(__FILE__) . 'template-order-label.php'; - } +function load_custom_template($template) +{ + if (is_page("coffee-label")) { + return plugin_dir_path(__FILE__) . "template-order-label.php"; + } - return $template; + return $template; } -add_filter('template_include', 'load_custom_template'); +add_filter("template_include", "load_custom_template"); -add_filter('bulk_actions-edit-shop_order', function($bulk_actions) { - $bulk_actions['generate-label'] = __('Generate label', 'txtdomain'); - return $bulk_actions; +add_filter("bulk_actions-edit-shop_order", function ($bulk_actions) { + $bulk_actions["generate-label"] = __("Generate label", "txtdomain"); + return $bulk_actions; }); -add_filter('handle_bulk_actions-edit-shop_order', function($redirect_url, $action, $post_ids) { - if ($action == 'generate-label') { - $redirect_url = add_query_arg('order_ids', $post_ids, "/coffee-label"); - } - return $redirect_url; -}, 10, 3); +add_filter( + "handle_bulk_actions-edit-shop_order", + function ($redirect_url, $action, $post_ids) { + if ($action == "generate-label") { + $redirect_url = add_query_arg( + "order_ids", + $post_ids, + "/coffee-label" + ); + } + return $redirect_url; + }, + 10, + 3 +); diff --git a/wp-content/themes/mont58-coffee/template-order-label.php b/wp-content/themes/mont58-coffee/template-order-label.php index af460e0..1c8f4f3 100644 --- a/wp-content/themes/mont58-coffee/template-order-label.php +++ b/wp-content/themes/mont58-coffee/template-order-label.php @@ -1,4 +1,5 @@ - @@ -81,70 +82,74 @@
- get_billing_first_name(); - $last_name = $order->get_billing_last_name(); - $postcode = $order->get_billing_postcode(); - $items = $order->get_items(); - $roast_date = (new DateTime())->modify('-3 days')->format('d/m/Y'); - $gift_message = $order->get_meta('_shipping_gift_message'); + get_billing_first_name(); + $last_name = $order->get_billing_last_name(); + $postcode = $order->get_billing_postcode(); + $items = $order->get_items(); + $roast_date = (new DateTime())->modify("-3 days")->format("d/m/Y"); + $gift_message = $order->get_meta("_shipping_gift_message"); - $order_subscription_coffees = get_field('coffees', $order_id); + $order_subscription_coffees = get_field("coffees", $order_id); - $j = 0; // Count order items - foreach ($items as $item) { - // checking if product is a coffee - $product_id = $item->get_product_id(); - $product_categories = get_the_terms($product_id, 'product_cat'); - $is_coffee = false; - $is_subscription = false; + $j = 0; // Count order items + foreach ($items as $item) { + // checking if product is a coffee + $product_id = $item->get_product_id(); + $product_categories = get_the_terms($product_id, "product_cat"); + $is_coffee = false; + $is_subscription = false; - if (!empty($product_categories) && !is_wp_error($product_categories)) { - foreach ($product_categories as $product_category) { - if ($product_category->slug == 'coffee') { - $is_coffee = true; - break; - } else if ($product_category->slug == 'tasting') { - $is_subscription = true; - break; + if ( + !empty($product_categories) && + !is_wp_error($product_categories) + ) { + foreach ($product_categories as $product_category) { + if ($product_category->slug == "coffee") { + $is_coffee = true; + break; + } elseif ($product_category->slug == "tasting") { + $is_subscription = true; + break; + } + } } - } - } - - if ((!$is_coffee) && (!$is_subscription)) { - continue; - } - $brew_method = $item->get_meta('pa_brew-method'); - $weight = $item->get_meta('weight'); + if (!$is_coffee && !$is_subscription) { + continue; + } - if ($is_coffee) { - // Non-subscription order - $product_name = $item->get_name(); - $roast = get_field('roast_level', $product_id); - $is_organic = get_field('is_organic', $product_id); - } + $brew_method = $item->get_meta("pa_brew-method"); + $weight = $item->get_meta("weight"); - if ($is_subscription) { - $subscriptions = wcs_get_subscriptions_for_order($order_id, array( 'order_type' => 'any' )); - // TODO log / admin warning if there are >1 subscriptions - $subscription = array_pop($subscriptions); - $orders = $subscription->get_related_orders('ids', 'any'); - if (sizeof($orders) == 1) { - $is_new = true; - } - } + if ($is_coffee) { + // Non-subscription order + $product_name = $item->get_name(); + $roast = get_field("roast_level", $product_id); + $is_organic = get_field("is_organic", $product_id); + } - $quantity = $item->get_quantity(); - for ($i = 0; $i < $quantity; $i++) { - if ($is_subscription) { - $coffee = $order_subscription_coffees[$i+$j]["coffee"]; - $product_name = $coffee->post_title; - $roast = get_field('roast_level', $coffee->ID); - $is_organic = get_field('is_organic', $coffee->ID); - } ?> + if ($is_subscription) { + $subscriptions = wcs_get_subscriptions_for_order($order_id, [ + "order_type" => "any", + ]); + // TODO log / admin warning if there are >1 subscriptions + $subscription = array_pop($subscriptions); + $orders = $subscription->get_related_orders("ids", "any"); + if (sizeof($orders) == 1) { + $is_new = true; + } + } + + $quantity = $item->get_quantity(); + for ($i = 0; $i < $quantity; $i++) { + if ($is_subscription) { + $coffee = $order_subscription_coffees[$i + $j]["coffee"]; + $product_name = $coffee->post_title; + $roast = get_field("roast_level", $coffee->ID); + $is_organic = get_field("is_organic", $coffee->ID); + } ?>
@@ -153,7 +158,11 @@

Roast

Roasted on:

-

+

@@ -162,10 +171,11 @@
- +