Skip to content
Snippets Groups Projects
Commit 58307197 authored by Reinhold Kainhofer's avatar Reinhold Kainhofer
Browse files

urldecode all SLUGs

All SLUGs are stored URL-encoded in the database, so we need to urldecode them before inserting them into lists like the Categories variable. This allows general UTF-8 SLUGs to work properly.

Fixes #17
parent 423ad03f
Branches
Tags
No related merge requests found
...@@ -196,10 +196,10 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework { ...@@ -196,10 +196,10 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework {
$skus[] = $product['data']->get_sku(); $skus[] = $product['data']->get_sku();
} }
foreach (wc_get_product_terms( $id, 'product_cat') as $c) { foreach (wc_get_product_terms( $id, 'product_cat') as $c) {
$categories[] = $c->slug; $categories[] = urldecode($c->slug);
} }
foreach (wc_get_product_terms( $id, 'product_tag') as $c) { foreach (wc_get_product_terms( $id, 'product_tag') as $c) {
$tags[] = $c->slug; $tags[] = urldecode($c->slug);
} }
$shipclass = $product['data']->get_shipping_class(); $shipclass = $product['data']->get_shipping_class();
if ($shipclass) { if ($shipclass) {
...@@ -251,7 +251,7 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework { ...@@ -251,7 +251,7 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework {
foreach ($products as $product) { foreach ($products as $product) {
foreach (get_product_vendors($product['data']->get_id()) as $vendor) { foreach (get_product_vendors($product['data']->get_id()) as $vendor) {
// $this->printWarning("<pre>vendor: ".print_r($vendor,1)."</pre>"); // $this->printWarning("<pre>vendor: ".print_r($vendor,1)."</pre>");
$vendors[] = $vendor->slug; $vendors[] = urldecode($vendor->slug);
$vendornames[] = $vendor->title; $vendornames[] = $vendor->title;
$vendorids[] = $vendor->ID; $vendorids[] = $vendor->ID;
} }
...@@ -271,7 +271,7 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework { ...@@ -271,7 +271,7 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework {
$vendor = yith_get_vendor($product['data']->get_id(), 'product'); $vendor = yith_get_vendor($product['data']->get_id(), 'product');
// $this->printWarning("<pre>vendor: ".print_r($vendor,1)."</pre>"); // $this->printWarning("<pre>vendor: ".print_r($vendor,1)."</pre>");
if ($vendor->is_valid()) { if ($vendor->is_valid()) {
$vendors[] = $vendor->slug; $vendors[] = urldecode($vendor->l);
$vendornames[] = $vendor->name; $vendornames[] = $vendor->name;
$vendorids[] = $vendor->term_id; $vendorids[] = $vendor->term_id;
} }
...@@ -384,15 +384,15 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework { ...@@ -384,15 +384,15 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework {
$subcategories = array(); $subcategories = array();
if (isset($filter_conditions['subcategories']) && !empty($filter_conditions['subcategories'])) { if (isset($filter_conditions['subcategories']) && !empty($filter_conditions['subcategories'])) {
foreach ($filter_conditions['subcategories'] as $catslug) { foreach ($filter_conditions['subcategories'] as $catslug) {
// Get the term itself (we have only the slug!) // Get the term itself (we have only the slug!), DB stores slugs as URL-encoded!
$cat = get_term_by('slug', $catslug, 'product_cat'); $cat = get_term_by('slug', urlencode($catslug), 'product_cat');
if (empty($cat)) if (empty($cat))
continue; continue;
$subcategories[] = $cat->slug; $subcategories[] = urldecode($cat->slug);
// Get the list of all subcategories of the given categories // Get the list of all subcategories of the given categories
$args=array('child_of' => $cat->term_id, 'hierarchical' => 1); $args=array('child_of' => $cat->term_id, 'hierarchical' => 1);
foreach (get_terms( 'product_cat', $args) as $subcat) { foreach (get_terms( 'product_cat', $args) as $subcat) {
$subcategories[] = $subcat->slug; $subcategories[] = urldecode($subcat->slug);
} }
} }
$subcategories = array_unique($subcategories); $subcategories = array_unique($subcategories);
...@@ -402,7 +402,7 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework { ...@@ -402,7 +402,7 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework {
foreach ($products as $p) { foreach ($products as $p) {
$prodcategories = array(); $prodcategories = array();
foreach (wc_get_product_terms( $p['data']->id, 'product_cat') as $cat) { foreach (wc_get_product_terms( $p['data']->id, 'product_cat') as $cat) {
$prodcategories[] = $cat->slug; $prodcategories[] = urldecode($cat->slug);
} }
if (!empty($filter_conditions['products']) && !in_array($p['data']->get_sku(), $filter_conditions['products'])) if (!empty($filter_conditions['products']) && !in_array($p['data']->get_sku(), $filter_conditions['products']))
continue; continue;
...@@ -429,7 +429,7 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework { ...@@ -429,7 +429,7 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework {
// "WooThemes Vendor Products" support (vendors stored in its own taxonomy) // "WooThemes Vendor Products" support (vendors stored in its own taxonomy)
if (class_exists("WooCommerce_Product_Vendors") && function_exists("get_product_vendors")) { if (class_exists("WooCommerce_Product_Vendors") && function_exists("get_product_vendors")) {
foreach (get_product_vendors($p['data']->id) as $vendor) { foreach (get_product_vendors($p['data']->id) as $vendor) {
$vnd_props[] = $vendor->slug; $vnd_props[] = urldecode($vendor->slug);
} }
} }
...@@ -437,7 +437,7 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework { ...@@ -437,7 +437,7 @@ class RulesShippingFrameworkWooCommerce extends RulesShippingFramework {
if (function_exists("yith_get_vendor")) { if (function_exists("yith_get_vendor")) {
$vendor = yith_get_vendor($p['data']->id, 'product'); $vendor = yith_get_vendor($p['data']->id, 'product');
if ($vendor->is_valid()) { if ($vendor->is_valid()) {
$vnd_props[] = $vendor->slug; $vnd_props[] = urldecode($vendor->slug);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment