CTX Feed – WooCommerce Product Feed Manager Plugin - Version 4.5.10

Version Description

(2022-11-14) = * Fixed: Skroutz template additional image attribute tag * Added: Skroutz template multiple additional image attribute tag

Download this release

Release Info

Developer wahid0003
Plugin Icon 128x128 CTX Feed – WooCommerce Product Feed Manager Plugin
Version 4.5.10
Comparing to
See all releases

Code changes from version 4.5.9 to 4.5.10

README.txt CHANGED
@@ -5,7 +5,7 @@ Tags: WooCommerce Product Feed, WooCommerce, Google Shopping, Google Merchant, F
5
  Requires at least: 4.4
6
  Tested Up To: 6.1
7
  Requires PHP: 5.6
8
- Stable tag: 4.5.9
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -590,6 +590,10 @@ Using pro version:
590
 
591
  == Changelog ==
592
 
 
 
 
 
593
  = 4.5.9 (2022-11-08) =
594
  * Fixed: PHP Warning: Uninitialized string offset.
595
 
5
  Requires at least: 4.4
6
  Tested Up To: 6.1
7
  Requires PHP: 5.6
8
+ Stable tag: 4.5.10
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
590
 
591
  == Changelog ==
592
 
593
+ = 4.5.10 (2022-11-14) =
594
+ * Fixed: Skroutz template additional image attribute tag
595
+ * Added: Skroutz template multiple additional image attribute tag
596
+
597
  = 4.5.9 (2022-11-08) =
598
  * Fixed: PHP Warning: Uninitialized string offset.
599
 
V5/API/V1/MerchantConfig.php CHANGED
@@ -5,7 +5,7 @@ namespace CTXFeed\V5\API\V1;
5
  namespace CTXFeed\V5\API\V1;
6
 
7
  use CTXFeed\V5\API\RestController;
8
- use CTXFeed\V5\Helper\CommonHelper;
9
  use CTXFeed\V5\Merchant\TemplateConfig;
10
  use CTXFeed\V5\Utility\Config;
11
  use WP_REST_Server;
@@ -140,7 +140,7 @@ class MerchantConfig extends RestController {
140
  return rest_ensure_response( $this->response );
141
  }
142
 
143
- $feedName = CommonHelper::get_feed_option_name( $feedName );
144
  $feedInfo = get_option( 'wf_config' . $feedName, false );
145
 
146
  if ( $feedInfo ) {
5
  namespace CTXFeed\V5\API\V1;
6
 
7
  use CTXFeed\V5\API\RestController;
8
+ use CTXFeed\V5\Helper\FeedHelper;
9
  use CTXFeed\V5\Merchant\TemplateConfig;
10
  use CTXFeed\V5\Utility\Config;
11
  use WP_REST_Server;
140
  return rest_ensure_response( $this->response );
141
  }
142
 
143
+ $feedName = FeedHelper::get_feed_option_name( $feedName );
144
  $feedInfo = get_option( 'wf_config' . $feedName, false );
145
 
146
  if ( $feedInfo ) {
V5/Feed/Attributes.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CTXFeed\V5\Feed;
4
+
5
+
6
+ /**
7
+ * Class ProductAttribute
8
+ *
9
+ * @package CTXFeed
10
+ * @subpackage CTXFeed\V5\Feed
11
+ * @author Ohidul Islam <wahid0003@gmail.com>
12
+ * @link https://webappick.com
13
+ * @license https://opensource.org/licenses/gpl-license.php GNU Public License
14
+ * @category MyCategory
15
+ */
16
+ class Attributes {
17
+ /**
18
+ * @return void
19
+ */
20
+ public static function getAttributes( ) {
21
+
22
+ }
23
+
24
+ /**
25
+ * @return void
26
+ */
27
+ public static function saveAttributes( ) {
28
+
29
+ }
30
+
31
+ /**
32
+ * @return void
33
+ */
34
+ public static function updateAttributes( ) {
35
+
36
+ }
37
+ }
V5/Feed/Feed.php CHANGED
@@ -1,22 +1,34 @@
1
  <?php
 
2
  namespace CTXFeed\V5\Feed;
 
 
 
 
 
 
 
 
 
 
 
 
3
  class Feed {
4
- private $template;
5
 
6
- public function __construct( FeedInterface $template ) {
7
- $this->template = $template;
8
  }
9
 
10
- public function get_feed() {
11
- return $this->template->get_feed();
12
  }
13
 
14
- public function get_header() {
15
- return $this->template->get_header();
16
  }
17
 
18
- public function get_footer() {
19
- return $this->template->get_footer();
20
  }
21
 
22
- }
1
  <?php
2
+
3
  namespace CTXFeed\V5\Feed;
4
+
5
+
6
+ /**
7
+ * Class Feed
8
+ *
9
+ * @package CTXFeed
10
+ * @subpackage CTXFeed\V5\Feed
11
+ * @author Ohidul Islam <wahid0003@gmail.com>
12
+ * @link https://webappick.com
13
+ * @license https://opensource.org/licenses/gpl-license.php GNU Public License
14
+ * @category MyCategory
15
+ */
16
  class Feed {
 
17
 
18
+ public static function getFeed( ) {
19
+
20
  }
21
 
22
+ public static function makeFeed( ) {
23
+
24
  }
25
 
26
+ public static function updateFeed( ) {
27
+
28
  }
29
 
30
+ public static function deleteFeed( ) {
31
+
32
  }
33
 
34
+ }
V5/Feed/Product.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace CTXFeed\V5\Feed;
4
+
5
+
6
+ /**
7
+ * Class Product
8
+ *
9
+ * @package CTXFeed
10
+ * @subpackage CTXFeed\V5\Feed
11
+ * @author Ohidul Islam <wahid0003@gmail.com>
12
+ * @link https://webappick.com
13
+ * @license https://opensource.org/licenses/gpl-license.php GNU Public License
14
+ * @category MyCategory
15
+ */
16
+ class Product {
17
+
18
+ public static function addProduct() {
19
+
20
+ }
21
+
22
+ public static function addProducts() {
23
+
24
+ }
25
+
26
+ public static function updateProduct() {
27
+
28
+ }
29
+
30
+ public static function updateProducts() {
31
+
32
+ }
33
+
34
+ public static function deleteProduct( ) {
35
+
36
+ }
37
+
38
+ public static function deleteProducts( ) {
39
+
40
+ }
41
+
42
+
43
+ }
V5/Filter/FilterInfo.php CHANGED
@@ -2,6 +2,238 @@
2
 
3
  namespace CTXFeed\V5\Filter;
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  class FilterInfo {
6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  }
2
 
3
  namespace CTXFeed\V5\Filter;
4
 
5
+ use CTXFeed\V5\Helper\ProductHelper;
6
+ use CTXFeed\V5\Utility\Config;
7
+ use CTXFeed\V5\Utility\Settings;
8
+
9
+ /**
10
+ * Class FilterInfo
11
+ *
12
+ * @package CTXFeed
13
+ * @subpackage CTXFeed\V5\Filter
14
+ * @author Ohidul Islam <wahid0003@gmail.com>
15
+ * @link https://webappick.com
16
+ * @license https://opensource.org/licenses/gpl-license.php GNU Public License
17
+ * @category Filter
18
+ */
19
  class FilterInfo {
20
 
21
+ /**
22
+ * Get Product Ids or count product ids via WC_Product_Query
23
+ * @param $args
24
+ * @param bool $count
25
+ *
26
+ * @return array|int|null
27
+ */
28
+ public function getProductsWC( $args = [], $count = true ) {
29
+ $config = new Config( [] );
30
+ $oldQueryType = Settings::get( 'product_query_type' );
31
+ Settings::set( 'product_query_type', 'wc' );
32
+ $default_args = [
33
+ 'limit' => - 1,
34
+ 'status' => 'publish',
35
+ 'return' => 'ids',
36
+ ];
37
+
38
+ $args = wp_parse_args( $args, $default_args );
39
+ $Ids = ProductHelper::get_ids( $config, $args );
40
+ Settings::set( 'product_query_type', $oldQueryType );
41
+
42
+ if ( $count ) {
43
+ return count( $Ids );
44
+ }
45
+
46
+ return $Ids;
47
+ }
48
+
49
+ /**
50
+ * Get Product Ids or count product ids via WP_Query
51
+ * @param $args
52
+ * @param $count
53
+ *
54
+ * @return array|int|null
55
+ */
56
+ public function getProductsWP( $args = [], $count = true ) {
57
+ $oldQueryType = Settings::get( 'product_query_type' );
58
+ Settings::set( 'product_query_type', 'wp' );
59
+ $config = new Config( [] );
60
+ $default_args = [
61
+ 'posts_per_page' => - 1,
62
+ 'post_type' => [ 'product', 'product_variation' ],
63
+ 'post_status' => 'publish',
64
+ 'fields' => 'ids',
65
+ ];
66
+ $args = wp_parse_args( $args, $default_args );
67
+ $Ids = ProductHelper::get_ids( $config, $args );
68
+ Settings::set( 'product_query_type', $oldQueryType );
69
+
70
+ if ( $count ) {
71
+ return count( $Ids );
72
+ }
73
+
74
+ return $Ids;
75
+ }
76
+
77
+ /**
78
+ * Count out of stock products.
79
+ *
80
+ * @return array|int|null
81
+ */
82
+ public function getOutOfStockProducts( $count = true ) {
83
+ $oldQueryType = Settings::get( 'product_query_type' );
84
+ Settings::set( 'product_query_type', 'wc' );
85
+ $config = new Config( [] );
86
+ $args = [
87
+ 'limit' => - 1,
88
+ 'stock_status' => 'outofstock',
89
+ 'status' => 'publish',
90
+ 'return' => 'ids',
91
+ ];
92
+ $Ids = ProductHelper::get_ids( $config, $args );
93
+ Settings::set( 'product_query_type', $oldQueryType );
94
+
95
+ if ( $count ) {
96
+ return count( $Ids );
97
+ }
98
+
99
+ return $Ids;
100
+ }
101
+
102
+ /**
103
+ * Count on back order products.
104
+ *
105
+ * @return int|null
106
+ */
107
+ public function getBackOrderProducts() {
108
+ $oldQueryType = Settings::get( 'product_query_type' );
109
+ Settings::set( 'product_query_type', 'wc' );
110
+ $config = new Config( [] );
111
+ $args = [
112
+ 'limit' => - 1,
113
+ 'stock_status' => 'onbackorder',
114
+ 'status' => 'publish',
115
+ 'return' => 'ids',
116
+ ];
117
+ $Ids = ProductHelper::get_ids( $config, $args );
118
+ Settings::set( 'product_query_type', $oldQueryType );
119
+
120
+ return count( $Ids );
121
+ }
122
+
123
+ /**
124
+ * Count Hidden products.
125
+ *
126
+ * @return int|null
127
+ */
128
+ public function getHiddenProducts() {
129
+ $oldQueryType = Settings::get( 'product_query_type' );
130
+ Settings::set( 'product_query_type', 'wc' );
131
+ $config = new Config( [] );
132
+ $args = [
133
+ 'limit' => - 1,
134
+ 'visibility' => 'hidden',
135
+ 'status' => 'publish',
136
+ 'return' => 'ids',
137
+ ];
138
+ $Ids = ProductHelper::get_ids( $config, $args );
139
+ Settings::set( 'product_query_type', $oldQueryType );
140
+
141
+ return count( $Ids );
142
+ }
143
+
144
+ /**
145
+ * Count empty title products.
146
+ *
147
+ * @return int|null
148
+ */
149
+ public function getEmptyTitleProducts() {
150
+ global $wpdb;
151
+ $emptyPosts = $wpdb->get_results( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title ='' AND post_type='product' AND 'post_status'='publish'" ) );
152
+
153
+ return count( $emptyPosts );
154
+ }
155
+
156
+ /**
157
+ * Count empty description products.
158
+ *
159
+ * @return int|null
160
+ */
161
+ public function getDescriptionProducts() {
162
+ global $wpdb;
163
+ $emptyPosts = $wpdb->get_results( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_content ='' AND post_type='product' AND 'post_status'='publish'" ) );
164
+
165
+ return count( $emptyPosts );
166
+ }
167
+
168
+ public function getEmptyPriceProducts() {
169
+ $oldQueryType = Settings::get( 'product_query_type' );
170
+ Settings::set( 'product_query_type', 'wp' );
171
+ $config = new Config( [] );
172
+ $args = [
173
+ 'posts_per_page' => - 1,
174
+ 'post_type' => [ 'product', 'product_variation' ],
175
+ 'post_status' => 'publish',
176
+ 'fields' => 'ids',
177
+ ];
178
+
179
+ $args['meta_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
180
+ array(
181
+ 'key' => '_regular_price',
182
+ 'compare' => '>',
183
+ 'value' => '0'
184
+ ),
185
+ );
186
+
187
+ $args2 = [
188
+ 'posts_per_page' => - 1,
189
+ 'post_type' => [ 'product', 'product_variation' ],
190
+ 'post_status' => 'publish',
191
+ 'fields' => 'ids',
192
+ ];
193
+
194
+ $allIds = ProductHelper::get_ids( $config, $args2 );
195
+ $Ids = ProductHelper::get_ids( $config, $args );
196
+ Settings::set( 'product_query_type', $oldQueryType );
197
+
198
+ return count( $allIds ) - count( $Ids );
199
+ }
200
+
201
+ /**
202
+ * Count empty image products.
203
+ *
204
+ * @return int|null
205
+ */
206
+ public function getEmptyImageProducts() {
207
+ $oldQueryType = Settings::get( 'product_query_type' );
208
+ Settings::set( 'product_query_type', 'wp' );
209
+ $config = new Config( [] );
210
+ $args = [
211
+ 'posts_per_page' => - 1,
212
+ 'post_type' => 'product',
213
+ 'post_status' => 'publish',
214
+ 'fields' => 'ids',
215
+ ];
216
+
217
+ $args['meta_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
218
+ array(
219
+ 'key' => '_thumbnail_id',
220
+ 'compare' => '>',
221
+ 'value' => '0'
222
+ ),
223
+ );
224
+
225
+ $args2 = [
226
+ 'posts_per_page' => - 1,
227
+ 'post_type' => 'product',
228
+ 'post_status' => 'publish',
229
+ 'fields' => 'ids',
230
+ ];
231
+
232
+ $allIds = ProductHelper::get_ids( $config, $args2 );
233
+ $Ids = ProductHelper::get_ids( $config, $args );
234
+ Settings::set( 'product_query_type', $oldQueryType );
235
+
236
+ return count( $allIds ) - count( $Ids );
237
+ }
238
+
239
  }
V5/Helper/CommonHelper.php CHANGED
@@ -58,17 +58,6 @@ class CommonHelper {
58
  return $url;
59
  }
60
 
61
- /**
62
- * Remove Feed Option Name Prefix and return the slug
63
- *
64
- * @param string $feed
65
- *
66
- * @return string
67
- */
68
- public static function get_feed_option_name( $feed ) {
69
- return str_replace( [ 'wf_feed_', 'wf_config' ], '', $feed );
70
- }
71
-
72
  /**
73
  * Check WooCommerce Version
74
  *
58
  return $url;
59
  }
60
 
 
 
 
 
 
 
 
 
 
 
 
61
  /**
62
  * Check WooCommerce Version
63
  *
V5/Helper/FeedHelper.php CHANGED
@@ -1,7 +1,37 @@
1
  <?php
 
2
  namespace CTXFeed\V5\Helper;
3
  class FeedHelper {
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
 
 
 
 
 
 
 
 
 
 
6
 
7
- }
1
  <?php
2
+
3
  namespace CTXFeed\V5\Helper;
4
  class FeedHelper {
5
 
6
+ /** Sanitize Feed Configs
7
+ * @param $data
8
+ *
9
+ * @return mixed
10
+ */
11
+ public static function sanitize_form_fields( $data ) {
12
+ foreach ( $data as $k => $v ) {
13
+ if ( true === apply_filters( 'woo_feed_sanitize_form_fields', true, $k, $v, $data ) ) {
14
+ if ( is_array( $v ) ) {
15
+ $v = woo_feed_sanitize_form_fields( $v );
16
+ } else {
17
+ // $v = sanitize_text_field( $v ); #TODO should not trim Prefix and Suffix field
18
+ }
19
+ }
20
+ $data[ $k ] = apply_filters( 'woo_feed_sanitize_form_field', $v, $k );
21
+ }
22
+
23
+ return $data;
24
+ }
25
 
26
+ /**
27
+ * Remove Feed Option Name Prefix and return the slug
28
+ *
29
+ * @param string $feed
30
+ *
31
+ * @return string
32
+ */
33
+ public static function get_feed_option_name( $feed ) {
34
+ return str_replace( [ 'wf_feed_', 'wf_config' ], '', $feed );
35
+ }
36
 
37
+ }
V5/Helper/ProductHelper.php CHANGED
@@ -80,16 +80,17 @@ class ProductHelper {
80
  * @var string
81
  */
82
  const PRODUCT_CUSTOM_IDENTIFIER = 'woo_feed_';
83
-
84
  /**
85
  * @param Config $config Feed Configuration.
 
86
  *
87
- * @return object
88
  */
89
- public static function get_ids( $config ) {
90
- return QueryFactory::get_ids( $config );
91
  }
92
-
93
  /**
94
  * Get Product Gallery Items (URL) array.
95
  * This can contains empty array values
@@ -102,7 +103,7 @@ class ProductHelper {
102
  public static function get_product_gallery( $product ) {
103
  $imgUrls = [];
104
  $attachmentIds = [];
105
-
106
  if ( $product->is_type( 'variation' ) ) {
107
  if ( class_exists( 'Woo_Variation_Gallery' ) ) {
108
  /**
@@ -137,7 +138,7 @@ class ProductHelper {
137
  */
138
  $var_id = $product->get_id();
139
  $parent_id = $product->get_parent_id();
140
-
141
  $variation_obj = get_post_meta( $parent_id, 'woodmart_variation_gallery_data', true );
142
  if ( isset( $variation_obj, $variation_obj[ $var_id ] ) ) {
143
  $attachmentIds = explode( ',', $variation_obj[ $var_id ] );
@@ -151,7 +152,7 @@ class ProductHelper {
151
  $attachmentIds = wc_get_product( $product->get_parent_id() )->get_gallery_image_ids();
152
  }
153
  }
154
-
155
  /**
156
  * Get Variable Product Gallery Image ids if Product is not a variation
157
  * or variation does not have any gallery images
@@ -159,7 +160,7 @@ class ProductHelper {
159
  if ( empty( $attachmentIds ) ) {
160
  $attachmentIds = $product->get_gallery_image_ids();
161
  }
162
-
163
  if ( $attachmentIds && is_array( $attachmentIds ) ) {
164
  $mKey = 1;
165
  foreach ( $attachmentIds as $attachmentId ) {
@@ -167,10 +168,10 @@ class ProductHelper {
167
  $mKey ++;
168
  }
169
  }
170
-
171
  return $imgUrls;
172
  }
173
-
174
  /**
175
  * Get Product Meta Value.
176
  *
@@ -186,10 +187,10 @@ class ProductHelper {
186
  if ( '' === $value && $product->is_type( 'variation' ) ) {
187
  $value = get_post_meta( $product->get_parent_id(), $meta, true );
188
  }
189
-
190
  return apply_filters( 'woo_feed_filter_product_meta', $value, $product, $config );
191
  }
192
-
193
  /**
194
  * Get Product Custom Field values.
195
  *
@@ -204,9 +205,9 @@ class ProductHelper {
204
  if ( $product->is_type( 'variation' ) ) {
205
  $meta = $field . '_var';
206
  }
207
-
208
  $meta = apply_filters( 'woo_feed_custom_field_meta', $meta, $product, $config );
209
-
210
  if ( strpos( $meta, '_identifier' ) !== false ) {
211
  $old_meta_key = $meta;
212
  $new_meta_key = str_replace( '_identifier', '', $meta );
@@ -214,25 +215,25 @@ class ProductHelper {
214
  $new_meta_key = $meta;
215
  $old_meta_key = str_replace( 'woo_feed_', 'woo_feed_identifier_', $meta );
216
  }
217
-
218
  $new_meta_value = self::get_product_meta( $new_meta_key, $product, $config );
219
  $old_meta_value = self::get_product_meta( $old_meta_key, $product, $config );
220
-
221
  if ( empty( $new_meta_value ) ) {
222
  return self::format_custom_field_value( $old_meta_value, $meta );
223
  }
224
-
225
  return self::format_custom_field_value( $new_meta_value, $meta );
226
  }
227
-
228
  private static function format_custom_field_value( $value, $meta ) {
229
  if ( strpos( $meta, 'availability_date' ) ) {
230
  return date( 'c', strtotime( $value ) );
231
  }
232
-
233
  return $value;
234
  }
235
-
236
  /**
237
  * Get Product Taxonomy.
238
  *
@@ -246,15 +247,15 @@ class ProductHelper {
246
  $id = woo_feed_parent_product_id( $product );
247
  $separator = apply_filters( 'woo_feed_product_taxonomy_term_list_separator', ',', $config, $product );
248
  $term_list = get_the_term_list( $id, $taxonomy, '', $separator, '' );
249
-
250
  if ( is_object( $term_list ) && get_class( $term_list ) === 'WP_Error' ) {
251
  $term_list = '';
252
  }
253
  $getTaxonomy = woo_feed_strip_all_tags( $term_list );
254
-
255
  return apply_filters( 'woo_feed_filter_product_taxonomy', $getTaxonomy, $product, $config );
256
  }
257
-
258
  /**
259
  * Ger Product Attribute
260
  *
@@ -268,29 +269,28 @@ class ProductHelper {
268
  */
269
  public static function get_product_attribute( $attr, $product, $config ) {
270
  $id = $product->get_id();
271
-
272
  if ( woo_feed_wc_version_check( 3.2 ) ) {
273
  if ( woo_feed_wc_version_check( 3.6 ) ) {
274
  $attr = str_replace( 'pa_', '', $attr );
275
  }
276
  $value = $product->get_attribute( $attr );
277
-
278
  // if empty get attribute of parent post
279
  if ( '' === $value && $product->is_type( 'variation' ) ) {
280
  $product = wc_get_product( $product->get_parent_id() );
281
  $value = $product->get_attribute( $attr );
282
  }
283
-
284
  $getAttribute = $value;
285
  } else {
286
  $getAttribute = implode( ',', wc_get_product_terms( $id, $attr, array( 'fields' => 'names' ) ) );
287
  }
288
-
289
  return apply_filters( 'woo_feed_filter_product_attribute', $getAttribute, $attr, $product, $config );
290
  }
291
-
292
-
293
-
294
  /**
295
  * Get ACF Field values
296
  *
@@ -307,10 +307,10 @@ class ProductHelper {
307
  if ( class_exists( 'ACF' ) ) {
308
  return get_field( $field, $product->get_id() );
309
  }
310
-
311
  return '';
312
  }
313
-
314
  /**
315
  * Return Category Mapping Values by Product Id [Parent Product for variation]
316
  *
@@ -333,21 +333,21 @@ class ProductHelper {
333
  'bing_local_inventory',
334
  'snapchat'
335
  );
336
-
337
  if ( ! isset( $getValue['cmapping'] ) && ! isset( $getValue['gcl-cmapping'] ) ) {
338
  return '';
339
  }
340
-
341
  //get product terms
342
  $categories = get_the_terms( $product_id, 'product_cat' );
343
-
344
  //get cmapping value
345
  if ( isset( $getValue['gcl-cmapping'] ) && in_array( $getValue['mappingprovider'], $suggestive_category_list_merchants, true ) ) {
346
  $cmapping = is_array( $getValue['gcl-cmapping'] ) ? array_reverse( $getValue['gcl-cmapping'], true ) : $getValue['gcl-cmapping'];
347
  } else {
348
  $cmapping = is_array( $getValue['cmapping'] ) ? array_reverse( $getValue['cmapping'], true ) : $getValue['cmapping'];
349
  }
350
-
351
  // Fixes empty mapped category issue
352
  if ( ! empty( $categories ) && is_array( $categories ) && count( $categories ) ) {
353
  $categories = array_reverse( $categories );
@@ -358,10 +358,10 @@ class ProductHelper {
358
  }
359
  }
360
  }
361
-
362
  return $cat_map_value;
363
  }
364
-
365
  /**
366
  * Get Attribute Mapping Value.
367
  *
@@ -380,7 +380,7 @@ class ProductHelper {
380
  $attributes = get_option( $attribute );
381
  $glue = ! empty( $attributes['glue'] ) ? $attributes['glue'] : " ";
382
  $output = '';
383
-
384
  if ( isset( $attributes['mapping'] ) ) {
385
  foreach ( $attributes['mapping'] as $map ) {
386
  $get_value = $getAttributeValueByType->get_value( $map );
@@ -389,16 +389,16 @@ class ProductHelper {
389
  }
390
  }
391
  }
392
-
393
  //trim extra glue
394
  $output = trim( $output, $glue );
395
-
396
  // remove extra whitespace
397
  $output = preg_replace( '!\s\s+!', ' ', $output );
398
-
399
  return apply_filters( 'woo_feed_filter_attribute_mapping', $output, $attribute, $product, $config );
400
  }
401
-
402
  /**
403
  * Get the value of a dynamic attribute
404
  *
@@ -421,19 +421,19 @@ class ProductHelper {
421
  $condition = isset( $getValue['condition'] ) ? (array) $getValue['condition'] : array();
422
  $compare = isset( $getValue['compare'] ) ? (array) $getValue['compare'] : array();
423
  $type = isset( $getValue['type'] ) ? (array) $getValue['type'] : array();
424
-
425
  $prefix = isset( $getValue['prefix'] ) ? (array) $getValue['prefix'] : array();
426
  $suffix = isset( $getValue['suffix'] ) ? (array) $getValue['suffix'] : array();
427
-
428
  $value_attribute = isset( $getValue['value_attribute'] ) ? (array) $getValue['value_attribute'] : array();
429
  $value_pattern = isset( $getValue['value_pattern'] ) ? (array) $getValue['value_pattern'] : array();
430
-
431
  $default_type = isset( $getValue['default_type'] ) ? $getValue['default_type'] : 'attribute';
432
  $default_value_attribute = isset( $getValue['default_value_attribute'] ) ? $getValue['default_value_attribute'] : '';
433
  $default_value_pattern = isset( $getValue['default_value_pattern'] ) ? $getValue['default_value_pattern'] : '';
434
-
435
  $result = '';
436
-
437
  // Check If Attribute Code exist
438
  if ( $wfDAttributeCode && count( $attribute ) ) {
439
  foreach ( $attribute as $key => $name ) {
@@ -445,10 +445,10 @@ class ProductHelper {
445
  $conditionName = (float) str_replace( $unit, '', $conditionName );
446
  }
447
  }
448
-
449
  $conditionCompare = $compare[ $key ];
450
  $conditionOperator = $condition[ $key ];
451
-
452
  if ( ! empty( $conditionCompare ) ) {
453
  $conditionCompare = trim( $conditionCompare );
454
  }
@@ -460,7 +460,7 @@ class ProductHelper {
460
  } elseif ( 'remove' === $type[ $key ] ) {
461
  $conditionValue = '';
462
  }
463
-
464
  switch ( $conditionOperator ) {
465
  case '==':
466
  if ( $conditionName == $conditionCompare ) {
@@ -485,7 +485,7 @@ class ProductHelper {
485
  $result = $prefix[ $key ] . $result . $suffix[ $key ];
486
  }
487
  }
488
-
489
  break;
490
  case '<=':
491
  if ( $conditionName <= $conditionCompare ) {
@@ -529,7 +529,7 @@ class ProductHelper {
529
  break;
530
  case 'between':
531
  $compare_items = explode( ',', $conditionCompare );
532
-
533
  if ( isset( $compare_items[1] ) && is_numeric( $compare_items[0] ) && is_numeric( $compare_items[1] ) ) {
534
  if ( $conditionName >= $compare_items[0] && $conditionName <= $compare_items[1] ) {
535
  $result = self::price_format( $name, $conditionName, $conditionValue );
@@ -547,7 +547,7 @@ class ProductHelper {
547
  }
548
  }
549
  }
550
-
551
  if ( '' === $result ) {
552
  if ( 'pattern' === $default_type ) {
553
  $result = $default_value_pattern;
@@ -559,10 +559,10 @@ class ProductHelper {
559
  $result = '';
560
  }
561
  }
562
-
563
  return apply_filters( 'woo_feed_after_dynamic_attribute_value', $result, $product, $attributeName, $merchant_attribute, $config );
564
  }
565
-
566
  /**
567
  * Format price value
568
  *
@@ -619,10 +619,10 @@ class ProductHelper {
619
  }
620
  }
621
  }
622
-
623
  return $result;
624
  }
625
-
626
  /**
627
  * Get attribute value by type
628
  *
@@ -638,7 +638,7 @@ class ProductHelper {
638
  ) {
639
  return ( new AttributeValueByType( $attribute, $product, $config, $merchant_attribute ) )->get_value();
640
  }
641
-
642
  /**
643
  * @param string $output
644
  * @param string $productAttribute
@@ -655,14 +655,14 @@ class ProductHelper {
655
  if ( empty( $str_replace['subject'] ) || $productAttribute !== $str_replace['subject'] ) {
656
  continue;
657
  }
658
-
659
  if ( strpos( $str_replace['search'], '/' ) === false ) {
660
  $output = preg_replace( stripslashes( '/' . $str_replace['search'] . '/mi' ), $str_replace['replace'], $output );
661
  } else {
662
  $output = str_replace( $str_replace['search'], $str_replace['replace'], $output );
663
  }
664
  }
665
-
666
  return $output;
667
  }
668
- }
80
  * @var string
81
  */
82
  const PRODUCT_CUSTOM_IDENTIFIER = 'woo_feed_';
83
+
84
  /**
85
  * @param Config $config Feed Configuration.
86
+ * @param array $args Query Arguments
87
  *
88
+ * @return array
89
  */
90
+ public static function get_ids( $config, $args = [], $settings = null ) {
91
+ return QueryFactory::get_ids( $config, $args, $settings );
92
  }
93
+
94
  /**
95
  * Get Product Gallery Items (URL) array.
96
  * This can contains empty array values
103
  public static function get_product_gallery( $product ) {
104
  $imgUrls = [];
105
  $attachmentIds = [];
106
+
107
  if ( $product->is_type( 'variation' ) ) {
108
  if ( class_exists( 'Woo_Variation_Gallery' ) ) {
109
  /**
138
  */
139
  $var_id = $product->get_id();
140
  $parent_id = $product->get_parent_id();
141
+
142
  $variation_obj = get_post_meta( $parent_id, 'woodmart_variation_gallery_data', true );
143
  if ( isset( $variation_obj, $variation_obj[ $var_id ] ) ) {
144
  $attachmentIds = explode( ',', $variation_obj[ $var_id ] );
152
  $attachmentIds = wc_get_product( $product->get_parent_id() )->get_gallery_image_ids();
153
  }
154
  }
155
+
156
  /**
157
  * Get Variable Product Gallery Image ids if Product is not a variation
158
  * or variation does not have any gallery images
160
  if ( empty( $attachmentIds ) ) {
161
  $attachmentIds = $product->get_gallery_image_ids();
162
  }
163
+
164
  if ( $attachmentIds && is_array( $attachmentIds ) ) {
165
  $mKey = 1;
166
  foreach ( $attachmentIds as $attachmentId ) {
168
  $mKey ++;
169
  }
170
  }
171
+
172
  return $imgUrls;
173
  }
174
+
175
  /**
176
  * Get Product Meta Value.
177
  *
187
  if ( '' === $value && $product->is_type( 'variation' ) ) {
188
  $value = get_post_meta( $product->get_parent_id(), $meta, true );
189
  }
190
+
191
  return apply_filters( 'woo_feed_filter_product_meta', $value, $product, $config );
192
  }
193
+
194
  /**
195
  * Get Product Custom Field values.
196
  *
205
  if ( $product->is_type( 'variation' ) ) {
206
  $meta = $field . '_var';
207
  }
208
+
209
  $meta = apply_filters( 'woo_feed_custom_field_meta', $meta, $product, $config );
210
+
211
  if ( strpos( $meta, '_identifier' ) !== false ) {
212
  $old_meta_key = $meta;
213
  $new_meta_key = str_replace( '_identifier', '', $meta );
215
  $new_meta_key = $meta;
216
  $old_meta_key = str_replace( 'woo_feed_', 'woo_feed_identifier_', $meta );
217
  }
218
+
219
  $new_meta_value = self::get_product_meta( $new_meta_key, $product, $config );
220
  $old_meta_value = self::get_product_meta( $old_meta_key, $product, $config );
221
+
222
  if ( empty( $new_meta_value ) ) {
223
  return self::format_custom_field_value( $old_meta_value, $meta );
224
  }
225
+
226
  return self::format_custom_field_value( $new_meta_value, $meta );
227
  }
228
+
229
  private static function format_custom_field_value( $value, $meta ) {
230
  if ( strpos( $meta, 'availability_date' ) ) {
231
  return date( 'c', strtotime( $value ) );
232
  }
233
+
234
  return $value;
235
  }
236
+
237
  /**
238
  * Get Product Taxonomy.
239
  *
247
  $id = woo_feed_parent_product_id( $product );
248
  $separator = apply_filters( 'woo_feed_product_taxonomy_term_list_separator', ',', $config, $product );
249
  $term_list = get_the_term_list( $id, $taxonomy, '', $separator, '' );
250
+
251
  if ( is_object( $term_list ) && get_class( $term_list ) === 'WP_Error' ) {
252
  $term_list = '';
253
  }
254
  $getTaxonomy = woo_feed_strip_all_tags( $term_list );
255
+
256
  return apply_filters( 'woo_feed_filter_product_taxonomy', $getTaxonomy, $product, $config );
257
  }
258
+
259
  /**
260
  * Ger Product Attribute
261
  *
269
  */
270
  public static function get_product_attribute( $attr, $product, $config ) {
271
  $id = $product->get_id();
272
+
273
  if ( woo_feed_wc_version_check( 3.2 ) ) {
274
  if ( woo_feed_wc_version_check( 3.6 ) ) {
275
  $attr = str_replace( 'pa_', '', $attr );
276
  }
277
  $value = $product->get_attribute( $attr );
278
+
279
  // if empty get attribute of parent post
280
  if ( '' === $value && $product->is_type( 'variation' ) ) {
281
  $product = wc_get_product( $product->get_parent_id() );
282
  $value = $product->get_attribute( $attr );
283
  }
284
+
285
  $getAttribute = $value;
286
  } else {
287
  $getAttribute = implode( ',', wc_get_product_terms( $id, $attr, array( 'fields' => 'names' ) ) );
288
  }
289
+
290
  return apply_filters( 'woo_feed_filter_product_attribute', $getAttribute, $attr, $product, $config );
291
  }
292
+
293
+
 
294
  /**
295
  * Get ACF Field values
296
  *
307
  if ( class_exists( 'ACF' ) ) {
308
  return get_field( $field, $product->get_id() );
309
  }
310
+
311
  return '';
312
  }
313
+
314
  /**
315
  * Return Category Mapping Values by Product Id [Parent Product for variation]
316
  *
333
  'bing_local_inventory',
334
  'snapchat'
335
  );
336
+
337
  if ( ! isset( $getValue['cmapping'] ) && ! isset( $getValue['gcl-cmapping'] ) ) {
338
  return '';
339
  }
340
+
341
  //get product terms
342
  $categories = get_the_terms( $product_id, 'product_cat' );
343
+
344
  //get cmapping value
345
  if ( isset( $getValue['gcl-cmapping'] ) && in_array( $getValue['mappingprovider'], $suggestive_category_list_merchants, true ) ) {
346
  $cmapping = is_array( $getValue['gcl-cmapping'] ) ? array_reverse( $getValue['gcl-cmapping'], true ) : $getValue['gcl-cmapping'];
347
  } else {
348
  $cmapping = is_array( $getValue['cmapping'] ) ? array_reverse( $getValue['cmapping'], true ) : $getValue['cmapping'];
349
  }
350
+
351
  // Fixes empty mapped category issue
352
  if ( ! empty( $categories ) && is_array( $categories ) && count( $categories ) ) {
353
  $categories = array_reverse( $categories );
358
  }
359
  }
360
  }
361
+
362
  return $cat_map_value;
363
  }
364
+
365
  /**
366
  * Get Attribute Mapping Value.
367
  *
380
  $attributes = get_option( $attribute );
381
  $glue = ! empty( $attributes['glue'] ) ? $attributes['glue'] : " ";
382
  $output = '';
383
+
384
  if ( isset( $attributes['mapping'] ) ) {
385
  foreach ( $attributes['mapping'] as $map ) {
386
  $get_value = $getAttributeValueByType->get_value( $map );
389
  }
390
  }
391
  }
392
+
393
  //trim extra glue
394
  $output = trim( $output, $glue );
395
+
396
  // remove extra whitespace
397
  $output = preg_replace( '!\s\s+!', ' ', $output );
398
+
399
  return apply_filters( 'woo_feed_filter_attribute_mapping', $output, $attribute, $product, $config );
400
  }
401
+
402
  /**
403
  * Get the value of a dynamic attribute
404
  *
421
  $condition = isset( $getValue['condition'] ) ? (array) $getValue['condition'] : array();
422
  $compare = isset( $getValue['compare'] ) ? (array) $getValue['compare'] : array();
423
  $type = isset( $getValue['type'] ) ? (array) $getValue['type'] : array();
424
+
425
  $prefix = isset( $getValue['prefix'] ) ? (array) $getValue['prefix'] : array();
426
  $suffix = isset( $getValue['suffix'] ) ? (array) $getValue['suffix'] : array();
427
+
428
  $value_attribute = isset( $getValue['value_attribute'] ) ? (array) $getValue['value_attribute'] : array();
429
  $value_pattern = isset( $getValue['value_pattern'] ) ? (array) $getValue['value_pattern'] : array();
430
+
431
  $default_type = isset( $getValue['default_type'] ) ? $getValue['default_type'] : 'attribute';
432
  $default_value_attribute = isset( $getValue['default_value_attribute'] ) ? $getValue['default_value_attribute'] : '';
433
  $default_value_pattern = isset( $getValue['default_value_pattern'] ) ? $getValue['default_value_pattern'] : '';
434
+
435
  $result = '';
436
+
437
  // Check If Attribute Code exist
438
  if ( $wfDAttributeCode && count( $attribute ) ) {
439
  foreach ( $attribute as $key => $name ) {
445
  $conditionName = (float) str_replace( $unit, '', $conditionName );
446
  }
447
  }
448
+
449
  $conditionCompare = $compare[ $key ];
450
  $conditionOperator = $condition[ $key ];
451
+
452
  if ( ! empty( $conditionCompare ) ) {
453
  $conditionCompare = trim( $conditionCompare );
454
  }
460
  } elseif ( 'remove' === $type[ $key ] ) {
461
  $conditionValue = '';
462
  }
463
+
464
  switch ( $conditionOperator ) {
465
  case '==':
466
  if ( $conditionName == $conditionCompare ) {
485
  $result = $prefix[ $key ] . $result . $suffix[ $key ];
486
  }
487
  }
488
+
489
  break;
490
  case '<=':
491
  if ( $conditionName <= $conditionCompare ) {
529
  break;
530
  case 'between':
531
  $compare_items = explode( ',', $conditionCompare );
532
+
533
  if ( isset( $compare_items[1] ) && is_numeric( $compare_items[0] ) && is_numeric( $compare_items[1] ) ) {
534
  if ( $conditionName >= $compare_items[0] && $conditionName <= $compare_items[1] ) {
535
  $result = self::price_format( $name, $conditionName, $conditionValue );
547
  }
548
  }
549
  }
550
+
551
  if ( '' === $result ) {
552
  if ( 'pattern' === $default_type ) {
553
  $result = $default_value_pattern;
559
  $result = '';
560
  }
561
  }
562
+
563
  return apply_filters( 'woo_feed_after_dynamic_attribute_value', $result, $product, $attributeName, $merchant_attribute, $config );
564
  }
565
+
566
  /**
567
  * Format price value
568
  *
619
  }
620
  }
621
  }
622
+
623
  return $result;
624
  }
625
+
626
  /**
627
  * Get attribute value by type
628
  *
638
  ) {
639
  return ( new AttributeValueByType( $attribute, $product, $config, $merchant_attribute ) )->get_value();
640
  }
641
+
642
  /**
643
  * @param string $output
644
  * @param string $productAttribute
655
  if ( empty( $str_replace['subject'] ) || $productAttribute !== $str_replace['subject'] ) {
656
  continue;
657
  }
658
+
659
  if ( strpos( $str_replace['search'], '/' ) === false ) {
660
  $output = preg_replace( stripslashes( '/' . $str_replace['search'] . '/mi' ), $str_replace['replace'], $output );
661
  } else {
662
  $output = str_replace( $str_replace['search'], $str_replace['replace'], $output );
663
  }
664
  }
665
+
666
  return $output;
667
  }
668
+ }
V5/Merchant/MerchantAttributeReplaceFactory.php CHANGED
@@ -106,7 +106,7 @@ class MerchantAttributeReplaceFactory {
106
  'attribute_name' => array( 'g:attribute_name', true ),
107
  'attribute_value' => array( 'g:attribute_value', true ),
108
  'product_highlight' => array( 'g:product_highlight', true ),
109
-
110
  'material_1' => array( 'g:material', true ),
111
  'material_2' => array( 'g:material', true ),
112
  'energy_efficiency_class' => array( 'g:energy_efficiency_class', true ),
@@ -604,7 +604,7 @@ class MerchantAttributeReplaceFactory {
604
  'description' => array( 'description', true ),
605
  'link' => array( 'link', true ),
606
  'image' => array( 'image', true ),
607
- 'additionalimage' => array( 'additionalimage', true ),
608
  'category' => array( 'category', true ),
609
  'price' => array( 'price', false ),
610
  'price_with_vat' => array( 'price_with_vat', false ),
@@ -635,19 +635,19 @@ class MerchantAttributeReplaceFactory {
635
  'CSV' => [],
636
  'JSON' => [],
637
  ],
638
-
639
  ];
640
-
641
  return $data[ $template ][ strtoupper( $file_type ) ];
642
  }
643
-
644
  public static function replace_attribute( $attribute, $config ) {
645
  $feedType = ( 'xml' === $config->feedType ) ? 'xml' : 'csv';
646
  $data = self::data( $config->provider, $feedType );
647
  if ( isset( $data[ $attribute ] ) ) {
648
  return $data[ $attribute ][0];
649
  }
650
-
651
  return $attribute;
652
  }
653
- }
106
  'attribute_name' => array( 'g:attribute_name', true ),
107
  'attribute_value' => array( 'g:attribute_value', true ),
108
  'product_highlight' => array( 'g:product_highlight', true ),
109
+
110
  'material_1' => array( 'g:material', true ),
111
  'material_2' => array( 'g:material', true ),
112
  'energy_efficiency_class' => array( 'g:energy_efficiency_class', true ),
604
  'description' => array( 'description', true ),
605
  'link' => array( 'link', true ),
606
  'image' => array( 'image', true ),
607
+ 'additional_imageurl' => array( 'additional_imageurl', true ),
608
  'category' => array( 'category', true ),
609
  'price' => array( 'price', false ),
610
  'price_with_vat' => array( 'price_with_vat', false ),
635
  'CSV' => [],
636
  'JSON' => [],
637
  ],
638
+
639
  ];
640
+
641
  return $data[ $template ][ strtoupper( $file_type ) ];
642
  }
643
+
644
  public static function replace_attribute( $attribute, $config ) {
645
  $feedType = ( 'xml' === $config->feedType ) ? 'xml' : 'csv';
646
  $data = self::data( $config->provider, $feedType );
647
  if ( isset( $data[ $attribute ] ) ) {
648
  return $data[ $attribute ][0];
649
  }
650
+
651
  return $attribute;
652
  }
653
+ }
V5/Merchant/MerchantAttributesFactory.php CHANGED
@@ -1,41 +1,41 @@
1
  <?php
2
 
3
  namespace CTXFeed\V5\Merchant;
 
4
  class MerchantAttributesFactory {
5
-
6
  public static function get( $template = null ) {
7
  $data = self::data();
8
-
9
  if ( $template === null ) {
10
  return $data;
11
  }
12
-
13
  // Override Merchant Template.
14
-
15
- if ( in_array( $template, [ 'pinterest', 'adroll', 'smartly.io' ] ) ) {
16
  $template = 'google';
17
- } elseif ( in_array( $template, [ 'connexity', 'shopzilla' ] ) ) {
18
  $template = 'become';
19
  } elseif ( $template === 'fruugo.au' ) {
20
  $template = 'fruugo';
21
  } elseif ( $template === 'shopalike.fr' ) {
22
  $template = 'kijiji.ca';
23
  }
24
-
25
-
26
  if ( isset( $data[ $template ] ) ) {
27
  return $data[ $template ];
28
  }
29
-
30
  return false;
31
  }
32
-
33
  private static function data() {
34
- return [
35
- 'google' => [
36
- 1 => [
37
  'optionGroup' => 'Basic Information',
38
- 'options' => [
39
  'id' => 'Product Id[id]',
40
  'webitemid' => 'Product WebItemId[webitemid]',
41
  'region_id' => 'Region Id[region_id]',
@@ -59,11 +59,11 @@ class MerchantAttributesFactory {
59
  'images_9' => 'Additional Image 9 [additional_image_link]',
60
  'images_10' => 'Additional Image 10 [additional_image_link]',
61
  'condition' => 'Condition[condition]',
62
- ],
63
- ],
64
- 2 => [
65
  'optionGroup' => 'Availability & Price',
66
- 'options' => [
67
  'availability' => 'Stock Status[availability]',
68
  'availability_date' => 'Availability Date[availability_date]',
69
  'inventory' => 'Facebook Inventory[inventory]',
@@ -72,20 +72,20 @@ class MerchantAttributesFactory {
72
  'sale_price' => 'Sale Price[sale_price]',
73
  'cost_of_goods_sold' => 'Cost of Goods Sold[cost_of_goods_sold]',
74
  'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
75
- ],
76
- ],
77
- 3 => [
78
  'optionGroup' => 'Unique Product Identifiers',
79
- 'options' => [
80
  'brand' => 'Manufacturer[brand]',
81
  'upc' => 'GTIN[gtin]',
82
  'sku' => 'MPN[mpn]',
83
  'identifier_exists' => 'Identifier Exist[identifier_exists]',
84
- ],
85
- ],
86
- 4 => [
87
  'optionGroup' => 'Detailed Product Attributes',
88
- 'options' => [
89
  'item_group_id' => 'Item Group Id[item_group_id]',
90
  'external_seller_id' => 'External seller ID[external_seller_id]',
91
  'color' => 'Color[color]',
@@ -113,11 +113,11 @@ class MerchantAttributesFactory {
113
  'section_name' => 'Section Name (Product Detail)[section_name]',
114
  'attribute_name' => 'Attribute Name (Product Detail)[attribute_name]',
115
  'attribute_value' => 'Attribute Value (Product Detail)[attribute_value]',
116
- ],
117
- ],
118
- 5 => [
119
  'optionGroup' => 'Tax & Shipping',
120
- 'options' => [
121
  'tax' => 'Tax[tax]',
122
  'tax_category' => 'Tax[tax_category]',
123
  'shipping' => 'Shipping',
@@ -136,50 +136,50 @@ class MerchantAttributesFactory {
136
  'material_1' => 'The primary material',
137
  'material_2' => 'The secondary material',
138
  'material_3' => 'The tertiary material',
139
- ],
140
- ],
141
- 6 => [
142
  'optionGroup' => 'Product Combinations',
143
- 'options' => [
144
  'multipack' => 'Multipack[multipack]',
145
  'is_bundle' => 'Is Bundle[is_bundle]',
146
- ],
147
- ],
148
- 7 => [
149
  'optionGroup' => 'Adult Products',
150
- 'options' => [
151
  'adult' => 'Adult[adult]',
152
- ],
153
- ],
154
- 8 => [
155
  'optionGroup' => 'Ads Attributes',
156
- 'options' => [
157
  'ads_redirect' => 'Ads Redirect[ads_redirect]',
158
- ],
159
- ],
160
- 9 => [
161
  'optionGroup' => 'Custom Label Attributes',
162
- 'options' => [
163
  'custom_label_0' => 'Custom label 0 [custom_label_0]',
164
  'custom_label_1' => 'Custom label 1 [custom_label_1]',
165
  'custom_label_2' => 'Custom label 2 [custom_label_2]',
166
  'custom_label_3' => 'Custom label 3 [custom_label_3]',
167
  'custom_label_4' => 'Custom label 4 [custom_label_4]',
168
- ],
169
- ],
170
- 10 => [
171
  'optionGroup' => 'Additional Attributes',
172
- 'options' => [
173
  'excluded_destination' => 'Excluded Destination[excluded_destination]',
174
  'shopping_ads_excluded_country' => 'Shopping Ads Excluded Country[shopping_ads_excluded_country]',
175
  'included_destination' => 'Included Destination[included_destination]',
176
  'expiration_date' => 'Expiration Date [expiration_date]',
177
  'transit_time_label' => 'Transit Time [transit_time_label]',
178
- ],
179
- ],
180
- 11 => [
181
  'optionGroup' => 'Unit Prices, Subscription, and Installment',
182
- 'options' => [
183
  'unit_pricing_measure' => 'Unit Pricing Measure[unit_pricing_measure]',
184
  'unit_pricing_base_measure' => 'Unit Pricing Base Measure[unit_pricing_base_measure]',
185
  'installment_months' => 'Installment Months[months]',
@@ -187,31 +187,31 @@ class MerchantAttributesFactory {
187
  'subscription_period' => 'Subscription Period[period]',
188
  'subscription_period_length' => 'Subscription Period Length[period_length]',
189
  'subscription_amount' => 'Subscription Amount[amount]',
190
- ],
191
- ],
192
- 12 => [
193
  'optionGroup' => 'Energy Labels',
194
- 'options' => [
195
  'energy_efficiency_class' => 'Energy Efficiency Class[energy_efficiency_class]',
196
  'min_energy_efficiency_class' => 'Min Energy Efficiency Class[energy_efficiency_class]',
197
  'max_energy_efficiency_class' => 'Max Energy Efficiency Class[energy_efficiency_class]',
198
- ],
199
- ],
200
- 13 => [
201
  'optionGroup' => 'Loyalty Points (Japan Only)',
202
- 'options' => [
203
  'loyalty_points' => 'loyalty_points[loyalty_points]',
204
- ],
205
- ],
206
- 14 => [
207
  'optionGroup' => 'Multiple Installments (Brazil Only)',
208
- 'options' => [
209
  'installment' => 'Installment[installment]',
210
- ],
211
- ],
212
- 15 => [
213
  'optionGroup' => 'Merchant Promotions Attributes',
214
- 'options' => [
215
  'promotion_id' => 'Promotion Id[promotion_id]',
216
  'product_applicability' => 'Product Applicability[product_applicability]',
217
  'offer_type' => 'Offer Type[offer_type]',
@@ -238,20 +238,20 @@ class MerchantAttributesFactory {
238
  'product_type_exclusion' => 'Product Type Exclusion[product_type_exclusion]',
239
  'brand_exclusion' => 'Brand Exclusion[brand_exclusion]',
240
  'item_group_id_exclusion' => 'Item Group Exclusion[item_group_id_exclusion]',
241
- ],
242
- ],
243
- 16 => [
244
  'optionGroup' => 'Shopping Action Attributes',
245
- 'options' => [
246
- 'sell_on_google_quantity' => 'Number of Product Sold On Google [sell_on_google_quantity]',
247
- 'return_address_label' => 'Return Address [return_address_label]',
248
- 'return_policy_label' => 'Return Policy [return_policy_label]',
249
  'google_funded_promotion_eligibility' => 'Google Funded Promotion Eligibility [google_funded_promotion_eligibility]',
250
- ],
251
- ],
252
- 17 => [
253
  'optionGroup' => 'Local Inventory / Product Inventory',
254
- 'options' => [
255
  'store_code' => 'Store Code [store_code]',
256
  'quantity' => 'Quantity [quantity]',
257
  'pickup_method' => 'Pickup Method [pickup_method]',
@@ -260,23 +260,23 @@ class MerchantAttributesFactory {
260
  'link_template' => 'Link Template [link_template]',
261
  'mobile_link_template' => 'Mobile Link Template [mobile_link_template]',
262
  'mobile_pickup_link_template' => 'Mobile Pickup Link Template [mobile_pickup_link_template]',
263
- ],
264
- ],
265
- 18 => [
266
  'optionGroup' => 'Pinterest Catalog Attributes',
267
- 'options' => [
268
  'free_shipping_label' => 'Free Shipping Label[free_shipping_label]',
269
  'free_shipping_limit' => 'Free Shipping Limit[free_shipping_limit]',
270
  'average_review_rating' => 'Average Review Rating[average_review_rating]',
271
  'number_of_ratings' => 'Number of Ratings[number_of_ratings]',
272
  'number_of_reviews' => 'Number of Reviews[number_of_reviews]',
273
- ],
274
- ],
275
- ],
276
- 'facebook' => [
277
- 1 => [
278
  'optionGroup' => 'Basic Information',
279
- 'options' => [
280
  'id' => 'Product Id[id]',
281
  'title' => 'Product Title[title]',
282
  'description' => 'Product Description[description]',
@@ -298,30 +298,30 @@ class MerchantAttributesFactory {
298
  'images_9' => 'Additional Image 9 [additional_image_link]',
299
  'images_10' => 'Additional Image 10 [additional_image_link]',
300
  'condition' => 'Condition[condition]',
301
- ],
302
- ],
303
- 2 => [
304
  'optionGroup' => 'Availability & Price',
305
- 'options' => [
306
  'availability' => 'Stock Status[availability]',
307
  'availability_date' => 'Availability Date[availability_date]',
308
  'price' => 'Regular Price[price]',
309
  'sale_price' => 'Sale Price[sale_price]',
310
  'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
311
- ],
312
- ],
313
- 3 => [
314
  'optionGroup' => 'Unique Product Identifiers',
315
- 'options' => [
316
  'brand' => 'Manufacturer[brand]',
317
  'gtin' => 'GTIN[gtin]',
318
  'mpn' => 'MPN[mpn]',
319
  'identifier_exists' => 'Identifier Exist[identifier_exists]',
320
- ],
321
- ],
322
- 4 => [
323
  'optionGroup' => 'Detailed Product Attributes',
324
- 'options' => [
325
  'item_group_id' => 'Item Group Id[item_group_id]',
326
  'color' => 'Color[color]',
327
  'gender' => 'Gender[gender]',
@@ -329,11 +329,11 @@ class MerchantAttributesFactory {
329
  'material' => 'Material[material]',
330
  'pattern' => 'Pattern[pattern]',
331
  'size' => 'Size of the item[size]',
332
- ],
333
- ],
334
- 5 => [
335
  'optionGroup' => 'Tax & Shipping',
336
- 'options' => [
337
  'tax' => 'Tax[tax]',
338
  'tax_country' => 'Tax Country[tax_country]',
339
  'tax_region' => 'Tax Region[tax_region]',
@@ -342,21 +342,21 @@ class MerchantAttributesFactory {
342
  'tax_category' => 'Tax[tax_category]',
343
  'shipping' => 'Shipping',
344
  'shipping_weight' => 'Shipping Weight[shipping_weight]',
345
- ],
346
- ],
347
- 6 => [
348
  'optionGroup' => 'Custom Label Attributes',
349
- 'options' => [
350
  'custom_label_0' => 'Custom label 0 [custom_label_0]',
351
  'custom_label_1' => 'Custom label 1 [custom_label_1]',
352
  'custom_label_2' => 'Custom label 2 [custom_label_2]',
353
  'custom_label_3' => 'Custom label 3 [custom_label_3]',
354
  'custom_label_4' => 'Custom label 4 [custom_label_4]',
355
- ],
356
- ],
357
- 7 => [
358
  'optionGroup' => 'Additional Attributes',
359
- 'options' => [
360
  'inventory' => 'Facebook Inventory[inventory]',
361
  'override' => 'Facebook Override[override]',
362
  'status' => 'Status [status]',
@@ -378,22 +378,22 @@ class MerchantAttributesFactory {
378
  'importer_address' => 'Importer Address [importer_address]',
379
  'manufacturer_info' => 'Manufacturer Info [manufacturer_info]',
380
  'return_policy_info' => 'Return Policy Info [return_policy_info]',
381
- ],
382
- ],
383
- ],
384
- 'google_dynamic_ads' => [
385
- 1 => [
386
  'optionGroup' => 'Basic Information',
387
- 'options' => [
388
  'Page URL' => 'Page URL[Page URL]',
389
  'Custom Label' => 'Custom Label [Custom Label]',
390
- ],
391
- ],
392
- ],
393
- 'bing' => [
394
- 1 => [
395
  'optionGroup' => 'Basic Information',
396
- 'options' => [
397
  'id' => 'Product Id[id]',
398
  'title' => 'Product Title[title]',
399
  'link' => 'Product URL[link]',
@@ -408,31 +408,31 @@ class MerchantAttributesFactory {
408
  'mpn' => 'MPN[mpn]',
409
  'brand' => 'Brand[brand]',
410
  'identifier_exists' => 'Identifier Exists[identifier_exists]',
411
- ],
412
- ],
413
- 2 => [
414
  'optionGroup' => 'Apparel Products',
415
- 'options' => [
416
  'gender' => 'Gender[gender]',
417
  'age_group' => 'Age Group[age_group]',
418
  'color' => 'Color[color]',
419
  'size' => 'Size[size]',
420
  'size_type' => 'Size Type[size_type]',
421
  'size_system' => 'Size System[size_system]',
422
- ],
423
- ],
424
- 3 => [
425
  'optionGroup' => 'Product Variants',
426
- 'options' => [
427
  'item_group_id' => 'Item Group ID[item_group_id]',
428
  'material' => 'Material[material]',
429
  'pattern' => 'Pattern[pattern]',
430
  'additional_image_link' => 'Additional Image Link[additional_image_link]',
431
- ],
432
- ],
433
- 4 => [
434
  'optionGroup' => 'Other Information',
435
- 'options' => [
436
  'adult' => 'Adult[adult]',
437
  'availability' => 'Availability[availability]',
438
  'product_category' => 'Product Category[product_category]',
@@ -454,58 +454,58 @@ class MerchantAttributesFactory {
454
  'custom_label_2' => 'Custom Label 2[custom_label_2]',
455
  'custom_label_3' => 'Custom Label 3[custom_label_3]',
456
  'custom_label_4' => 'Custom Label 4[custom_label_4]',
457
- ],
458
- ],
459
- 5 => [
460
  'optionGroup' => 'Sales & Promotions',
461
- 'options' => [
462
  'sale_price' => 'Sale Price[sale_price]',
463
  'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
464
  'promotion_ID' => 'Promotion ID[promotion_ID]',
465
- ],
466
- ],
467
- 6 => [
468
  'optionGroup' => 'Local Product Inventory',
469
- 'options' => [
470
  'store_code' => 'Store Code[store_code]',
471
  'itemid' => 'Item ID[itemid]',
472
  'quantity' => 'Quantity[quantity]',
473
  'weeks_of_supply' => 'Weeks Of Supply[weeks_of_supply]',
474
  'pick_up_method' => 'Pick Up Method[pick_up_method]',
475
  'pick_up_sla' => 'Pick Up SLA[pick_up_sla]',
476
- ],
477
- ],
478
- ],
479
- 'pinterest_rss' => [
480
- 1 => [
481
  'optionGroup' => 'Basic Information',
482
- 'options' => [
483
  'title' => 'Product Title[title]',
484
  'description' => 'Product Description[description]',
485
  'link' => 'Product URL[link]',
486
  'image' => 'Main Image[image]',
487
  'pubDate' => 'Publish Date[pubDate]',
488
  'guid' => 'GUID[guid]',
489
- ],
490
- ],
491
- ],
492
- 'googlereview' => [
493
- 1 => [
494
  'optionGroup' => 'Basic Information',
495
- 'options' => [
496
  'product_name' => 'Product Title [product_name]',
497
  'product_url' => 'Product URL [product_url]',
498
  'review_temp_gtin' => 'GTIN [gtin]',
499
  'review_temp_mpn' => 'MPN [mpn]',
500
  'review_temp_sku' => 'SKU [sku]',
501
  'review_temp_brand' => 'Brand [brand]',
502
- ],
503
- ],
504
- ],
505
- 'wine_searcher' => [
506
- 1 => [
507
  'optionGroup' => 'Basic Information',
508
- 'options' => [
509
  'name' => 'Product Title[name]',
510
  'description' => 'Product description[description]',
511
  'vintage' => 'Vintage[vintage]',
@@ -518,13 +518,13 @@ class MerchantAttributesFactory {
518
  'offer-type' => 'Offer Type[offer-type]',
519
  'delivery-time' => 'Delivery Time[delivery-time]',
520
  'stock-level' => 'Stock Level[stock-level]',
521
- ],
522
- ],
523
- ],
524
- 'tiktok' => [
525
- 1 => [
526
  'optionGroup' => 'Basic Information',
527
- 'options' => [
528
  'sku_id' => 'SKU ID[id]',
529
  'title' => 'Product Title[title]',
530
  'description' => 'Product description[description]',
@@ -571,13 +571,13 @@ class MerchantAttributesFactory {
571
  'merchant_brand' => 'Merchant Brand[merchant_brand]',
572
  'productHisEval' => 'Purchase Count:FeedBack[productHisEval]',
573
  'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
574
- ],
575
- ],
576
- ],
577
- 'modalova' => [
578
- 1 => [
579
  'optionGroup' => 'Basic Information',
580
- 'options' => [
581
  'id' => 'Product ID[id]',
582
  'title' => 'Product Title[title]',
583
  'slug' => 'Product URL Slug[slug]',
@@ -604,13 +604,13 @@ class MerchantAttributesFactory {
604
  'category_path' => 'Category Path[category_path]',
605
  'created_at' => 'Created At[created_at]',
606
  'updated_at' => 'Updated At[updated_at]',
607
- ],
608
- ],
609
- ],
610
- 'catchdotcom' => [
611
- 1 => [
612
  'optionGroup' => 'Basic Information',
613
- 'options' => [
614
  'product-id' => 'Product ID [product-id]',
615
  'title' => 'Product title [title]',
616
  'product-description' => 'Product Description[product-description]',
@@ -639,13 +639,13 @@ class MerchantAttributesFactory {
639
  'leadtime-to-ship' => 'Lead Time to Ship[leadtime-to-ship]',
640
  'club-catch-eligible' => 'Club Catch eligible[club-catch-eligible]',
641
  'tax-au' => 'GST %[tax-au]',
642
- ],
643
- ],
644
- ],
645
- 'fashionchick' => [
646
- 1 => [
647
  'optionGroup' => 'Basic Information',
648
- 'options' => [
649
  'Product ID' => 'Product ID [Product ID]',
650
  'Titel' => 'Product Titel [Titel]',
651
  'Omschrijving' => 'Product Description [Omschrijving]',
@@ -666,13 +666,13 @@ class MerchantAttributesFactory {
666
  'Materiaal' => 'Material [Materiaal]',
667
  'Geslacht' => 'Gender [Geslacht]',
668
  'Kleur' => 'Color [Kleur]',
669
- ],
670
- ],
671
- ],
672
- 'goedgeplaatst' => [
673
- 1 => [
674
  'optionGroup' => 'Basic Information',
675
- 'options' => [
676
  'title' => 'Product Title [title]',
677
  'description' => 'Product Description [description]',
678
  'type' => 'Product Type [type]',
@@ -696,13 +696,13 @@ class MerchantAttributesFactory {
696
  'directForwardToMp' => 'Direct Forward Mp [directForwardToMp]',
697
  'priceBidMinimal' => 'Price Bid Minimal [priceBidMinimal]',
698
  'priceBidAsking' => 'Price Bid Asking [priceBidAsking]',
699
- ],
700
- ],
701
- ],
702
- 'skroutz' => [
703
- 1 => [
704
  'optionGroup' => 'Required Information',
705
- 'options' => [
706
  'id' => 'Unique ID',
707
  'name' => 'Product Title',
708
  'description' => 'Product Description',
@@ -714,35 +714,45 @@ class MerchantAttributesFactory {
714
  'manufacturer' => 'Manufacturer',
715
  'mpn' => 'MPN / ISBN',
716
  'availability' => 'Availability',
717
- ],
718
- ],
719
- 2 => [
720
  'optionGroup' => 'Additional Information',
721
- 'options' => [
722
- 'instock' => 'Stock Status [InStock]',
723
- 'ean' => 'EAN / Barcode',
724
- 'additionalimage' => 'Additional Image Link',
725
- 'color' => 'Color',
726
- 'size' => 'Size',
727
- 'weight' => 'Weight',
728
- 'quantity' => 'Quantity',
729
- ],
730
- ],
731
- ],
732
- 'daisycon' => [
733
- 1 => [
 
 
 
 
 
 
 
 
 
 
734
  'optionGroup' => 'Required Attributes',
735
- 'option' => [
736
  'sku' => 'Unique Product ID [SKU]',
737
  'description' => 'Description',
738
  'link' => 'Product URL',
739
  'price' => 'Price[Current/Sale Price]',
740
  'title' => 'Product Title',
741
- ],
742
- ],
743
- 2 => [
744
  'optionGroup' => 'Highly Recommended Attributes',
745
- 'option' => [
746
  'image_link_1' => 'Main Image',
747
  'brand' => 'Brand of the product',
748
  'category' => 'Main category',
@@ -753,11 +763,11 @@ class MerchantAttributesFactory {
753
  'in_stock' => 'Stock status',
754
  'in_stock_amount' => 'Amount of items in stock',
755
  'price_old' => 'Old price [Regular Price (in case of discount prices)]',
756
- ],
757
- ],
758
- 3 => [
759
  'optionGroup' => 'Recommended Attributes',
760
- 'option' => [
761
  'color_primary' => 'Primary color of the product',
762
  'condition' => 'Product Condition',
763
  'gender_target' => 'Gender Target',
@@ -770,11 +780,11 @@ class MerchantAttributesFactory {
770
  'image_link_7' => 'Image 7',
771
  'image_link_8' => 'Image 8',
772
  'image_link_9' => 'Image 9',
773
- ],
774
- ],
775
- 4 => [
776
  'optionGroup' => 'Optional Attributes',
777
- 'option' => [
778
  'additional_costs' => 'Additional costs',
779
  'brand_logo' => 'Brand Logo URL',
780
  'delivery_description' => 'Description of the delivery method',
@@ -787,390 +797,390 @@ class MerchantAttributesFactory {
787
  'size' => 'General Size field',
788
  'size_description' => 'Description for the “size” field',
789
  'terms_conditions' => 'Full terms and conditions',
790
- ],
791
- ],
792
- ],
793
- 'daisycon_automotive' => [
794
- 1 => [
795
  'optionGroup' => 'Required Attributes',
796
- 'option' => [
797
- 'description' => "Description of the product",
798
- 'link' => "URL to the page of the product",
799
- 'price' => "Price [Current/Sale Price]",
800
- 'sku' => "Unique Product ID [SKU]",
801
- 'title' => "Complete name of the product",
802
- ],
803
- ],
804
- 2 => [
805
  'optionGroup' => 'Highly Recommended Attributes',
806
- 'option' => [
807
- 'brand' => "Brand of the product",
808
- 'category' => "Main category",
809
- 'category_path' => "Category path",
810
- 'color_primary' => "Primary color of the product",
811
- 'delivery_time' => "Delivery time in days",
812
- 'ean' => "EAN",
813
- 'google_category_id' => "Google category ID",
814
- 'in_stock' => "Stock status",
815
- 'in_stock_amount' => "Amount of items in stock",
816
- 'price_old' => "Old price [Regular Price]",
817
- 'image_link_1' => "Main Image",
818
- ],
819
- ],
820
- 3 => [
821
  'optionGroup' => 'Recommended Attributes',
822
- 'option' => [
823
- 'condition' => "Product Condition",
824
- 'price_shipping' => "Shipping costs",
825
- 'image_link_2' => "Image 2",
826
- 'image_link_3' => "Image 3",
827
- 'image_link_4' => "Image 4",
828
- 'image_link_5' => "Image 5",
829
- 'image_link_6' => "Image 6",
830
- 'image_link_7' => "Image 7",
831
- 'image_link_8' => "Image 8",
832
- 'image_link_9' => "Image 9",
833
- ],
834
- ],
835
- 4 => [
836
  'optionGroup' => 'Optional Attributes',
837
- 'option' => [
838
- 'additional_costs' => "Additional costs",
839
- 'brake_system' => "Brake system type",
840
- 'brand_logo' => "Brand Logo URL",
841
- 'delivery_description' => "Description of the delivery method",
842
- 'fuel_type' => "Fuel type",
843
- 'gear_system' => "Gear system type",
844
- 'gender_target' => "Gender Target",
845
- 'has_airco' => "Is there an airco present",
846
- 'keywords' => "Keywords [Tags]",
847
- 'model' => "Model name/number",
848
- 'material_1' => "The primary material",
849
- 'material_2' => "The secondary material",
850
- 'material_3' => "The tertiary material",
851
- 'priority' => "Priority of the product",
852
  'rental_location_city' => "City of a rental car's pick up location (if applicable)",
853
  'rental_location_country' => "Country of a rental car's pick up location (if applicable)",
854
  'rental_location_region' => "Region of a rental car's pick up location (if applicable)",
855
- 'size' => "General field for size",
856
- 'size_description' => "Description for the “size” field",
857
- 'tire_size' => "The measurements of the tire size of the product.",
858
- 'year_built' => "Year in which the product is fabricated",
859
- 'terms_conditions' => "Full terms and conditions",
860
- ],
861
- ],
862
- ],
863
- 'daisycon_books' => [
864
- 1 => [
865
  'optionGroup' => 'Required Attributes',
866
- 'option' => [
867
- 'description' => "Description of the product",
868
- 'link' => "URL to the page of the product",
869
- 'price' => "Price [Current/Sale Price]",
870
- 'sku' => "Unique Product ID [SKU]",
871
- 'title' => "Complete name of the product",
872
- ],
873
- ],
874
- 2 => [
875
  'optionGroup' => 'Highly Recommended Attributes',
876
- 'option' => [
877
- 'author' => "Name of the author",
878
- 'category' => "Main category",
879
- 'category_path' => "Category path",
880
- 'delivery_time' => "Delivery time in days",
881
- 'ean' => "EAN",
882
- 'google_category_id' => "Google category ID",
883
- 'in_stock' => "Stock status",
884
- 'in_stock_amount' => "Amount of items in stock",
885
- 'isbn' => "ISBN of the book/magazine",
886
- 'price_old' => "Old price [Regular Price]",
887
- 'image_link_1' => "Main Image",
888
- ],
889
- ],
890
- 3 => [
891
  'optionGroup' => 'Recommended Attributes',
892
- 'option' => [
893
- 'book_publisher' => "Publisher of the book",
894
- 'book_type' => "Type of book",
895
- 'price_shipping' => "Shipping costs",
896
- 'image_link_2' => "Image 2",
897
- 'image_link_3' => "Image 3",
898
- 'image_link_4' => "Image 4",
899
- 'image_link_5' => "Image 5",
900
- 'image_link_6' => "Image 6",
901
- 'image_link_7' => "Image 7",
902
- 'image_link_8' => "Image 8",
903
- 'image_link_9' => "Image 9",
904
- ],
905
- ],
906
- 4 => [
907
  'optionGroup' => 'Low Priority Attributes',
908
- 'option' => [
909
- 'condition' => "Product Condition",
910
- 'gender_target' => "Gender to which the product is aimed",
911
- 'number_of_pages' => "Number of pages",
912
- 'release_date' => "Date of publication",
913
- ],
914
- ],
915
- 5 => [
916
  'optionGroup' => 'Optional Attributes',
917
- 'option' => [
918
- 'additional_costs' => "Additional costs",
919
- 'book_edition' => "Edition of the book",
920
- 'brand' => "Brand of the product",
921
- 'brand_logo' => "URL to an image of the brand logo",
922
- 'color_primary' => "Primary color of the product",
923
- 'delivery_description' => "Description of the delivery method",
924
- 'file_size' => "Total file size in kbps",
925
- 'file_type' => "File type (for example: epub)",
926
- 'keywords' => "Keywords for this product",
927
- 'language' => "Language of the product",
928
- 'model' => "Model name/number",
929
- 'priority' => "Priority of the product",
930
- 'size' => "General field for size",
931
- 'size_description' => "Description for the “size” field",
932
- 'size_length' => "Magazine length in mm",
933
- 'size_width' => "Magazine width in mm",
934
- 'weight' => "Weight in grams",
935
- 'material_1' => "The primary material",
936
- 'material_2' => "The secondary material",
937
- 'material_3' => "The tertiary material",
938
- 'terms_conditions' => "Full terms and conditions",
939
- ],
940
- ],
941
- ],
942
- 'daisycon_cosmetics' => [
943
- 1 => [
944
  'optionGroup' => 'Required Attributes',
945
- 'option' => [
946
- 'description' => "Description of the product",
947
- 'link' => "URL to the page of the product",
948
- 'price' => "Price [Current/Sale Price]",
949
- 'sku' => "Unique Product ID [SKU]",
950
- 'title' => "Complete name of the product",
951
- ],
952
- ],
953
- 2 => [
954
  'optionGroup' => 'Highly Recommended Attributes',
955
- 'option' => [
956
- 'allergic_info' => "Allergy information",
957
- 'amount_content' => "Amount of content, for example: 120(in combination with amount_description)",
958
- 'amount_description' => "The unit in which the amount is specified for example: ml",
959
- 'category' => "Main category",
960
- 'category_path' => "Category path",
961
- 'delivery_time' => "Delivery time in days",
962
- 'ean' => "EAN",
963
- 'google_category_id' => "Google category ID",
964
- 'in_stock' => "Stock status",
965
- 'in_stock_amount' => "Amount of items in stock",
966
- 'price_old' => "Old price [Regular Price]",
967
- 'image_link_1' => "Main Image",
968
- ],
969
- ],
970
- 3 => [
971
  'optionGroup' => 'Recommended Attributes',
972
- 'option' => [
973
- 'description_ingredients' => "Description of the ingredients",
974
- 'gender_target' => "Gender to which the product is aimed",
975
- 'price_shipping' => "Shipping costs",
976
- 'skin_type' => "Skintype for which the product is made",
977
- 'image_link_2' => "Image 2",
978
- 'image_link_3' => "Image 3",
979
- 'image_link_4' => "Image 4",
980
- 'image_link_5' => "Image 5",
981
- 'image_link_6' => "Image 6",
982
- 'image_link_7' => "Image 7",
983
- 'image_link_8' => "Image 8",
984
- 'image_link_9' => "Image 9",
985
- ],
986
- ],
987
- 4 => [
988
  'optionGroup' => 'Low Priority Attributes',
989
- 'option' => [
990
- 'color_primary' => "Primary color of the product",
991
- ],
992
- ],
993
- 5 => [
994
  'optionGroup' => 'Optional Attributes',
995
- 'option' => [
996
- 'additional_costs' => "Additional costs",
997
- 'brand_logo' => "URL to an image of the brand logo",
998
- 'condition' => "Product Condition",
999
- 'delivery_description' => "Description of the delivery method",
1000
- 'keywords' => "Keywords for this product",
1001
- 'made_in_country' => "Country in which the product is fabricated",
1002
- 'model' => "Model name/number",
1003
- 'priority' => "Priority of the product",
1004
- 'size' => "General field for size",
1005
- 'size_description' => "Description for the “size” field",
1006
- 'weight' => "Weight in grams",
1007
- 'material_1' => "The primary material",
1008
- 'material_2' => "The secondary material",
1009
- 'material_3' => "The tertiary material",
1010
- 'terms_conditions' => "Full terms and conditions",
1011
- ],
1012
- ],
1013
- ],
1014
- 'daisycon_daily_offers' => [
1015
- 1 => [
1016
  'optionGroup' => 'Required Attributes',
1017
- 'option' => [
1018
- 'description' => "Description of the product",
1019
- 'link' => "URL to the page of the product",
1020
- 'price' => "Price [Current/Sale Price]",
1021
- 'sku' => "Unique Product ID [SKU]",
1022
- 'title' => "Complete name of the product",
1023
- ],
1024
- ],
1025
- 2 => [
1026
  'optionGroup' => 'Highly Recommended Attributes',
1027
- 'option' => [
1028
- 'brand' => "Brand of the product",
1029
- 'category' => "Main category",
1030
- 'category_path' => "Category path",
1031
- 'delivery_time' => "Delivery time in days",
1032
- 'ean' => "EAN",
1033
- 'in_stock' => "Stock status",
1034
- 'in_stock_amount' => "Amount of items in stock",
1035
- 'price_old' => "Old price [Regular Price]",
1036
- 'image_link_1' => "Main Image",
1037
- ],
1038
- ],
1039
- 3 => [
1040
  'optionGroup' => 'Recommended Attributes',
1041
- 'option' => [
1042
- 'google_category_id' => "Google category ID",
1043
- 'price_shipping' => "Shipping costs",
1044
- 'image_link_2' => "Image 2",
1045
- 'image_link_3' => "Image 3",
1046
- 'image_link_4' => "Image 4",
1047
- 'image_link_5' => "Image 5",
1048
- 'image_link_6' => "Image 6",
1049
- 'image_link_7' => "Image 7",
1050
- 'image_link_8' => "Image 8",
1051
- 'image_link_9' => "Image 9",
1052
- ],
1053
- ],
1054
- 4 => [
1055
  'optionGroup' => 'Optional Attributes',
1056
- 'option' => [
1057
- 'additional_costs' => "Additional costs",
1058
- 'brand_logo' => "URL to an image of the brand logo",
1059
- 'color_primary' => "Primary color of the product",
1060
- 'condition' => "Product Condition",
1061
- 'delivery_description' => "Description of the delivery method",
1062
  'discount_amount' => "Amount of discount in euro's",
1063
- 'discount_percentage' => "Amount of discount in percent",
1064
- 'gender_target' => "Gender to which the product is aimed",
1065
- 'keywords' => "Keywords for this product",
1066
- 'model' => "Model name/number",
1067
- 'offer_datetime_end' => "End (time and) date of the daily offer",
1068
- 'offer_datetime_start' => "Start (time and) date of the daily offer",
1069
- 'size' => "General field for size",
1070
- 'size_description' => "Description for the “size” field",
1071
- 'material_1' => "The primary material",
1072
- 'material_2' => "The secondary material",
1073
- 'material_3' => "The tertiary material",
1074
- 'terms_conditions' => "Full terms and conditions",
1075
- ],
1076
- ],
1077
- ],
1078
- 'daisycon_electronics' => [
1079
- 1 => [
1080
  'optionGroup' => 'Required Attributes',
1081
- 'option' => [
1082
- 'description' => "Description of the product",
1083
- 'link' => "URL to the page of the product",
1084
- 'price' => "Price [Current/Sale Price]",
1085
- 'sku' => "Unique Product ID [SKU]",
1086
- 'title' => "Complete name of the product",
1087
- ],
1088
- ],
1089
- 2 => [
1090
  'optionGroup' => 'Highly Recommended Attributes',
1091
- 'option' => [
1092
- 'brand' => "Brand of the product",
1093
- 'category' => "Main category",
1094
- 'category_path' => "Category path",
1095
- 'delivery_time' => "Delivery time in days",
1096
- 'ean' => "EAN",
1097
- 'google_category_id' => "Google category ID",
1098
- 'in_stock' => "Stock status",
1099
- 'in_stock_amount' => "Amount of items in stock",
1100
- 'model' => "Model name/number",
1101
- 'price_old' => "Old price [Regular Price]",
1102
- 'image_link_1' => "Main Image",
1103
- ],
1104
- ],
1105
- 3 => [
1106
  'optionGroup' => 'Recommended Attributes',
1107
- 'option' => [
1108
- 'color_primary' => "Primary color of the product",
1109
- 'price_shipping' => "Shipping costs",
1110
- 'image_link_2' => "Image 2",
1111
- 'image_link_3' => "Image 3",
1112
- 'image_link_4' => "Image 4",
1113
- 'image_link_5' => "Image 5",
1114
- 'image_link_6' => "Image 6",
1115
- 'image_link_7' => "Image 7",
1116
- 'image_link_8' => "Image 8",
1117
- 'image_link_9' => "Image 9",
1118
- ],
1119
- ],
1120
- 4 => [
1121
  'optionGroup' => 'Low Priority Attributes',
1122
- 'option' => [
1123
- 'condition' => "Product Condition",
1124
- ],
1125
- ],
1126
- 5 => [
1127
  'optionGroup' => 'Optional Attributes',
1128
- 'option' => [
1129
- 'additional_costs' => "Additional costs",
1130
- 'audio_surround' => "Has audio surround sound",
1131
- 'batteries_included' => "Specifies is batteries are included at the purchase of the product",
1132
- 'brand_logo' => "URL to an image of the brand logo",
1133
- 'connection_type' => "Connection type, for example: USB",
1134
- 'delivery_description' => "Description of the delivery method",
1135
- 'device_max_content' => "Maximum content of the product, for example: 7KG or 3L",
1136
- 'device_max_temperature' => "Maximum temperature the device can reach in Celsius",
1137
- 'device_serve_amount' => "Amount of portions/persons the product can serve.",
1138
- 'device_watt' => "Maximum wattage of the product for example: 450",
1139
- 'dishwasher_safe' => "Product is dishwasher proof",
1140
- 'disposal_fee' => "Disposal fee of the product in euro’s",
1141
- 'file_types_supported' => "Supported filetypes",
1142
- 'gender_target' => "Gender to which the product is aimed",
1143
- 'has_alarm' => "Product has an alarm",
1144
- 'has_grill' => "Product has a grill option, or a grill is present",
1145
- 'has_microwave' => "Product has a microwave option or a microwave is present",
1146
- 'has_oven' => "Product has an oven option or an oven is present",
1147
- 'has_radio' => "Product has a radio option or a radio is pressent",
1148
- 'has_remote_control' => "Product has a remote",
1149
- 'has_timer' => "Product has a timer",
1150
- 'has_wifi' => "Product has a wifi connection or wifi is present",
1151
- 'keywords' => "Keywords for this product",
1152
- 'made_in_country' => "Country in which the product is fabricated",
1153
- 'partnumber' => "Part Number [MPN]",
1154
- 'power_type' => "Type of energysource, for example: gas, electric, ceramic",
1155
- 'price_suggested_retail' => "Suggested price",
1156
- 'priority' => "Priority of the product",
1157
- 'resolution_record' => "Camera recording resolution of the product (for example: 1280x768, 350dpi or 10MP)",
1158
- 'resolution_screen' => "Screenresolution of the product (For example: 1280x768 or 350dpi)",
1159
- 'screen_size' => "Screensize in inches",
1160
- 'screen_type' => "Screentype of the product (for example: LED/3D/etc.)",
1161
- 'size' => "General field for size",
1162
- 'size_description' => "Description for the “size” field",
1163
- 'size_length' => "Product length in mm",
1164
- 'size_width' => "Product width in mm",
1165
- 'specs' => "All specifications/functionalities of the product",
1166
- 'terms_conditions' => "Full terms and conditions",
1167
- 'material_1' => "The primary material",
1168
- 'material_2' => "The secondary material",
1169
- 'material_3' => "The tertiary material",
1170
- ],
1171
- ],
1172
- ],
1173
- 'name' => [],
1174
- ];
1175
  }
1176
- }
1
  <?php
2
 
3
  namespace CTXFeed\V5\Merchant;
4
+
5
  class MerchantAttributesFactory {
6
+
7
  public static function get( $template = null ) {
8
  $data = self::data();
9
+
10
  if ( $template === null ) {
11
  return $data;
12
  }
13
+
14
  // Override Merchant Template.
15
+
16
+ if ( in_array( $template, array( 'pinterest', 'adroll', 'smartly.io' ) ) ) {
17
  $template = 'google';
18
+ } elseif ( in_array( $template, array( 'connexity', 'shopzilla' ) ) ) {
19
  $template = 'become';
20
  } elseif ( $template === 'fruugo.au' ) {
21
  $template = 'fruugo';
22
  } elseif ( $template === 'shopalike.fr' ) {
23
  $template = 'kijiji.ca';
24
  }
25
+
 
26
  if ( isset( $data[ $template ] ) ) {
27
  return $data[ $template ];
28
  }
29
+
30
  return false;
31
  }
32
+
33
  private static function data() {
34
+ return array(
35
+ 'google' => array(
36
+ 1 => array(
37
  'optionGroup' => 'Basic Information',
38
+ 'options' => array(
39
  'id' => 'Product Id[id]',
40
  'webitemid' => 'Product WebItemId[webitemid]',
41
  'region_id' => 'Region Id[region_id]',
59
  'images_9' => 'Additional Image 9 [additional_image_link]',
60
  'images_10' => 'Additional Image 10 [additional_image_link]',
61
  'condition' => 'Condition[condition]',
62
+ ),
63
+ ),
64
+ 2 => array(
65
  'optionGroup' => 'Availability & Price',
66
+ 'options' => array(
67
  'availability' => 'Stock Status[availability]',
68
  'availability_date' => 'Availability Date[availability_date]',
69
  'inventory' => 'Facebook Inventory[inventory]',
72
  'sale_price' => 'Sale Price[sale_price]',
73
  'cost_of_goods_sold' => 'Cost of Goods Sold[cost_of_goods_sold]',
74
  'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
75
+ ),
76
+ ),
77
+ 3 => array(
78
  'optionGroup' => 'Unique Product Identifiers',
79
+ 'options' => array(
80
  'brand' => 'Manufacturer[brand]',
81
  'upc' => 'GTIN[gtin]',
82
  'sku' => 'MPN[mpn]',
83
  'identifier_exists' => 'Identifier Exist[identifier_exists]',
84
+ ),
85
+ ),
86
+ 4 => array(
87
  'optionGroup' => 'Detailed Product Attributes',
88
+ 'options' => array(
89
  'item_group_id' => 'Item Group Id[item_group_id]',
90
  'external_seller_id' => 'External seller ID[external_seller_id]',
91
  'color' => 'Color[color]',
113
  'section_name' => 'Section Name (Product Detail)[section_name]',
114
  'attribute_name' => 'Attribute Name (Product Detail)[attribute_name]',
115
  'attribute_value' => 'Attribute Value (Product Detail)[attribute_value]',
116
+ ),
117
+ ),
118
+ 5 => array(
119
  'optionGroup' => 'Tax & Shipping',
120
+ 'options' => array(
121
  'tax' => 'Tax[tax]',
122
  'tax_category' => 'Tax[tax_category]',
123
  'shipping' => 'Shipping',
136
  'material_1' => 'The primary material',
137
  'material_2' => 'The secondary material',
138
  'material_3' => 'The tertiary material',
139
+ ),
140
+ ),
141
+ 6 => array(
142
  'optionGroup' => 'Product Combinations',
143
+ 'options' => array(
144
  'multipack' => 'Multipack[multipack]',
145
  'is_bundle' => 'Is Bundle[is_bundle]',
146
+ ),
147
+ ),
148
+ 7 => array(
149
  'optionGroup' => 'Adult Products',
150
+ 'options' => array(
151
  'adult' => 'Adult[adult]',
152
+ ),
153
+ ),
154
+ 8 => array(
155
  'optionGroup' => 'Ads Attributes',
156
+ 'options' => array(
157
  'ads_redirect' => 'Ads Redirect[ads_redirect]',
158
+ ),
159
+ ),
160
+ 9 => array(
161
  'optionGroup' => 'Custom Label Attributes',
162
+ 'options' => array(
163
  'custom_label_0' => 'Custom label 0 [custom_label_0]',
164
  'custom_label_1' => 'Custom label 1 [custom_label_1]',
165
  'custom_label_2' => 'Custom label 2 [custom_label_2]',
166
  'custom_label_3' => 'Custom label 3 [custom_label_3]',
167
  'custom_label_4' => 'Custom label 4 [custom_label_4]',
168
+ ),
169
+ ),
170
+ 10 => array(
171
  'optionGroup' => 'Additional Attributes',
172
+ 'options' => array(
173
  'excluded_destination' => 'Excluded Destination[excluded_destination]',
174
  'shopping_ads_excluded_country' => 'Shopping Ads Excluded Country[shopping_ads_excluded_country]',
175
  'included_destination' => 'Included Destination[included_destination]',
176
  'expiration_date' => 'Expiration Date [expiration_date]',
177
  'transit_time_label' => 'Transit Time [transit_time_label]',
178
+ ),
179
+ ),
180
+ 11 => array(
181
  'optionGroup' => 'Unit Prices, Subscription, and Installment',
182
+ 'options' => array(
183
  'unit_pricing_measure' => 'Unit Pricing Measure[unit_pricing_measure]',
184
  'unit_pricing_base_measure' => 'Unit Pricing Base Measure[unit_pricing_base_measure]',
185
  'installment_months' => 'Installment Months[months]',
187
  'subscription_period' => 'Subscription Period[period]',
188
  'subscription_period_length' => 'Subscription Period Length[period_length]',
189
  'subscription_amount' => 'Subscription Amount[amount]',
190
+ ),
191
+ ),
192
+ 12 => array(
193
  'optionGroup' => 'Energy Labels',
194
+ 'options' => array(
195
  'energy_efficiency_class' => 'Energy Efficiency Class[energy_efficiency_class]',
196
  'min_energy_efficiency_class' => 'Min Energy Efficiency Class[energy_efficiency_class]',
197
  'max_energy_efficiency_class' => 'Max Energy Efficiency Class[energy_efficiency_class]',
198
+ ),
199
+ ),
200
+ 13 => array(
201
  'optionGroup' => 'Loyalty Points (Japan Only)',
202
+ 'options' => array(
203
  'loyalty_points' => 'loyalty_points[loyalty_points]',
204
+ ),
205
+ ),
206
+ 14 => array(
207
  'optionGroup' => 'Multiple Installments (Brazil Only)',
208
+ 'options' => array(
209
  'installment' => 'Installment[installment]',
210
+ ),
211
+ ),
212
+ 15 => array(
213
  'optionGroup' => 'Merchant Promotions Attributes',
214
+ 'options' => array(
215
  'promotion_id' => 'Promotion Id[promotion_id]',
216
  'product_applicability' => 'Product Applicability[product_applicability]',
217
  'offer_type' => 'Offer Type[offer_type]',
238
  'product_type_exclusion' => 'Product Type Exclusion[product_type_exclusion]',
239
  'brand_exclusion' => 'Brand Exclusion[brand_exclusion]',
240
  'item_group_id_exclusion' => 'Item Group Exclusion[item_group_id_exclusion]',
241
+ ),
242
+ ),
243
+ 16 => array(
244
  'optionGroup' => 'Shopping Action Attributes',
245
+ 'options' => array(
246
+ 'sell_on_google_quantity' => 'Number of Product Sold On Google [sell_on_google_quantity]',
247
+ 'return_address_label' => 'Return Address [return_address_label]',
248
+ 'return_policy_label' => 'Return Policy [return_policy_label]',
249
  'google_funded_promotion_eligibility' => 'Google Funded Promotion Eligibility [google_funded_promotion_eligibility]',
250
+ ),
251
+ ),
252
+ 17 => array(
253
  'optionGroup' => 'Local Inventory / Product Inventory',
254
+ 'options' => array(
255
  'store_code' => 'Store Code [store_code]',
256
  'quantity' => 'Quantity [quantity]',
257
  'pickup_method' => 'Pickup Method [pickup_method]',
260
  'link_template' => 'Link Template [link_template]',
261
  'mobile_link_template' => 'Mobile Link Template [mobile_link_template]',
262
  'mobile_pickup_link_template' => 'Mobile Pickup Link Template [mobile_pickup_link_template]',
263
+ ),
264
+ ),
265
+ 18 => array(
266
  'optionGroup' => 'Pinterest Catalog Attributes',
267
+ 'options' => array(
268
  'free_shipping_label' => 'Free Shipping Label[free_shipping_label]',
269
  'free_shipping_limit' => 'Free Shipping Limit[free_shipping_limit]',
270
  'average_review_rating' => 'Average Review Rating[average_review_rating]',
271
  'number_of_ratings' => 'Number of Ratings[number_of_ratings]',
272
  'number_of_reviews' => 'Number of Reviews[number_of_reviews]',
273
+ ),
274
+ ),
275
+ ),
276
+ 'facebook' => array(
277
+ 1 => array(
278
  'optionGroup' => 'Basic Information',
279
+ 'options' => array(
280
  'id' => 'Product Id[id]',
281
  'title' => 'Product Title[title]',
282
  'description' => 'Product Description[description]',
298
  'images_9' => 'Additional Image 9 [additional_image_link]',
299
  'images_10' => 'Additional Image 10 [additional_image_link]',
300
  'condition' => 'Condition[condition]',
301
+ ),
302
+ ),
303
+ 2 => array(
304
  'optionGroup' => 'Availability & Price',
305
+ 'options' => array(
306
  'availability' => 'Stock Status[availability]',
307
  'availability_date' => 'Availability Date[availability_date]',
308
  'price' => 'Regular Price[price]',
309
  'sale_price' => 'Sale Price[sale_price]',
310
  'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
311
+ ),
312
+ ),
313
+ 3 => array(
314
  'optionGroup' => 'Unique Product Identifiers',
315
+ 'options' => array(
316
  'brand' => 'Manufacturer[brand]',
317
  'gtin' => 'GTIN[gtin]',
318
  'mpn' => 'MPN[mpn]',
319
  'identifier_exists' => 'Identifier Exist[identifier_exists]',
320
+ ),
321
+ ),
322
+ 4 => array(
323
  'optionGroup' => 'Detailed Product Attributes',
324
+ 'options' => array(
325
  'item_group_id' => 'Item Group Id[item_group_id]',
326
  'color' => 'Color[color]',
327
  'gender' => 'Gender[gender]',
329
  'material' => 'Material[material]',
330
  'pattern' => 'Pattern[pattern]',
331
  'size' => 'Size of the item[size]',
332
+ ),
333
+ ),
334
+ 5 => array(
335
  'optionGroup' => 'Tax & Shipping',
336
+ 'options' => array(
337
  'tax' => 'Tax[tax]',
338
  'tax_country' => 'Tax Country[tax_country]',
339
  'tax_region' => 'Tax Region[tax_region]',
342
  'tax_category' => 'Tax[tax_category]',
343
  'shipping' => 'Shipping',
344
  'shipping_weight' => 'Shipping Weight[shipping_weight]',
345
+ ),
346
+ ),
347
+ 6 => array(
348
  'optionGroup' => 'Custom Label Attributes',
349
+ 'options' => array(
350
  'custom_label_0' => 'Custom label 0 [custom_label_0]',
351
  'custom_label_1' => 'Custom label 1 [custom_label_1]',
352
  'custom_label_2' => 'Custom label 2 [custom_label_2]',
353
  'custom_label_3' => 'Custom label 3 [custom_label_3]',
354
  'custom_label_4' => 'Custom label 4 [custom_label_4]',
355
+ ),
356
+ ),
357
+ 7 => array(
358
  'optionGroup' => 'Additional Attributes',
359
+ 'options' => array(
360
  'inventory' => 'Facebook Inventory[inventory]',
361
  'override' => 'Facebook Override[override]',
362
  'status' => 'Status [status]',
378
  'importer_address' => 'Importer Address [importer_address]',
379
  'manufacturer_info' => 'Manufacturer Info [manufacturer_info]',
380
  'return_policy_info' => 'Return Policy Info [return_policy_info]',
381
+ ),
382
+ ),
383
+ ),
384
+ 'google_dynamic_ads' => array(
385
+ 1 => array(
386
  'optionGroup' => 'Basic Information',
387
+ 'options' => array(
388
  'Page URL' => 'Page URL[Page URL]',
389
  'Custom Label' => 'Custom Label [Custom Label]',
390
+ ),
391
+ ),
392
+ ),
393
+ 'bing' => array(
394
+ 1 => array(
395
  'optionGroup' => 'Basic Information',
396
+ 'options' => array(
397
  'id' => 'Product Id[id]',
398
  'title' => 'Product Title[title]',
399
  'link' => 'Product URL[link]',
408
  'mpn' => 'MPN[mpn]',
409
  'brand' => 'Brand[brand]',
410
  'identifier_exists' => 'Identifier Exists[identifier_exists]',
411
+ ),
412
+ ),
413
+ 2 => array(
414
  'optionGroup' => 'Apparel Products',
415
+ 'options' => array(
416
  'gender' => 'Gender[gender]',
417
  'age_group' => 'Age Group[age_group]',
418
  'color' => 'Color[color]',
419
  'size' => 'Size[size]',
420
  'size_type' => 'Size Type[size_type]',
421
  'size_system' => 'Size System[size_system]',
422
+ ),
423
+ ),
424
+ 3 => array(
425
  'optionGroup' => 'Product Variants',
426
+ 'options' => array(
427
  'item_group_id' => 'Item Group ID[item_group_id]',
428
  'material' => 'Material[material]',
429
  'pattern' => 'Pattern[pattern]',
430
  'additional_image_link' => 'Additional Image Link[additional_image_link]',
431
+ ),
432
+ ),
433
+ 4 => array(
434
  'optionGroup' => 'Other Information',
435
+ 'options' => array(
436
  'adult' => 'Adult[adult]',
437
  'availability' => 'Availability[availability]',
438
  'product_category' => 'Product Category[product_category]',
454
  'custom_label_2' => 'Custom Label 2[custom_label_2]',
455
  'custom_label_3' => 'Custom Label 3[custom_label_3]',
456
  'custom_label_4' => 'Custom Label 4[custom_label_4]',
457
+ ),
458
+ ),
459
+ 5 => array(
460
  'optionGroup' => 'Sales & Promotions',
461
+ 'options' => array(
462
  'sale_price' => 'Sale Price[sale_price]',
463
  'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
464
  'promotion_ID' => 'Promotion ID[promotion_ID]',
465
+ ),
466
+ ),
467
+ 6 => array(
468
  'optionGroup' => 'Local Product Inventory',
469
+ 'options' => array(
470
  'store_code' => 'Store Code[store_code]',
471
  'itemid' => 'Item ID[itemid]',
472
  'quantity' => 'Quantity[quantity]',
473
  'weeks_of_supply' => 'Weeks Of Supply[weeks_of_supply]',
474
  'pick_up_method' => 'Pick Up Method[pick_up_method]',
475
  'pick_up_sla' => 'Pick Up SLA[pick_up_sla]',
476
+ ),
477
+ ),
478
+ ),
479
+ 'pinterest_rss' => array(
480
+ 1 => array(
481
  'optionGroup' => 'Basic Information',
482
+ 'options' => array(
483
  'title' => 'Product Title[title]',
484
  'description' => 'Product Description[description]',
485
  'link' => 'Product URL[link]',
486
  'image' => 'Main Image[image]',
487
  'pubDate' => 'Publish Date[pubDate]',
488
  'guid' => 'GUID[guid]',
489
+ ),
490
+ ),
491
+ ),
492
+ 'googlereview' => array(
493
+ 1 => array(
494
  'optionGroup' => 'Basic Information',
495
+ 'options' => array(
496
  'product_name' => 'Product Title [product_name]',
497
  'product_url' => 'Product URL [product_url]',
498
  'review_temp_gtin' => 'GTIN [gtin]',
499
  'review_temp_mpn' => 'MPN [mpn]',
500
  'review_temp_sku' => 'SKU [sku]',
501
  'review_temp_brand' => 'Brand [brand]',
502
+ ),
503
+ ),
504
+ ),
505
+ 'wine_searcher' => array(
506
+ 1 => array(
507
  'optionGroup' => 'Basic Information',
508
+ 'options' => array(
509
  'name' => 'Product Title[name]',
510
  'description' => 'Product description[description]',
511
  'vintage' => 'Vintage[vintage]',
518
  'offer-type' => 'Offer Type[offer-type]',
519
  'delivery-time' => 'Delivery Time[delivery-time]',
520
  'stock-level' => 'Stock Level[stock-level]',
521
+ ),
522
+ ),
523
+ ),
524
+ 'tiktok' => array(
525
+ 1 => array(
526
  'optionGroup' => 'Basic Information',
527
+ 'options' => array(
528
  'sku_id' => 'SKU ID[id]',
529
  'title' => 'Product Title[title]',
530
  'description' => 'Product description[description]',
571
  'merchant_brand' => 'Merchant Brand[merchant_brand]',
572
  'productHisEval' => 'Purchase Count:FeedBack[productHisEval]',
573
  'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
574
+ ),
575
+ ),
576
+ ),
577
+ 'modalova' => array(
578
+ 1 => array(
579
  'optionGroup' => 'Basic Information',
580
+ 'options' => array(
581
  'id' => 'Product ID[id]',
582
  'title' => 'Product Title[title]',
583
  'slug' => 'Product URL Slug[slug]',
604
  'category_path' => 'Category Path[category_path]',
605
  'created_at' => 'Created At[created_at]',
606
  'updated_at' => 'Updated At[updated_at]',
607
+ ),
608
+ ),
609
+ ),
610
+ 'catchdotcom' => array(
611
+ 1 => array(
612
  'optionGroup' => 'Basic Information',
613
+ 'options' => array(
614
  'product-id' => 'Product ID [product-id]',
615
  'title' => 'Product title [title]',
616
  'product-description' => 'Product Description[product-description]',
639
  'leadtime-to-ship' => 'Lead Time to Ship[leadtime-to-ship]',
640
  'club-catch-eligible' => 'Club Catch eligible[club-catch-eligible]',
641
  'tax-au' => 'GST %[tax-au]',
642
+ ),
643
+ ),
644
+ ),
645
+ 'fashionchick' => array(
646
+ 1 => array(
647
  'optionGroup' => 'Basic Information',
648
+ 'options' => array(
649
  'Product ID' => 'Product ID [Product ID]',
650
  'Titel' => 'Product Titel [Titel]',
651
  'Omschrijving' => 'Product Description [Omschrijving]',
666
  'Materiaal' => 'Material [Materiaal]',
667
  'Geslacht' => 'Gender [Geslacht]',
668
  'Kleur' => 'Color [Kleur]',
669
+ ),
670
+ ),
671
+ ),
672
+ 'goedgeplaatst' => array(
673
+ 1 => array(
674
  'optionGroup' => 'Basic Information',
675
+ 'options' => array(
676
  'title' => 'Product Title [title]',
677
  'description' => 'Product Description [description]',
678
  'type' => 'Product Type [type]',
696
  'directForwardToMp' => 'Direct Forward Mp [directForwardToMp]',
697
  'priceBidMinimal' => 'Price Bid Minimal [priceBidMinimal]',
698
  'priceBidAsking' => 'Price Bid Asking [priceBidAsking]',
699
+ ),
700
+ ),
701
+ ),
702
+ 'skroutz' => array(
703
+ 1 => array(
704
  'optionGroup' => 'Required Information',
705
+ 'options' => array(
706
  'id' => 'Unique ID',
707
  'name' => 'Product Title',
708
  'description' => 'Product Description',
714
  'manufacturer' => 'Manufacturer',
715
  'mpn' => 'MPN / ISBN',
716
  'availability' => 'Availability',
717
+ ),
718
+ ),
719
+ 2 => array(
720
  'optionGroup' => 'Additional Information',
721
+ 'options' => array(
722
+ 'instock' => 'Stock Status [InStock]',
723
+ 'ean' => 'EAN / Barcode',
724
+ 'additional_imageurl' => 'Additional Image Link',
725
+ 'additional_imageurl_1' => 'Additional Image Link 1',
726
+ 'additional_imageurl_2' => 'Additional Image Link 2',
727
+ 'additional_imageurl_3' => 'Additional Image Link 3',
728
+ 'additional_imageurl_4' => 'Additional Image Link 4',
729
+ 'additional_imageurl_5' => 'Additional Image Link 5',
730
+ 'additional_imageurl_6' => 'Additional Image Link 6',
731
+ 'additional_imageurl_7' => 'Additional Image Link 7',
732
+ 'additional_imageurl_8' => 'Additional Image Link 8',
733
+ 'additional_imageurl_9' => 'Additional Image Link 9',
734
+ 'additional_imageurl_10' => 'Additional Image Link 10',
735
+ 'color' => 'Color',
736
+ 'size' => 'Size',
737
+ 'weight' => 'Weight',
738
+ 'quantity' => 'Quantity',
739
+ ),
740
+ ),
741
+ ),
742
+ 'daisycon' => array(
743
+ 1 => array(
744
  'optionGroup' => 'Required Attributes',
745
+ 'option' => array(
746
  'sku' => 'Unique Product ID [SKU]',
747
  'description' => 'Description',
748
  'link' => 'Product URL',
749
  'price' => 'Price[Current/Sale Price]',
750
  'title' => 'Product Title',
751
+ ),
752
+ ),
753
+ 2 => array(
754
  'optionGroup' => 'Highly Recommended Attributes',
755
+ 'option' => array(
756
  'image_link_1' => 'Main Image',
757
  'brand' => 'Brand of the product',
758
  'category' => 'Main category',
763
  'in_stock' => 'Stock status',
764
  'in_stock_amount' => 'Amount of items in stock',
765
  'price_old' => 'Old price [Regular Price (in case of discount prices)]',
766
+ ),
767
+ ),
768
+ 3 => array(
769
  'optionGroup' => 'Recommended Attributes',
770
+ 'option' => array(
771
  'color_primary' => 'Primary color of the product',
772
  'condition' => 'Product Condition',
773
  'gender_target' => 'Gender Target',
780
  'image_link_7' => 'Image 7',
781
  'image_link_8' => 'Image 8',
782
  'image_link_9' => 'Image 9',
783
+ ),
784
+ ),
785
+ 4 => array(
786
  'optionGroup' => 'Optional Attributes',
787
+ 'option' => array(
788
  'additional_costs' => 'Additional costs',
789
  'brand_logo' => 'Brand Logo URL',
790
  'delivery_description' => 'Description of the delivery method',
797
  'size' => 'General Size field',
798
  'size_description' => 'Description for the “size” field',
799
  'terms_conditions' => 'Full terms and conditions',
800
+ ),
801
+ ),
802
+ ),
803
+ 'daisycon_automotive' => array(
804
+ 1 => array(
805
  'optionGroup' => 'Required Attributes',
806
+ 'option' => array(
807
+ 'description' => 'Description of the product',
808
+ 'link' => 'URL to the page of the product',
809
+ 'price' => 'Price [Current/Sale Price]',
810
+ 'sku' => 'Unique Product ID [SKU]',
811
+ 'title' => 'Complete name of the product',
812
+ ),
813
+ ),
814
+ 2 => array(
815
  'optionGroup' => 'Highly Recommended Attributes',
816
+ 'option' => array(
817
+ 'brand' => 'Brand of the product',
818
+ 'category' => 'Main category',
819
+ 'category_path' => 'Category path',
820
+ 'color_primary' => 'Primary color of the product',
821
+ 'delivery_time' => 'Delivery time in days',
822
+ 'ean' => 'EAN',
823
+ 'google_category_id' => 'Google category ID',
824
+ 'in_stock' => 'Stock status',
825
+ 'in_stock_amount' => 'Amount of items in stock',
826
+ 'price_old' => 'Old price [Regular Price]',
827
+ 'image_link_1' => 'Main Image',
828
+ ),
829
+ ),
830
+ 3 => array(
831
  'optionGroup' => 'Recommended Attributes',
832
+ 'option' => array(
833
+ 'condition' => 'Product Condition',
834
+ 'price_shipping' => 'Shipping costs',
835
+ 'image_link_2' => 'Image 2',
836
+ 'image_link_3' => 'Image 3',
837
+ 'image_link_4' => 'Image 4',
838
+ 'image_link_5' => 'Image 5',
839
+ 'image_link_6' => 'Image 6',
840
+ 'image_link_7' => 'Image 7',
841
+ 'image_link_8' => 'Image 8',
842
+ 'image_link_9' => 'Image 9',
843
+ ),
844
+ ),
845
+ 4 => array(
846
  'optionGroup' => 'Optional Attributes',
847
+ 'option' => array(
848
+ 'additional_costs' => 'Additional costs',
849
+ 'brake_system' => 'Brake system type',
850
+ 'brand_logo' => 'Brand Logo URL',
851
+ 'delivery_description' => 'Description of the delivery method',
852
+ 'fuel_type' => 'Fuel type',
853
+ 'gear_system' => 'Gear system type',
854
+ 'gender_target' => 'Gender Target',
855
+ 'has_airco' => 'Is there an airco present',
856
+ 'keywords' => 'Keywords [Tags]',
857
+ 'model' => 'Model name/number',
858
+ 'material_1' => 'The primary material',
859
+ 'material_2' => 'The secondary material',
860
+ 'material_3' => 'The tertiary material',
861
+ 'priority' => 'Priority of the product',
862
  'rental_location_city' => "City of a rental car's pick up location (if applicable)",
863
  'rental_location_country' => "Country of a rental car's pick up location (if applicable)",
864
  'rental_location_region' => "Region of a rental car's pick up location (if applicable)",
865
+ 'size' => 'General field for size',
866
+ 'size_description' => 'Description for the “size” field',
867
+ 'tire_size' => 'The measurements of the tire size of the product.',
868
+ 'year_built' => 'Year in which the product is fabricated',
869
+ 'terms_conditions' => 'Full terms and conditions',
870
+ ),
871
+ ),
872
+ ),
873
+ 'daisycon_books' => array(
874
+ 1 => array(
875
  'optionGroup' => 'Required Attributes',
876
+ 'option' => array(
877
+ 'description' => 'Description of the product',
878
+ 'link' => 'URL to the page of the product',
879
+ 'price' => 'Price [Current/Sale Price]',
880
+ 'sku' => 'Unique Product ID [SKU]',
881
+ 'title' => 'Complete name of the product',
882
+ ),
883
+ ),
884
+ 2 => array(
885
  'optionGroup' => 'Highly Recommended Attributes',
886
+ 'option' => array(
887
+ 'author' => 'Name of the author',
888
+ 'category' => 'Main category',
889
+ 'category_path' => 'Category path',
890
+ 'delivery_time' => 'Delivery time in days',
891
+ 'ean' => 'EAN',
892
+ 'google_category_id' => 'Google category ID',
893
+ 'in_stock' => 'Stock status',
894
+ 'in_stock_amount' => 'Amount of items in stock',
895
+ 'isbn' => 'ISBN of the book/magazine',
896
+ 'price_old' => 'Old price [Regular Price]',
897
+ 'image_link_1' => 'Main Image',
898
+ ),
899
+ ),
900
+ 3 => array(
901
  'optionGroup' => 'Recommended Attributes',
902
+ 'option' => array(
903
+ 'book_publisher' => 'Publisher of the book',
904
+ 'book_type' => 'Type of book',
905
+ 'price_shipping' => 'Shipping costs',
906
+ 'image_link_2' => 'Image 2',
907
+ 'image_link_3' => 'Image 3',
908
+ 'image_link_4' => 'Image 4',
909
+ 'image_link_5' => 'Image 5',
910
+ 'image_link_6' => 'Image 6',
911
+ 'image_link_7' => 'Image 7',
912
+ 'image_link_8' => 'Image 8',
913
+ 'image_link_9' => 'Image 9',
914
+ ),
915
+ ),
916
+ 4 => array(
917
  'optionGroup' => 'Low Priority Attributes',
918
+ 'option' => array(
919
+ 'condition' => 'Product Condition',
920
+ 'gender_target' => 'Gender to which the product is aimed',
921
+ 'number_of_pages' => 'Number of pages',
922
+ 'release_date' => 'Date of publication',
923
+ ),
924
+ ),
925
+ 5 => array(
926
  'optionGroup' => 'Optional Attributes',
927
+ 'option' => array(
928
+ 'additional_costs' => 'Additional costs',
929
+ 'book_edition' => 'Edition of the book',
930
+ 'brand' => 'Brand of the product',
931
+ 'brand_logo' => 'URL to an image of the brand logo',
932
+ 'color_primary' => 'Primary color of the product',
933
+ 'delivery_description' => 'Description of the delivery method',
934
+ 'file_size' => 'Total file size in kbps',
935
+ 'file_type' => 'File type (for example: epub)',
936
+ 'keywords' => 'Keywords for this product',
937
+ 'language' => 'Language of the product',
938
+ 'model' => 'Model name/number',
939
+ 'priority' => 'Priority of the product',
940
+ 'size' => 'General field for size',
941
+ 'size_description' => 'Description for the “size” field',
942
+ 'size_length' => 'Magazine length in mm',
943
+ 'size_width' => 'Magazine width in mm',
944
+ 'weight' => 'Weight in grams',
945
+ 'material_1' => 'The primary material',
946
+ 'material_2' => 'The secondary material',
947
+ 'material_3' => 'The tertiary material',
948
+ 'terms_conditions' => 'Full terms and conditions',
949
+ ),
950
+ ),
951
+ ),
952
+ 'daisycon_cosmetics' => array(
953
+ 1 => array(
954
  'optionGroup' => 'Required Attributes',
955
+ 'option' => array(
956
+ 'description' => 'Description of the product',
957
+ 'link' => 'URL to the page of the product',
958
+ 'price' => 'Price [Current/Sale Price]',
959
+ 'sku' => 'Unique Product ID [SKU]',
960
+ 'title' => 'Complete name of the product',
961
+ ),
962
+ ),
963
+ 2 => array(
964
  'optionGroup' => 'Highly Recommended Attributes',
965
+ 'option' => array(
966
+ 'allergic_info' => 'Allergy information',
967
+ 'amount_content' => 'Amount of content, for example: 120(in combination with amount_description)',
968
+ 'amount_description' => 'The unit in which the amount is specified for example: ml',
969
+ 'category' => 'Main category',
970
+ 'category_path' => 'Category path',
971
+ 'delivery_time' => 'Delivery time in days',
972
+ 'ean' => 'EAN',
973
+ 'google_category_id' => 'Google category ID',
974
+ 'in_stock' => 'Stock status',
975
+ 'in_stock_amount' => 'Amount of items in stock',
976
+ 'price_old' => 'Old price [Regular Price]',
977
+ 'image_link_1' => 'Main Image',
978
+ ),
979
+ ),
980
+ 3 => array(
981
  'optionGroup' => 'Recommended Attributes',
982
+ 'option' => array(
983
+ 'description_ingredients' => 'Description of the ingredients',
984
+ 'gender_target' => 'Gender to which the product is aimed',
985
+ 'price_shipping' => 'Shipping costs',
986
+ 'skin_type' => 'Skintype for which the product is made',
987
+ 'image_link_2' => 'Image 2',
988
+ 'image_link_3' => 'Image 3',
989
+ 'image_link_4' => 'Image 4',
990
+ 'image_link_5' => 'Image 5',
991
+ 'image_link_6' => 'Image 6',
992
+ 'image_link_7' => 'Image 7',
993
+ 'image_link_8' => 'Image 8',
994
+ 'image_link_9' => 'Image 9',
995
+ ),
996
+ ),
997
+ 4 => array(
998
  'optionGroup' => 'Low Priority Attributes',
999
+ 'option' => array(
1000
+ 'color_primary' => 'Primary color of the product',
1001
+ ),
1002
+ ),
1003
+ 5 => array(
1004
  'optionGroup' => 'Optional Attributes',
1005
+ 'option' => array(
1006
+ 'additional_costs' => 'Additional costs',
1007
+ 'brand_logo' => 'URL to an image of the brand logo',
1008
+ 'condition' => 'Product Condition',
1009
+ 'delivery_description' => 'Description of the delivery method',
1010
+ 'keywords' => 'Keywords for this product',
1011
+ 'made_in_country' => 'Country in which the product is fabricated',
1012
+ 'model' => 'Model name/number',
1013
+ 'priority' => 'Priority of the product',
1014
+ 'size' => 'General field for size',
1015
+ 'size_description' => 'Description for the “size” field',
1016
+ 'weight' => 'Weight in grams',
1017
+ 'material_1' => 'The primary material',
1018
+ 'material_2' => 'The secondary material',
1019
+ 'material_3' => 'The tertiary material',
1020
+ 'terms_conditions' => 'Full terms and conditions',
1021
+ ),
1022
+ ),
1023
+ ),
1024
+ 'daisycon_daily_offers' => array(
1025
+ 1 => array(
1026
  'optionGroup' => 'Required Attributes',
1027
+ 'option' => array(
1028
+ 'description' => 'Description of the product',
1029
+ 'link' => 'URL to the page of the product',
1030
+ 'price' => 'Price [Current/Sale Price]',
1031
+ 'sku' => 'Unique Product ID [SKU]',
1032
+ 'title' => 'Complete name of the product',
1033
+ ),
1034
+ ),
1035
+ 2 => array(
1036
  'optionGroup' => 'Highly Recommended Attributes',
1037
+ 'option' => array(
1038
+ 'brand' => 'Brand of the product',
1039
+ 'category' => 'Main category',
1040
+ 'category_path' => 'Category path',
1041
+ 'delivery_time' => 'Delivery time in days',
1042
+ 'ean' => 'EAN',
1043
+ 'in_stock' => 'Stock status',
1044
+ 'in_stock_amount' => 'Amount of items in stock',
1045
+ 'price_old' => 'Old price [Regular Price]',
1046
+ 'image_link_1' => 'Main Image',
1047
+ ),
1048
+ ),
1049
+ 3 => array(
1050
  'optionGroup' => 'Recommended Attributes',
1051
+ 'option' => array(
1052
+ 'google_category_id' => 'Google category ID',
1053
+ 'price_shipping' => 'Shipping costs',
1054
+ 'image_link_2' => 'Image 2',
1055
+ 'image_link_3' => 'Image 3',
1056
+ 'image_link_4' => 'Image 4',
1057
+ 'image_link_5' => 'Image 5',
1058
+ 'image_link_6' => 'Image 6',
1059
+ 'image_link_7' => 'Image 7',
1060
+ 'image_link_8' => 'Image 8',
1061
+ 'image_link_9' => 'Image 9',
1062
+ ),
1063
+ ),
1064
+ 4 => array(
1065
  'optionGroup' => 'Optional Attributes',
1066
+ 'option' => array(
1067
+ 'additional_costs' => 'Additional costs',
1068
+ 'brand_logo' => 'URL to an image of the brand logo',
1069
+ 'color_primary' => 'Primary color of the product',
1070
+ 'condition' => 'Product Condition',
1071
+ 'delivery_description' => 'Description of the delivery method',
1072
  'discount_amount' => "Amount of discount in euro's",
1073
+ 'discount_percentage' => 'Amount of discount in percent',
1074
+ 'gender_target' => 'Gender to which the product is aimed',
1075
+ 'keywords' => 'Keywords for this product',
1076
+ 'model' => 'Model name/number',
1077
+ 'offer_datetime_end' => 'End (time and) date of the daily offer',
1078
+ 'offer_datetime_start' => 'Start (time and) date of the daily offer',
1079
+ 'size' => 'General field for size',
1080
+ 'size_description' => 'Description for the “size” field',
1081
+ 'material_1' => 'The primary material',
1082
+ 'material_2' => 'The secondary material',
1083
+ 'material_3' => 'The tertiary material',
1084
+ 'terms_conditions' => 'Full terms and conditions',
1085
+ ),
1086
+ ),
1087
+ ),
1088
+ 'daisycon_electronics' => array(
1089
+ 1 => array(
1090
  'optionGroup' => 'Required Attributes',
1091
+ 'option' => array(
1092
+ 'description' => 'Description of the product',
1093
+ 'link' => 'URL to the page of the product',
1094
+ 'price' => 'Price [Current/Sale Price]',
1095
+ 'sku' => 'Unique Product ID [SKU]',
1096
+ 'title' => 'Complete name of the product',
1097
+ ),
1098
+ ),
1099
+ 2 => array(
1100
  'optionGroup' => 'Highly Recommended Attributes',
1101
+ 'option' => array(
1102
+ 'brand' => 'Brand of the product',
1103
+ 'category' => 'Main category',
1104
+ 'category_path' => 'Category path',
1105
+ 'delivery_time' => 'Delivery time in days',
1106
+ 'ean' => 'EAN',
1107
+ 'google_category_id' => 'Google category ID',
1108
+ 'in_stock' => 'Stock status',
1109
+ 'in_stock_amount' => 'Amount of items in stock',
1110
+ 'model' => 'Model name/number',
1111
+ 'price_old' => 'Old price [Regular Price]',
1112
+ 'image_link_1' => 'Main Image',
1113
+ ),
1114
+ ),
1115
+ 3 => array(
1116
  'optionGroup' => 'Recommended Attributes',
1117
+ 'option' => array(
1118
+ 'color_primary' => 'Primary color of the product',
1119
+ 'price_shipping' => 'Shipping costs',
1120
+ 'image_link_2' => 'Image 2',
1121
+ 'image_link_3' => 'Image 3',
1122
+ 'image_link_4' => 'Image 4',
1123
+ 'image_link_5' => 'Image 5',
1124
+ 'image_link_6' => 'Image 6',
1125
+ 'image_link_7' => 'Image 7',
1126
+ 'image_link_8' => 'Image 8',
1127
+ 'image_link_9' => 'Image 9',
1128
+ ),
1129
+ ),
1130
+ 4 => array(
1131
  'optionGroup' => 'Low Priority Attributes',
1132
+ 'option' => array(
1133
+ 'condition' => 'Product Condition',
1134
+ ),
1135
+ ),
1136
+ 5 => array(
1137
  'optionGroup' => 'Optional Attributes',
1138
+ 'option' => array(
1139
+ 'additional_costs' => 'Additional costs',
1140
+ 'audio_surround' => 'Has audio surround sound',
1141
+ 'batteries_included' => 'Specifies is batteries are included at the purchase of the product',
1142
+ 'brand_logo' => 'URL to an image of the brand logo',
1143
+ 'connection_type' => 'Connection type, for example: USB',
1144
+ 'delivery_description' => 'Description of the delivery method',
1145
+ 'device_max_content' => 'Maximum content of the product, for example: 7KG or 3L',
1146
+ 'device_max_temperature' => 'Maximum temperature the device can reach in Celsius',
1147
+ 'device_serve_amount' => 'Amount of portions/persons the product can serve.',
1148
+ 'device_watt' => 'Maximum wattage of the product for example: 450',
1149
+ 'dishwasher_safe' => 'Product is dishwasher proof',
1150
+ 'disposal_fee' => 'Disposal fee of the product in euro’s',
1151
+ 'file_types_supported' => 'Supported filetypes',
1152
+ 'gender_target' => 'Gender to which the product is aimed',
1153
+ 'has_alarm' => 'Product has an alarm',
1154
+ 'has_grill' => 'Product has a grill option, or a grill is present',
1155
+ 'has_microwave' => 'Product has a microwave option or a microwave is present',
1156
+ 'has_oven' => 'Product has an oven option or an oven is present',
1157
+ 'has_radio' => 'Product has a radio option or a radio is pressent',
1158
+ 'has_remote_control' => 'Product has a remote',
1159
+ 'has_timer' => 'Product has a timer',
1160
+ 'has_wifi' => 'Product has a wifi connection or wifi is present',
1161
+ 'keywords' => 'Keywords for this product',
1162
+ 'made_in_country' => 'Country in which the product is fabricated',
1163
+ 'partnumber' => 'Part Number [MPN]',
1164
+ 'power_type' => 'Type of energysource, for example: gas, electric, ceramic',
1165
+ 'price_suggested_retail' => 'Suggested price',
1166
+ 'priority' => 'Priority of the product',
1167
+ 'resolution_record' => 'Camera recording resolution of the product (for example: 1280x768, 350dpi or 10MP)',
1168
+ 'resolution_screen' => 'Screenresolution of the product (For example: 1280x768 or 350dpi)',
1169
+ 'screen_size' => 'Screensize in inches',
1170
+ 'screen_type' => 'Screentype of the product (for example: LED/3D/etc.)',
1171
+ 'size' => 'General field for size',
1172
+ 'size_description' => 'Description for the “size” field',
1173
+ 'size_length' => 'Product length in mm',
1174
+ 'size_width' => 'Product width in mm',
1175
+ 'specs' => 'All specifications/functionalities of the product',
1176
+ 'terms_conditions' => 'Full terms and conditions',
1177
+ 'material_1' => 'The primary material',
1178
+ 'material_2' => 'The secondary material',
1179
+ 'material_3' => 'The tertiary material',
1180
+ ),
1181
+ ),
1182
+ ),
1183
+ 'name' => array(),
1184
+ );
1185
  }
1186
+ }
V5/Query/BOTHQuery.php CHANGED
@@ -1,11 +1,13 @@
1
  <?php
 
2
  namespace CTXFeed\V5\Query;
3
 
4
  class BOTHQuery implements QueryInterface {
5
  private $config;
6
 
7
- public function __construct( $config ) {
8
  $this->config = $config;
 
9
  }
10
 
11
  public function get_product_types() {
@@ -13,7 +15,7 @@ class BOTHQuery implements QueryInterface {
13
  }
14
 
15
  public function get_query_arguments() {
16
- return false;
17
  }
18
 
19
  public function get_product_status() {
@@ -21,8 +23,8 @@ class BOTHQuery implements QueryInterface {
21
  }
22
 
23
  public function product_ids() {
24
- $wp = (new WPQuery($this->config))->product_ids();
25
- $wc = (new WCQuery($this->config))->product_ids();
26
 
27
  return array_unique( array_merge( $wc, $wp ) );
28
  }
1
  <?php
2
+
3
  namespace CTXFeed\V5\Query;
4
 
5
  class BOTHQuery implements QueryInterface {
6
  private $config;
7
 
8
+ public function __construct( $config, $args = [] ) {
9
  $this->config = $config;
10
+ $this->arguments = empty( $args ) ? $this->get_query_arguments() : $args;
11
  }
12
 
13
  public function get_product_types() {
15
  }
16
 
17
  public function get_query_arguments() {
18
+ return [];
19
  }
20
 
21
  public function get_product_status() {
23
  }
24
 
25
  public function product_ids() {
26
+ $wp = ( new WPQuery( $this->config, $this->arguments ) )->product_ids();
27
+ $wc = ( new WCQuery( $this->config, $this->arguments ) )->product_ids();
28
 
29
  return array_unique( array_merge( $wc, $wp ) );
30
  }
V5/Query/QueryFactory.php CHANGED
@@ -4,7 +4,6 @@ namespace CTXFeed\V5\Query;
4
 
5
  use CTXFeed\V5\Utility\Config;
6
  use CTXFeed\V5\Utility\Settings;
7
- use CTXFeed\V5\Query\WCReviewQuery;
8
 
9
  class QueryFactory {
10
  /**
@@ -12,17 +11,18 @@ class QueryFactory {
12
  *
13
  * @return array
14
  */
15
- public static function get_ids( $config ) {
16
  $template = $config->get_feed_template();
17
  $queryType = Settings::get( 'product_query_type' );
18
-
19
  $class = "\CTXFeed\V5\Query\\" . strtoupper( $queryType ) . "Query";
20
  if ( strpos( $template, 'review' ) ) {
21
  $class = WCReviewQuery::class;
22
  }
 
23
  /**
24
  * @var WPQuery|WCQuery|WCReviewQuery $class Query Class
25
  */
26
- return ( new Query( new $class( $config ) ) )->get_ids();
27
  }
28
- }
4
 
5
  use CTXFeed\V5\Utility\Config;
6
  use CTXFeed\V5\Utility\Settings;
 
7
 
8
  class QueryFactory {
9
  /**
11
  *
12
  * @return array
13
  */
14
+ public static function get_ids( $config, $args = [] ) {
15
  $template = $config->get_feed_template();
16
  $queryType = Settings::get( 'product_query_type' );
17
+
18
  $class = "\CTXFeed\V5\Query\\" . strtoupper( $queryType ) . "Query";
19
  if ( strpos( $template, 'review' ) ) {
20
  $class = WCReviewQuery::class;
21
  }
22
+
23
  /**
24
  * @var WPQuery|WCQuery|WCReviewQuery $class Query Class
25
  */
26
+ return ( new Query( new $class( $config ,$args) ) )->get_ids();
27
  }
28
+ }
V5/Query/WCQuery.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace CTXFeed\V5\Query;
3
 
4
  use CTXFeed\V5\Utility\Settings;
@@ -8,9 +9,9 @@ class WCQuery implements QueryInterface {
8
  private $config;
9
  private $arguments;
10
 
11
- public function __construct( $config ) {
12
  $this->config = $config;
13
- $this->arguments = $this->get_query_arguments();
14
  }
15
 
16
  public function get_product_types() {
1
  <?php
2
+
3
  namespace CTXFeed\V5\Query;
4
 
5
  use CTXFeed\V5\Utility\Settings;
9
  private $config;
10
  private $arguments;
11
 
12
+ public function __construct( $config, $args = [] ) {
13
  $this->config = $config;
14
+ $this->arguments = empty( $args ) ? $this->get_query_arguments() : $args;
15
  }
16
 
17
  public function get_product_types() {
V5/Query/WPQuery.php CHANGED
@@ -6,9 +6,9 @@ class WPQuery implements QueryInterface {
6
  private $config;
7
  private $arguments;
8
 
9
- public function __construct( $config ) {
10
  $this->config = $config;
11
- $this->arguments = $this->get_query_arguments();
12
  }
13
 
14
  public function get_product_types() {
@@ -125,7 +125,7 @@ class WPQuery implements QueryInterface {
125
  );
126
  }
127
 
128
- return apply_filters( 'ctx_filter_arguments_for_product_query', $arguments, 'wc' );
129
  }
130
 
131
  public function get_product_status() {
@@ -137,4 +137,4 @@ class WPQuery implements QueryInterface {
137
  public function product_ids() {
138
  return ( new WP_Query( $this->arguments ) )->get_posts();
139
  }
140
- }
6
  private $config;
7
  private $arguments;
8
 
9
+ public function __construct( $config, $args = [] ) {
10
  $this->config = $config;
11
+ $this->arguments = empty( $args ) ? $this->get_query_arguments() : $args;
12
  }
13
 
14
  public function get_product_types() {
125
  );
126
  }
127
 
128
+ return apply_filters( 'ctx_filter_arguments_for_product_query', $arguments, 'wp' );
129
  }
130
 
131
  public function get_product_status() {
137
  public function product_ids() {
138
  return ( new WP_Query( $this->arguments ) )->get_posts();
139
  }
140
+ }
V5/{Feed/CustomFeed.php → Template/CustomTemplate.php} RENAMED
@@ -1,10 +1,10 @@
1
  <?php
2
- namespace CTXFeed\V5\Feed;
3
  use CTXFeed\V5\File\FileFactory;
4
  use CTXFeed\V5\Product\ProductFactory;
5
  use CTXFeed\V5\Utility\Config;
6
 
7
- class CustomFeed implements FeedInterface {
8
  /**
9
  * @var Config $config Contain Feed Config.
10
  */
@@ -21,7 +21,7 @@ class CustomFeed implements FeedInterface {
21
  public function __construct( $ids, $config ) {
22
  $this->ids = $ids;
23
  $this->config = $config;
24
- $this->structure = FeedFactory::get_structure( $config );
25
  }
26
 
27
  /**
@@ -58,4 +58,4 @@ class CustomFeed implements FeedInterface {
58
 
59
  return $feed['footer'];
60
  }
61
- }
1
  <?php
2
+ namespace CTXFeed\V5\Template;
3
  use CTXFeed\V5\File\FileFactory;
4
  use CTXFeed\V5\Product\ProductFactory;
5
  use CTXFeed\V5\Utility\Config;
6
 
7
+ class CustomTemplate implements TemplateInterface {
8
  /**
9
  * @var Config $config Contain Feed Config.
10
  */
21
  public function __construct( $ids, $config ) {
22
  $this->ids = $ids;
23
  $this->config = $config;
24
+ $this->structure = TemplateFactory::get_structure( $config );
25
  }
26
 
27
  /**
58
 
59
  return $feed['footer'];
60
  }
61
+ }
V5/{Feed/Custom2Feed.php → Template/CustomXMLTemplate.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace CTXFeed\V5\Feed;
4
 
5
  use CTXFeed\V5\Output\FormatOutput;
6
  use CTXFeed\V5\Utility\Config;
@@ -12,7 +12,7 @@ use CTXFeed\V5\Product\ProductFactory;
12
  use CTXFeed\V5\Product\ProductInfo;
13
  use CTXFeed\V5\Utility\Settings;
14
 
15
- class Custom2Feed implements FeedInterface {
16
  /**
17
  * @var Config $config Contain Feed Config.
18
  */
@@ -25,7 +25,7 @@ class Custom2Feed implements FeedInterface {
25
  * @var array $structure Contain Feed Structure.
26
  */
27
  private $structure;
28
-
29
  private $feedHeader;
30
  /**
31
  * This variable is responsible for holding feed string
@@ -39,15 +39,15 @@ class Custom2Feed implements FeedInterface {
39
  private $s;
40
  private $productEngine;
41
  private $variationElementsStart;
42
-
43
  public function __construct( $ids, $config ) {
44
  $this->ids = $ids;
45
  $this->config = $config;
46
- $getStructure = FeedFactory::get_structure( $config );
47
  $this->structure = $getStructure['structure'];
48
  $this->variationElementsStart = $getStructure['variationElementsStart'];
49
  }
50
-
51
  /**
52
  * Get Feed Body.
53
  *
@@ -58,27 +58,27 @@ class Custom2Feed implements FeedInterface {
58
  // $feed = $feed->make_body();
59
  //
60
  // return self::removeHeaderFooter( $feed );
61
-
62
  // Get XML Elements from feed config
63
  $Elements = $this->structure;
64
-
65
  if ( ! empty( $this->structure ) && ! empty( $this->ids ) ) {
66
  foreach ( $this->ids as $pid ) {
67
  $product = wc_get_product( $pid );
68
  $this->productEngine = new ProductInfo( $product, $this->config );
69
  //TODO: PRODUCT VALIDATION AND FILTER IMPLEMENTATION
70
-
71
-
72
  //TODO Filter products by Condition
73
  // if (isset($this->config['fattribute']) && count($this->config['fattribute']) && !$this->productEngine->filter_product($product)) {
74
-
75
-
76
  // Start making XML Elements
77
  foreach ( $Elements as $each => $element ) {
78
-
79
-
80
  if ( $each === $this->variationElementsStart && $product->is_type( 'variable' ) && $product->has_child() ) {
81
-
82
  $variations = $product->get_children();
83
  foreach ( $variations as $variation ) {
84
  $variation = wc_get_product( $variation );
@@ -92,17 +92,17 @@ class Custom2Feed implements FeedInterface {
92
  }
93
  }
94
  }
95
-
96
  }
97
-
98
  if ( $element['for'] === 'variation' ) {
99
  continue;
100
  }
101
-
102
  if ( $element['for'] === 'ifVariationAvailable' && $product->get_type() !== 'variable' ) {
103
  continue;
104
  }
105
-
106
  if ( $element['for'] === 'images' && isset( $element['attr_code'] ) ) {
107
  $images = $this->productEngine->custom_xml_images( $product );
108
  if ( ! empty( $images ) ) {
@@ -129,13 +129,13 @@ class Custom2Feed implements FeedInterface {
129
  $this->feedString .= $this->make_xml_element( $element, $product );
130
  }
131
  }
132
-
133
  }
134
  }
135
-
136
  return $this->feedString;
137
  }
138
-
139
  /**
140
  * Get Feed Header.
141
  *
@@ -145,7 +145,7 @@ class Custom2Feed implements FeedInterface {
145
  $getHeader = explode( '{{each product start}}', $this->config->feed_config_custom2 );
146
  $header = trim( $getHeader[0] );
147
  $getNodes = explode( "\n", $header );
148
-
149
  if ( ! empty( $getNodes ) ) {
150
  foreach ( $getNodes as $value ) {
151
  // Add header info to feed file
@@ -161,10 +161,10 @@ class Custom2Feed implements FeedInterface {
161
  } else {
162
  $this->feedHeader .= '<?xml version="1.0" encoding="utf-8" ?>' . "\n";
163
  }
164
-
165
  return $this->feedHeader;
166
  }
167
-
168
  /**
169
  * Get Feed Footer.
170
  *
@@ -180,10 +180,10 @@ class Custom2Feed implements FeedInterface {
180
  $this->feedFooter .= $value;
181
  }
182
  }
183
-
184
  return $this->feedFooter;
185
  }
186
-
187
  /**
188
  * @param $element
189
  * @param $product
@@ -196,20 +196,20 @@ class Custom2Feed implements FeedInterface {
196
  $start = '';
197
  $end = '';
198
  $output = '';
199
-
200
-
201
  $this->productEngine = new ProductInfo( $product, $this->config );
202
-
203
  // Start XML Element
204
  if (
205
  empty( $element['elementTextInfo'] ) && // Get the root element.
206
  empty( $element['end'] ) &&
207
  6 === count( $element )
208
  ) {
209
-
210
  // Start XML Element
211
  $elementStart = $this->processStartingElement( $element, $product );
212
-
213
  $end .= '<' . $elementStart . '>';
214
  $string .= $end . "\n";
215
  $p = true;
@@ -217,7 +217,7 @@ class Custom2Feed implements FeedInterface {
217
  $elementStart = $this->processStartingElement( $element, $product );
218
  $start .= '<' . $elementStart . '>';
219
  }
220
-
221
  // Make XML Element Text
222
  if ( ! empty( $element['elementTextInfo'] ) ) {
223
  if ( 'attribute' === $element['attr_type'] ) {
@@ -232,12 +232,12 @@ class Custom2Feed implements FeedInterface {
232
  } elseif ( 'text' === $element['attr_type'] ) {
233
  $output = ( isset( $element['attr_value'] ) && ! empty( $element['attr_value'] ) ) ? $element['attr_value'] : '';
234
  }
235
-
236
  $pluginAttribute = null;
237
  if ( 'attribute' === $element['attr_type'] ) {
238
  $pluginAttribute = $element['attr_code'];
239
  }
240
-
241
  // Format output according to commands
242
  if ( array_key_exists( 'formatter', $element ) ) {
243
  $formatOutput = new FormatOutput( $product, $this->config, $pluginAttribute );
@@ -245,7 +245,7 @@ class Custom2Feed implements FeedInterface {
245
  }
246
  $p = false;
247
  }
248
-
249
  // End XML Element
250
  if ( '/' . $element['end'] === $element['start'] && empty( $element['elementTextInfo'] ) && 6 === count( $element ) ) {
251
  if ( ! empty( $element['end'] ) ) {
@@ -256,26 +256,26 @@ class Custom2Feed implements FeedInterface {
256
  } else if ( ! empty( $element['end'] ) ) {
257
  $end .= '</' . $element['end'] . ">\n";
258
  }
259
-
260
  if ( ! $p ) {
261
  // Add Prefix and Suffix
262
  $prefix = isset( $element['prefix'] ) ? preg_replace( '!\s+!', ' ', $element['prefix'] ) : '';
263
  $suffix = isset( $element['suffix'] ) ? preg_replace( '!\s+!', ' ', $element['suffix'] ) : '';
264
  // $output = $this->productEngine->process_prefix_suffix( $output, $prefix, $suffix, isset( $element['attr_code'] ) ? $element['attr_code'] : '' );
265
-
266
  // Add CDATA if needed
267
  if ( ! empty( $output ) ) {
268
  $output = $this->addCDATA( $element['include_cdata'], $output );
269
  }
270
-
271
  $string .= $start . $output . $end;
272
  $p = false;
273
  }
274
-
275
  return $string;
276
  }
277
-
278
-
279
  /**
280
  * Add Quotation mark to store code value.
281
  *
@@ -284,7 +284,7 @@ class Custom2Feed implements FeedInterface {
284
  public function addQuotation( $string ) {
285
  return "'" . str_replace( array( "'", "\"", "&quot;" ), "", htmlspecialchars( $string ) ) . "'";
286
  }
287
-
288
  /**
289
  * Remove Quotation mark from xml element.
290
  *
@@ -293,7 +293,7 @@ class Custom2Feed implements FeedInterface {
293
  public function removeQuotation( $string ) {
294
  return str_replace( array( "'", "\"", "&quot;" ), "", $string );
295
  }
296
-
297
  /**
298
  * Extract Start Code attributes value and replace.
299
  *
@@ -315,27 +315,27 @@ class Custom2Feed implements FeedInterface {
315
  );
316
  $start_attr_code = $this->getReturnTypeValue( $tempAttribute, $product );
317
  $start_attr_codes[ stripslashes( $attrValue ) ] = $this->addQuotation( $start_attr_code );
318
-
319
  } else {
320
  $start_attr_code = woo_feed_get_string_between( $attrValue, '{', '}' );
321
  $start_attr_code = $this->getAttributeTypeAndValue( $start_attr_code, $product );
322
  $start_attr_codes[ $attrValue ] = $this->addQuotation( $start_attr_code );
323
-
324
  }
325
  }
326
  $elementStart = str_replace( array_keys( $start_attr_codes ), array_values( $start_attr_codes ), $elementStart );
327
  }
328
-
329
  return $elementStart;
330
  }
331
-
332
-
333
  public function process_eval( $attribute ) {
334
  $return = preg_replace( '/\\\\/', '', $attribute );
335
-
336
  return eval( $return );
337
  }
338
-
339
  public function getReturnTypeValue( $attribute, $product ) {
340
  $variables = array();
341
  if ( ! empty( $attribute ) && strpos( $attribute['to_return'], '$' ) !== false ) {
@@ -350,20 +350,20 @@ class Custom2Feed implements FeedInterface {
350
  }
351
  }
352
  }
353
-
354
  extract( $variables, EXTR_OVERWRITE ); // phpcs:ignore
355
  $return = $attribute['to_return'];
356
  $return = preg_replace( '/\\\\/', '', $return );
357
-
358
  return eval( $return );
359
  }
360
-
361
  public function getAttributeTypeAndValue( $attribute, $product ) {
362
-
363
  return ProductHelper::getAttributeValueByType( $attribute, $product, $this->config );
364
-
365
  }
366
-
367
  /** Return the php function of the attribute
368
  *
369
  * @param $function
@@ -373,7 +373,7 @@ class Custom2Feed implements FeedInterface {
373
  private function returnPHPFunction( $function ) {
374
  return $function;
375
  }
376
-
377
  /** Add CDATA to String
378
  *
379
  * @param string $status
@@ -384,13 +384,13 @@ class Custom2Feed implements FeedInterface {
384
  private function addCDATA( $status, $output ) {
385
  if ( 'yes' === $status ) {
386
  $output = $this->removeCDATA( $output );
387
-
388
  return '<![CDATA[' . $output . ']]>';
389
  }
390
-
391
  return $output;
392
  }
393
-
394
  /** Remove CDATA from String
395
  *
396
  * @param string $output
@@ -400,4 +400,4 @@ class Custom2Feed implements FeedInterface {
400
  private function removeCDATA( $output ) {
401
  return str_replace( [ "<![CDATA[", "]]>" ], "", $output );
402
  }
403
- }
1
  <?php
2
 
3
+ namespace CTXFeed\V5\Template;
4
 
5
  use CTXFeed\V5\Output\FormatOutput;
6
  use CTXFeed\V5\Utility\Config;
12
  use CTXFeed\V5\Product\ProductInfo;
13
  use CTXFeed\V5\Utility\Settings;
14
 
15
+ class CustomXMLTemplate implements TemplateInterface {
16
  /**
17
  * @var Config $config Contain Feed Config.
18
  */
25
  * @var array $structure Contain Feed Structure.
26
  */
27
  private $structure;
28
+
29
  private $feedHeader;
30
  /**
31
  * This variable is responsible for holding feed string
39
  private $s;
40
  private $productEngine;
41
  private $variationElementsStart;
42
+
43
  public function __construct( $ids, $config ) {
44
  $this->ids = $ids;
45
  $this->config = $config;
46
+ $getStructure = TemplateFactory::get_structure( $config );
47
  $this->structure = $getStructure['structure'];
48
  $this->variationElementsStart = $getStructure['variationElementsStart'];
49
  }
50
+
51
  /**
52
  * Get Feed Body.
53
  *
58
  // $feed = $feed->make_body();
59
  //
60
  // return self::removeHeaderFooter( $feed );
61
+
62
  // Get XML Elements from feed config
63
  $Elements = $this->structure;
64
+
65
  if ( ! empty( $this->structure ) && ! empty( $this->ids ) ) {
66
  foreach ( $this->ids as $pid ) {
67
  $product = wc_get_product( $pid );
68
  $this->productEngine = new ProductInfo( $product, $this->config );
69
  //TODO: PRODUCT VALIDATION AND FILTER IMPLEMENTATION
70
+
71
+
72
  //TODO Filter products by Condition
73
  // if (isset($this->config['fattribute']) && count($this->config['fattribute']) && !$this->productEngine->filter_product($product)) {
74
+
75
+
76
  // Start making XML Elements
77
  foreach ( $Elements as $each => $element ) {
78
+
79
+
80
  if ( $each === $this->variationElementsStart && $product->is_type( 'variable' ) && $product->has_child() ) {
81
+
82
  $variations = $product->get_children();
83
  foreach ( $variations as $variation ) {
84
  $variation = wc_get_product( $variation );
92
  }
93
  }
94
  }
95
+
96
  }
97
+
98
  if ( $element['for'] === 'variation' ) {
99
  continue;
100
  }
101
+
102
  if ( $element['for'] === 'ifVariationAvailable' && $product->get_type() !== 'variable' ) {
103
  continue;
104
  }
105
+
106
  if ( $element['for'] === 'images' && isset( $element['attr_code'] ) ) {
107
  $images = $this->productEngine->custom_xml_images( $product );
108
  if ( ! empty( $images ) ) {
129
  $this->feedString .= $this->make_xml_element( $element, $product );
130
  }
131
  }
132
+
133
  }
134
  }
135
+
136
  return $this->feedString;
137
  }
138
+
139
  /**
140
  * Get Feed Header.
141
  *
145
  $getHeader = explode( '{{each product start}}', $this->config->feed_config_custom2 );
146
  $header = trim( $getHeader[0] );
147
  $getNodes = explode( "\n", $header );
148
+
149
  if ( ! empty( $getNodes ) ) {
150
  foreach ( $getNodes as $value ) {
151
  // Add header info to feed file
161
  } else {
162
  $this->feedHeader .= '<?xml version="1.0" encoding="utf-8" ?>' . "\n";
163
  }
164
+
165
  return $this->feedHeader;
166
  }
167
+
168
  /**
169
  * Get Feed Footer.
170
  *
180
  $this->feedFooter .= $value;
181
  }
182
  }
183
+
184
  return $this->feedFooter;
185
  }
186
+
187
  /**
188
  * @param $element
189
  * @param $product
196
  $start = '';
197
  $end = '';
198
  $output = '';
199
+
200
+
201
  $this->productEngine = new ProductInfo( $product, $this->config );
202
+
203
  // Start XML Element
204
  if (
205
  empty( $element['elementTextInfo'] ) && // Get the root element.
206
  empty( $element['end'] ) &&
207
  6 === count( $element )
208
  ) {
209
+
210
  // Start XML Element
211
  $elementStart = $this->processStartingElement( $element, $product );
212
+
213
  $end .= '<' . $elementStart . '>';
214
  $string .= $end . "\n";
215
  $p = true;
217
  $elementStart = $this->processStartingElement( $element, $product );
218
  $start .= '<' . $elementStart . '>';
219
  }
220
+
221
  // Make XML Element Text
222
  if ( ! empty( $element['elementTextInfo'] ) ) {
223
  if ( 'attribute' === $element['attr_type'] ) {
232
  } elseif ( 'text' === $element['attr_type'] ) {
233
  $output = ( isset( $element['attr_value'] ) && ! empty( $element['attr_value'] ) ) ? $element['attr_value'] : '';
234
  }
235
+
236
  $pluginAttribute = null;
237
  if ( 'attribute' === $element['attr_type'] ) {
238
  $pluginAttribute = $element['attr_code'];
239
  }
240
+
241
  // Format output according to commands
242
  if ( array_key_exists( 'formatter', $element ) ) {
243
  $formatOutput = new FormatOutput( $product, $this->config, $pluginAttribute );
245
  }
246
  $p = false;
247
  }
248
+
249
  // End XML Element
250
  if ( '/' . $element['end'] === $element['start'] && empty( $element['elementTextInfo'] ) && 6 === count( $element ) ) {
251
  if ( ! empty( $element['end'] ) ) {
256
  } else if ( ! empty( $element['end'] ) ) {
257
  $end .= '</' . $element['end'] . ">\n";
258
  }
259
+
260
  if ( ! $p ) {
261
  // Add Prefix and Suffix
262
  $prefix = isset( $element['prefix'] ) ? preg_replace( '!\s+!', ' ', $element['prefix'] ) : '';
263
  $suffix = isset( $element['suffix'] ) ? preg_replace( '!\s+!', ' ', $element['suffix'] ) : '';
264
  // $output = $this->productEngine->process_prefix_suffix( $output, $prefix, $suffix, isset( $element['attr_code'] ) ? $element['attr_code'] : '' );
265
+
266
  // Add CDATA if needed
267
  if ( ! empty( $output ) ) {
268
  $output = $this->addCDATA( $element['include_cdata'], $output );
269
  }
270
+
271
  $string .= $start . $output . $end;
272
  $p = false;
273
  }
274
+
275
  return $string;
276
  }
277
+
278
+
279
  /**
280
  * Add Quotation mark to store code value.
281
  *
284
  public function addQuotation( $string ) {
285
  return "'" . str_replace( array( "'", "\"", "&quot;" ), "", htmlspecialchars( $string ) ) . "'";
286
  }
287
+
288
  /**
289
  * Remove Quotation mark from xml element.
290
  *
293
  public function removeQuotation( $string ) {
294
  return str_replace( array( "'", "\"", "&quot;" ), "", $string );
295
  }
296
+
297
  /**
298
  * Extract Start Code attributes value and replace.
299
  *
315
  );
316
  $start_attr_code = $this->getReturnTypeValue( $tempAttribute, $product );
317
  $start_attr_codes[ stripslashes( $attrValue ) ] = $this->addQuotation( $start_attr_code );
318
+
319
  } else {
320
  $start_attr_code = woo_feed_get_string_between( $attrValue, '{', '}' );
321
  $start_attr_code = $this->getAttributeTypeAndValue( $start_attr_code, $product );
322
  $start_attr_codes[ $attrValue ] = $this->addQuotation( $start_attr_code );
323
+
324
  }
325
  }
326
  $elementStart = str_replace( array_keys( $start_attr_codes ), array_values( $start_attr_codes ), $elementStart );
327
  }
328
+
329
  return $elementStart;
330
  }
331
+
332
+
333
  public function process_eval( $attribute ) {
334
  $return = preg_replace( '/\\\\/', '', $attribute );
335
+
336
  return eval( $return );
337
  }
338
+
339
  public function getReturnTypeValue( $attribute, $product ) {
340
  $variables = array();
341
  if ( ! empty( $attribute ) && strpos( $attribute['to_return'], '$' ) !== false ) {
350
  }
351
  }
352
  }
353
+
354
  extract( $variables, EXTR_OVERWRITE ); // phpcs:ignore
355
  $return = $attribute['to_return'];
356
  $return = preg_replace( '/\\\\/', '', $return );
357
+
358
  return eval( $return );
359
  }
360
+
361
  public function getAttributeTypeAndValue( $attribute, $product ) {
362
+
363
  return ProductHelper::getAttributeValueByType( $attribute, $product, $this->config );
364
+
365
  }
366
+
367
  /** Return the php function of the attribute
368
  *
369
  * @param $function
373
  private function returnPHPFunction( $function ) {
374
  return $function;
375
  }
376
+
377
  /** Add CDATA to String
378
  *
379
  * @param string $status
384
  private function addCDATA( $status, $output ) {
385
  if ( 'yes' === $status ) {
386
  $output = $this->removeCDATA( $output );
387
+
388
  return '<![CDATA[' . $output . ']]>';
389
  }
390
+
391
  return $output;
392
  }
393
+
394
  /** Remove CDATA from String
395
  *
396
  * @param string $output
400
  private function removeCDATA( $output ) {
401
  return str_replace( [ "<![CDATA[", "]]>" ], "", $output );
402
  }
403
+ }
V5/{Feed/FacebookFeed.php → Template/FacebookTemplate.php} RENAMED
@@ -1,10 +1,10 @@
1
  <?php
2
- namespace CTXFeed\V5\Feed;
3
  use CTXFeed\V5\File\FileFactory;
4
  use CTXFeed\V5\Product\ProductFactory;
5
  use CTXFeed\V5\Utility\Config;
6
 
7
- class FacebookFeed implements FeedInterface {
8
  /**
9
  * @var Config $config Contain Feed Config.
10
  */
@@ -21,7 +21,7 @@ class FacebookFeed implements FeedInterface {
21
  public function __construct( $ids, $config ) {
22
  $this->ids = $ids;
23
  $this->config = $config;
24
- $this->structure = FeedFactory::get_structure( $config);
25
  }
26
 
27
  /**
@@ -58,4 +58,4 @@ class FacebookFeed implements FeedInterface {
58
 
59
  return $feed['footer'];
60
  }
61
- }
1
  <?php
2
+ namespace CTXFeed\V5\Template;
3
  use CTXFeed\V5\File\FileFactory;
4
  use CTXFeed\V5\Product\ProductFactory;
5
  use CTXFeed\V5\Utility\Config;
6
 
7
+ class FacebookTemplate implements TemplateInterface {
8
  /**
9
  * @var Config $config Contain Feed Config.
10
  */
21
  public function __construct( $ids, $config ) {
22
  $this->ids = $ids;
23
  $this->config = $config;
24
+ $this->structure = TemplateFactory::get_structure( $config);
25
  }
26
 
27
  /**
58
 
59
  return $feed['footer'];
60
  }
61
+ }
V5/{Feed/GoogleReviewFeed.php → Template/GoogleReviewTemplate.php} RENAMED
@@ -1,11 +1,11 @@
1
  <?php
2
- namespace CTXFeed\V5\Feed;
3
  //TODO: Google Review Implementation
4
  use CTXFeed\V5\Utility\Config;
5
  use CTXFeed\V5\File\FileFactory;
6
  use CTXFeed\V5\Product\ProductFactory;
7
 
8
- class GoogleReviewFeed implements FeedInterface {
9
  /**
10
  * @var Config $config Contain Feed Config.
11
  */
@@ -22,7 +22,7 @@ class GoogleReviewFeed implements FeedInterface {
22
  public function __construct( $ids, $config ) {
23
  $this->ids = $ids;
24
  $this->config = $config;
25
- $this->structure = FeedFactory::get_structure( $config);
26
  }
27
 
28
  /**
@@ -59,4 +59,4 @@ class GoogleReviewFeed implements FeedInterface {
59
 
60
  return $feed['footer'];
61
  }
62
- }
1
  <?php
2
+ namespace CTXFeed\V5\Template;
3
  //TODO: Google Review Implementation
4
  use CTXFeed\V5\Utility\Config;
5
  use CTXFeed\V5\File\FileFactory;
6
  use CTXFeed\V5\Product\ProductFactory;
7
 
8
+ class GoogleReviewTemplate implements TemplateInterface {
9
  /**
10
  * @var Config $config Contain Feed Config.
11
  */
22
  public function __construct( $ids, $config ) {
23
  $this->ids = $ids;
24
  $this->config = $config;
25
+ $this->structure = TemplateFactory::get_structure( $config);
26
  }
27
 
28
  /**
59
 
60
  return $feed['footer'];
61
  }
62
+ }
V5/{Feed/GoogleFeed.php → Template/GoogleTemplate.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace CTXFeed\V5\Feed;
4
 
5
  use CTXFeed\V5\File\FileFactory;
6
  use CTXFeed\V5\Filter\ValidateProduct;
@@ -9,7 +9,7 @@ use CTXFeed\V5\Product\ProductFactory;
9
  use CTXFeed\V5\Utility\Config;
10
  use CTXFeed\V5\Utility\Logs;
11
 
12
- class GoogleFeed implements FeedInterface {
13
  /**
14
  * @var Config $config Contain Feed Config.
15
  */
@@ -26,7 +26,7 @@ class GoogleFeed implements FeedInterface {
26
  public function __construct( $ids, $config ) {
27
  $this->ids = $ids;
28
  $this->config = $config;
29
- $this->structure = FeedFactory::get_structure( $config );
30
  }
31
 
32
  /**
1
  <?php
2
 
3
+ namespace CTXFeed\V5\Template;
4
 
5
  use CTXFeed\V5\File\FileFactory;
6
  use CTXFeed\V5\Filter\ValidateProduct;
9
  use CTXFeed\V5\Utility\Config;
10
  use CTXFeed\V5\Utility\Logs;
11
 
12
+ class GoogleTemplate implements TemplateInterface {
13
  /**
14
  * @var Config $config Contain Feed Config.
15
  */
26
  public function __construct( $ids, $config ) {
27
  $this->ids = $ids;
28
  $this->config = $config;
29
+ $this->structure = TemplateFactory::get_structure( $config );
30
  }
31
 
32
  /**
V5/{Feed/PinterestFeed.php → Template/PinterestTemplate.php} RENAMED
@@ -1,10 +1,10 @@
1
  <?php
2
- namespace CTXFeed\V5\Feed;
3
  use CTXFeed\V5\Utility\Config;
4
  use CTXFeed\V5\File\FileFactory;
5
  use CTXFeed\V5\Product\ProductFactory;
6
 
7
- class PinterestFeed implements FeedInterface {
8
  /**
9
  * @var Config $config Contain Feed Config.
10
  */
@@ -21,7 +21,7 @@ class PinterestFeed implements FeedInterface {
21
  public function __construct( $ids, $config ) {
22
  $this->ids = $ids;
23
  $this->config = $config;
24
- $this->structure = FeedFactory::get_structure( $config );
25
  }
26
 
27
  /**
@@ -58,4 +58,4 @@ class PinterestFeed implements FeedInterface {
58
 
59
  return $feed['footer'];
60
  }
61
- }
1
  <?php
2
+ namespace CTXFeed\V5\Template;
3
  use CTXFeed\V5\Utility\Config;
4
  use CTXFeed\V5\File\FileFactory;
5
  use CTXFeed\V5\Product\ProductFactory;
6
 
7
+ class PinterestTemplate implements TemplateInterface {
8
  /**
9
  * @var Config $config Contain Feed Config.
10
  */
21
  public function __construct( $ids, $config ) {
22
  $this->ids = $ids;
23
  $this->config = $config;
24
+ $this->structure = TemplateFactory::get_structure( $config );
25
  }
26
 
27
  /**
58
 
59
  return $feed['footer'];
60
  }
61
+ }
V5/Template/Template.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace CTXFeed\V5\Template;
3
+ class Template {
4
+ private $template;
5
+
6
+ public function __construct( TemplateInterface $template ) {
7
+ $this->template = $template;
8
+ }
9
+
10
+ public function get_feed() {
11
+ return $this->template->get_feed();
12
+ }
13
+
14
+ public function get_header() {
15
+ return $this->template->get_header();
16
+ }
17
+
18
+ public function get_footer() {
19
+ return $this->template->get_footer();
20
+ }
21
+
22
+ }
V5/{Feed/FeedFactory.php → Template/TemplateFactory.php} RENAMED
@@ -1,24 +1,24 @@
1
  <?php
2
- namespace CTXFeed\V5\Feed;
3
  use CTXFeed\V5\Utility\Config;
4
  use CTXFeed\V5\Structure\CustomStructure;
5
 
6
- class FeedFactory {
7
 
8
  public static function MakeFeed( $ids, $config ) {
9
- $class = "\CTXFeed\V5\Feed\\".ucfirst( $config->get_feed_template() ) . 'Feed';
10
 
11
  if ( ! class_exists( $class ) && in_array( $config->provider, self::get_grouped_templates(), true ) ) {
12
  $class = array_search( $config->provider, self::get_grouped_templates(), true );
13
 
14
- return new Feed( new $class( $ids, $config ) );
15
  }
16
 
17
  if ( class_exists( $class ) ) {
18
- return new Feed( new $class( $ids, $config ) );
19
  }
20
 
21
- return new Feed( new CustomFeed( $ids, $config ) );
22
  }
23
 
24
  public static function get_structure( $config ) {
@@ -46,4 +46,4 @@ class FeedFactory {
46
  'pinterest' => [ 'pinterest', 'pinterest_rss' ],
47
  ];
48
  }
49
- }
1
  <?php
2
+ namespace CTXFeed\V5\Template;
3
  use CTXFeed\V5\Utility\Config;
4
  use CTXFeed\V5\Structure\CustomStructure;
5
 
6
+ class TemplateFactory {
7
 
8
  public static function MakeFeed( $ids, $config ) {
9
+ $class = "\CTXFeed\V5\Template\\".ucfirst( $config->get_feed_template() ) . 'Feed';
10
 
11
  if ( ! class_exists( $class ) && in_array( $config->provider, self::get_grouped_templates(), true ) ) {
12
  $class = array_search( $config->provider, self::get_grouped_templates(), true );
13
 
14
+ return new Template( new $class( $ids, $config ) );
15
  }
16
 
17
  if ( class_exists( $class ) ) {
18
+ return new Template( new $class( $ids, $config ) );
19
  }
20
 
21
+ return new Template( new CustomTemplate( $ids, $config ) );
22
  }
23
 
24
  public static function get_structure( $config ) {
46
  'pinterest' => [ 'pinterest', 'pinterest_rss' ],
47
  ];
48
  }
49
+ }
V5/{Feed/FeedInterface.php → Template/TemplateInterface.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
- namespace CTXFeed\V5\Feed;
3
- interface FeedInterface {
4
  public function get_feed( );
5
  public function get_header( );
6
  public function get_footer( );
1
  <?php
2
+ namespace CTXFeed\V5\Template;
3
+ interface TemplateInterface {
4
  public function get_feed( );
5
  public function get_header( );
6
  public function get_footer( );
V5/Utility/Config.php CHANGED
@@ -4,8 +4,10 @@ namespace CTXFeed\V5\Utility;
4
  /**
5
  * This class contain feed information.
6
  */
7
- class Config
8
- {
 
 
9
  /**
10
  * @var array|bool
11
  */
@@ -21,49 +23,43 @@ class Config
21
  private $context;
22
 
23
  /**
24
- * @param array $feedInfo
25
  * @param string $context
26
  */
27
- public function __construct($feedInfo, $context = 'view')
28
- {
29
 
30
  $this->feedInfo = $feedInfo;
31
- $this->context = $context;
32
- $config = isset($this->feedInfo['feedrules']) ? $this->feedInfo['feedrules'] : $this->feedInfo;
33
- $this->set_config($config);
34
  }
35
 
36
- public function __isset($name)
37
- {
38
- if (isset($this->config[$name])) {
39
  return true;
40
  }
41
 
42
  return false;
43
  }
44
 
45
- public function __get($name)
46
- {
47
- return $this->config[$name];
48
  }
49
 
50
- public function __set($name, $value)
51
- {
52
- return $this->config[$name] = $value;
53
  }
54
 
55
- public function __unset($name)
56
- {
57
- unset($this->config[$name]);
58
  }
59
 
60
  /**
61
  *
62
  * @return array
63
  */
64
- public function get_feed_rules()
65
- {
66
- return isset($this->feedInfo['feedrules']) ? $this->feedInfo['feedrules'] : $this->feedInfo;
67
  }
68
 
69
  /**
@@ -71,9 +67,8 @@ class Config
71
  *
72
  * @return string
73
  */
74
- public function get_feed_id()
75
- {
76
- if (isset($this->config['feed_id']) && !empty($this->config['feed_id'])) {
77
  return $this->config['feed_id'];
78
  }
79
 
@@ -85,9 +80,8 @@ class Config
85
  *
86
  * @return string
87
  */
88
- public function get_feed_name()
89
- {
90
- if (isset($this->config['filename']) && !empty($this->config['filename'])) {
91
  return $this->config['filename'];
92
  }
93
 
@@ -99,11 +93,10 @@ class Config
99
  *
100
  * @return string
101
  */
102
- public function get_feed_file_name($array = false)
103
- {
104
- if (isset($this->feedInfo['url']) && !empty($this->feedInfo['url'])) {
105
- $fileInfo = pathinfo($this->feedInfo['url']);
106
- if ($array) {
107
  return $fileInfo;
108
  }
109
 
@@ -118,9 +111,8 @@ class Config
118
  *
119
  * @return string
120
  */
121
- public function get_feed_template()
122
- {
123
- if (isset($this->config['provider'])) {
124
  return $this->config['provider'];
125
  }
126
 
@@ -132,9 +124,8 @@ class Config
132
  *
133
  * @return string
134
  */
135
- public function get_feed_language()
136
- {
137
- if (isset($this->config['feedLanguage']) && !empty($this->config['feedLanguage'])) {
138
  return $this->config['feedLanguage'];
139
  }
140
 
@@ -146,22 +137,21 @@ class Config
146
  *
147
  * @return string
148
  */
149
- public function get_feed_currency()
150
- {
151
- if (isset($this->config['feedCurrency'])) {
152
  return $this->config['feedCurrency'];
153
  }
154
 
155
  $attributes = $this->config['attributes'];
156
- $priceAttrs = ['price', 'current_price', 'price_with_tax', 'current_price_with_tax'];
157
- foreach ($priceAttrs as $price_attr) {
158
- $key = array_search($price_attr, $attributes, true);
159
- if ($key) {
160
  break;
161
  }
162
  }
163
 
164
- return isset($this->config['suffix'][$key]) ? $this->config['suffix'][$key] : get_woocommerce_currency();
165
  }
166
 
167
  /**
@@ -169,9 +159,8 @@ class Config
169
  *
170
  * @return string
171
  */
172
- public function get_feed_country()
173
- {
174
- if (isset($this->config['feed_country']) && !empty($this->config['feed_country'])) {
175
  return $this->config['feed_country'];
176
  }
177
 
@@ -183,9 +172,8 @@ class Config
183
  *
184
  * @return string
185
  */
186
- public function get_feed_file_type()
187
- {
188
- if (isset($this->config['feedType']) && !empty($this->config['feedType'])) {
189
  return $this->config['feedType'];
190
  }
191
 
@@ -197,16 +185,15 @@ class Config
197
  *
198
  * @return string
199
  */
200
- public function get_delimiter()
201
- {
202
- if (isset($this->config['delimiter']) && $this->config['delimiter'] !== "") {
203
- if ('tsv' === $this->get_feed_file_type()) {
204
  $this->config['delimiter'] = "\t";
205
 
206
  return $this->config['delimiter'];
207
  }
208
 
209
- if (' ' === $this->config['delimiter']) {
210
  $this->config['delimiter'] = "\s";
211
  }
212
 
@@ -221,13 +208,12 @@ class Config
221
  *
222
  * @return string
223
  */
224
- public function get_enclosure()
225
- {
226
- if (isset($this->config['enclosure']) && !empty($this->config['enclosure']) && in_array($this->config['enclosure'], [
227
  'double',
228
  'single'
229
- ])) {
230
- return ('double' === $this->config['enclosure']) ? '"' : "'";
231
  }
232
 
233
  return false;
@@ -238,9 +224,8 @@ class Config
238
  *
239
  * @return string
240
  */
241
- public function get_feed_items_wrapper()
242
- {
243
- if (isset($this->config['itemsWrapper']) && !empty($this->config['itemsWrapper'])) {
244
  return $this->config['itemsWrapper'];
245
  }
246
 
@@ -252,9 +237,8 @@ class Config
252
  *
253
  * @return string
254
  */
255
- public function get_feed_item_wrapper()
256
- {
257
- if (isset($this->config['itemWrapper']) && !empty($this->config['itemWrapper'])) {
258
  return $this->config['itemWrapper'];
259
  }
260
 
@@ -266,9 +250,8 @@ class Config
266
  *
267
  * @return string
268
  */
269
- public function get_feed_extra_header()
270
- {
271
- if (isset($this->config['extraHeader']) && !empty($this->config['extraHeader'])) {
272
  return $this->config['extraHeader'];
273
  }
274
 
@@ -280,9 +263,8 @@ class Config
280
  *
281
  * @return string
282
  */
283
- public function get_shipping_country()
284
- {
285
- if (isset($this->config['shipping_country']) && !empty($this->config['shipping_country'])) {
286
  return $this->config['shipping_country'];
287
  }
288
 
@@ -294,9 +276,8 @@ class Config
294
  *
295
  * @return string
296
  */
297
- public function get_tax_country()
298
- {
299
- if (isset($this->config['tax_country']) && !empty($this->config['tax_country'])) {
300
  return $this->config['tax_country'];
301
  }
302
 
@@ -308,9 +289,8 @@ class Config
308
  *
309
  * @return array|bool
310
  */
311
- public function get_string_replace()
312
- {
313
- if (!empty($this->config['str_replace'])) {
314
  return $this->config['str_replace'];
315
  }
316
 
@@ -322,17 +302,16 @@ class Config
322
  *
323
  * @return array|bool
324
  */
325
- public function get_campaign_parameters()
326
- {
327
- if (isset($this->config['campaign_parameters']) && !empty($this->config['campaign_parameters'])) {
328
  return wp_parse_args(
329
  $this->config['campaign_parameters'],
330
  array(
331
- 'utm_source' => '',
332
- 'utm_medium' => '',
333
  'utm_campaign' => '',
334
- 'utm_term' => '',
335
- 'utm_content' => '',
336
  )
337
  );
338
  }
@@ -345,9 +324,8 @@ class Config
345
  *
346
  * @return bool
347
  */
348
- public function remove_backorder_product()
349
- {
350
- if (isset($this->config['is_backorder'])) {
351
  return 'y' === $this->config['is_backorder'];
352
  }
353
 
@@ -359,9 +337,8 @@ class Config
359
  *
360
  * @return bool
361
  */
362
- public function remove_outofstock_product()
363
- {
364
- if (isset($this->config['is_outOfStock'])) {
365
  return 'y' === $this->config['is_outOfStock'];
366
  }
367
 
@@ -373,9 +350,8 @@ class Config
373
  *
374
  * @return bool
375
  */
376
- public function remove_empty_title()
377
- {
378
- if (isset($this->config['is_emptyTitle'])) {
379
  return 'y' === $this->config['is_emptyTitle'];
380
  }
381
 
@@ -387,9 +363,8 @@ class Config
387
  *
388
  * @return bool
389
  */
390
- public function remove_empty_description()
391
- {
392
- if (isset($this->config['is_emptyDescription'])) {
393
  return 'y' === $this->config['is_emptyDescription'];
394
  }
395
 
@@ -401,9 +376,8 @@ class Config
401
  *
402
  * @return bool
403
  */
404
- public function remove_empty_image()
405
- {
406
- if (isset($this->config['is_emptyImage'])) {
407
  return 'y' === $this->config['is_emptyImage'];
408
  }
409
 
@@ -415,18 +389,16 @@ class Config
415
  *
416
  * @return bool
417
  */
418
- public function remove_empty_price()
419
- {
420
- if (isset($this->config['is_emptyPrice'])) {
421
  return 'y' === $this->config['is_emptyPrice'];
422
  }
423
 
424
  return false;
425
  }
426
 
427
- public function remove_hidden_products()
428
- {
429
- if (isset($this->config['product_visibility'])) {
430
  return $this->config['product_visibility'];
431
  }
432
 
@@ -438,16 +410,15 @@ class Config
438
  *
439
  * @return bool|array
440
  */
441
- public function get_number_format()
442
- {
443
- if (isset($this->config['decimal_separator'])) {
444
  $number_format = [
445
- 'decimal_separator' => apply_filters('ctx_feed_number_format_decimal_separator', $this->config['decimal_separator'], $this->config),
446
- 'thousand_separator' => apply_filters('ctx_feed_number_format_thousand_separator', $this->config['thousand_separator'], $this->config),
447
- 'decimals' => apply_filters('ctx_feed_number_format_decimals', $this->config['decimals'], $this->config),
448
  ];
449
 
450
- return apply_filters('ctx_feed_number_format', $number_format, $this->config);
451
  }
452
 
453
  return false;
@@ -458,12 +429,11 @@ class Config
458
  *
459
  * @return array|bool
460
  */
461
- public function get_products_to_exclude()
462
- {
463
- if (isset($this->config['filter_mode'])) {
464
  $mode = $this->config['filter_mode'];
465
- if ('exclude' === $mode['product_ids'] && !empty($this->config['product_ids'])) {
466
- return explode(',', $this->config['product_ids']);
467
  }
468
  }
469
 
@@ -475,13 +445,12 @@ class Config
475
  *
476
  * @return array|bool
477
  */
478
- public function get_products_to_include()
479
- {
480
 
481
- if (isset($this->config['filter_mode'])) {
482
  $mode = $this->config['filter_mode'];
483
- if ('include' === $mode['product_ids'] && !empty($this->config['product_ids'])) {
484
- return explode(',', $this->config['product_ids']);
485
  }
486
  }
487
 
@@ -493,12 +462,11 @@ class Config
493
  *
494
  * @return mixed
495
  */
496
- public function get_categories_to_exclude()
497
- {
498
 
499
- if (isset($this->config['filter_mode'])) {
500
  $mode = $this->config['filter_mode'];
501
- if ('exclude' === $mode['categories'] && !empty($this->config['categories'])) {
502
  return $this->config['categories'];
503
  }
504
  }
@@ -511,12 +479,11 @@ class Config
511
  *
512
  * @return mixed
513
  */
514
- public function get_categories_to_include()
515
- {
516
 
517
- if (isset($this->config['filter_mode'])) {
518
  $mode = $this->config['filter_mode'];
519
- if ('include' === $mode['categories'] && !empty($this->config['categories'])) {
520
  return $this->config['categories'];
521
  }
522
  }
@@ -530,17 +497,16 @@ class Config
530
  *
531
  * @return mixed
532
  */
533
- public function get_post_status_to_include()
534
- {
535
- $status = ['draft', 'pending', 'private', 'publish'];
536
- if (isset($this->config['filter_mode'], $this->config['post_status']) && !empty($this->config['post_status'])) {
537
  $mode = $this->config['filter_mode'];
538
- if ('include' === $mode['post_status']) {
539
  return $this->config['post_status'];
540
  }
541
 
542
- if ('exclude' === $mode['post_status']) {
543
- return array_unique(array_merge(array_diff($status, $this->config['post_status']), array_diff($status, $this->config['post_status'])));
544
  }
545
  }
546
 
@@ -552,11 +518,10 @@ class Config
552
  *
553
  * @return string|bool
554
  */
555
- public function get_vendors_to_include()
556
- {
557
 
558
- if (isset($this->config['vendors']) && !empty($this->config['vendors'])) {
559
- return implode(',', $this->config['vendors']);
560
  }
561
 
562
  return false;
@@ -567,10 +532,9 @@ class Config
567
  *
568
  * @return bool
569
  */
570
- public function get_variations_to_include()
571
- {
572
 
573
- return isset($this->config['is_variations']) && in_array($this->config['is_variations'], ['y', 'both']);
574
  }
575
 
576
  /**
@@ -578,14 +542,13 @@ class Config
578
  *
579
  * @return array|bool
580
  */
581
- public function get_advance_filters()
582
- {
583
- if (isset($this->config['fattribute'])) {
584
  return [
585
- "fattribute" => $this->config['fattribute'],
586
- "condition" => $this->config['condition'],
587
  "filterCompare" => $this->config['filterCompare'],
588
- "concatType" => $this->config['concatType'],
589
  ];
590
  }
591
 
@@ -597,22 +560,21 @@ class Config
597
  *
598
  * @return array|bool
599
  */
600
- public function get_ftp_config()
601
- {
602
- if (isset($this->config['ftpenabled']) && $this->config['ftpenabled']) {
603
 
604
  // if ( '0' === $this->config['ftpenabled'] ) {
605
  // return false;
606
  // }
607
 
608
  return [
609
- "type" => $this->config['ftporsftp'],
610
- "host" => $this->config['ftphost'],
611
- "port" => $this->config['ftpport'],
612
  "username" => $this->config['ftpuser'],
613
  "password" => $this->config['ftppassword'],
614
- "path" => $this->config['ftppath'],
615
- "mode" => $this->config['ftpmode'],
616
  ];
617
  }
618
 
@@ -624,13 +586,12 @@ class Config
624
  *
625
  * @return array|bool
626
  */
627
- public function get_variable_config()
628
- {
629
- if (isset($this->config['is_variations'])) {
630
  return [
631
- "is_variations" => $this->config['is_variations'],
632
- "variable_price" => isset($this->config['variable_price']) ? $this->config['variable_price'] : '',
633
- "variable_quantity" => isset($this->config['variable_quantity']) ? $this->config['variable_quantity'] : '',
634
  ];
635
  }
636
 
@@ -642,9 +603,8 @@ class Config
642
  *
643
  * @return mixed
644
  */
645
- public function get_composite_price_type()
646
- {
647
- if (isset($this->config['composite_price'])) {
648
  return $this->config['composite_price'];
649
  }
650
 
@@ -656,8 +616,7 @@ class Config
656
  *
657
  * @return array
658
  */
659
- public function get_feed()
660
- {
661
  return $this->feedInfo;
662
  }
663
 
@@ -666,8 +625,7 @@ class Config
666
  *
667
  * @return array
668
  */
669
- public function get_config()
670
- {
671
  return $this->config;
672
  }
673
 
@@ -676,110 +634,212 @@ class Config
676
  *
677
  * @return array
678
  */
679
- private function set_config($config)
680
- {
681
 
682
  $defaults = array(
683
- 'provider' => '',
684
- 'feed_country' => '',
685
- 'filename' => '',
686
- 'feedType' => '',
687
- 'ftpenabled' => 0,
688
- 'ftporsftp' => 'ftp',
689
- 'ftphost' => '',
690
- 'ftpport' => '21',
691
- 'ftpuser' => '',
692
- 'ftppassword' => '',
693
- 'ftppath' => '',
694
- 'ftpmode' => 'active',
695
- 'is_variations' => 'y', // Only Variations (All Variations)
696
- 'variable_price' => 'first',
697
- 'variable_quantity' => 'first',
698
- 'feedLanguage' => apply_filters('wpml_current_language', null),
699
- 'feedCurrency' => apply_filters('woocommerce_currency', get_option('woocommerce_currency')),
700
- 'itemsWrapper' => 'products',
701
- 'itemWrapper' => 'product',
702
- 'delimiter' => ',',
703
- 'enclosure' => 'double',
704
- 'extraHeader' => '',
705
- 'vendors' => array(),
706
  // Feed Config
707
- 'mattributes' => array(), // merchant attributes
708
- 'prefix' => array(), // prefixes
709
- 'type' => array(), // value (attribute) types
710
- 'attributes' => array(), // product attribute mappings
711
- 'default' => array(), // default values (patterns) if value type set to pattern
712
- 'suffix' => array(), // suffixes
713
- 'output_type' => array(), // output type (output filter)
714
- 'limit' => array(), // limit or command
715
  // filters tab
716
- 'composite_price' => 'all_product_price',
717
- 'product_ids' => '',
718
- 'categories' => array(),
719
- 'post_status' => array('publish'),
720
- 'filter_mode' => array(),
721
- 'campaign_parameters' => array(),
722
- 'is_outOfStock' => 'n',
723
- 'is_backorder' => 'n',
724
- 'is_emptyDescription' => 'n',
725
- 'is_emptyTitle' => 'n',
726
- 'is_emptyImage' => 'n',
727
- 'is_emptyPrice' => 'n',
728
- 'product_visibility' => 0,
729
- 'shipping_country' => '',
730
- 'tax_country' => '',
731
  // include hidden ? 1 yes 0 no
732
  'outofstock_visibility' => 0,
733
  // override wc global option for out-of-stock product hidden from catalog? 1 yes 0 no
734
- 'ptitle_show' => '',
735
- 'decimal_separator' => apply_filters('wc_get_price_decimal_separator', get_option('woocommerce_price_decimal_sep')),
736
- 'thousand_separator' => stripslashes(apply_filters('wc_get_price_thousand_separator', get_option('woocommerce_price_thousand_sep'))),
737
- 'decimals' => absint(apply_filters('wc_get_price_decimals', get_option('woocommerce_price_num_decimals', 2))),
738
  );
739
 
740
- $this->config = wp_parse_args($config, $defaults);
741
  $this->config['filter_mode'] = wp_parse_args(
742
  $this->config['filter_mode'],
743
  array(
744
  'product_ids' => 'include',
745
- 'categories' => 'include',
746
  'post_status' => 'include',
747
  )
748
  );
749
 
750
- if (!empty($this->config['provider']) && is_string($this->config['provider'])) {
751
  /**
752
  * filter parsed rules for provider
753
  *
754
- * @param array $rules
755
  * @param string $context
756
  *
757
  * @since 3.3.7
758
  */
759
- $this->config = apply_filters("woo_feed_{$this->config['provider']}_parsed_rules", $this->config, $this->context);
760
  }
761
 
762
  /**
763
  * filter parsed rules
764
  *
765
- * @param array $rules
766
  * @param string $context
767
  *
768
  * @since 3.3.7 $provider parameter removed
769
  */
770
- $this->config = apply_filters('woo_feed_parsed_rules', $this->config, $this->context);
771
 
772
  return $this->config;
773
  }
774
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
775
  /**
776
  * Get Feed URL.
777
  *
778
  * @return array|bool
779
  */
780
- public function get_feed_url()
781
- {
782
- if (isset($this->feedInfo['url'])) {
783
  return $this->feedInfo['url'];
784
  }
785
 
@@ -791,17 +851,16 @@ class Config
791
  *
792
  * @return string|bool
793
  */
794
- public function get_feed_path()
795
- {
796
  $upload_dir = wp_get_upload_dir();
797
- $url = $this->get_feed_url();
798
- $file_name = basename($url);
799
 
800
- if (!isset($this->config['provider']) && !isset($this->config['feedType'])) {
801
  return false;
802
  }
803
 
804
- return sprintf('%s/woo-feed/%s/%s/%s', $upload_dir['basedir'], $this->config['provider'], $this->config['feedType'], $file_name);
805
  }
806
 
807
 
@@ -810,9 +869,8 @@ class Config
810
  *
811
  * @return array|bool
812
  */
813
- public function get_feed_status()
814
- {
815
- if (isset($this->feedInfo['status'])) {
816
  return $this->feedInfo['status'];
817
  }
818
 
4
  /**
5
  * This class contain feed information.
6
  */
7
+
8
+ use CTXFeed\V5\Helper\FeedHelper;
9
+
10
+ class Config {
11
  /**
12
  * @var array|bool
13
  */
23
  private $context;
24
 
25
  /**
26
+ * @param array $feedInfo
27
  * @param string $context
28
  */
29
+ public function __construct( $feedInfo, $context = 'view' ) {
 
30
 
31
  $this->feedInfo = $feedInfo;
32
+ $this->context = $context;
33
+ $config = isset( $this->feedInfo['feedrules'] ) ? $this->feedInfo['feedrules'] : $this->feedInfo;
34
+ $this->set_config( $config );
35
  }
36
 
37
+ public function __isset( $name ) {
38
+ if ( isset( $this->config[ $name ] ) ) {
 
39
  return true;
40
  }
41
 
42
  return false;
43
  }
44
 
45
+ public function __get( $name ) {
46
+ return $this->config[ $name ];
 
47
  }
48
 
49
+ public function __set( $name, $value ) {
50
+ return $this->config[ $name ] = $value;
 
51
  }
52
 
53
+ public function __unset( $name ) {
54
+ unset( $this->config[ $name ] );
 
55
  }
56
 
57
  /**
58
  *
59
  * @return array
60
  */
61
+ public function get_feed_rules() {
62
+ return isset( $this->feedInfo['feedrules'] ) ? $this->feedInfo['feedrules'] : $this->feedInfo;
 
63
  }
64
 
65
  /**
67
  *
68
  * @return string
69
  */
70
+ public function get_feed_id() {
71
+ if ( isset( $this->config['feed_id'] ) && ! empty( $this->config['feed_id'] ) ) {
 
72
  return $this->config['feed_id'];
73
  }
74
 
80
  *
81
  * @return string
82
  */
83
+ public function get_feed_name() {
84
+ if ( isset( $this->config['filename'] ) && ! empty( $this->config['filename'] ) ) {
 
85
  return $this->config['filename'];
86
  }
87
 
93
  *
94
  * @return string
95
  */
96
+ public function get_feed_file_name( $array = false ) {
97
+ if ( isset( $this->feedInfo['url'] ) && ! empty( $this->feedInfo['url'] ) ) {
98
+ $fileInfo = pathinfo( $this->feedInfo['url'] );
99
+ if ( $array ) {
 
100
  return $fileInfo;
101
  }
102
 
111
  *
112
  * @return string
113
  */
114
+ public function get_feed_template() {
115
+ if ( isset( $this->config['provider'] ) ) {
 
116
  return $this->config['provider'];
117
  }
118
 
124
  *
125
  * @return string
126
  */
127
+ public function get_feed_language() {
128
+ if ( isset( $this->config['feedLanguage'] ) && ! empty( $this->config['feedLanguage'] ) ) {
 
129
  return $this->config['feedLanguage'];
130
  }
131
 
137
  *
138
  * @return string
139
  */
140
+ public function get_feed_currency() {
141
+ if ( isset( $this->config['feedCurrency'] ) ) {
 
142
  return $this->config['feedCurrency'];
143
  }
144
 
145
  $attributes = $this->config['attributes'];
146
+ $priceAttrs = [ 'price', 'current_price', 'price_with_tax', 'current_price_with_tax' ];
147
+ foreach ( $priceAttrs as $price_attr ) {
148
+ $key = array_search( $price_attr, $attributes, true );
149
+ if ( $key ) {
150
  break;
151
  }
152
  }
153
 
154
+ return isset( $this->config['suffix'][ $key ] ) ? $this->config['suffix'][ $key ] : get_woocommerce_currency();
155
  }
156
 
157
  /**
159
  *
160
  * @return string
161
  */
162
+ public function get_feed_country() {
163
+ if ( isset( $this->config['feed_country'] ) && ! empty( $this->config['feed_country'] ) ) {
 
164
  return $this->config['feed_country'];
165
  }
166
 
172
  *
173
  * @return string
174
  */
175
+ public function get_feed_file_type() {
176
+ if ( isset( $this->config['feedType'] ) && ! empty( $this->config['feedType'] ) ) {
 
177
  return $this->config['feedType'];
178
  }
179
 
185
  *
186
  * @return string
187
  */
188
+ public function get_delimiter() {
189
+ if ( isset( $this->config['delimiter'] ) && $this->config['delimiter'] !== "" ) {
190
+ if ( 'tsv' === $this->get_feed_file_type() ) {
 
191
  $this->config['delimiter'] = "\t";
192
 
193
  return $this->config['delimiter'];
194
  }
195
 
196
+ if ( ' ' === $this->config['delimiter'] ) {
197
  $this->config['delimiter'] = "\s";
198
  }
199
 
208
  *
209
  * @return string
210
  */
211
+ public function get_enclosure() {
212
+ if ( isset( $this->config['enclosure'] ) && ! empty( $this->config['enclosure'] ) && in_array( $this->config['enclosure'], [
 
213
  'double',
214
  'single'
215
+ ] ) ) {
216
+ return ( 'double' === $this->config['enclosure'] ) ? '"' : "'";
217
  }
218
 
219
  return false;
224
  *
225
  * @return string
226
  */
227
+ public function get_feed_items_wrapper() {
228
+ if ( isset( $this->config['itemsWrapper'] ) && ! empty( $this->config['itemsWrapper'] ) ) {
 
229
  return $this->config['itemsWrapper'];
230
  }
231
 
237
  *
238
  * @return string
239
  */
240
+ public function get_feed_item_wrapper() {
241
+ if ( isset( $this->config['itemWrapper'] ) && ! empty( $this->config['itemWrapper'] ) ) {
 
242
  return $this->config['itemWrapper'];
243
  }
244
 
250
  *
251
  * @return string
252
  */
253
+ public function get_feed_extra_header() {
254
+ if ( isset( $this->config['extraHeader'] ) && ! empty( $this->config['extraHeader'] ) ) {
 
255
  return $this->config['extraHeader'];
256
  }
257
 
263
  *
264
  * @return string
265
  */
266
+ public function get_shipping_country() {
267
+ if ( isset( $this->config['shipping_country'] ) && ! empty( $this->config['shipping_country'] ) ) {
 
268
  return $this->config['shipping_country'];
269
  }
270
 
276
  *
277
  * @return string
278
  */
279
+ public function get_tax_country() {
280
+ if ( isset( $this->config['tax_country'] ) && ! empty( $this->config['tax_country'] ) ) {
 
281
  return $this->config['tax_country'];
282
  }
283
 
289
  *
290
  * @return array|bool
291
  */
292
+ public function get_string_replace() {
293
+ if ( ! empty( $this->config['str_replace'] ) ) {
 
294
  return $this->config['str_replace'];
295
  }
296
 
302
  *
303
  * @return array|bool
304
  */
305
+ public function get_campaign_parameters() {
306
+ if ( isset( $this->config['campaign_parameters'] ) && ! empty( $this->config['campaign_parameters'] ) ) {
 
307
  return wp_parse_args(
308
  $this->config['campaign_parameters'],
309
  array(
310
+ 'utm_source' => '',
311
+ 'utm_medium' => '',
312
  'utm_campaign' => '',
313
+ 'utm_term' => '',
314
+ 'utm_content' => '',
315
  )
316
  );
317
  }
324
  *
325
  * @return bool
326
  */
327
+ public function remove_backorder_product() {
328
+ if ( isset( $this->config['is_backorder'] ) ) {
 
329
  return 'y' === $this->config['is_backorder'];
330
  }
331
 
337
  *
338
  * @return bool
339
  */
340
+ public function remove_outofstock_product() {
341
+ if ( isset( $this->config['is_outOfStock'] ) ) {
 
342
  return 'y' === $this->config['is_outOfStock'];
343
  }
344
 
350
  *
351
  * @return bool
352
  */
353
+ public function remove_empty_title() {
354
+ if ( isset( $this->config['is_emptyTitle'] ) ) {
 
355
  return 'y' === $this->config['is_emptyTitle'];
356
  }
357
 
363
  *
364
  * @return bool
365
  */
366
+ public function remove_empty_description() {
367
+ if ( isset( $this->config['is_emptyDescription'] ) ) {
 
368
  return 'y' === $this->config['is_emptyDescription'];
369
  }
370
 
376
  *
377
  * @return bool
378
  */
379
+ public function remove_empty_image() {
380
+ if ( isset( $this->config['is_emptyImage'] ) ) {
 
381
  return 'y' === $this->config['is_emptyImage'];
382
  }
383
 
389
  *
390
  * @return bool
391
  */
392
+ public function remove_empty_price() {
393
+ if ( isset( $this->config['is_emptyPrice'] ) ) {
 
394
  return 'y' === $this->config['is_emptyPrice'];
395
  }
396
 
397
  return false;
398
  }
399
 
400
+ public function remove_hidden_products() {
401
+ if ( isset( $this->config['product_visibility'] ) ) {
 
402
  return $this->config['product_visibility'];
403
  }
404
 
410
  *
411
  * @return bool|array
412
  */
413
+ public function get_number_format() {
414
+ if ( isset( $this->config['decimal_separator'] ) ) {
 
415
  $number_format = [
416
+ 'decimal_separator' => apply_filters( 'ctx_feed_number_format_decimal_separator', $this->config['decimal_separator'], $this->config ),
417
+ 'thousand_separator' => apply_filters( 'ctx_feed_number_format_thousand_separator', $this->config['thousand_separator'], $this->config ),
418
+ 'decimals' => apply_filters( 'ctx_feed_number_format_decimals', $this->config['decimals'], $this->config ),
419
  ];
420
 
421
+ return apply_filters( 'ctx_feed_number_format', $number_format, $this->config );
422
  }
423
 
424
  return false;
429
  *
430
  * @return array|bool
431
  */
432
+ public function get_products_to_exclude() {
433
+ if ( isset( $this->config['filter_mode'] ) ) {
 
434
  $mode = $this->config['filter_mode'];
435
+ if ( 'exclude' === $mode['product_ids'] && ! empty( $this->config['product_ids'] ) ) {
436
+ return explode( ',', $this->config['product_ids'] );
437
  }
438
  }
439
 
445
  *
446
  * @return array|bool
447
  */
448
+ public function get_products_to_include() {
 
449
 
450
+ if ( isset( $this->config['filter_mode'] ) ) {
451
  $mode = $this->config['filter_mode'];
452
+ if ( 'include' === $mode['product_ids'] && ! empty( $this->config['product_ids'] ) ) {
453
+ return explode( ',', $this->config['product_ids'] );
454
  }
455
  }
456
 
462
  *
463
  * @return mixed
464
  */
465
+ public function get_categories_to_exclude() {
 
466
 
467
+ if ( isset( $this->config['filter_mode'] ) ) {
468
  $mode = $this->config['filter_mode'];
469
+ if ( 'exclude' === $mode['categories'] && ! empty( $this->config['categories'] ) ) {
470
  return $this->config['categories'];
471
  }
472
  }
479
  *
480
  * @return mixed
481
  */
482
+ public function get_categories_to_include() {
 
483
 
484
+ if ( isset( $this->config['filter_mode'] ) ) {
485
  $mode = $this->config['filter_mode'];
486
+ if ( 'include' === $mode['categories'] && ! empty( $this->config['categories'] ) ) {
487
  return $this->config['categories'];
488
  }
489
  }
497
  *
498
  * @return mixed
499
  */
500
+ public function get_post_status_to_include() {
501
+ $status = [ 'draft', 'pending', 'private', 'publish' ];
502
+ if ( isset( $this->config['filter_mode'], $this->config['post_status'] ) && ! empty( $this->config['post_status'] ) ) {
 
503
  $mode = $this->config['filter_mode'];
504
+ if ( 'include' === $mode['post_status'] ) {
505
  return $this->config['post_status'];
506
  }
507
 
508
+ if ( 'exclude' === $mode['post_status'] ) {
509
+ return array_unique( array_merge( array_diff( $status, $this->config['post_status'] ), array_diff( $status, $this->config['post_status'] ) ) );
510
  }
511
  }
512
 
518
  *
519
  * @return string|bool
520
  */
521
+ public function get_vendors_to_include() {
 
522
 
523
+ if ( isset( $this->config['vendors'] ) && ! empty( $this->config['vendors'] ) ) {
524
+ return implode( ',', $this->config['vendors'] );
525
  }
526
 
527
  return false;
532
  *
533
  * @return bool
534
  */
535
+ public function get_variations_to_include() {
 
536
 
537
+ return isset( $this->config['is_variations'] ) && in_array( $this->config['is_variations'], [ 'y', 'both' ] );
538
  }
539
 
540
  /**
542
  *
543
  * @return array|bool
544
  */
545
+ public function get_advance_filters() {
546
+ if ( isset( $this->config['fattribute'] ) ) {
 
547
  return [
548
+ "fattribute" => $this->config['fattribute'],
549
+ "condition" => $this->config['condition'],
550
  "filterCompare" => $this->config['filterCompare'],
551
+ "concatType" => $this->config['concatType'],
552
  ];
553
  }
554
 
560
  *
561
  * @return array|bool
562
  */
563
+ public function get_ftp_config() {
564
+ if ( isset( $this->config['ftpenabled'] ) && $this->config['ftpenabled'] ) {
 
565
 
566
  // if ( '0' === $this->config['ftpenabled'] ) {
567
  // return false;
568
  // }
569
 
570
  return [
571
+ "type" => $this->config['ftporsftp'],
572
+ "host" => $this->config['ftphost'],
573
+ "port" => $this->config['ftpport'],
574
  "username" => $this->config['ftpuser'],
575
  "password" => $this->config['ftppassword'],
576
+ "path" => $this->config['ftppath'],
577
+ "mode" => $this->config['ftpmode'],
578
  ];
579
  }
580
 
586
  *
587
  * @return array|bool
588
  */
589
+ public function get_variable_config() {
590
+ if ( isset( $this->config['is_variations'] ) ) {
 
591
  return [
592
+ "is_variations" => $this->config['is_variations'],
593
+ "variable_price" => isset( $this->config['variable_price'] ) ? $this->config['variable_price'] : '',
594
+ "variable_quantity" => isset( $this->config['variable_quantity'] ) ? $this->config['variable_quantity'] : '',
595
  ];
596
  }
597
 
603
  *
604
  * @return mixed
605
  */
606
+ public function get_composite_price_type() {
607
+ if ( isset( $this->config['composite_price'] ) ) {
 
608
  return $this->config['composite_price'];
609
  }
610
 
616
  *
617
  * @return array
618
  */
619
+ public function get_feed() {
 
620
  return $this->feedInfo;
621
  }
622
 
625
  *
626
  * @return array
627
  */
628
+ public function get_config() {
 
629
  return $this->config;
630
  }
631
 
634
  *
635
  * @return array
636
  */
637
+ private function set_config( $config ) {
 
638
 
639
  $defaults = array(
640
+ 'provider' => '',
641
+ 'feed_country' => '',
642
+ 'filename' => '',
643
+ 'feedType' => '',
644
+ 'ftpenabled' => 0,
645
+ 'ftporsftp' => 'ftp',
646
+ 'ftphost' => '',
647
+ 'ftpport' => '21',
648
+ 'ftpuser' => '',
649
+ 'ftppassword' => '',
650
+ 'ftppath' => '',
651
+ 'ftpmode' => 'active',
652
+ 'is_variations' => 'y', // Only Variations (All Variations)
653
+ 'variable_price' => 'first',
654
+ 'variable_quantity' => 'first',
655
+ 'feedLanguage' => apply_filters( 'wpml_current_language', null ),
656
+ 'feedCurrency' => apply_filters( 'woocommerce_currency', get_option( 'woocommerce_currency' ) ),
657
+ 'itemsWrapper' => 'products',
658
+ 'itemWrapper' => 'product',
659
+ 'delimiter' => ',',
660
+ 'enclosure' => 'double',
661
+ 'extraHeader' => '',
662
+ 'vendors' => array(),
663
  // Feed Config
664
+ 'mattributes' => array(), // merchant attributes
665
+ 'prefix' => array(), // prefixes
666
+ 'type' => array(), // value (attribute) types
667
+ 'attributes' => array(), // product attribute mappings
668
+ 'default' => array(), // default values (patterns) if value type set to pattern
669
+ 'suffix' => array(), // suffixes
670
+ 'output_type' => array(), // output type (output filter)
671
+ 'limit' => array(), // limit or command
672
  // filters tab
673
+ 'composite_price' => 'all_product_price',
674
+ 'product_ids' => '',
675
+ 'categories' => array(),
676
+ 'post_status' => array( 'publish' ),
677
+ 'filter_mode' => array(),
678
+ 'campaign_parameters' => array(),
679
+ 'is_outOfStock' => 'n',
680
+ 'is_backorder' => 'n',
681
+ 'is_emptyDescription' => 'n',
682
+ 'is_emptyTitle' => 'n',
683
+ 'is_emptyImage' => 'n',
684
+ 'is_emptyPrice' => 'n',
685
+ 'product_visibility' => 0,
686
+ 'shipping_country' => '',
687
+ 'tax_country' => '',
688
  // include hidden ? 1 yes 0 no
689
  'outofstock_visibility' => 0,
690
  // override wc global option for out-of-stock product hidden from catalog? 1 yes 0 no
691
+ 'ptitle_show' => '',
692
+ 'decimal_separator' => apply_filters( 'wc_get_price_decimal_separator', get_option( 'woocommerce_price_decimal_sep' ) ),
693
+ 'thousand_separator' => stripslashes( apply_filters( 'wc_get_price_thousand_separator', get_option( 'woocommerce_price_thousand_sep' ) ) ),
694
+ 'decimals' => absint( apply_filters( 'wc_get_price_decimals', get_option( 'woocommerce_price_num_decimals', 2 ) ) ),
695
  );
696
 
697
+ $this->config = wp_parse_args( $config, $defaults );
698
  $this->config['filter_mode'] = wp_parse_args(
699
  $this->config['filter_mode'],
700
  array(
701
  'product_ids' => 'include',
702
+ 'categories' => 'include',
703
  'post_status' => 'include',
704
  )
705
  );
706
 
707
+ if ( ! empty( $this->config['provider'] ) && is_string( $this->config['provider'] ) ) {
708
  /**
709
  * filter parsed rules for provider
710
  *
711
+ * @param array $rules
712
  * @param string $context
713
  *
714
  * @since 3.3.7
715
  */
716
+ $this->config = apply_filters( "woo_feed_{$this->config['provider']}_parsed_rules", $this->config, $this->context );
717
  }
718
 
719
  /**
720
  * filter parsed rules
721
  *
722
+ * @param array $rules
723
  * @param string $context
724
  *
725
  * @since 3.3.7 $provider parameter removed
726
  */
727
+ $this->config = apply_filters( 'woo_feed_parsed_rules', $this->config, $this->context );
728
 
729
  return $this->config;
730
  }
731
 
732
+ public function save_feed( $data, $feed_option_name = null, $configOnly = true ) {
733
+ if ( ! is_array( $data ) ) {
734
+ return false;
735
+ }
736
+ if ( ! isset( $data['filename'], $data['feedType'], $data['provider'] ) ) {
737
+ return false;
738
+ }
739
+ // unnecessary form fields to remove
740
+ $removables = [ 'closedpostboxesnonce', '_wpnonce', '_wp_http_referer', 'save_feed_config', 'edit-feed' ];
741
+ foreach ( $removables as $removable ) {
742
+ if ( isset( $data[ $removable ] ) ) {
743
+ unset( $data[ $removable ] );
744
+ }
745
+ }
746
+ // parse rules
747
+ $data = $this->set_config( $data );
748
+ // Sanitize Fields
749
+ $data = FeedHelper::sanitize_form_fields( $data );
750
+ if ( empty( $feed_option_name ) ) {
751
+ $feed_option_name = generate_unique_feed_file_name(
752
+ $data['filename'],
753
+ $data['feedType'],
754
+ $data['provider'] );
755
+ } else {
756
+ $feed_option_name = FeedHelper::get_feed_option_name( $feed_option_name );
757
+ }
758
+
759
+ // get old config
760
+ $old_data = get_option( 'wf_config' . $feed_option_name, array() );
761
+ $update = false;
762
+ if ( is_array( $old_data ) && ! empty( $old_data ) ) {
763
+ $update = true;
764
+ }
765
+
766
+ /**
767
+ * Filters feed data just before it is inserted into the database.
768
+ *
769
+ * @param array $data An array of sanitized config
770
+ * @param array $old_data An array of old feed data
771
+ * @param string $feed_option_name Option name
772
+ *
773
+ * @since 3.3.3
774
+ *
775
+ */
776
+ $data = apply_filters( 'woo_feed_insert_feed_data', $data, $old_data, 'wf_config' . $feed_option_name );
777
+
778
+ if ( $update ) {
779
+ /**
780
+ * Before Updating Config to db
781
+ *
782
+ * @param array $data An array of sanitized config
783
+ * @param string $feed_option_name Option name
784
+ */
785
+ do_action( 'woo_feed_before_update_config', $data, 'wf_config' . $feed_option_name );
786
+ } else {
787
+ /**
788
+ * Before inserting Config to db
789
+ *
790
+ * @param array $data An array of sanitized config
791
+ * @param string $feed_option_name Option name
792
+ */
793
+ do_action( 'woo_feed_before_insert_config', $data, 'wf_config' . $feed_option_name );
794
+ }
795
+ $updated = ( $data === $old_data );
796
+ if ( false === $updated ) {
797
+ // Store Config.
798
+ $updated = update_option( 'wf_config' . $feed_option_name, $data, false );
799
+ }
800
+ // update wf_feed if wp_config update ok...
801
+ if ( $updated && false === $configOnly ) {
802
+ $old_feed = maybe_unserialize( get_option( 'wf_feed_' . $feed_option_name ) );
803
+ $feed_data = array(
804
+ 'feedrules' => $data,
805
+ 'url' => woo_feed_get_file_url( $feed_option_name, $data['provider'], $data['feedType'] ),
806
+ 'last_updated' => date( 'Y-m-d H:i:s', strtotime( current_time( 'mysql' ) ) ),
807
+ 'status' => isset( $old_feed['status'] ) && 1 === (int) $old_feed['status'] ? 1 : 0,
808
+ // set old status or disable auto update.
809
+ );
810
+
811
+ $saved2 = update_option( 'wf_feed_' . $feed_option_name, maybe_serialize( $feed_data ), false );
812
+ }
813
+
814
+ if ( $update ) {
815
+ /**
816
+ * After Updating Config to db
817
+ *
818
+ * @param array $data An array of sanitized config
819
+ * @param string $feed_option_name Option name
820
+ */
821
+ do_action( 'woo_feed_after_update_config', $data, 'wf_config' . $feed_option_name );
822
+ } else {
823
+ /**
824
+ * After inserting Config to db
825
+ *
826
+ * @param array $data An array of sanitized config
827
+ * @param string $feed_option_name Option name
828
+ */
829
+ do_action( 'woo_feed_after_insert_config', $data, 'wf_config' . $feed_option_name );
830
+ }
831
+
832
+ // return filename on success or update status
833
+ return $updated ? $feed_option_name : $updated;
834
+ }
835
+
836
  /**
837
  * Get Feed URL.
838
  *
839
  * @return array|bool
840
  */
841
+ public function get_feed_url() {
842
+ if ( isset( $this->feedInfo['url'] ) ) {
 
843
  return $this->feedInfo['url'];
844
  }
845
 
851
  *
852
  * @return string|bool
853
  */
854
+ public function get_feed_path() {
 
855
  $upload_dir = wp_get_upload_dir();
856
+ $url = $this->get_feed_url();
857
+ $file_name = basename( $url );
858
 
859
+ if ( ! isset( $this->config['provider'] ) && ! isset( $this->config['feedType'] ) ) {
860
  return false;
861
  }
862
 
863
+ return sprintf( '%s/woo-feed/%s/%s/%s', $upload_dir['basedir'], $this->config['provider'], $this->config['feedType'], $file_name );
864
  }
865
 
866
 
869
  *
870
  * @return array|bool
871
  */
872
+ public function get_feed_status() {
873
+ if ( isset( $this->feedInfo['status'] ) ) {
 
874
  return $this->feedInfo['status'];
875
  }
876
 
includes/classes/class-woo-feed-constants.php CHANGED
@@ -23,7 +23,7 @@ if( ! class_exists("Woo_Feed_Constants") ) {
23
  * @var string
24
  * @since 3.1.6
25
  */
26
- define( 'WOO_FEED_FREE_VERSION', '4.5.9' );
27
  }
28
 
29
  if ( ! defined( 'WOO_FEED_FREE_PATH' ) ) {
23
  * @var string
24
  * @since 3.1.6
25
  */
26
+ define( 'WOO_FEED_FREE_VERSION', '4.5.10' );
27
  }
28
 
29
  if ( ! defined( 'WOO_FEED_FREE_PATH' ) ) {
includes/classes/class-woo-feed-default-attributes.php CHANGED
@@ -15,508 +15,508 @@
15
  */
16
  class Woo_Feed_Default_Attributes {
17
 
18
- public $googleCSVTXTAttribute
19
- = array(
20
- 'id' => array( 'id', false ),
21
- 'webitemid' => array( 'webitemid', false ),
22
- 'region_id' => array( 'region_id', false ),
23
- 'title' => array( 'title', true ),
24
- 'description' => array( 'description', true ),
25
- 'link' => array( 'link', true ),
26
- 'canonical_link' => array( 'canonical link', true ),
27
- 'mobile_link' => array( 'mobile_link', true ),
28
- 'product_type' => array( 'product type', true ),
29
- 'current_category' => array( 'google product category', true ),
30
- 'image' => array( 'image link', true ),
31
- 'images' => array( 'additional image link', true ),
32
- 'images_1' => array( 'additional image link 1', true ),
33
- 'images_2' => array( 'additional image link 2', true ),
34
- 'images_3' => array( 'additional image link 3', true ),
35
- 'images_4' => array( 'additional image link 4', true ),
36
- 'images_5' => array( 'additional image link 5', true ),
37
- 'images_6' => array( 'additional image link 6', true ),
38
- 'images_7' => array( 'additional image link 7', true ),
39
- 'images_8' => array( 'additional image link 8', true ),
40
- 'images_9' => array( 'additional image link 9', true ),
41
- 'images_10' => array( 'additional image link 10', true ),
42
- 'condition' => array( 'condition', false ),
43
- 'availability' => array( 'availability', false ),
44
- 'availability_date' => array( 'availability date', false ),
45
- 'inventory' => array( 'inventory', false ),
46
- 'price' => array( 'price', true ),
47
- 'sale_price' => array( 'sale price', true ),
48
- 'sale_price_effective_date' => array( 'sale price effective date', true ),
49
- 'brand' => array( 'brand', true ),
50
- 'sku' => array( 'mpn', true ),
51
- 'upc' => array( 'gtin', true ),
52
- 'identifier_exists' => array( 'identifier exists', true ),
53
- 'item_group_id' => array( 'item group id', false ),
54
- 'external_seller_id' => array( 'external seller id', false ),
55
- 'product_length' => array( 'product length', true ),
56
- 'product_width' => array( 'product width', true ),
57
- 'product_height' => array( 'product height', true ),
58
- 'product_weight' => array( 'product weight', true ),
59
- 'product_highlight_1' => array( 'product highlight 1', true ),
60
- 'product_highlight_2' => array( 'product highlight 2', true ),
61
- 'product_highlight_3' => array( 'product highlight 3', true ),
62
- 'product_highlight_4' => array( 'product highlight 4', true ),
63
- 'product_highlight_5' => array( 'product highlight 5', true ),
64
- 'product_highlight_6' => array( 'product highlight 6', true ),
65
- 'product_highlight_7' => array( 'product highlight 7', true ),
66
- 'product_highlight_8' => array( 'product highlight 8', true ),
67
- 'product_highlight_9' => array( 'product highlight 9', true ),
68
- 'product_highlight_10' => array( 'product highlight 10', true ),
69
- 'color' => array( 'color', true ),
70
- 'gender' => array( 'gender', true ),
71
- 'age_group' => array( 'age group', true ),
72
- 'material' => array( 'material', true ),
73
- 'pattern' => array( 'pattern', true ),
74
- 'size' => array( 'size', true ),
75
- 'size_type' => array( 'size type', true ),
76
- 'size_system' => array( 'size system', true ),
77
- 'free_shipping_label' => array( 'free_shipping_label', true ),
78
- 'free_shipping_limit' => array( 'free_shipping_limit', true ),
79
- 'average_review_rating' => array( 'average_review_rating', true ),
80
- 'number_of_ratings' => array( 'number_of_ratings', true ),
81
- 'number_of_reviews' => array( 'number_of_reviews', true ),
82
- 'tax' => array( 'tax', true ),
83
- 'tax_category' => array( 'tax category', true ),
84
- 'shipping' => array( 'shipping', true ),
85
- 'weight' => array( 'shipping weight', false ),
86
- 'length' => array( 'shipping length', false ),
87
- 'width' => array( 'shipping width', false ),
88
- 'height' => array( 'shipping height', false ),
89
- 'ships_from_country' => array( 'ships from country', false ),
90
- 'shipping_label' => array( 'shipping label', false ),
91
- 'shipping_country' => array( 'shipping country', false ),
92
- 'shipping_service' => array( 'shipping service', false ),
93
- 'shipping_price' => array( 'shipping price', false ),
94
- 'shipping_region' => array( 'shipping region', false ),
95
- 'multipack' => array( 'multipack', true ),
96
- 'is_bundle' => array( 'is bundle', true ),
97
- 'adult' => array( 'adult', true ),
98
- 'ads_redirect' => array( 'ads redirect', true ),
99
- 'custom_label_0' => array( 'custom label 0', true ),
100
- 'custom_label_1' => array( 'custom label 1', true ),
101
- 'custom_label_2' => array( 'custom label 2', true ),
102
- 'custom_label_3' => array( 'custom label 3', true ),
103
- 'custom_label_4' => array( 'custom label 4', true ),
104
- 'excluded_destination' => array( 'excluded destination', true ),
105
- 'shopping_ads_excluded_country' => array( 'shopping ads excluded country', true ),
106
- 'included_destination' => array( 'included destination', true ),
107
- 'expiration_date' => array( 'expiration date', true ),
108
- 'unit_pricing_measure' => array( 'unit pricing measure', true ),
109
- 'unit_pricing_base_measure' => array( 'unit pricing base measure', true ),
110
- 'installment_months' => array( 'months', true ),
111
- 'installment_amount' => array( 'amount', true ),
112
- 'subscription_period' => array( 'period', true ),
113
- 'subscription_period_length' => array( 'period_length', true ),
114
- 'subscription_amount' => array( 'amount', true ),
115
- 'energy_efficiency_class' => array( 'energy efficiency class', true ),
116
- 'min_energy_efficiency_class' => array( 'min energy efficiency class', true ),
117
- 'max_energy_efficiency_class' => array( 'max energy efficiency class', true ),
118
- 'loyalty_points' => array( 'loyalty points', true ),
119
- 'installment' => array( 'installment', true ),
120
- 'promotion_id' => array( 'promotion id', true ),
121
- 'cost_of_goods_sold' => array( 'cost of goods sold', true ),
122
- 'sell_on_google_quantity' => array( 'sell on google quantity', false ),
123
- 'min_handling_time' => array( 'min handling time', false ),
124
- 'max_handling_time' => array( 'max handling time', false ),
125
- 'transit_time_label' => array( 'transit time label', false ),
126
- 'return_address_label' => array( 'return address label', false ),
127
- 'return_policy_label' => array( 'return policy label', false ),
128
- 'store_code' => array( 'store code', false ),
129
- 'pickup_method' => array( 'pickup method', true ),
130
- 'pickup_sla' => array( 'pickup sla', true ),
131
- 'pickup_link_template' => array( 'pickup link template', true ),
132
- 'link_template' => array( 'link template', true ),
133
- 'mobile_link_template' => array( 'mobile link template', true ),
134
- 'mobile_pickup_link_template' => array( 'mobile pickup link template', true ),
135
- 'google_funded_promotion_eligibility' => array(
136
- 'google funded promotion eligibility',
137
- false,
138
- ),
139
- );
140
- public $googleXMLAttribute
141
- = array(
142
- 'id' => array( 'g:id', false ),
143
- 'webitemid' => array( 'g:webitemid', false ),
144
- 'region_id' => array( 'g:region_id', false ),
145
- 'title' => array( 'g:title', true ),
146
- 'description' => array( 'g:description', true ),
147
- 'link' => array( 'link', true ),
148
- 'canonical_link' => array( 'g:canonical_link', true ),
149
- 'mobile_link' => array( 'mobile_link', true ),
150
- 'product_type' => array( 'g:product_type', true ),
151
- 'current_category' => array( 'g:google_product_category', true ),
152
- 'image' => array( 'g:image_link', true ),
153
- 'images' => array( 'g:additional_image_link', false ),
154
- 'images_1' => array( 'g:additional_image_link', true ),
155
- 'images_2' => array( 'g:additional_image_link', true ),
156
- 'images_3' => array( 'g:additional_image_link', true ),
157
- 'images_4' => array( 'g:additional_image_link', true ),
158
- 'images_5' => array( 'g:additional_image_link', true ),
159
- 'images_6' => array( 'g:additional_image_link', true ),
160
- 'images_7' => array( 'g:additional_image_link', true ),
161
- 'images_8' => array( 'g:additional_image_link', true ),
162
- 'images_9' => array( 'g:additional_image_link', true ),
163
- 'images_10' => array( 'g:additional_image_link', true ),
164
- 'condition' => array( 'g:condition', false ),
165
- 'availability' => array( 'g:availability', false ),
166
- 'availability_date' => array( 'g:availability_date', false ),
167
- 'inventory' => array( 'g:inventory', false ),
168
- 'price' => array( 'g:price', true ),
169
- 'sale_price' => array( 'g:sale_price', true ),
170
- 'sale_price_effective_date' => array( 'g:sale_price_effective_date', true ),
171
- 'brand' => array( 'g:brand', true ),
172
- 'sku' => array( 'g:mpn', true ),
173
- 'upc' => array( 'g:gtin', true ),
174
- 'identifier_exists' => array( 'g:identifier_exists', true ),
175
- 'item_group_id' => array( 'g:item_group_id', false ),
176
- 'external_seller_id' => array( 'g:external_seller_id', false ),
177
- 'product_length' => array( 'g:product_length', true ),
178
- 'product_width' => array( 'g:product_width', true ),
179
- 'product_height' => array( 'g:product_height', true ),
180
- 'product_weight' => array( 'g:product_weight', true ),
181
- 'product_highlight_1' => array( 'g:product_highlight', true ),
182
- 'product_highlight_2' => array( 'g:product_highlight', true ),
183
- 'product_highlight_3' => array( 'g:product_highlight', true ),
184
- 'product_highlight_4' => array( 'g:product_highlight', true ),
185
- 'product_highlight_5' => array( 'g:product_highlight', true ),
186
- 'product_highlight_6' => array( 'g:product_highlight', true ),
187
- 'product_highlight_7' => array( 'g:product_highlight', true ),
188
- 'product_highlight_8' => array( 'g:product_highlight', true ),
189
- 'product_highlight_9' => array( 'g:product_highlight', true ),
190
- 'product_highlight_10' => array( 'g:product_highlight', true ),
191
- 'color' => array( 'g:color', true ),
192
- 'gender' => array( 'g:gender', true ),
193
- 'age_group' => array( 'g:age_group', true ),
194
- 'material' => array( 'g:material', true ),
195
- 'pattern' => array( 'g:pattern', true ),
196
- 'size' => array( 'g:size', true ),
197
- 'size_type' => array( 'g:size_type', true ),
198
- 'size_system' => array( 'g:size_system', true ),
199
- 'tax' => array( 'g:tax', true ),
200
- 'tax_country' => array( 'g:tax_country', true ),
201
- 'tax_region' => array( 'g:tax_region', true ),
202
- 'tax_rate' => array( 'g:tax_rate', true ),
203
- 'tax_ship' => array( 'g:tax_ship', true ),
204
- 'tax_category' => array( 'g:tax_category', true ),
205
- 'free_shipping_label' => array( 'g:free_shipping_label', true ),
206
- 'free_shipping_limit' => array( 'g:free_shipping_limit', true ),
207
- 'average_review_rating' => array( 'g:average_review_rating', true ),
208
- 'number_of_ratings' => array( 'g:number_of_ratings', true ),
209
- 'number_of_reviews' => array( 'g:number_of_reviews', true ),
210
- 'shipping' => array( 'g:shipping', true ),
211
- 'weight' => array( 'g:shipping_weight', false ),
212
- 'length' => array( 'g:shipping_length', false ),
213
- 'width' => array( 'g:shipping_width', false ),
214
- 'height' => array( 'g:shipping_height', false ),
215
- 'ships_from_country' => array( 'g:ships_from_country', false ),
216
- 'shipping_label' => array( 'g:shipping_label', false ),
217
- 'multipack' => array( 'g:multipack', true ),
218
- 'is_bundle' => array( 'g:is_bundle', true ),
219
- 'adult' => array( 'g:adult', true ),
220
- 'ads_redirect' => array( 'g:ads_redirect', true ),
221
- 'custom_label_0' => array( 'g:custom_label_0', true ),
222
- 'custom_label_1' => array( 'g:custom_label_1', true ),
223
- 'custom_label_2' => array( 'g:custom_label_2', true ),
224
- 'custom_label_3' => array( 'g:custom_label_3', true ),
225
- 'custom_label_4' => array( 'g:custom_label_4', true ),
226
- 'excluded_destination' => array( 'g:excluded_destination', true ),
227
- 'shopping_ads_excluded_country' => array( 'g:shopping_ads_excluded_country', true ),
228
- 'included_destination' => array( 'g:included_destination', true ),
229
- 'expiration_date' => array( 'g:expiration_date', true ),
230
- 'unit_pricing_measure' => array( 'g:unit_pricing_measure', true ),
231
- 'unit_pricing_base_measure' => array( 'g:unit_pricing_base_measure', true ),
232
- 'installment_months' => array( 'g:months', true ),
233
- 'installment_amount' => array( 'g:amount', true ),
234
- 'subscription_period' => array( 'g:period', true ),
235
- 'subscription_period_length' => array( 'g:period_length', true ),
236
- 'subscription_amount' => array( 'g:amount', true ),
237
- 'energy_efficiency_class' => array( 'g:energy_efficiency_class', true ),
238
- 'min_energy_efficiency_class' => array( 'g:min_energy_efficiency_class', true ),
239
- 'max_energy_efficiency_class' => array( 'g:max_energy_efficiency_class', true ),
240
- 'loyalty_points' => array( 'g:loyalty_points', true ),
241
- 'installment' => array( 'g:installment', true ),
242
- 'promotion_id' => array( 'g:promotion_id', true ),
243
- 'product_applicability' => array( 'g:product_applicability', true ),
244
- 'offer_type' => array( 'g:offer_type', true ),
245
- 'long_title' => array( 'g:long_title', true ),
246
- 'promotion_effective_dates' => array( 'g:promotion_effective_dates', true ),
247
- 'redemption_channel' => array( 'g:redemption_channel', true ),
248
- 'promotion_destination' => array( 'g:promotion_destination', true ),
249
- 'percent_off' => array( 'g:percent_off', true ),
250
- 'money_off_amount' => array( 'g:money_off_amount', true ),
251
- 'get_this_quantity_discounted' => array( 'g:get_this_quantity_discounted', true ),
252
- 'free_shipping' => array( 'g:free_shipping', true ),
253
- 'free_gift_value' => array( 'g:free_gift_value', true ),
254
- 'free_gift_description' => array( 'g:free_gift_description', true ),
255
- 'promotion_display_dates' => array( 'g:promotion_display_dates', true ),
256
- 'generic_redemption_code' => array( 'g:generic_redemption_code', true ),
257
- 'fine_print' => array( 'g:fine_print', true ),
258
- 'promotion_price' => array( 'g:promotion_price', true ),
259
- 'coupon_value_type' => array( 'g:coupon_value_type', true ),
260
- 'limit_quantity' => array( 'g:limit_quantity', true ),
261
- 'limit_value' => array( 'g:limit_value', true ),
262
- 'minimum_purchase_amount' => array( 'g:minimum_purchase_amount', true ),
263
- 'item_id_exclusion' => array( 'g:item_id_exclusion', true ),
264
- 'product_type_exclusion' => array( 'g:product_type_exclusion', true ),
265
- 'brand_exclusion' => array( 'g:brand_exclusion', true ),
266
- 'item_group_id_exclusion' => array( 'g:item_group_id_exclusion', true ),
267
-
268
- 'cost_of_goods_sold' => array( 'g:cost_of_goods_sold', true ),
269
- 'sell_on_google_quantity' => array( 'g:sell_on_google_quantity', false ),
270
- 'min_handling_time' => array( 'g:min_handling_time', false ),
271
- 'max_handling_time' => array( 'g:max_handling_time', false ),
272
- 'transit_time_label' => array( 'g:transit_time_label', false ),
273
- 'return_address_label' => array( 'g:return_address_label', false ),
274
- 'return_policy_label' => array( 'g:return_policy_label', false ),
275
- 'store_code' => array( 'g:store_code', false ),
276
- 'quantity' => array( 'g:quantity', true ),
277
- 'pickup_method' => array( 'g:pickup_method', true ),
278
- 'pickup_sla' => array( 'g:pickup_sla', true ),
279
- 'pickup_link_template' => array( 'g:pickup_link_template', true ),
280
- 'link_template' => array( 'g:link_template', true ),
281
- 'mobile_link_template' => array( 'g:mobile_link_template', true ),
282
- 'mobile_pickup_link_template' => array( 'g:mobile_pickup_link_template', true ),
283
- 'google_funded_promotion_eligibility' => array(
284
- 'g:google_funded_promotion_eligibility',
285
- false,
286
- ),
287
- );
288
- public $facebookXMLAttribute
289
  = array(
290
- 'id' => array( 'g:id', false ),
291
- 'title' => array( 'g:title', true ),
292
- 'description' => array( 'g:description', true ),
293
- 'link' => array( 'g:link', true ),
294
- 'mobile_link' => array( 'g:mobile_link', true ),
295
- 'product_type' => array( 'g:product_type', true ),
296
- 'current_category' => array( 'g:google_product_category', true ),
297
- 'image' => array( 'g:image_link', true ),
298
- 'images' => array( 'g:additional_image_link', false ),
299
- 'images_1' => array( 'g:additional_image_link', true ),
300
- 'images_2' => array( 'g:additional_image_link', true ),
301
- 'images_3' => array( 'g:additional_image_link', true ),
302
- 'images_4' => array( 'g:additional_image_link', true ),
303
- 'images_5' => array( 'g:additional_image_link', true ),
304
- 'images_6' => array( 'g:additional_image_link', true ),
305
- 'images_7' => array( 'g:additional_image_link', true ),
306
- 'images_8' => array( 'g:additional_image_link', true ),
307
- 'images_9' => array( 'g:additional_image_link', true ),
308
- 'images_10' => array( 'g:additional_image_link', true ),
309
- 'condition' => array( 'g:condition', false ),
310
- 'availability' => array( 'g:availability', false ),
311
- 'inventory' => array( 'g:inventory', false ),
312
- 'override' => array( 'g:override', false ),
313
- 'price' => array( 'g:price', true ),
314
- 'sale_price' => array( 'g:sale_price', true ),
315
- 'sale_price_effective_date' => array( 'g:sale_price_effective_date', true ),
316
- 'brand' => array( 'g:brand', true ),
317
- 'sku' => array( 'g:mpn', true ),
318
- 'upc' => array( 'g:gtin', true ),
319
- 'identifier_exists' => array( 'g:identifier_exists', true ),
320
- 'item_group_id' => array( 'g:item_group_id', false ),
321
- 'color' => array( 'g:color', true ),
322
- 'gender' => array( 'g:gender', true ),
323
- 'age_group' => array( 'g:age_group', true ),
324
- 'material' => array( 'g:material', true ),
325
- 'pattern' => array( 'g:pattern', true ),
326
- 'size' => array( 'g:size', true ),
327
- 'size_type' => array( 'g:size_type', true ),
328
- 'size_system' => array( 'g:size_system', true ),
329
- 'tax' => array( 'tax', true ),
330
- 'weight' => array( 'g:shipping_weight', false ),
331
- 'length' => array( 'g:shipping_length', false ),
332
- 'width' => array( 'g:shipping_width', false ),
333
- 'height' => array( 'g:shipping_height', false ),
334
- 'ships_from_country' => array( 'g:ships_from_country', false ),
335
- 'shipping_label' => array( 'g:shipping_label', false ),
336
- 'shipping_country' => array( 'g:shipping_country', false ),
337
- 'shipping_service' => array( 'g:shipping_service', false ),
338
- 'shipping_price' => array( 'g:shipping_price', false ),
339
- 'shipping_region' => array( 'g:shipping_region', false ),
340
- 'multipack' => array( 'g:multipack', true ),
341
- 'is_bundle' => array( 'g:is_bundle', true ),
342
- 'adult' => array( 'g:adult', true ),
343
- 'adwords_redirect' => array( 'g:adwords_redirect', true ),
344
- 'custom_label_0' => array( 'g:custom_label_0', true ),
345
- 'custom_label_1' => array( 'g:custom_label_1', true ),
346
- 'custom_label_2' => array( 'g:custom_label_2', true ),
347
- 'custom_label_3' => array( 'g:custom_label_3', true ),
348
- 'custom_label_4' => array( 'g:custom_label_4', true ),
349
- 'excluded_destination' => array( 'g:excluded_destination', true ),
350
- 'expiration_date' => array( 'g:expiration_date', true ),
351
- 'unit_pricing_measure' => array( 'g:unit_pricing_measure', true ),
352
- 'unit_pricing_base_measure' => array( 'g:unit_pricing_base_measure', true ),
353
- 'energy_efficiency_class' => array( 'g:energy_efficiency_class', true ),
354
- 'loyalty_points' => array( 'g:loyalty_points', true ),
355
- 'installment' => array( 'g:installment', true ),
356
- 'promotion_id' => array( 'g:promotion_id', true ),
357
- 'cost_of_goods_sold' => array( 'g:cost_of_goods_sold', true ),
358
- 'availability_date' => array( 'g:availability_date', true ),
359
- 'tax_category' => array( 'g:tax_category', true ),
360
- 'included_destination' => array( 'g:included_destination', true ),
361
- 'quantity_to_sell_on_facebook' => array( 'g:quantity_to_sell_on_facebook', true ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
362
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
363
  public $facebookCSVTXTAttribute
364
- = array(
365
- 'id' => array( 'id', false ),
366
- 'title' => array( 'title', true ),
367
- 'description' => array( 'description', true ),
368
- 'link' => array( 'link', true ),
369
- 'mobile_link' => array( 'mobile_link', true ),
370
- 'product_type' => array( 'product type', true ),
371
- 'current_category' => array( 'google product category', true ),
372
- 'image' => array( 'image link', true ),
373
- 'images' => array( 'additional image link', true ),
374
- 'images_1' => array( 'additional image link', true ),
375
- 'images_2' => array( 'additional image link', true ),
376
- 'images_3' => array( 'additional image link', true ),
377
- 'images_4' => array( 'additional image link', true ),
378
- 'images_5' => array( 'additional image link', true ),
379
- 'images_6' => array( 'additional image link', true ),
380
- 'images_7' => array( 'additional image link', true ),
381
- 'images_8' => array( 'additional image link', true ),
382
- 'images_9' => array( 'additional image link', true ),
383
- 'images_10' => array( 'additional image link', true ),
384
- 'condition' => array( 'condition', false ),
385
- 'availability' => array( 'availability', false ),
386
- 'inventory' => array( 'inventory', false ),
387
- 'override' => array( 'override', false ),
388
- 'price' => array( 'price', true ),
389
- 'sale_price' => array( 'sale price', true ),
390
- 'sale_price_effective_date' => array( 'sale price effective date', true ),
391
- 'brand' => array( 'brand', true ),
392
- 'sku' => array( 'mpn', true ),
393
- 'upc' => array( 'gtin', true ),
394
- 'identifier_exists' => array( 'identifier exists', true ),
395
- 'item_group_id' => array( 'item group id', false ),
396
- 'color' => array( 'color', true ),
397
- 'gender' => array( 'gender', true ),
398
- 'age_group' => array( 'age group', true ),
399
- 'material' => array( 'material', true ),
400
- 'pattern' => array( 'pattern', true ),
401
- 'size' => array( 'size', true ),
402
- 'size_type' => array( 'size type', true ),
403
- 'size_system' => array( 'size system', true ),
404
- 'tax' => array( 'tax', true ),
405
- 'weight' => array( 'shipping weight', false ),
406
- 'length' => array( 'shipping length', false ),
407
- 'width' => array( 'shipping width', false ),
408
- 'height' => array( 'shipping height', false ),
409
- 'ships_from_country' => array( 'ships from country', false ),
410
- 'shipping_label' => array( 'shipping label', false ),
411
- 'shipping_country' => array( 'shipping country', false ),
412
- 'shipping_service' => array( 'shipping service', false ),
413
- 'shipping_price' => array( 'shipping price', false ),
414
- 'shipping_region' => array( 'shipping region', false ),
415
- 'multipack' => array( 'multipack', true ),
416
- 'is_bundle' => array( 'is bundle', true ),
417
- 'adult' => array( 'adult', true ),
418
- 'adwords_redirect' => array( 'adwords redirect', true ),
419
- 'custom_label_0' => array( 'custom label 0', true ),
420
- 'custom_label_1' => array( 'custom label 1', true ),
421
- 'custom_label_2' => array( 'custom label 2', true ),
422
- 'custom_label_3' => array( 'custom label 3', true ),
423
- 'custom_label_4' => array( 'custom label 4', true ),
424
- 'excluded_destination' => array( 'excluded destination', true ),
425
- 'expiration_date' => array( 'expiration date', true ),
426
- 'unit_pricing_measure' => array( 'unit pricing measure', true ),
427
- 'unit_pricing_base_measure' => array( 'unit pricing base measure', true ),
428
- 'energy_efficiency_class' => array( 'energy efficiency class', true ),
429
- 'loyalty_points' => array( 'loyalty points', true ),
430
- 'installment' => array( 'installment', true ),
431
- 'promotion_id' => array( 'promotion id', true ),
432
- 'cost_of_goods_sold' => array( 'cost of goods sold', true ),
433
- 'availability_date' => array( 'availability date', true ),
434
- 'tax_category' => array( 'tax category', true ),
435
- 'included_destination' => array( 'included destination', true ),
436
- 'quantity_to_sell_on_facebook' => array( 'quantity_to_sell_on_facebook', true ),
437
- );
438
  public $pinterestXMLAttribute
439
- = array(
440
- 'id' => array( 'g:id', false ),
441
- 'title' => array( 'title', true ),
442
- 'description' => array( 'description', true ),
443
- 'link' => array( 'link', true ),
444
- 'mobile_link' => array( 'mobile_link', true ),
445
- 'product_type' => array( 'g:product_type', true ),
446
- 'current_category' => array( 'g:google_product_category', true ),
447
- 'image' => array( 'g:image_link', true ),
448
- 'images' => array( 'g:additional_image_link', false ),
449
- 'images_1' => array( 'g:additional_image_link', true ),
450
- 'images_2' => array( 'g:additional_image_link', true ),
451
- 'images_3' => array( 'g:additional_image_link', true ),
452
- 'images_4' => array( 'g:additional_image_link', true ),
453
- 'images_5' => array( 'g:additional_image_link', true ),
454
- 'images_6' => array( 'g:additional_image_link', true ),
455
- 'images_7' => array( 'g:additional_image_link', true ),
456
- 'images_8' => array( 'g:additional_image_link', true ),
457
- 'images_9' => array( 'g:additional_image_link', true ),
458
- 'images_10' => array( 'g:additional_image_link', true ),
459
- 'condition' => array( 'g:condition', false ),
460
- 'availability' => array( 'g:availability', false ),
461
- 'availability_date' => array( 'g:availability_date', false ),
462
- 'inventory' => array( 'g:inventory', false ),
463
- 'price' => array( 'g:price', true ),
464
- 'sale_price' => array( 'g:sale_price', true ),
465
- 'sale_price_effective_date' => array( 'g:sale_price_effective_date', true ),
466
- 'brand' => array( 'g:brand', true ),
467
- 'sku' => array( 'g:mpn', true ),
468
- 'upc' => array( 'g:gtin', true ),
469
- 'identifier_exists' => array( 'g:identifier_exists', true ),
470
- 'item_group_id' => array( 'g:item_group_id', false ),
471
- 'color' => array( 'g:color', true ),
472
- 'gender' => array( 'g:gender', true ),
473
- 'age_group' => array( 'g:age_group', true ),
474
- 'material' => array( 'g:material', true ),
475
- 'pattern' => array( 'g:pattern', true ),
476
- 'size' => array( 'g:size', true ),
477
- 'size_type' => array( 'g:size_type', true ),
478
- 'size_system' => array( 'g:size_system', true ),
479
- 'tax' => array( 'tax', true ),
480
- 'tax_country' => array( 'g:tax_country', true ),
481
- 'tax_region' => array( 'g:tax_region', true ),
482
- 'tax_rate' => array( 'g:tax_rate', true ),
483
- 'tax_ship' => array( 'g:tax_ship', true ),
484
- 'tax_category' => array( 'g:tax_category', true ),
485
- 'free_shipping_label' => array( 'g:free_shipping_label', true ),
486
- 'free_shipping_limit' => array( 'g:free_shipping_limit', true ),
487
- 'average_review_rating' => array( 'g:average_review_rating', true ),
488
- 'number_of_ratings' => array( 'g:number_of_ratings', true ),
489
- 'number_of_reviews' => array( 'g:number_of_reviews', true ),
490
- 'weight' => array( 'g:shipping_weight', false ),
491
- 'length' => array( 'g:shipping_length', false ),
492
- 'width' => array( 'g:shipping_width', false ),
493
- 'height' => array( 'g:shipping_height', false ),
494
- 'ships_from_country' => array( 'g:ships_from_country', false ),
495
- 'shipping_label' => array( 'g:shipping_label', false ),
496
- 'shipping_country' => array( 'g:shipping_country', false ),
497
- 'shipping_service' => array( 'g:shipping_service', false ),
498
- 'shipping_price' => array( 'g:shipping_price', false ),
499
- 'shipping_region' => array( 'g:shipping_region', false ),
500
- 'multipack' => array( 'g:multipack', true ),
501
- 'is_bundle' => array( 'g:is_bundle', true ),
502
- 'adult' => array( 'g:adult', true ),
503
- 'adwords_redirect' => array( 'g:adwords_redirect', true ),
504
- 'custom_label_0' => array( 'g:custom_label_0', true ),
505
- 'custom_label_1' => array( 'g:custom_label_1', true ),
506
- 'custom_label_2' => array( 'g:custom_label_2', true ),
507
- 'custom_label_3' => array( 'g:custom_label_3', true ),
508
- 'custom_label_4' => array( 'g:custom_label_4', true ),
509
- 'excluded_destination' => array( 'g:excluded_destination', true ),
510
- 'included_destination' => array( 'g:included_destination', true ),
511
- 'expiration_date' => array( 'g:expiration_date', true ),
512
- 'unit_pricing_measure' => array( 'g:unit_pricing_measure', true ),
513
- 'unit_pricing_base_measure' => array( 'g:unit_pricing_base_measure', true ),
514
- 'energy_efficiency_class' => array( 'g:energy_efficiency_class', true ),
515
- 'loyalty_points' => array( 'g:loyalty_points', true ),
516
- 'installment' => array( 'g:installment', true ),
517
- 'promotion_id' => array( 'g:promotion_id', true ),
518
- 'cost_of_goods_sold' => array( 'g:cost_of_goods_sold', true ),
519
- );
520
  public $pinterestCSVTXTAttribute
521
  = array(
522
  'id' => array( 'id', false ),
@@ -528,16 +528,16 @@ class Woo_Feed_Default_Attributes {
528
  'current_category' => array( 'google_product_category', true ),
529
  'image' => array( 'image_link', true ),
530
  'images' => array( 'additional_image_link', true ),
531
- 'images_1' => array( 'additional_image_link', true ),
532
- 'images_2' => array( 'additional_image_link', true ),
533
- 'images_3' => array( 'additional_image_link', true ),
534
- 'images_4' => array( 'additional_image_link', true ),
535
- 'images_5' => array( 'additional_image_link', true ),
536
- 'images_6' => array( 'additional_image_link', true ),
537
- 'images_7' => array( 'additional_image_link', true ),
538
- 'images_8' => array( 'additional_image_link', true ),
539
- 'images_9' => array( 'additional_image_link', true ),
540
- 'images_10' => array( 'additional_image_link', true ),
541
  'condition' => array( 'condition', false ),
542
  'availability' => array( 'availability', false ),
543
  'availability_date' => array( 'availability_date', false ),
@@ -564,16 +564,16 @@ class Woo_Feed_Default_Attributes {
564
  'tax_rate' => array( 'tax_rate', true ),
565
  'tax_ship' => array( 'tax_ship', true ),
566
  'tax_category' => array( 'tax_category', true ),
567
- 'free_shipping_label' => array( 'free_shipping_label', true ),
568
- 'free_shipping_limit' => array( 'free_shipping_limit', true ),
569
- 'average_review_rating' => array( 'average_review_rating', true ),
570
- 'number_of_ratings' => array( 'number_of_ratings', true ),
571
- 'number_of_reviews' => array( 'number_of_reviews', true ),
572
  'weight' => array( 'shipping_weight', false ),
573
  'length' => array( 'shipping_length', false ),
574
  'width' => array( 'shipping_width', false ),
575
  'height' => array( 'shipping_height', false ),
576
- 'ships_from_country' => array( 'ships_from_country', false ),
577
  'shipping_label' => array( 'shipping_label', false ),
578
  'shipping_country' => array( 'shipping_country', false ),
579
  'shipping_service' => array( 'shipping_service', false ),
@@ -600,26 +600,36 @@ class Woo_Feed_Default_Attributes {
600
  'cost_of_goods_sold' => array( 'cost_of_goods_sold', true ),
601
  );
602
  public $skroutzXMLAttributes
603
- = array(
604
- 'id' => array( 'id', false ),
605
- 'name' => array( 'name', true ),
606
- 'description' => array( 'description', true ),
607
- 'link' => array( 'link', true ),
608
- 'image' => array( 'image', true ),
609
- 'additionalimage' => array( 'additionalimage', true ),
610
- 'category' => array( 'category', true ),
611
- 'price' => array( 'price', false ),
612
- 'price_with_vat' => array( 'price_with_vat', false ),
613
- 'manufacturer' => array( 'manufacturer', true ),
614
- 'mpn' => array( 'mpn', false ),
615
- 'ean' => array( 'ean', false ),
616
- 'instock' => array( 'instock', false ),
617
- 'availability' => array( 'availability', false ),
618
- 'color' => array( 'color', false ),
619
- 'size' => array( 'size', false ),
620
- 'weight' => array( 'weight', false ),
621
- 'quantity' => array( 'quantity', false ),
622
- );
 
 
 
 
 
 
 
 
 
 
623
 
624
  public $gLocalAttributes
625
  = array(
@@ -631,715 +641,725 @@ class Woo_Feed_Default_Attributes {
631
  'description' => array( 'description', true ),
632
  );
633
 
634
-
635
  /**
636
  * Google Attribute List
637
  *
638
  * @return array
639
  */
640
  public function googleAttributes() {
641
- return array(
642
- '--1' => 'Basic Information',
643
- 'id' => 'Product Id[id]',
644
- 'webitemid' => 'Product WebItemId[webitemid]',
645
- 'region_id' => 'Region Id[region_id]',
646
- 'title' => 'Product Title[title]',
647
- 'description' => 'Product Description[description]',
648
- 'link' => 'Product URL[link]',
649
- 'canonical_link' => 'Canonical Link[canonical_link]',
650
- 'mobile_link' => 'Product URL[mobile_link]',
651
- 'product_type' => 'Product Categories[product_type] ',
652
- 'current_category' => 'Google Product Category[google_product_category]',
653
- 'image' => 'Main Image[image_link]',
654
- 'images' => 'Additional Images [additional_image_link]',
655
- 'images_1' => 'Additional Image 1 [additional_image_link]',
656
- 'images_2' => 'Additional Image 2 [additional_image_link]',
657
- 'images_3' => 'Additional Image 3 [additional_image_link]',
658
- 'images_4' => 'Additional Image 4 [additional_image_link]',
659
- 'images_5' => 'Additional Image 5 [additional_image_link]',
660
- 'images_6' => 'Additional Image 6 [additional_image_link]',
661
- 'images_7' => 'Additional Image 7 [additional_image_link]',
662
- 'images_8' => 'Additional Image 8 [additional_image_link]',
663
- 'images_9' => 'Additional Image 9 [additional_image_link]',
664
- 'images_10' => 'Additional Image 10 [additional_image_link]',
665
- 'condition' => 'Condition[condition]',
666
- '---1' => '',
667
- '--2' => 'Availability & Price',
668
- 'availability' => 'Stock Status[availability]',
669
- 'availability_date' => 'Availability Date[availability_date]',
670
- 'inventory' => 'Facebook Inventory[inventory]',
671
- 'override' => 'Facebook Override[override]',
672
- 'price' => 'Regular Price[price]',
673
- 'sale_price' => 'Sale Price[sale_price]',
674
- 'cost_of_goods_sold' => 'Cost of Goods Sold[cost_of_goods_sold]',
675
- 'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
676
- '---2' => '',
677
- '--3' => 'Unique Product Identifiers',
678
- 'brand' => 'Manufacturer[brand]',
679
- 'upc' => 'GTIN[gtin]',
680
- 'sku' => 'MPN[mpn]',
681
- 'identifier_exists' => 'Identifier Exist[identifier_exists]',
682
- '---3' => '',
683
- '--4' => 'Detailed Product Attributes',
684
- 'item_group_id' => 'Item Group Id[item_group_id]',
685
- 'external_seller_id' => 'External seller ID[external_seller_id]',
686
- 'color' => 'Color[color]',
687
- 'gender' => 'Gender[gender]',
688
- 'age_group' => 'Age Group[age_group]',
689
- 'material' => 'Material[material]',
690
- 'pattern' => 'Pattern[pattern]',
691
- 'size' => 'Size of the item[size]',
692
- 'size_type' => 'Size Type[size_type]',
693
- 'size_system' => 'Size System[size_system]',
694
- 'product_length' => 'Product Length[product_length]',
695
- 'product_width' => 'Product Width[product_width]',
696
- 'product_height' => 'Product Height[product_height]',
697
- 'product_weight' => 'Product Weight[product_weight]',
698
- 'product_highlight_1' => 'Product Highlight 1[product_highlight]',
699
- 'product_highlight_2' => 'Product Highlight 2[product_highlight]',
700
- 'product_highlight_3' => 'Product Highlight 3[product_highlight]',
701
- 'product_highlight_4' => 'Product Highlight 4[product_highlight]',
702
- 'product_highlight_5' => 'Product Highlight 5[product_highlight]',
703
- 'product_highlight_6' => 'Product Highlight 6[product_highlight]',
704
- 'product_highlight_7' => 'Product Highlight 7[product_highlight]',
705
- 'product_highlight_8' => 'Product Highlight 8[product_highlight]',
706
- 'product_highlight_9' => 'Product Highlight 9[product_highlight]',
707
- 'product_highlight_10' => 'Product Highlight 10[product_highlight]',
708
- 'section_name' => 'Section Name (Product Detail)[section_name]',
709
- 'attribute_name' => 'Attribute Name (Product Detail)[attribute_name]',
710
- 'attribute_value' => 'Attribute Value (Product Detail)[attribute_value]',
711
- '---4' => '',
712
- '--5' => 'Tax & Shipping',
713
- 'tax' => 'Tax[tax]',
714
- 'tax_country' => 'Tax Country[tax_country]',
715
- 'tax_region' => 'Tax Region[tax_region]',
716
- 'tax_rate' => 'Tax Rate[tax_rate]',
717
- 'tax_ship' => 'Tax Ship[tax_ship]',
718
- 'tax_category' => 'Tax[tax_category]',
719
- 'shipping' => 'Shipping',
720
- 'min_handling_time' => 'Min Handling Time[min_handling_time]',
721
- 'max_handling_time' => 'Max Handling Time[max_handling_time]',
722
- 'min_transit_time' => 'Min Transit Time[min_transit_time]',
723
- 'max_transit_time' => 'Max Transit Time[max_transit_time]',
724
- 'weight' => 'Shipping Weight[shipping_weight]',
725
- 'length' => 'Shipping Length[shipping_length]',
726
- 'width' => 'Shipping Width[shipping_width]',
727
- 'height' => 'Shipping Height[shipping_height]',
728
- 'ships_from_country' => 'Shipping Country[ships_from_country]',
729
- 'shipping_label' => 'Shipping Label[shipping_label]',
730
- 'material_1' => 'The primary material',
731
- 'material_2' => 'The secondary material',
732
- 'material_3' => 'The tertiary material',
733
- '---5' => '',
734
- '--6' => 'Product Combinations',
735
- 'multipack' => 'Multipack[multipack]',
736
- 'is_bundle' => 'Is Bundle[is_bundle]',
737
- '---6' => '',
738
- '--7' => 'Adult Products',
739
- 'adult' => 'Adult[adult]',
740
- '---7' => '',
741
- '--8' => 'Ads Attributes',
742
- 'ads_redirect' => 'Ads Redirect[ads_redirect]',
743
- '---8' => '',
744
- '--9' => 'Custom Label Attributes',
745
- 'custom_label_0' => 'Custom label 0 [custom_label_0]',
746
- 'custom_label_1' => 'Custom label 1 [custom_label_1]',
747
- 'custom_label_2' => 'Custom label 2 [custom_label_2]',
748
- 'custom_label_3' => 'Custom label 3 [custom_label_3]',
749
- 'custom_label_4' => 'Custom label 4 [custom_label_4]',
750
- '---9' => '',
751
- '--10' => 'Additional Attributes',
752
- 'excluded_destination' => 'Excluded Destination[excluded_destination]',
753
- 'shopping_ads_excluded_country' => 'Shopping Ads Excluded Country[shopping_ads_excluded_country]',
754
- 'included_destination' => 'Included Destination[included_destination]',
755
- 'expiration_date' => 'Expiration Date [expiration_date]',
756
- 'transit_time_label' => 'Transit Time [transit_time_label]',
757
- '---10' => '',
758
- '--11' => 'Unit Prices (EU Countries and Switzerland Only)',
759
- 'unit_pricing_measure' => 'Unit Pricing Measure[unit_pricing_measure]',
760
- 'unit_pricing_base_measure' => 'Unit Pricing Base Measure[unit_pricing_base_measure]',
761
- 'installment_months' => 'Installment Months[months]',
762
- 'installment_amount' => 'Installment Amount[amount]',
763
- 'subscription_period' => 'Subscription Period[period]',
764
- 'subscription_period_length' => 'Subscription Period Length[period_length]',
765
- 'subscription_amount' => 'Subscription Amount[amount]',
766
- '---11' => '',
767
- '--12' => 'Energy Labels',
768
- 'energy_efficiency_class' => 'Energy Efficiency Class[energy_efficiency_class]',
769
- 'min_energy_efficiency_class' => 'Min Energy Efficiency Class[energy_efficiency_class]',
770
- 'max_energy_efficiency_class' => 'Max Energy Efficiency Class[energy_efficiency_class]',
771
- '---12' => '',
772
- '--13' => 'Loyalty Points (Japan Only)',
773
- 'loyalty_points' => 'loyalty_points[loyalty_points]',
774
- '---13' => '',
775
- '--14' => 'Multiple Installments (Brazil Only)',
776
- 'installment' => 'Installment[installment]',
777
- '---14' => '',
778
- '--15' => 'Pinterest Catalog Attributes',
779
- 'free_shipping_label' => 'Free Shipping Label[free_shipping_label]',
780
- 'free_shipping_limit' => 'Free Shipping Limit[free_shipping_limit]',
781
- 'average_review_rating' => 'Average Review Rating[average_review_rating]',
782
- 'number_of_ratings' => 'Number of Ratings[number_of_ratings]',
783
- 'number_of_reviews' => 'Number of Reviews[number_of_reviews]',
784
- '---15' => '',
785
- '--16' => 'Merchant Promotions Attributes',
786
- 'promotion_id' => 'Promotion Id[promotion_id]',
787
- 'product_applicability' => 'Product Applicability[product_applicability]',
788
- 'offer_type' => 'Offer Type[offer_type]',
789
- 'long_title' => 'Long Title[long_title]',
790
- 'promotion_effective_dates' => 'Promotion Effective Dates[promotion_effective_dates]',
791
- 'redemption_channel' => 'Redemption Channel[redemption_channel]',
792
- 'promotion_destination' => 'Promotion Destination[promotion_destination]',
793
- 'percent_off' => 'Percent Off[percent_off]',
794
- 'money_off_amount' => 'Money Off Amount[money_off_amount]',
795
- 'get_this_quantity_discounted' => 'Get Quantity Discounted[get_this_quantity_discounted]',
796
- 'free_shipping' => 'Free Shipping[free_shipping]',
797
- 'free_gift_value' => 'Free Gift Value[free_gift_value]',
798
- 'free_gift_description' => 'Free Gift Description[free_gift_description]',
799
- 'free_gift_item_id' => 'Free Gift Item ID[free_gift_item_id]',
800
- 'promotion_display_dates' => 'Promotion Display Dates[promotion_display_dates]',
801
- 'generic_redemption_code' => 'Generic Redemption Code[generic_redemption_code]',
802
- 'fine_print' => 'Fine Print[fine_print]',
803
- 'promotion_price' => 'Promotion Price[promotion_price]',
804
- 'coupon_value_type' => 'Coupon Value Type[coupon_value_type]',
805
- 'limit_quantity' => 'Limit Quantity[limit_quantity]',
806
- 'limit_value' => 'Limit Value[limit_value]',
807
- 'minimum_purchase_amount' => 'Minimum Purchase Amount[minimum_purchase_amount]',
808
- 'item_id_exclusion' => 'Item ID Exclusion[item_id_exclusion]',
809
- 'product_type_exclusion' => 'Product Type Exclusion[product_type_exclusion]',
810
- 'brand_exclusion' => 'Brand Exclusion[brand_exclusion]',
811
- 'item_group_id_exclusion' => 'Item Group Exclusion[item_group_id_exclusion]',
812
- '---16' => '',
813
- '--17' => 'Shopping Action Attributes',
814
- 'sell_on_google_quantity' => 'Number of Product Sold On Google [sell_on_google_quantity]',
815
- 'return_address_label' => 'Return Address [return_address_label]',
816
- 'return_policy_label' => 'Return Policy [return_policy_label]',
817
- 'google_funded_promotion_eligibility' => 'Google Funded Promotion Eligibility [google_funded_promotion_eligibility]',
818
- '---17' => '',
819
- '--18' => 'Local Inventory / Product Inventory',
820
- 'store_code' => 'Store Code [store_code]',
821
- 'quantity' => 'Quantity [quantity]',
822
- 'pickup_method' => 'Pickup Method [pickup_method]',
823
- 'pickup_sla' => 'Pickup SLA [pickup_sla]',
824
- 'pickup_link_template' => 'Pickup Link Template [pickup_link_template]',
825
- 'link_template' => 'Link Template [link_template]',
826
- 'mobile_link_template' => 'Mobile Link Template [mobile_link_template]',
827
- 'mobile_pickup_link_template' => 'Mobile Pickup Link Template [mobile_pickup_link_template]',
828
- '---18' => '',
829
- );
830
  }
831
 
832
- /**
833
- * Facebook Attribute List
834
- *
835
- * @return array
836
- */
837
- public function facebookAttributes() {
838
- return array(
839
- '--1' => 'Basic Information',
840
- 'id' => 'Product Id[id]',
841
- 'title' => 'Product Title[title]',
842
- 'description' => 'Product Description[description]',
843
- 'link' => 'Product URL[link]',
844
- 'mobile_link' => 'Product URL[mobile_link]',
845
- 'product_type' => 'Product Categories[product_type] ',
846
- 'fb_product_category' => 'Facebook Product Category[fb_product_category]',
847
- 'current_category' => 'Google Product Category[google_product_category]',
848
- 'image' => 'Main Image[image_link]',
849
- 'images' => 'Additional Images [additional_image_link]',
850
- 'images_1' => 'Additional Image 1 [additional_image_link]',
851
- 'images_2' => 'Additional Image 2 [additional_image_link]',
852
- 'images_3' => 'Additional Image 3 [additional_image_link]',
853
- 'images_4' => 'Additional Image 4 [additional_image_link]',
854
- 'images_5' => 'Additional Image 5 [additional_image_link]',
855
- 'images_6' => 'Additional Image 6 [additional_image_link]',
856
- 'images_7' => 'Additional Image 7 [additional_image_link]',
857
- 'images_8' => 'Additional Image 8 [additional_image_link]',
858
- 'images_9' => 'Additional Image 9 [additional_image_link]',
859
- 'images_10' => 'Additional Image 10 [additional_image_link]',
860
- 'condition' => 'Condition[condition]',
861
- '---1' => '',
862
- '--2' => 'Availability & Price',
863
- 'availability' => 'Stock Status[availability]',
864
- 'availability_date' => 'Availability Date[availability_date]',
865
- 'price' => 'Regular Price[price]',
866
- 'sale_price' => 'Sale Price[sale_price]',
867
- 'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
868
- '---2' => '',
869
- '--3' => 'Unique Product Identifiers',
870
- 'brand' => 'Manufacturer[brand]',
871
- 'gtin' => 'GTIN[gtin]',
872
- 'mpn' => 'MPN[mpn]',
873
- 'identifier_exists' => 'Identifier Exist[identifier_exists]',
874
- '---3' => '',
875
- '--4' => 'Detailed Product Attributes',
876
- 'item_group_id' => 'Item Group Id[item_group_id]',
877
- 'color' => 'Color[color]',
878
- 'gender' => 'Gender[gender]',
879
- 'age_group' => 'Age Group[age_group]',
880
- 'material' => 'Material[material]',
881
- 'pattern' => 'Pattern[pattern]',
882
- 'size' => 'Size of the item[size]',
883
- '---4' => '',
884
- '--5' => 'Tax & Shipping',
885
- 'tax' => 'Tax[tax]',
886
- 'tax_country' => 'Tax Country[tax_country]',
887
- 'tax_region' => 'Tax Region[tax_region]',
888
- 'tax_rate' => 'Tax Rate[tax_rate]',
889
- 'tax_ship' => 'Tax Ship[tax_ship]',
890
- 'tax_category' => 'Tax[tax_category]',
891
- 'shipping' => 'Shipping',
892
- 'shipping_weight' => 'Shipping Weight[shipping_weight]',
893
- '---5' => '',
894
- '--6' => 'Custom Label Attributes',
895
- 'custom_label_0' => 'Custom label 0 [custom_label_0]',
896
- 'custom_label_1' => 'Custom label 1 [custom_label_1]',
897
- 'custom_label_2' => 'Custom label 2 [custom_label_2]',
898
- 'custom_label_3' => 'Custom label 3 [custom_label_3]',
899
- 'custom_label_4' => 'Custom label 4 [custom_label_4]',
900
- '---6' => '',
901
- '--7' => 'Additional Attributes',
902
- 'inventory' => 'Facebook Inventory[inventory]',
903
- 'override' => 'Facebook Override[override]',
904
- 'status' => 'Status [status]',
905
- 'video' => 'Video [video]',
906
- 'unit_price_value' => 'Unit Price > Value [unit_price_value]',
907
- 'unit_price_currency' => 'Unit Price > Currency [unit_price_currency]',
908
- 'unit_price_unit' => 'Unit Price > Unit [unit_price_unit]',
909
- 'quantity_to_sell_on_facebook' => 'Quantity to Sell on Facebook [quantity_to_sell_on_facebook]',
910
- 'commerce_tax_category' => 'Commerce Tax Category [commerce_tax_category]',
911
- 'expiration_date' => 'Expiration Date[expiration_date]',
912
- 'marked_for_product_launch' => 'Marked for Product Launce [marked_for_product_launch]',
913
- 'rich_text_description' => 'Rich Text Description [rich_text_description]',
914
- 'visibility' => 'Visibility [visibility]',
915
- 'additional_variant_label' => 'Additional Variant Attribute > Label [Variant Label]',
916
- 'additional_variant_value' => 'Additional Variant Attribute > Value [Variant Value]',
917
- 'applink' => 'Applink [applink]',
918
- 'origin_country' => 'Origin Country [origin_country]',
919
- 'importer_name' => 'Importer Name [importer_name]',
920
- 'importer_address' => 'Importer Address [importer_address]',
921
- 'manufacturer_info' => 'Manufacturer Info [manufacturer_info]',
922
- 'return_policy_info' => 'Return Policy Info [return_policy_info]',
923
- '---7' => '',
924
- );
925
- }
926
 
927
- /**
928
- * Google Dynamic Ads Attribute List
929
- *
930
- * @return array
931
- */
932
- public function google_dynamic_adsAttributes() {
933
 
934
- return array(
935
- '--1' => 'Basic Information',
936
- 'Page URL' => 'Page URL[Page URL]',
937
- 'Custom Label' => 'Custom Label [Custom Label]',
938
- '---1' => '',
939
 
940
- );
941
- }
942
 
943
- /**
944
- * Bing Attribute List
945
- *
946
- * @return array
947
- */
948
- public function bingAttributes() {
949
 
950
- return array(
951
- '--1' => 'Basic Information',
952
- 'id' => 'Product Id[id]',
953
- 'title' => 'Product Title[title]',
954
- 'link' => 'Product URL[link]',
955
- 'price' => 'Product Price[price]',
956
- 'description' => 'Product Description[description]',
957
- 'image_link' => 'Image[image_link]',
958
- 'shipping' => 'Shipping [shipping]',
959
- 'shipping_country' => 'Shipping Country[shipping]',
960
- 'shipping_service' => 'Shipping Service[shipping]',
961
- 'shipping_price' => 'Shipping Price[shipping]',
962
- 'gtin' => 'GTIN[gtin]',
963
- 'mpn' => 'MPN[mpn]',
964
- 'brand' => 'Brand[brand]',
965
- 'identifier_exists' => 'Identifier Exists[identifier_exists]',
966
- '---1' => '',
967
- '--2' => 'Apparel Products',
968
- 'gender' => 'Gender[gender]',
969
- 'age_group' => 'Age Group[age_group]',
970
- 'color' => 'Color[color]',
971
- 'size' => 'Size[size]',
972
- 'size_type' => 'Size Type[size_type]',
973
- 'size_system' => 'Size System[size_system]',
974
- '---2' => '',
975
- '--3' => 'Product Variants',
976
- 'item_group_id' => 'Item Group ID[item_group_id]',
977
- 'material' => 'Material[material]',
978
- 'pattern' => 'Pattern[pattern]',
979
- 'additional_image_link' => 'Additional Image Link[additional_image_link]',
980
- '---3' => '',
981
- '--4' => 'Other Information',
982
- 'adult' => 'Adult[adult]',
983
- 'availability' => 'Availability[availability]',
984
- 'product_category' => 'Product Category[product_category]',
985
- 'condition' => 'Condition[condition]',
986
- 'expiration_date' => 'Expiration Date[expiration_date]',
987
- 'multipack' => 'Multipack[multipack]',
988
- 'product_type' => 'Product Type[product_type]',
989
- 'mobile_link' => 'Mobile Link[mobile_link]',
990
- 'unit_pricing_measure' => 'Unit Pricing Measure[unit_pricing_measure]',
991
- 'unit_pricing_base_measure' => 'Unit Pricing Base Measure[unit_pricing_base_measure]',
992
- 'installment' => 'Installment[installment]',
993
- 'energy_efficiency_class' => 'Energy Efficiency Class[energy_efficiency_class]',
994
- 'min_energy_efficiency_class' => 'Min Energy Efficiency Class[min_energy_efficiency_class]',
995
- 'max_energy_efficiency_class' => 'Max Energy Efficiency Class[max_energy_efficiency_class]',
996
- 'seller_name' => 'Seller Name[seller_name]',
997
- 'ads_redirect' => 'Ads Redirect[ads_redirect]',
998
- 'custom_label_0' => 'Custom Label 0[custom_label_0]',
999
- 'custom_label_1' => 'Custom Label 1[custom_label_1]',
1000
- 'custom_label_2' => 'Custom Label 2[custom_label_2]',
1001
- 'custom_label_3' => 'Custom Label 3[custom_label_3]',
1002
- 'custom_label_4' => 'Custom Label 4[custom_label_4]',
1003
- '---4' => '',
1004
- '--5' => 'Sales & Promotions',
1005
- 'sale_price' => 'Sale Price[sale_price]',
1006
- 'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
1007
- 'promotion_ID' => 'Promotion ID[promotion_ID]',
1008
- '---5' => '',
1009
- '--6' => 'Local Product Inventory',
1010
- 'store_code' => 'Store Code[store_code]',
1011
- 'itemid' => 'Item ID[itemid]',
1012
- 'quantity' => 'Quantity[quantity]',
1013
- 'weeks_of_supply' => 'Weeks Of Supply[weeks_of_supply]',
1014
- 'pick_up_method' => 'Pick Up Method[pick_up_method]',
1015
- 'pick_up_sla' => 'Pick Up SLA[pick_up_sla]',
1016
- '---6' => '',
1017
- );
1018
- }
1019
 
1020
- /**
1021
- * Pinterest RSS Board Attribute List
1022
- *
1023
- * @return array
1024
- */
1025
- public function pinterest_rssAttributes() {
1026
 
1027
- return array(
1028
- '--1' => 'Basic Information',
1029
- 'title' => 'Product Title[title]',
1030
- 'description' => 'Product Description[description]',
1031
- 'link' => 'Product URL[link]',
1032
- 'image' => 'Main Image[image]',
1033
- 'pubDate' => 'Publish Date[pubDate]',
1034
- 'guid' => 'GUID[guid]',
1035
- '---1' => '',
1036
 
1037
- );
1038
- }
1039
 
1040
- /**
1041
- * Google Product Review Attribute List
1042
- *
1043
- * @return array
1044
- */
1045
- public function googlereviewAttributes() {
1046
- return array(
1047
- 'product_name' => 'Product Title [product_name]',
1048
- 'product_url' => 'Product URL [product_url]',
1049
- 'review_temp_gtin' => 'GTIN [gtin]',
1050
- 'review_temp_mpn' => 'MPN [mpn]',
1051
- 'review_temp_sku' => 'SKU [sku]',
1052
- 'review_temp_brand' => 'Brand [brand]',
1053
- );
1054
- }
1055
 
1056
- /**
1057
- * Wine Searcher Attribute List
1058
- *
1059
- * @return array
1060
- */
1061
- public function winesearcherAttributes() {
1062
- return array(
1063
- '--1' => 'Basic Information',
1064
- 'name' => 'Product Title[name]',
1065
- 'description' => 'Product description[description]',
1066
- 'vintage' => 'Vintage[vintage]',
1067
- 'link' => 'Product URL[link]',
1068
- 'unit-size' => 'Unit Size[unit-size]',
1069
- 'price' => 'Price[price]',
1070
- 'url' => 'URL[url] ',
1071
- 'min-order' => 'Minimum Order[min-order]',
1072
- 'tax' => 'Tax[tax]',
1073
- 'offer-type' => 'Offer Type[offer-type]',
1074
- 'delivery-time' => 'Delivery Time[delivery-time]',
1075
- 'stock-level' => 'Stock Level[stock-level]',
1076
- );
1077
- }
1078
 
1079
- /**
1080
- * TikTok Attribute List
1081
- *
1082
- * @since 4.4.31
1083
- * @author Nazrul Islam Nayan
1084
- * @return array
1085
- */
1086
- public function tiktokAttributes() {
1087
- return array(
1088
- '--1' => 'Basic Information',
1089
- 'sku_id' => 'SKU ID[id]',
1090
- 'title' => 'Product Title[title]',
1091
- 'description' => 'Product description[description]',
1092
- 'availability' => 'Availability[availability]',
1093
- 'condition' => 'Condition[condition]',
1094
- 'price' => 'Price[price]',
1095
- 'sale_price' => 'Sale Price[sale_price]',
1096
- 'shipping' => 'Shipping[shipping]',
1097
- 'tax ' => 'Tax[tax]',
1098
- 'shipping_weight' => 'Shipping Weight[shipping_weight]',
1099
- 'link' => 'Product URL[link]',
1100
- 'image_link' => 'Product Image[image_link]',
1101
- 'additional_image_link' => 'Additional Image [additional_image_link]',
1102
- 'item_group_id' => 'Parent ID[item_group_id]',
1103
- 'brand' => 'Product Brand[brand]',
1104
- 'gtin' => 'Gtin[gtin]',
1105
- 'mpn' => 'MPN[mpn]',
1106
- 'google_product_category' => 'Google Product Category[google_product_category]',
1107
- 'video_link' => 'Video Link[video_link]',
1108
- 'age_group' => 'Age Group[age_group]',
1109
- 'color' => 'Color[color]',
1110
- 'size' => 'Size[size]',
1111
- 'gender' => 'Gender[gender]',
1112
- 'material' => 'Material[material]',
1113
- 'pattern' => 'Pattern[pattern]',
1114
- 'product_type' => 'Product Type[product_type]',
1115
- 'ios_url' => 'IOS URL[ios_url]',
1116
- 'ios_app_store_id' => 'IOS App Store ID[ios_app_store_id]',
1117
- 'ios_app_name' => 'IOS App Name[ios_app_name]',
1118
- 'iPhone_url' => 'iPhone URL[iPhone_url]',
1119
- 'iPhone_app_store_id' => 'iPhone App Store ID[iPhone_app_store_id]',
1120
- 'iPhone_app_name' => 'iPhone App Name[iPhone_app_name]',
1121
- 'iPad_url' => 'iPad URL[iPad_url]',
1122
- 'iPad_app_store_id' => 'iPad App Store ID[iPad_app_store_id]',
1123
- 'iPad_app_name' => 'iPad App Name[iPad_app_name]',
1124
- 'android_url' => 'Android URL[android_url]',
1125
- 'android_package' => 'Android Package[android_package]',
1126
- 'android_app_name' => 'Android App Name[android_app_name]',
1127
- 'custom_label_0' => 'custom_label_0[custom_label_0]',
1128
- 'custom_label_1' => 'custom_label_1[custom_label_1]',
1129
- 'custom_label_2' => 'custom_label_2[custom_label_2]',
1130
- 'custom_label_3' => 'custom_label_3[custom_label_3]',
1131
- 'custom_label_4' => 'custom_label_4[custom_label_4]',
1132
- 'merchant_brand' => 'Merchant Brand[merchant_brand]',
1133
- 'productHisEval' => 'Purchase Count:FeedBack[productHisEval]',
1134
- 'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
1135
- );
1136
- }
1137
 
1138
- /**
1139
- * Modalova Attribute List
1140
- *
1141
- * @since 5.2.10
1142
- * @author Nazrul Islam Nayan
1143
- * @return array
1144
- */
1145
- public function modalovaAttributes() {
1146
- return array(
1147
- '--1' => 'Basic Information',
1148
- 'id' => 'Product ID[id]',
1149
- 'title' => 'Product Title[title]',
1150
- 'slug' => 'Product URL Slug[slug]',
1151
- 'description' => 'Product description[description]',
1152
- 'short_description' => 'Product Short description[short_description]',
1153
- 'link' => 'Product URL[link]',
1154
- 'sku' => 'SKU[sku]',
1155
- 'brand' => 'Product Brand[brand]',
1156
- 'main_image' => 'Product Image[main_image]',
1157
- 'featured_image' => 'Featured Image[featured_image]',
1158
- 'images' => 'Images[images]',
1159
- 'price' => 'Price[price]',
1160
- 'sale_price' => 'Sale Price[sale_price]',
1161
- 'availability' => 'Availability[availability]',
1162
- 'tags' => 'Tags[tags]',
1163
- 'color' => 'Color[color]',
1164
- 'size' => 'Size[size]',
1165
- 'quantity' => 'Quantity[quantity]',
1166
- 'parent_id' => 'Parent ID[parent_id]',
1167
- 'condition' => 'Condition[condition]',
1168
- 'category' => 'Category[category]',
1169
- 'parent_category' => 'Parent Category[parent_category]',
1170
- 'child_category' => 'Child Category[child_category]',
1171
- 'category_path' => 'Category Path[category_path]',
1172
- 'created_at' => 'Created At[created_at]',
1173
- 'updated_at' => 'Updated At[updated_at]',
1174
- );
1175
- }
1176
 
1177
- /**
1178
- * Catch.com.au Attribute List
1179
- *
1180
- * @return array
1181
- */
1182
- public function catchdotcomAttributes() {
1183
- return array(
1184
- 'product-id' => 'Product ID [product-id]',
1185
- 'title' => 'Product title [title]',
1186
- 'product-description' => 'Product Description[product-description]',
1187
- 'product-id-type' => 'Product ID Type[product-id-type]',
1188
- 'internal-sku' => 'Internal SKU[internal-sku]',
1189
- 'category' => 'Product Category[category]',
1190
- 'image-1' => 'Image 1 [image-1]',
1191
- 'images-2' => 'Image 2 [image-2]',
1192
- 'images-3' => 'Image 3 [image-3]',
1193
- 'images-4' => 'Image 4 [image-4]',
1194
- 'images-5' => 'Image 5 [image-5]',
1195
- 'images-6' => 'Image 6 [image-6]',
1196
- 'image-size-chart' => 'Image Size Chart[image-size-chart]',
1197
- 'brand' => 'Brand[brand]',
1198
- 'adult' => 'Adult[adult]',
1199
- 'keywords' => 'Keywords[keywords]',
1200
- 'sku' => 'Offer SKU[sku]',
1201
- 'inventory' => 'Facebook Inventory[inventory]',
1202
- 'override' => 'Facebook Override[override]',
1203
- 'price' => 'Regular Price[price]',
1204
- 'quantity' => 'Offer Quantity[quantity]',
1205
- 'min-quantity-alert' => 'Minimum Quantity Alert[min-quantity-alert]',
1206
- 'state' => 'Offer State[state]',
1207
- 'logistic-class' => 'Logistic Class[logistic-class]',
1208
- 'discount-price' => 'Discount Price[discount-price]',
1209
- 'leadtime-to-ship' => 'Lead Time to Ship[leadtime-to-ship]',
1210
- 'club-catch-eligible' => 'Club Catch eligible[club-catch-eligible]',
1211
- 'tax-au' => 'GST %[tax-au]',
1212
- );
1213
- }
1214
 
1215
- /**
1216
- * Fashionchick.nl Attribute List
1217
- *
1218
- * @return array
1219
- */
1220
- public function fashionchickAttributes() {
1221
- return array(
1222
- 'Product ID' => 'Product ID [Product ID]',
1223
- 'Titel' => 'Product Titel [Titel]',
1224
- 'Omschrijving' => 'Product Description [Omschrijving]',
1225
- 'Url' => 'Product URL [Url]',
1226
- 'Image' => 'Image [Image]',
1227
- 'Category' => 'Product Category [Category (pad)]',
1228
- 'Prijs' => 'Regular Price [Prijs]',
1229
- 'Merk' => 'Brand [Merk]',
1230
- 'Cluster ID' => 'Cluster ID [Cluster ID]',
1231
- 'internal-sku' => 'Internal SKU [internal-sku]',
1232
- 'sku' => 'Offer SKU[sku]',
1233
- 'Delivery Time' => 'Delivery Time [Delivery Time]',
1234
- 'Shipping Costs' => 'Shipping Costs [Shipping Costs]',
1235
- 'Old price' => 'Old price [Old price]',
1236
- 'Product maten' => 'Product sizes [Product maten]',
1237
- 'Stock' => 'Stock [Stock]',
1238
- 'Voorraad aantal' => 'Stock quantity [Voorraad aantal]',
1239
- 'Materiaal' => 'Material [Materiaal]',
1240
- 'Geslacht' => 'Gender [Geslacht]',
1241
- 'Kleur' => 'Color [Kleur]',
1242
- );
1243
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1244
 
1245
- /**
1246
- * GoedGeplaatst.nl Attribute List
1247
- *
1248
- * @return array
1249
- */
1250
- public function goedgeplaatstAttributes() {
1251
- return array(
1252
- 'title' => 'Product Title [title]',
1253
- 'description' => 'Product Description [description]',
1254
- 'type' => 'Product Type [type]',
1255
- 'price' => 'Price [price]',
1256
- 'images' => 'Images [images]',
1257
- 'categoryId' => 'Category ID [categoryId]',
1258
- 'externalAdId' => 'External Ad ID [externalAdId]',
1259
- 'priceRetail' => 'Retail Price [priceRetail]',
1260
- 'priceOther' => 'Other Price [priceOther]',
1261
- 'bid' => 'Bid [bid]',
1262
- 'showContact' => 'Show Contact [showContact]',
1263
- 'website' => 'Website [website]',
1264
- 'name' => 'Name [name]',
1265
- 'phone' => 'Phone [phone]',
1266
- 'address' => 'Address [address]',
1267
- 'houseNumber' => 'House Number [houseNumber]',
1268
- 'postalCode' => 'Postal Code [postalCode]',
1269
- 'city' => 'City [city]',
1270
- 'country' => 'Country [country]',
1271
- 'autoReplace' => 'Auto Replace [autoReplace]',
1272
- 'directForwardToMp' => 'Direct Forward Mp [directForwardToMp]',
1273
- 'priceBidMinimal' => 'Price Bid Minimal [priceBidMinimal]',
1274
- 'priceBidAsking' => 'Price Bid Asking [priceBidAsking]',
1275
- );
1276
- }
1277
-
1278
  /**
1279
  * Skroutz Attribute List
1280
  *
1281
  * @return array
1282
  */
1283
  public function skroutzAttributes() {
1284
- return [
1285
- '--1' => 'Required Information',
1286
- 'id' => 'Unique ID',
1287
- 'name' => 'Product Title',
1288
- 'description' => 'Product Description',
1289
- 'link' => 'Product Link',
1290
- 'image' => 'Image Link',
1291
- 'category' => 'Category Name',
1292
- 'price' => 'Price',
1293
- 'price_with_vat' => 'Price With Tax',
1294
- 'manufacturer' => 'Manufacturer',
1295
- 'mpn' => 'MPN / ISBN',
1296
- 'availability' => 'Availability',
1297
- '---1' => '',
1298
- 'instock' => 'Stock Status [InStock]',
1299
- 'ean' => 'EAN / Barcode',
1300
- 'additionalimage' => 'Additional Image Link',
1301
- 'color' => 'Color',
1302
- 'size' => 'Size',
1303
- 'weight' => 'Weight',
1304
- 'quantity' => 'Quantity',
1305
- ];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1306
  }
1307
- /**
1308
- * BestPrice Attribute List
1309
- *
1310
- * @return array
1311
- */
1312
- public function bestpriceAttributes() {
1313
- return [
1314
- '--1' => 'Required Attributes',
1315
- 'productId' => 'Product ID[productId]',
1316
- 'name' => 'Product Title[name]',
1317
- 'description' => 'Product Description[description]',
1318
- 'link' => 'Product Link[link]',
1319
- 'image' => 'Image Link[image]',
1320
- 'categoryPath' => 'Category Path[categoryPath]',
1321
- 'categoryID' => 'Category Id[categoryID]',
1322
- 'price' => 'Price[price]',
1323
- 'manufacturer' => 'Manufacturer[manufacturer]',
1324
- 'mpn' => 'MPN / ISBN',
1325
- 'availability' => 'Availability',
1326
- '---1' => 'Recommended Attributes',
1327
- 'instock' => 'Stock Status[instock]',
1328
- 'ean' => 'EAN/Barcode',
1329
- 'additional_image' => 'Additional Image Link',
1330
- 'color' => 'Color',
1331
- 'size' => 'Size',
1332
- 'weight' => 'Weight',
1333
- 'features' => 'Features',
1334
- ];
1335
- }
1336
  /**
1337
  * Daisycon Attribute List
1338
  *
1339
  * @return array
1340
  */
1341
  public function daisyconAttributes() {
1342
- return [
1343
  '--1' => 'Required Attributes',
1344
  'sku' => 'Unique Product ID [SKU]',
1345
  'description' => 'Description',
@@ -1387,16 +1407,16 @@ class Woo_Feed_Default_Attributes {
1387
  'size_description' => 'Description for the “size” field',
1388
  'terms_conditions' => 'Full terms and conditions',
1389
  '---4' => '',
1390
- ];
1391
  }
1392
-
1393
  /**
1394
  * Daisycon Automotive Attribute List
1395
  *
1396
  * @return array
1397
  */
1398
  public function daisycon_automotiveAttributes() {
1399
- return [
1400
  '--1' => 'Required Attributes',
1401
  'description' => 'Description of the product',
1402
  'link' => 'URL to the page of the product',
@@ -1453,16 +1473,16 @@ class Woo_Feed_Default_Attributes {
1453
  'year_built' => 'Year in which the product is fabricated',
1454
  'terms_conditions' => 'Full terms and conditions',
1455
  '---4' => '',
1456
- ];
1457
  }
1458
-
1459
  /**
1460
  * Daisycon Books Attribute List
1461
  *
1462
  * @return array
1463
  */
1464
  public function daisycon_booksAttributes() {
1465
- return [
1466
  '--1' => 'Required Attributes',
1467
  'description' => 'Description of the product',
1468
  'link' => 'URL to the page of the product',
@@ -1525,16 +1545,16 @@ class Woo_Feed_Default_Attributes {
1525
  'material_3' => 'The tertiary material',
1526
  'terms_conditions' => 'Full terms and conditions',
1527
  '---5' => '',
1528
- ];
1529
  }
1530
-
1531
  /**
1532
  * Daisycon Cosmetics Attribute List
1533
  *
1534
  * @return array
1535
  */
1536
  public function daisycon_cosmeticsAttributes() {
1537
- return [
1538
  '--1' => 'Required Attributes',
1539
  'description' => 'Description of the product',
1540
  'link' => 'URL to the page of the product',
@@ -1589,16 +1609,16 @@ class Woo_Feed_Default_Attributes {
1589
  'material_3' => 'The tertiary material',
1590
  'terms_conditions' => 'Full terms and conditions',
1591
  '---5' => '',
1592
- ];
1593
  }
1594
-
1595
  /**
1596
  * Daisycon Daily Offers Attribute List
1597
  *
1598
  * @return array
1599
  */
1600
  public function daisycon_daily_offersAttributes() {
1601
- return [
1602
  '--1' => 'Required Attributes',
1603
  'description' => 'Description of the product',
1604
  'link' => 'URL to the page of the product',
@@ -1649,16 +1669,16 @@ class Woo_Feed_Default_Attributes {
1649
  'material_3' => 'The tertiary material',
1650
  'terms_conditions' => 'Full terms and conditions',
1651
  '---4' => '',
1652
- ];
1653
  }
1654
-
1655
  /**
1656
  * Daisycon Electronics Attribute List
1657
  *
1658
  * @return array
1659
  */
1660
  public function daisycon_electronicsAttributes() {
1661
- return [
1662
  '--1' => 'Required Attributes',
1663
  'description' => 'Description of the product',
1664
  'link' => 'URL to the page of the product',
@@ -1737,16 +1757,16 @@ class Woo_Feed_Default_Attributes {
1737
  'material_2' => 'The secondary material',
1738
  'material_3' => 'The tertiary material',
1739
  '---5' => '',
1740
- ];
1741
  }
1742
-
1743
  /**
1744
  * Daisycon Food & Drinks Attribute List
1745
  *
1746
  * @return array
1747
  */
1748
  public function daisycon_food_drinksAttributes() {
1749
- return [
1750
  '--1' => 'Required Attributes',
1751
  'description' => 'Description of the product',
1752
  'link' => 'URL to the page of the product',
@@ -1812,16 +1832,16 @@ class Woo_Feed_Default_Attributes {
1812
  'material_3' => 'The tertiary material',
1813
  'terms_conditions' => 'Full terms and conditions',
1814
  '---5' => '',
1815
- ];
1816
  }
1817
-
1818
  /**
1819
  * Daisycon Home & Garden Attribute List
1820
  *
1821
  * @return array
1822
  */
1823
  public function daisycon_home_gardenAttributes() {
1824
- return [
1825
  '--1' => 'Required Attributes',
1826
  'description' => 'Description of the product',
1827
  'link' => 'URL to the page of the product',
@@ -1876,16 +1896,16 @@ class Woo_Feed_Default_Attributes {
1876
  'material_3' => 'The tertiary material',
1877
  'terms_conditions' => 'Full terms and conditions',
1878
  '---5' => '',
1879
- ];
1880
  }
1881
-
1882
  /**
1883
  * Daisycon Housing Attribute List
1884
  *
1885
  * @return array
1886
  */
1887
  public function daisycon_housingAttributes() {
1888
- return [
1889
  '--1' => 'Required Attributes',
1890
  'description' => 'Description of the product',
1891
  'link' => 'URL to the page of the product',
@@ -1982,16 +2002,16 @@ class Woo_Feed_Default_Attributes {
1982
  'material_3' => 'The tertiary material',
1983
  'terms_conditions' => 'Full terms and conditions',
1984
  '---5' => '',
1985
- ];
1986
  }
1987
-
1988
  /**
1989
  * Daisycon Fashion Attribute List
1990
  *
1991
  * @return array
1992
  */
1993
  public function daisycon_fashionAttributes() {
1994
- return [
1995
  '--1' => 'Required Attributes',
1996
  'description' => 'Description of the product',
1997
  'link' => 'URL to the page of the product',
@@ -2041,16 +2061,16 @@ class Woo_Feed_Default_Attributes {
2041
  'material_3' => 'The tertiary material',
2042
  'terms_conditions' => 'Full terms and conditions',
2043
  '---5' => '',
2044
- ];
2045
  }
2046
-
2047
  /**
2048
  * Daisycon Studies & Trainings Attribute List
2049
  *
2050
  * @return array
2051
  */
2052
  public function daisycon_studies_trainingsAttributes() {
2053
- return [
2054
  '--1' => 'Required Attributes',
2055
  'description' => 'Description of the product',
2056
  'link' => 'URL to the page of the product',
@@ -2103,16 +2123,16 @@ class Woo_Feed_Default_Attributes {
2103
  'material_3' => 'The tertiary material',
2104
  'terms_conditions' => 'Full terms and conditions',
2105
  '---5' => '',
2106
- ];
2107
  }
2108
-
2109
  /**
2110
  * Daisycon Telecom: Accessories Attribute List
2111
  *
2112
  * @return array
2113
  */
2114
  public function daisycon_telecom_accessoriesAttributes() {
2115
- return [
2116
  '--1' => 'Required Attributes',
2117
  'description' => 'Description of the product',
2118
  'link' => 'URL to the page of the product',
@@ -2163,16 +2183,16 @@ class Woo_Feed_Default_Attributes {
2163
  'material_3' => 'The tertiary material',
2164
  'terms_conditions' => 'Full terms and conditions',
2165
  '---5' => '',
2166
- ];
2167
  }
2168
-
2169
  /**
2170
  * Daisycon Telecom: All-in-one Attribute List
2171
  *
2172
  * @return array
2173
  */
2174
  public function daisycon_telecom_all_in_oneAttributes() {
2175
- return [
2176
  '--1' => 'Required Attributes',
2177
  'allinone_subscription_type' => 'Subscription type',
2178
  'bandwidth_download' => 'Download in Mbits',
@@ -2241,16 +2261,16 @@ class Woo_Feed_Default_Attributes {
2241
  'material_3' => 'The tertiary material',
2242
  'terms_conditions' => 'Full terms and conditions',
2243
  '---5' => '',
2244
- ];
2245
  }
2246
-
2247
  /**
2248
  * Daisycon Telecom: GSM + Subscription Attribute List
2249
  *
2250
  * @return array
2251
  */
2252
  public function daisycon_telecom_gsm_subscriptionAttributes() {
2253
- return [
2254
  '--1' => 'Required Attributes',
2255
  'description' => 'Description of the product',
2256
  'link' => 'URL to the page of the product',
@@ -2346,16 +2366,16 @@ class Woo_Feed_Default_Attributes {
2346
  'material_3' => 'The tertiary material',
2347
  'terms_conditions' => 'Full terms and conditions',
2348
  '---5' => '',
2349
- ];
2350
  }
2351
-
2352
  /**
2353
  * Daisycon Telecom: GSM only Attribute List
2354
  *
2355
  * @return array
2356
  */
2357
  public function daisycon_telecom_gsmAttributes() {
2358
- return [
2359
  '--1' => 'Required Attributes',
2360
  'description' => 'Description of the GSM-device',
2361
  'link' => 'URL to the page of the GSM-device',
@@ -2413,23 +2433,23 @@ class Woo_Feed_Default_Attributes {
2413
  'size_description' => 'Description for the "size" field',
2414
  'size_length' => 'GSM-device length in mm',
2415
  'size_width' => 'GSM-device width in mm',
2416
-
2417
  'weight' => 'GSM-device weight in grams',
2418
  'material_1' => 'The primary material',
2419
  'material_2' => 'The secondary material',
2420
  'material_3' => 'The tertiary material',
2421
  'terms_conditions' => 'Full terms and conditions',
2422
  '---5' => '',
2423
- ];
2424
  }
2425
-
2426
  /**
2427
  * Daisycon Telecom: Sim only Attribute List
2428
  *
2429
  * @return array
2430
  */
2431
  public function daisycon_telecom_simAttributes() {
2432
- return [
2433
  '--1' => 'Required Attributes',
2434
  'description' => 'Description of the subscription',
2435
  'link' => 'URL to the page of the subscription',
@@ -2503,16 +2523,16 @@ class Woo_Feed_Default_Attributes {
2503
  'material_3' => 'The tertiary material',
2504
  'terms_conditions' => 'Full terms and conditions',
2505
  '---5' => '',
2506
- ];
2507
  }
2508
-
2509
  /**
2510
  * Daisycon Magazines Attribute List
2511
  *
2512
  * @return array
2513
  */
2514
  public function daisycon_magazinesAttributes() {
2515
- return [
2516
  '--1' => 'Required Attributes',
2517
  'description' => 'Description of the magazine',
2518
  'link' => 'URL to the page of the magazine',
@@ -2577,16 +2597,16 @@ class Woo_Feed_Default_Attributes {
2577
  'material_3' => 'The tertiary material',
2578
  'terms_conditions' => 'Full terms and conditions',
2579
  '---5' => '',
2580
- ];
2581
  }
2582
-
2583
  /**
2584
  * Daisycon Holidays: Accommodations Attribute List
2585
  *
2586
  * @return array
2587
  */
2588
  public function daisycon_holidays_accommodationsAttributes() {
2589
- return [
2590
  '--1' => 'Required Attributes',
2591
  'description' => 'Description of the product',
2592
  'link' => 'URL to the page of the product',
@@ -2696,16 +2716,16 @@ class Woo_Feed_Default_Attributes {
2696
  'material_3' => 'The tertiary material',
2697
  'terms_conditions' => 'Full terms and conditions',
2698
  '---5' => '',
2699
- ];
2700
  }
2701
-
2702
  /**
2703
  * Daisycon Holidays: Accommodations and transport Attribute List
2704
  *
2705
  * @return array
2706
  */
2707
  public function daisycon_holidays_accommodations_and_transportAttributes() {
2708
- return [
2709
  '--1' => 'Required Attributes',
2710
  'description' => 'Description of the product',
2711
  'link' => 'URL to the page of the product',
@@ -2831,16 +2851,16 @@ class Woo_Feed_Default_Attributes {
2831
  'material_3' => 'The tertiary material',
2832
  'terms_conditions' => 'Full terms and conditions',
2833
  '---5' => '',
2834
- ];
2835
  }
2836
-
2837
  /**
2838
  * Daisycon Holidays: Trips Attribute List
2839
  *
2840
  * @return array
2841
  */
2842
  public function daisycon_holidays_tripsAttributes() {
2843
- return [
2844
  '--1' => 'Required Attributes',
2845
  'description' => 'Description of the product',
2846
  'link' => 'URL to the page of the product',
@@ -2916,16 +2936,16 @@ class Woo_Feed_Default_Attributes {
2916
  'material_3' => 'The tertiary material',
2917
  'terms_conditions' => 'Full terms and conditions',
2918
  '---5' => '',
2919
- ];
2920
  }
2921
-
2922
  /**
2923
  * Daisycon Work & Jobs Attribute List
2924
  *
2925
  * @return array
2926
  */
2927
  public function daisycon_work_jobsAttributes() {
2928
- return [
2929
  '--1' => 'Required Attributes',
2930
  'description' => 'Description of the product',
2931
  'link' => 'URL to the page of the product',
@@ -2986,6 +3006,6 @@ class Woo_Feed_Default_Attributes {
2986
  'material_3' => 'The tertiary material',
2987
  'terms_conditions' => 'Full terms and conditions',
2988
  '---5' => '',
2989
- ];
2990
  }
2991
  }
15
  */
16
  class Woo_Feed_Default_Attributes {
17
 
18
+ public $googleCSVTXTAttribute
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  = array(
20
+ 'id' => array( 'id', false ),
21
+ 'webitemid' => array( 'webitemid', false ),
22
+ 'region_id' => array( 'region_id', false ),
23
+ 'title' => array( 'title', true ),
24
+ 'description' => array( 'description', true ),
25
+ 'link' => array( 'link', true ),
26
+ 'canonical_link' => array( 'canonical link', true ),
27
+ 'mobile_link' => array( 'mobile_link', true ),
28
+ 'product_type' => array( 'product type', true ),
29
+ 'current_category' => array( 'google product category', true ),
30
+ 'image' => array( 'image link', true ),
31
+ 'images' => array( 'additional image link', true ),
32
+ 'images_1' => array( 'additional image link 1', true ),
33
+ 'images_2' => array( 'additional image link 2', true ),
34
+ 'images_3' => array( 'additional image link 3', true ),
35
+ 'images_4' => array( 'additional image link 4', true ),
36
+ 'images_5' => array( 'additional image link 5', true ),
37
+ 'images_6' => array( 'additional image link 6', true ),
38
+ 'images_7' => array( 'additional image link 7', true ),
39
+ 'images_8' => array( 'additional image link 8', true ),
40
+ 'images_9' => array( 'additional image link 9', true ),
41
+ 'images_10' => array( 'additional image link 10', true ),
42
+ 'condition' => array( 'condition', false ),
43
+ 'availability' => array( 'availability', false ),
44
+ 'availability_date' => array( 'availability date', false ),
45
+ 'inventory' => array( 'inventory', false ),
46
+ 'price' => array( 'price', true ),
47
+ 'sale_price' => array( 'sale price', true ),
48
+ 'sale_price_effective_date' => array( 'sale price effective date', true ),
49
+ 'brand' => array( 'brand', true ),
50
+ 'sku' => array( 'mpn', true ),
51
+ 'upc' => array( 'gtin', true ),
52
+ 'identifier_exists' => array( 'identifier exists', true ),
53
+ 'item_group_id' => array( 'item group id', false ),
54
+ 'external_seller_id' => array( 'external seller id', false ),
55
+ 'product_length' => array( 'product length', true ),
56
+ 'product_width' => array( 'product width', true ),
57
+ 'product_height' => array( 'product height', true ),
58
+ 'product_weight' => array( 'product weight', true ),
59
+ 'product_highlight_1' => array( 'product highlight 1', true ),
60
+ 'product_highlight_2' => array( 'product highlight 2', true ),
61
+ 'product_highlight_3' => array( 'product highlight 3', true ),
62
+ 'product_highlight_4' => array( 'product highlight 4', true ),
63
+ 'product_highlight_5' => array( 'product highlight 5', true ),
64
+ 'product_highlight_6' => array( 'product highlight 6', true ),
65
+ 'product_highlight_7' => array( 'product highlight 7', true ),
66
+ 'product_highlight_8' => array( 'product highlight 8', true ),
67
+ 'product_highlight_9' => array( 'product highlight 9', true ),
68
+ 'product_highlight_10' => array( 'product highlight 10', true ),
69
+ 'color' => array( 'color', true ),
70
+ 'gender' => array( 'gender', true ),
71
+ 'age_group' => array( 'age group', true ),
72
+ 'material' => array( 'material', true ),
73
+ 'pattern' => array( 'pattern', true ),
74
+ 'size' => array( 'size', true ),
75
+ 'size_type' => array( 'size type', true ),
76
+ 'size_system' => array( 'size system', true ),
77
+ 'free_shipping_label' => array( 'free_shipping_label', true ),
78
+ 'free_shipping_limit' => array( 'free_shipping_limit', true ),
79
+ 'average_review_rating' => array( 'average_review_rating', true ),
80
+ 'number_of_ratings' => array( 'number_of_ratings', true ),
81
+ 'number_of_reviews' => array( 'number_of_reviews', true ),
82
+ 'tax' => array( 'tax', true ),
83
+ 'tax_category' => array( 'tax category', true ),
84
+ 'shipping' => array( 'shipping', true ),
85
+ 'weight' => array( 'shipping weight', false ),
86
+ 'length' => array( 'shipping length', false ),
87
+ 'width' => array( 'shipping width', false ),
88
+ 'height' => array( 'shipping height', false ),
89
+ 'ships_from_country' => array( 'ships from country', false ),
90
+ 'shipping_label' => array( 'shipping label', false ),
91
+ 'shipping_country' => array( 'shipping country', false ),
92
+ 'shipping_service' => array( 'shipping service', false ),
93
+ 'shipping_price' => array( 'shipping price', false ),
94
+ 'shipping_region' => array( 'shipping region', false ),
95
+ 'multipack' => array( 'multipack', true ),
96
+ 'is_bundle' => array( 'is bundle', true ),
97
+ 'adult' => array( 'adult', true ),
98
+ 'ads_redirect' => array( 'ads redirect', true ),
99
+ 'custom_label_0' => array( 'custom label 0', true ),
100
+ 'custom_label_1' => array( 'custom label 1', true ),
101
+ 'custom_label_2' => array( 'custom label 2', true ),
102
+ 'custom_label_3' => array( 'custom label 3', true ),
103
+ 'custom_label_4' => array( 'custom label 4', true ),
104
+ 'excluded_destination' => array( 'excluded destination', true ),
105
+ 'shopping_ads_excluded_country' => array( 'shopping ads excluded country', true ),
106
+ 'included_destination' => array( 'included destination', true ),
107
+ 'expiration_date' => array( 'expiration date', true ),
108
+ 'unit_pricing_measure' => array( 'unit pricing measure', true ),
109
+ 'unit_pricing_base_measure' => array( 'unit pricing base measure', true ),
110
+ 'installment_months' => array( 'months', true ),
111
+ 'installment_amount' => array( 'amount', true ),
112
+ 'subscription_period' => array( 'period', true ),
113
+ 'subscription_period_length' => array( 'period_length', true ),
114
+ 'subscription_amount' => array( 'amount', true ),
115
+ 'energy_efficiency_class' => array( 'energy efficiency class', true ),
116
+ 'min_energy_efficiency_class' => array( 'min energy efficiency class', true ),
117
+ 'max_energy_efficiency_class' => array( 'max energy efficiency class', true ),
118
+ 'loyalty_points' => array( 'loyalty points', true ),
119
+ 'installment' => array( 'installment', true ),
120
+ 'promotion_id' => array( 'promotion id', true ),
121
+ 'cost_of_goods_sold' => array( 'cost of goods sold', true ),
122
+ 'sell_on_google_quantity' => array( 'sell on google quantity', false ),
123
+ 'min_handling_time' => array( 'min handling time', false ),
124
+ 'max_handling_time' => array( 'max handling time', false ),
125
+ 'transit_time_label' => array( 'transit time label', false ),
126
+ 'return_address_label' => array( 'return address label', false ),
127
+ 'return_policy_label' => array( 'return policy label', false ),
128
+ 'store_code' => array( 'store code', false ),
129
+ 'pickup_method' => array( 'pickup method', true ),
130
+ 'pickup_sla' => array( 'pickup sla', true ),
131
+ 'pickup_link_template' => array( 'pickup link template', true ),
132
+ 'link_template' => array( 'link template', true ),
133
+ 'mobile_link_template' => array( 'mobile link template', true ),
134
+ 'mobile_pickup_link_template' => array( 'mobile pickup link template', true ),
135
+ 'google_funded_promotion_eligibility' => array(
136
+ 'google funded promotion eligibility',
137
+ false,
138
+ ),
139
  );
140
+ public $googleXMLAttribute
141
+ = array(
142
+ 'id' => array( 'g:id', false ),
143
+ 'webitemid' => array( 'g:webitemid', false ),
144
+ 'region_id' => array( 'g:region_id', false ),
145
+ 'title' => array( 'g:title', true ),
146
+ 'description' => array( 'g:description', true ),
147
+ 'link' => array( 'link', true ),
148
+ 'canonical_link' => array( 'g:canonical_link', true ),
149
+ 'mobile_link' => array( 'mobile_link', true ),
150
+ 'product_type' => array( 'g:product_type', true ),
151
+ 'current_category' => array( 'g:google_product_category', true ),
152
+ 'image' => array( 'g:image_link', true ),
153
+ 'images' => array( 'g:additional_image_link', false ),
154
+ 'images_1' => array( 'g:additional_image_link', true ),
155
+ 'images_2' => array( 'g:additional_image_link', true ),
156
+ 'images_3' => array( 'g:additional_image_link', true ),
157
+ 'images_4' => array( 'g:additional_image_link', true ),
158
+ 'images_5' => array( 'g:additional_image_link', true ),
159
+ 'images_6' => array( 'g:additional_image_link', true ),
160
+ 'images_7' => array( 'g:additional_image_link', true ),
161
+ 'images_8' => array( 'g:additional_image_link', true ),
162
+ 'images_9' => array( 'g:additional_image_link', true ),
163
+ 'images_10' => array( 'g:additional_image_link', true ),
164
+ 'condition' => array( 'g:condition', false ),
165
+ 'availability' => array( 'g:availability', false ),
166
+ 'availability_date' => array( 'g:availability_date', false ),
167
+ 'inventory' => array( 'g:inventory', false ),
168
+ 'price' => array( 'g:price', true ),
169
+ 'sale_price' => array( 'g:sale_price', true ),
170
+ 'sale_price_effective_date' => array( 'g:sale_price_effective_date', true ),
171
+ 'brand' => array( 'g:brand', true ),
172
+ 'sku' => array( 'g:mpn', true ),
173
+ 'upc' => array( 'g:gtin', true ),
174
+ 'identifier_exists' => array( 'g:identifier_exists', true ),
175
+ 'item_group_id' => array( 'g:item_group_id', false ),
176
+ 'external_seller_id' => array( 'g:external_seller_id', false ),
177
+ 'product_length' => array( 'g:product_length', true ),
178
+ 'product_width' => array( 'g:product_width', true ),
179
+ 'product_height' => array( 'g:product_height', true ),
180
+ 'product_weight' => array( 'g:product_weight', true ),
181
+ 'product_highlight_1' => array( 'g:product_highlight', true ),
182
+ 'product_highlight_2' => array( 'g:product_highlight', true ),
183
+ 'product_highlight_3' => array( 'g:product_highlight', true ),
184
+ 'product_highlight_4' => array( 'g:product_highlight', true ),
185
+ 'product_highlight_5' => array( 'g:product_highlight', true ),
186
+ 'product_highlight_6' => array( 'g:product_highlight', true ),
187
+ 'product_highlight_7' => array( 'g:product_highlight', true ),
188
+ 'product_highlight_8' => array( 'g:product_highlight', true ),
189
+ 'product_highlight_9' => array( 'g:product_highlight', true ),
190
+ 'product_highlight_10' => array( 'g:product_highlight', true ),
191
+ 'color' => array( 'g:color', true ),
192
+ 'gender' => array( 'g:gender', true ),
193
+ 'age_group' => array( 'g:age_group', true ),
194
+ 'material' => array( 'g:material', true ),
195
+ 'pattern' => array( 'g:pattern', true ),
196
+ 'size' => array( 'g:size', true ),
197
+ 'size_type' => array( 'g:size_type', true ),
198
+ 'size_system' => array( 'g:size_system', true ),
199
+ 'tax' => array( 'g:tax', true ),
200
+ 'tax_country' => array( 'g:tax_country', true ),
201
+ 'tax_region' => array( 'g:tax_region', true ),
202
+ 'tax_rate' => array( 'g:tax_rate', true ),
203
+ 'tax_ship' => array( 'g:tax_ship', true ),
204
+ 'tax_category' => array( 'g:tax_category', true ),
205
+ 'free_shipping_label' => array( 'g:free_shipping_label', true ),
206
+ 'free_shipping_limit' => array( 'g:free_shipping_limit', true ),
207
+ 'average_review_rating' => array( 'g:average_review_rating', true ),
208
+ 'number_of_ratings' => array( 'g:number_of_ratings', true ),
209
+ 'number_of_reviews' => array( 'g:number_of_reviews', true ),
210
+ 'shipping' => array( 'g:shipping', true ),
211
+ 'weight' => array( 'g:shipping_weight', false ),
212
+ 'length' => array( 'g:shipping_length', false ),
213
+ 'width' => array( 'g:shipping_width', false ),
214
+ 'height' => array( 'g:shipping_height', false ),
215
+ 'ships_from_country' => array( 'g:ships_from_country', false ),
216
+ 'shipping_label' => array( 'g:shipping_label', false ),
217
+ 'multipack' => array( 'g:multipack', true ),
218
+ 'is_bundle' => array( 'g:is_bundle', true ),
219
+ 'adult' => array( 'g:adult', true ),
220
+ 'ads_redirect' => array( 'g:ads_redirect', true ),
221
+ 'custom_label_0' => array( 'g:custom_label_0', true ),
222
+ 'custom_label_1' => array( 'g:custom_label_1', true ),
223
+ 'custom_label_2' => array( 'g:custom_label_2', true ),
224
+ 'custom_label_3' => array( 'g:custom_label_3', true ),
225
+ 'custom_label_4' => array( 'g:custom_label_4', true ),
226
+ 'excluded_destination' => array( 'g:excluded_destination', true ),
227
+ 'shopping_ads_excluded_country' => array( 'g:shopping_ads_excluded_country', true ),
228
+ 'included_destination' => array( 'g:included_destination', true ),
229
+ 'expiration_date' => array( 'g:expiration_date', true ),
230
+ 'unit_pricing_measure' => array( 'g:unit_pricing_measure', true ),
231
+ 'unit_pricing_base_measure' => array( 'g:unit_pricing_base_measure', true ),
232
+ 'installment_months' => array( 'g:months', true ),
233
+ 'installment_amount' => array( 'g:amount', true ),
234
+ 'subscription_period' => array( 'g:period', true ),
235
+ 'subscription_period_length' => array( 'g:period_length', true ),
236
+ 'subscription_amount' => array( 'g:amount', true ),
237
+ 'energy_efficiency_class' => array( 'g:energy_efficiency_class', true ),
238
+ 'min_energy_efficiency_class' => array( 'g:min_energy_efficiency_class', true ),
239
+ 'max_energy_efficiency_class' => array( 'g:max_energy_efficiency_class', true ),
240
+ 'loyalty_points' => array( 'g:loyalty_points', true ),
241
+ 'installment' => array( 'g:installment', true ),
242
+ 'promotion_id' => array( 'g:promotion_id', true ),
243
+ 'product_applicability' => array( 'g:product_applicability', true ),
244
+ 'offer_type' => array( 'g:offer_type', true ),
245
+ 'long_title' => array( 'g:long_title', true ),
246
+ 'promotion_effective_dates' => array( 'g:promotion_effective_dates', true ),
247
+ 'redemption_channel' => array( 'g:redemption_channel', true ),
248
+ 'promotion_destination' => array( 'g:promotion_destination', true ),
249
+ 'percent_off' => array( 'g:percent_off', true ),
250
+ 'money_off_amount' => array( 'g:money_off_amount', true ),
251
+ 'get_this_quantity_discounted' => array( 'g:get_this_quantity_discounted', true ),
252
+ 'free_shipping' => array( 'g:free_shipping', true ),
253
+ 'free_gift_value' => array( 'g:free_gift_value', true ),
254
+ 'free_gift_description' => array( 'g:free_gift_description', true ),
255
+ 'promotion_display_dates' => array( 'g:promotion_display_dates', true ),
256
+ 'generic_redemption_code' => array( 'g:generic_redemption_code', true ),
257
+ 'fine_print' => array( 'g:fine_print', true ),
258
+ 'promotion_price' => array( 'g:promotion_price', true ),
259
+ 'coupon_value_type' => array( 'g:coupon_value_type', true ),
260
+ 'limit_quantity' => array( 'g:limit_quantity', true ),
261
+ 'limit_value' => array( 'g:limit_value', true ),
262
+ 'minimum_purchase_amount' => array( 'g:minimum_purchase_amount', true ),
263
+ 'item_id_exclusion' => array( 'g:item_id_exclusion', true ),
264
+ 'product_type_exclusion' => array( 'g:product_type_exclusion', true ),
265
+ 'brand_exclusion' => array( 'g:brand_exclusion', true ),
266
+ 'item_group_id_exclusion' => array( 'g:item_group_id_exclusion', true ),
267
+
268
+ 'cost_of_goods_sold' => array( 'g:cost_of_goods_sold', true ),
269
+ 'sell_on_google_quantity' => array( 'g:sell_on_google_quantity', false ),
270
+ 'min_handling_time' => array( 'g:min_handling_time', false ),
271
+ 'max_handling_time' => array( 'g:max_handling_time', false ),
272
+ 'transit_time_label' => array( 'g:transit_time_label', false ),
273
+ 'return_address_label' => array( 'g:return_address_label', false ),
274
+ 'return_policy_label' => array( 'g:return_policy_label', false ),
275
+ 'store_code' => array( 'g:store_code', false ),
276
+ 'quantity' => array( 'g:quantity', true ),
277
+ 'pickup_method' => array( 'g:pickup_method', true ),
278
+ 'pickup_sla' => array( 'g:pickup_sla', true ),
279
+ 'pickup_link_template' => array( 'g:pickup_link_template', true ),
280
+ 'link_template' => array( 'g:link_template', true ),
281
+ 'mobile_link_template' => array( 'g:mobile_link_template', true ),
282
+ 'mobile_pickup_link_template' => array( 'g:mobile_pickup_link_template', true ),
283
+ 'google_funded_promotion_eligibility' => array(
284
+ 'g:google_funded_promotion_eligibility',
285
+ false,
286
+ ),
287
+ );
288
+ public $facebookXMLAttribute
289
+ = array(
290
+ 'id' => array( 'g:id', false ),
291
+ 'title' => array( 'g:title', true ),
292
+ 'description' => array( 'g:description', true ),
293
+ 'link' => array( 'g:link', true ),
294
+ 'mobile_link' => array( 'g:mobile_link', true ),
295
+ 'product_type' => array( 'g:product_type', true ),
296
+ 'current_category' => array( 'g:google_product_category', true ),
297
+ 'image' => array( 'g:image_link', true ),
298
+ 'images' => array( 'g:additional_image_link', false ),
299
+ 'images_1' => array( 'g:additional_image_link', true ),
300
+ 'images_2' => array( 'g:additional_image_link', true ),
301
+ 'images_3' => array( 'g:additional_image_link', true ),
302
+ 'images_4' => array( 'g:additional_image_link', true ),
303
+ 'images_5' => array( 'g:additional_image_link', true ),
304
+ 'images_6' => array( 'g:additional_image_link', true ),
305
+ 'images_7' => array( 'g:additional_image_link', true ),
306
+ 'images_8' => array( 'g:additional_image_link', true ),
307
+ 'images_9' => array( 'g:additional_image_link', true ),
308
+ 'images_10' => array( 'g:additional_image_link', true ),
309
+ 'condition' => array( 'g:condition', false ),
310
+ 'availability' => array( 'g:availability', false ),
311
+ 'inventory' => array( 'g:inventory', false ),
312
+ 'override' => array( 'g:override', false ),
313
+ 'price' => array( 'g:price', true ),
314
+ 'sale_price' => array( 'g:sale_price', true ),
315
+ 'sale_price_effective_date' => array( 'g:sale_price_effective_date', true ),
316
+ 'brand' => array( 'g:brand', true ),
317
+ 'sku' => array( 'g:mpn', true ),
318
+ 'upc' => array( 'g:gtin', true ),
319
+ 'identifier_exists' => array( 'g:identifier_exists', true ),
320
+ 'item_group_id' => array( 'g:item_group_id', false ),
321
+ 'color' => array( 'g:color', true ),
322
+ 'gender' => array( 'g:gender', true ),
323
+ 'age_group' => array( 'g:age_group', true ),
324
+ 'material' => array( 'g:material', true ),
325
+ 'pattern' => array( 'g:pattern', true ),
326
+ 'size' => array( 'g:size', true ),
327
+ 'size_type' => array( 'g:size_type', true ),
328
+ 'size_system' => array( 'g:size_system', true ),
329
+ 'tax' => array( 'tax', true ),
330
+ 'weight' => array( 'g:shipping_weight', false ),
331
+ 'length' => array( 'g:shipping_length', false ),
332
+ 'width' => array( 'g:shipping_width', false ),
333
+ 'height' => array( 'g:shipping_height', false ),
334
+ 'ships_from_country' => array( 'g:ships_from_country', false ),
335
+ 'shipping_label' => array( 'g:shipping_label', false ),
336
+ 'shipping_country' => array( 'g:shipping_country', false ),
337
+ 'shipping_service' => array( 'g:shipping_service', false ),
338
+ 'shipping_price' => array( 'g:shipping_price', false ),
339
+ 'shipping_region' => array( 'g:shipping_region', false ),
340
+ 'multipack' => array( 'g:multipack', true ),
341
+ 'is_bundle' => array( 'g:is_bundle', true ),
342
+ 'adult' => array( 'g:adult', true ),
343
+ 'adwords_redirect' => array( 'g:adwords_redirect', true ),
344
+ 'custom_label_0' => array( 'g:custom_label_0', true ),
345
+ 'custom_label_1' => array( 'g:custom_label_1', true ),
346
+ 'custom_label_2' => array( 'g:custom_label_2', true ),
347
+ 'custom_label_3' => array( 'g:custom_label_3', true ),
348
+ 'custom_label_4' => array( 'g:custom_label_4', true ),
349
+ 'excluded_destination' => array( 'g:excluded_destination', true ),
350
+ 'expiration_date' => array( 'g:expiration_date', true ),
351
+ 'unit_pricing_measure' => array( 'g:unit_pricing_measure', true ),
352
+ 'unit_pricing_base_measure' => array( 'g:unit_pricing_base_measure', true ),
353
+ 'energy_efficiency_class' => array( 'g:energy_efficiency_class', true ),
354
+ 'loyalty_points' => array( 'g:loyalty_points', true ),
355
+ 'installment' => array( 'g:installment', true ),
356
+ 'promotion_id' => array( 'g:promotion_id', true ),
357
+ 'cost_of_goods_sold' => array( 'g:cost_of_goods_sold', true ),
358
+ 'availability_date' => array( 'g:availability_date', true ),
359
+ 'tax_category' => array( 'g:tax_category', true ),
360
+ 'included_destination' => array( 'g:included_destination', true ),
361
+ 'quantity_to_sell_on_facebook' => array( 'g:quantity_to_sell_on_facebook', true ),
362
+ );
363
  public $facebookCSVTXTAttribute
364
+ = array(
365
+ 'id' => array( 'id', false ),
366
+ 'title' => array( 'title', true ),
367
+ 'description' => array( 'description', true ),
368
+ 'link' => array( 'link', true ),
369
+ 'mobile_link' => array( 'mobile_link', true ),
370
+ 'product_type' => array( 'product type', true ),
371
+ 'current_category' => array( 'google product category', true ),
372
+ 'image' => array( 'image link', true ),
373
+ 'images' => array( 'additional image link', true ),
374
+ 'images_1' => array( 'additional image link', true ),
375
+ 'images_2' => array( 'additional image link', true ),
376
+ 'images_3' => array( 'additional image link', true ),
377
+ 'images_4' => array( 'additional image link', true ),
378
+ 'images_5' => array( 'additional image link', true ),
379
+ 'images_6' => array( 'additional image link', true ),
380
+ 'images_7' => array( 'additional image link', true ),
381
+ 'images_8' => array( 'additional image link', true ),
382
+ 'images_9' => array( 'additional image link', true ),
383
+ 'images_10' => array( 'additional image link', true ),
384
+ 'condition' => array( 'condition', false ),
385
+ 'availability' => array( 'availability', false ),
386
+ 'inventory' => array( 'inventory', false ),
387
+ 'override' => array( 'override', false ),
388
+ 'price' => array( 'price', true ),
389
+ 'sale_price' => array( 'sale price', true ),
390
+ 'sale_price_effective_date' => array( 'sale price effective date', true ),
391
+ 'brand' => array( 'brand', true ),
392
+ 'sku' => array( 'mpn', true ),
393
+ 'upc' => array( 'gtin', true ),
394
+ 'identifier_exists' => array( 'identifier exists', true ),
395
+ 'item_group_id' => array( 'item group id', false ),
396
+ 'color' => array( 'color', true ),
397
+ 'gender' => array( 'gender', true ),
398
+ 'age_group' => array( 'age group', true ),
399
+ 'material' => array( 'material', true ),
400
+ 'pattern' => array( 'pattern', true ),
401
+ 'size' => array( 'size', true ),
402
+ 'size_type' => array( 'size type', true ),
403
+ 'size_system' => array( 'size system', true ),
404
+ 'tax' => array( 'tax', true ),
405
+ 'weight' => array( 'shipping weight', false ),
406
+ 'length' => array( 'shipping length', false ),
407
+ 'width' => array( 'shipping width', false ),
408
+ 'height' => array( 'shipping height', false ),
409
+ 'ships_from_country' => array( 'ships from country', false ),
410
+ 'shipping_label' => array( 'shipping label', false ),
411
+ 'shipping_country' => array( 'shipping country', false ),
412
+ 'shipping_service' => array( 'shipping service', false ),
413
+ 'shipping_price' => array( 'shipping price', false ),
414
+ 'shipping_region' => array( 'shipping region', false ),
415
+ 'multipack' => array( 'multipack', true ),
416
+ 'is_bundle' => array( 'is bundle', true ),
417
+ 'adult' => array( 'adult', true ),
418
+ 'adwords_redirect' => array( 'adwords redirect', true ),
419
+ 'custom_label_0' => array( 'custom label 0', true ),
420
+ 'custom_label_1' => array( 'custom label 1', true ),
421
+ 'custom_label_2' => array( 'custom label 2', true ),
422
+ 'custom_label_3' => array( 'custom label 3', true ),
423
+ 'custom_label_4' => array( 'custom label 4', true ),
424
+ 'excluded_destination' => array( 'excluded destination', true ),
425
+ 'expiration_date' => array( 'expiration date', true ),
426
+ 'unit_pricing_measure' => array( 'unit pricing measure', true ),
427
+ 'unit_pricing_base_measure' => array( 'unit pricing base measure', true ),
428
+ 'energy_efficiency_class' => array( 'energy efficiency class', true ),
429
+ 'loyalty_points' => array( 'loyalty points', true ),
430
+ 'installment' => array( 'installment', true ),
431
+ 'promotion_id' => array( 'promotion id', true ),
432
+ 'cost_of_goods_sold' => array( 'cost of goods sold', true ),
433
+ 'availability_date' => array( 'availability date', true ),
434
+ 'tax_category' => array( 'tax category', true ),
435
+ 'included_destination' => array( 'included destination', true ),
436
+ 'quantity_to_sell_on_facebook' => array( 'quantity_to_sell_on_facebook', true ),
437
+ );
438
  public $pinterestXMLAttribute
439
+ = array(
440
+ 'id' => array( 'g:id', false ),
441
+ 'title' => array( 'title', true ),
442
+ 'description' => array( 'description', true ),
443
+ 'link' => array( 'link', true ),
444
+ 'mobile_link' => array( 'mobile_link', true ),
445
+ 'product_type' => array( 'g:product_type', true ),
446
+ 'current_category' => array( 'g:google_product_category', true ),
447
+ 'image' => array( 'g:image_link', true ),
448
+ 'images' => array( 'g:additional_image_link', false ),
449
+ 'images_1' => array( 'g:additional_image_link', true ),
450
+ 'images_2' => array( 'g:additional_image_link', true ),
451
+ 'images_3' => array( 'g:additional_image_link', true ),
452
+ 'images_4' => array( 'g:additional_image_link', true ),
453
+ 'images_5' => array( 'g:additional_image_link', true ),
454
+ 'images_6' => array( 'g:additional_image_link', true ),
455
+ 'images_7' => array( 'g:additional_image_link', true ),
456
+ 'images_8' => array( 'g:additional_image_link', true ),
457
+ 'images_9' => array( 'g:additional_image_link', true ),
458
+ 'images_10' => array( 'g:additional_image_link', true ),
459
+ 'condition' => array( 'g:condition', false ),
460
+ 'availability' => array( 'g:availability', false ),
461
+ 'availability_date' => array( 'g:availability_date', false ),
462
+ 'inventory' => array( 'g:inventory', false ),
463
+ 'price' => array( 'g:price', true ),
464
+ 'sale_price' => array( 'g:sale_price', true ),
465
+ 'sale_price_effective_date' => array( 'g:sale_price_effective_date', true ),
466
+ 'brand' => array( 'g:brand', true ),
467
+ 'sku' => array( 'g:mpn', true ),
468
+ 'upc' => array( 'g:gtin', true ),
469
+ 'identifier_exists' => array( 'g:identifier_exists', true ),
470
+ 'item_group_id' => array( 'g:item_group_id', false ),
471
+ 'color' => array( 'g:color', true ),
472
+ 'gender' => array( 'g:gender', true ),
473
+ 'age_group' => array( 'g:age_group', true ),
474
+ 'material' => array( 'g:material', true ),
475
+ 'pattern' => array( 'g:pattern', true ),
476
+ 'size' => array( 'g:size', true ),
477
+ 'size_type' => array( 'g:size_type', true ),
478
+ 'size_system' => array( 'g:size_system', true ),
479
+ 'tax' => array( 'tax', true ),
480
+ 'tax_country' => array( 'g:tax_country', true ),
481
+ 'tax_region' => array( 'g:tax_region', true ),
482
+ 'tax_rate' => array( 'g:tax_rate', true ),
483
+ 'tax_ship' => array( 'g:tax_ship', true ),
484
+ 'tax_category' => array( 'g:tax_category', true ),
485
+ 'free_shipping_label' => array( 'g:free_shipping_label', true ),
486
+ 'free_shipping_limit' => array( 'g:free_shipping_limit', true ),
487
+ 'average_review_rating' => array( 'g:average_review_rating', true ),
488
+ 'number_of_ratings' => array( 'g:number_of_ratings', true ),
489
+ 'number_of_reviews' => array( 'g:number_of_reviews', true ),
490
+ 'weight' => array( 'g:shipping_weight', false ),
491
+ 'length' => array( 'g:shipping_length', false ),
492
+ 'width' => array( 'g:shipping_width', false ),
493
+ 'height' => array( 'g:shipping_height', false ),
494
+ 'ships_from_country' => array( 'g:ships_from_country', false ),
495
+ 'shipping_label' => array( 'g:shipping_label', false ),
496
+ 'shipping_country' => array( 'g:shipping_country', false ),
497
+ 'shipping_service' => array( 'g:shipping_service', false ),
498
+ 'shipping_price' => array( 'g:shipping_price', false ),
499
+ 'shipping_region' => array( 'g:shipping_region', false ),
500
+ 'multipack' => array( 'g:multipack', true ),
501
+ 'is_bundle' => array( 'g:is_bundle', true ),
502
+ 'adult' => array( 'g:adult', true ),
503
+ 'adwords_redirect' => array( 'g:adwords_redirect', true ),
504
+ 'custom_label_0' => array( 'g:custom_label_0', true ),
505
+ 'custom_label_1' => array( 'g:custom_label_1', true ),
506
+ 'custom_label_2' => array( 'g:custom_label_2', true ),
507
+ 'custom_label_3' => array( 'g:custom_label_3', true ),
508
+ 'custom_label_4' => array( 'g:custom_label_4', true ),
509
+ 'excluded_destination' => array( 'g:excluded_destination', true ),
510
+ 'included_destination' => array( 'g:included_destination', true ),
511
+ 'expiration_date' => array( 'g:expiration_date', true ),
512
+ 'unit_pricing_measure' => array( 'g:unit_pricing_measure', true ),
513
+ 'unit_pricing_base_measure' => array( 'g:unit_pricing_base_measure', true ),
514
+ 'energy_efficiency_class' => array( 'g:energy_efficiency_class', true ),
515
+ 'loyalty_points' => array( 'g:loyalty_points', true ),
516
+ 'installment' => array( 'g:installment', true ),
517
+ 'promotion_id' => array( 'g:promotion_id', true ),
518
+ 'cost_of_goods_sold' => array( 'g:cost_of_goods_sold', true ),
519
+ );
520
  public $pinterestCSVTXTAttribute
521
  = array(
522
  'id' => array( 'id', false ),
528
  'current_category' => array( 'google_product_category', true ),
529
  'image' => array( 'image_link', true ),
530
  'images' => array( 'additional_image_link', true ),
531
+ 'images_1' => array( 'additional_image_link', true ),
532
+ 'images_2' => array( 'additional_image_link', true ),
533
+ 'images_3' => array( 'additional_image_link', true ),
534
+ 'images_4' => array( 'additional_image_link', true ),
535
+ 'images_5' => array( 'additional_image_link', true ),
536
+ 'images_6' => array( 'additional_image_link', true ),
537
+ 'images_7' => array( 'additional_image_link', true ),
538
+ 'images_8' => array( 'additional_image_link', true ),
539
+ 'images_9' => array( 'additional_image_link', true ),
540
+ 'images_10' => array( 'additional_image_link', true ),
541
  'condition' => array( 'condition', false ),
542
  'availability' => array( 'availability', false ),
543
  'availability_date' => array( 'availability_date', false ),
564
  'tax_rate' => array( 'tax_rate', true ),
565
  'tax_ship' => array( 'tax_ship', true ),
566
  'tax_category' => array( 'tax_category', true ),
567
+ 'free_shipping_label' => array( 'free_shipping_label', true ),
568
+ 'free_shipping_limit' => array( 'free_shipping_limit', true ),
569
+ 'average_review_rating' => array( 'average_review_rating', true ),
570
+ 'number_of_ratings' => array( 'number_of_ratings', true ),
571
+ 'number_of_reviews' => array( 'number_of_reviews', true ),
572
  'weight' => array( 'shipping_weight', false ),
573
  'length' => array( 'shipping_length', false ),
574
  'width' => array( 'shipping_width', false ),
575
  'height' => array( 'shipping_height', false ),
576
+ 'ships_from_country' => array( 'ships_from_country', false ),
577
  'shipping_label' => array( 'shipping_label', false ),
578
  'shipping_country' => array( 'shipping_country', false ),
579
  'shipping_service' => array( 'shipping_service', false ),
600
  'cost_of_goods_sold' => array( 'cost_of_goods_sold', true ),
601
  );
602
  public $skroutzXMLAttributes
603
+ = array(
604
+ 'id' => array( 'id', false ),
605
+ 'name' => array( 'name', true ),
606
+ 'description' => array( 'description', true ),
607
+ 'link' => array( 'link', true ),
608
+ 'image' => array( 'image', true ),
609
+ 'additional_imageurl' => array( 'additional_imageurl', false ),
610
+ 'additional_imageurl_1' => array( 'additional_imageurl', true ),
611
+ 'additional_imageurl_2' => array( 'additional_imageurl', true ),
612
+ 'additional_imageurl_3' => array( 'additional_imageurl', true ),
613
+ 'additional_imageurl_4' => array( 'additional_imageurl', true ),
614
+ 'additional_imageurl_5' => array( 'additional_imageurl', true ),
615
+ 'additional_imageurl_6' => array( 'additional_imageurl', true ),
616
+ 'additional_imageurl_7' => array( 'additional_imageurl', true ),
617
+ 'additional_imageurl_8' => array( 'additional_imageurl', true ),
618
+ 'additional_imageurl_9' => array( 'additional_imageurl', true ),
619
+ 'additional_imageurl_10' => array( 'additional_imageurl', true ),
620
+ 'category' => array( 'category', true ),
621
+ 'price' => array( 'price', false ),
622
+ 'price_with_vat' => array( 'price_with_vat', false ),
623
+ 'manufacturer' => array( 'manufacturer', true ),
624
+ 'mpn' => array( 'mpn', false ),
625
+ 'ean' => array( 'ean', false ),
626
+ 'instock' => array( 'instock', false ),
627
+ 'availability' => array( 'availability', false ),
628
+ 'color' => array( 'color', false ),
629
+ 'size' => array( 'size', false ),
630
+ 'weight' => array( 'weight', false ),
631
+ 'quantity' => array( 'quantity', false ),
632
+ );
633
 
634
  public $gLocalAttributes
635
  = array(
641
  'description' => array( 'description', true ),
642
  );
643
 
644
+
645
  /**
646
  * Google Attribute List
647
  *
648
  * @return array
649
  */
650
  public function googleAttributes() {
651
+ return array(
652
+ '--1' => 'Basic Information',
653
+ 'id' => 'Product Id[id]',
654
+ 'webitemid' => 'Product WebItemId[webitemid]',
655
+ 'region_id' => 'Region Id[region_id]',
656
+ 'title' => 'Product Title[title]',
657
+ 'description' => 'Product Description[description]',
658
+ 'link' => 'Product URL[link]',
659
+ 'canonical_link' => 'Canonical Link[canonical_link]',
660
+ 'mobile_link' => 'Product URL[mobile_link]',
661
+ 'product_type' => 'Product Categories[product_type] ',
662
+ 'current_category' => 'Google Product Category[google_product_category]',
663
+ 'image' => 'Main Image[image_link]',
664
+ 'images' => 'Additional Images [additional_image_link]',
665
+ 'images_1' => 'Additional Image 1 [additional_image_link]',
666
+ 'images_2' => 'Additional Image 2 [additional_image_link]',
667
+ 'images_3' => 'Additional Image 3 [additional_image_link]',
668
+ 'images_4' => 'Additional Image 4 [additional_image_link]',
669
+ 'images_5' => 'Additional Image 5 [additional_image_link]',
670
+ 'images_6' => 'Additional Image 6 [additional_image_link]',
671
+ 'images_7' => 'Additional Image 7 [additional_image_link]',
672
+ 'images_8' => 'Additional Image 8 [additional_image_link]',
673
+ 'images_9' => 'Additional Image 9 [additional_image_link]',
674
+ 'images_10' => 'Additional Image 10 [additional_image_link]',
675
+ 'condition' => 'Condition[condition]',
676
+ '---1' => '',
677
+ '--2' => 'Availability & Price',
678
+ 'availability' => 'Stock Status[availability]',
679
+ 'availability_date' => 'Availability Date[availability_date]',
680
+ 'inventory' => 'Facebook Inventory[inventory]',
681
+ 'override' => 'Facebook Override[override]',
682
+ 'price' => 'Regular Price[price]',
683
+ 'sale_price' => 'Sale Price[sale_price]',
684
+ 'cost_of_goods_sold' => 'Cost of Goods Sold[cost_of_goods_sold]',
685
+ 'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
686
+ '---2' => '',
687
+ '--3' => 'Unique Product Identifiers',
688
+ 'brand' => 'Manufacturer[brand]',
689
+ 'upc' => 'GTIN[gtin]',
690
+ 'sku' => 'MPN[mpn]',
691
+ 'identifier_exists' => 'Identifier Exist[identifier_exists]',
692
+ '---3' => '',
693
+ '--4' => 'Detailed Product Attributes',
694
+ 'item_group_id' => 'Item Group Id[item_group_id]',
695
+ 'external_seller_id' => 'External seller ID[external_seller_id]',
696
+ 'color' => 'Color[color]',
697
+ 'gender' => 'Gender[gender]',
698
+ 'age_group' => 'Age Group[age_group]',
699
+ 'material' => 'Material[material]',
700
+ 'pattern' => 'Pattern[pattern]',
701
+ 'size' => 'Size of the item[size]',
702
+ 'size_type' => 'Size Type[size_type]',
703
+ 'size_system' => 'Size System[size_system]',
704
+ 'product_length' => 'Product Length[product_length]',
705
+ 'product_width' => 'Product Width[product_width]',
706
+ 'product_height' => 'Product Height[product_height]',
707
+ 'product_weight' => 'Product Weight[product_weight]',
708
+ 'product_highlight_1' => 'Product Highlight 1[product_highlight]',
709
+ 'product_highlight_2' => 'Product Highlight 2[product_highlight]',
710
+ 'product_highlight_3' => 'Product Highlight 3[product_highlight]',
711
+ 'product_highlight_4' => 'Product Highlight 4[product_highlight]',
712
+ 'product_highlight_5' => 'Product Highlight 5[product_highlight]',
713
+ 'product_highlight_6' => 'Product Highlight 6[product_highlight]',
714
+ 'product_highlight_7' => 'Product Highlight 7[product_highlight]',
715
+ 'product_highlight_8' => 'Product Highlight 8[product_highlight]',
716
+ 'product_highlight_9' => 'Product Highlight 9[product_highlight]',
717
+ 'product_highlight_10' => 'Product Highlight 10[product_highlight]',
718
+ 'section_name' => 'Section Name (Product Detail)[section_name]',
719
+ 'attribute_name' => 'Attribute Name (Product Detail)[attribute_name]',
720
+ 'attribute_value' => 'Attribute Value (Product Detail)[attribute_value]',
721
+ '---4' => '',
722
+ '--5' => 'Tax & Shipping',
723
+ 'tax' => 'Tax[tax]',
724
+ 'tax_country' => 'Tax Country[tax_country]',
725
+ 'tax_region' => 'Tax Region[tax_region]',
726
+ 'tax_rate' => 'Tax Rate[tax_rate]',
727
+ 'tax_ship' => 'Tax Ship[tax_ship]',
728
+ 'tax_category' => 'Tax[tax_category]',
729
+ 'shipping' => 'Shipping',
730
+ 'min_handling_time' => 'Min Handling Time[min_handling_time]',
731
+ 'max_handling_time' => 'Max Handling Time[max_handling_time]',
732
+ 'min_transit_time' => 'Min Transit Time[min_transit_time]',
733
+ 'max_transit_time' => 'Max Transit Time[max_transit_time]',
734
+ 'weight' => 'Shipping Weight[shipping_weight]',
735
+ 'length' => 'Shipping Length[shipping_length]',
736
+ 'width' => 'Shipping Width[shipping_width]',
737
+ 'height' => 'Shipping Height[shipping_height]',
738
+ 'ships_from_country' => 'Shipping Country[ships_from_country]',
739
+ 'shipping_label' => 'Shipping Label[shipping_label]',
740
+ 'material_1' => 'The primary material',
741
+ 'material_2' => 'The secondary material',
742
+ 'material_3' => 'The tertiary material',
743
+ '---5' => '',
744
+ '--6' => 'Product Combinations',
745
+ 'multipack' => 'Multipack[multipack]',
746
+ 'is_bundle' => 'Is Bundle[is_bundle]',
747
+ '---6' => '',
748
+ '--7' => 'Adult Products',
749
+ 'adult' => 'Adult[adult]',
750
+ '---7' => '',
751
+ '--8' => 'Ads Attributes',
752
+ 'ads_redirect' => 'Ads Redirect[ads_redirect]',
753
+ '---8' => '',
754
+ '--9' => 'Custom Label Attributes',
755
+ 'custom_label_0' => 'Custom label 0 [custom_label_0]',
756
+ 'custom_label_1' => 'Custom label 1 [custom_label_1]',
757
+ 'custom_label_2' => 'Custom label 2 [custom_label_2]',
758
+ 'custom_label_3' => 'Custom label 3 [custom_label_3]',
759
+ 'custom_label_4' => 'Custom label 4 [custom_label_4]',
760
+ '---9' => '',
761
+ '--10' => 'Additional Attributes',
762
+ 'excluded_destination' => 'Excluded Destination[excluded_destination]',
763
+ 'shopping_ads_excluded_country' => 'Shopping Ads Excluded Country[shopping_ads_excluded_country]',
764
+ 'included_destination' => 'Included Destination[included_destination]',
765
+ 'expiration_date' => 'Expiration Date [expiration_date]',
766
+ 'transit_time_label' => 'Transit Time [transit_time_label]',
767
+ '---10' => '',
768
+ '--11' => 'Unit Prices (EU Countries and Switzerland Only)',
769
+ 'unit_pricing_measure' => 'Unit Pricing Measure[unit_pricing_measure]',
770
+ 'unit_pricing_base_measure' => 'Unit Pricing Base Measure[unit_pricing_base_measure]',
771
+ 'installment_months' => 'Installment Months[months]',
772
+ 'installment_amount' => 'Installment Amount[amount]',
773
+ 'subscription_period' => 'Subscription Period[period]',
774
+ 'subscription_period_length' => 'Subscription Period Length[period_length]',
775
+ 'subscription_amount' => 'Subscription Amount[amount]',
776
+ '---11' => '',
777
+ '--12' => 'Energy Labels',
778
+ 'energy_efficiency_class' => 'Energy Efficiency Class[energy_efficiency_class]',
779
+ 'min_energy_efficiency_class' => 'Min Energy Efficiency Class[energy_efficiency_class]',
780
+ 'max_energy_efficiency_class' => 'Max Energy Efficiency Class[energy_efficiency_class]',
781
+ '---12' => '',
782
+ '--13' => 'Loyalty Points (Japan Only)',
783
+ 'loyalty_points' => 'loyalty_points[loyalty_points]',
784
+ '---13' => '',
785
+ '--14' => 'Multiple Installments (Brazil Only)',
786
+ 'installment' => 'Installment[installment]',
787
+ '---14' => '',
788
+ '--15' => 'Pinterest Catalog Attributes',
789
+ 'free_shipping_label' => 'Free Shipping Label[free_shipping_label]',
790
+ 'free_shipping_limit' => 'Free Shipping Limit[free_shipping_limit]',
791
+ 'average_review_rating' => 'Average Review Rating[average_review_rating]',
792
+ 'number_of_ratings' => 'Number of Ratings[number_of_ratings]',
793
+ 'number_of_reviews' => 'Number of Reviews[number_of_reviews]',
794
+ '---15' => '',
795
+ '--16' => 'Merchant Promotions Attributes',
796
+ 'promotion_id' => 'Promotion Id[promotion_id]',
797
+ 'product_applicability' => 'Product Applicability[product_applicability]',
798
+ 'offer_type' => 'Offer Type[offer_type]',
799
+ 'long_title' => 'Long Title[long_title]',
800
+ 'promotion_effective_dates' => 'Promotion Effective Dates[promotion_effective_dates]',
801
+ 'redemption_channel' => 'Redemption Channel[redemption_channel]',
802
+ 'promotion_destination' => 'Promotion Destination[promotion_destination]',
803
+ 'percent_off' => 'Percent Off[percent_off]',
804
+ 'money_off_amount' => 'Money Off Amount[money_off_amount]',
805
+ 'get_this_quantity_discounted' => 'Get Quantity Discounted[get_this_quantity_discounted]',
806
+ 'free_shipping' => 'Free Shipping[free_shipping]',
807
+ 'free_gift_value' => 'Free Gift Value[free_gift_value]',
808
+ 'free_gift_description' => 'Free Gift Description[free_gift_description]',
809
+ 'free_gift_item_id' => 'Free Gift Item ID[free_gift_item_id]',
810
+ 'promotion_display_dates' => 'Promotion Display Dates[promotion_display_dates]',
811
+ 'generic_redemption_code' => 'Generic Redemption Code[generic_redemption_code]',
812
+ 'fine_print' => 'Fine Print[fine_print]',
813
+ 'promotion_price' => 'Promotion Price[promotion_price]',
814
+ 'coupon_value_type' => 'Coupon Value Type[coupon_value_type]',
815
+ 'limit_quantity' => 'Limit Quantity[limit_quantity]',
816
+ 'limit_value' => 'Limit Value[limit_value]',
817
+ 'minimum_purchase_amount' => 'Minimum Purchase Amount[minimum_purchase_amount]',
818
+ 'item_id_exclusion' => 'Item ID Exclusion[item_id_exclusion]',
819
+ 'product_type_exclusion' => 'Product Type Exclusion[product_type_exclusion]',
820
+ 'brand_exclusion' => 'Brand Exclusion[brand_exclusion]',
821
+ 'item_group_id_exclusion' => 'Item Group Exclusion[item_group_id_exclusion]',
822
+ '---16' => '',
823
+ '--17' => 'Shopping Action Attributes',
824
+ 'sell_on_google_quantity' => 'Number of Product Sold On Google [sell_on_google_quantity]',
825
+ 'return_address_label' => 'Return Address [return_address_label]',
826
+ 'return_policy_label' => 'Return Policy [return_policy_label]',
827
+ 'google_funded_promotion_eligibility' => 'Google Funded Promotion Eligibility [google_funded_promotion_eligibility]',
828
+ '---17' => '',
829
+ '--18' => 'Local Inventory / Product Inventory',
830
+ 'store_code' => 'Store Code [store_code]',
831
+ 'quantity' => 'Quantity [quantity]',
832
+ 'pickup_method' => 'Pickup Method [pickup_method]',
833
+ 'pickup_sla' => 'Pickup SLA [pickup_sla]',
834
+ 'pickup_link_template' => 'Pickup Link Template [pickup_link_template]',
835
+ 'link_template' => 'Link Template [link_template]',
836
+ 'mobile_link_template' => 'Mobile Link Template [mobile_link_template]',
837
+ 'mobile_pickup_link_template' => 'Mobile Pickup Link Template [mobile_pickup_link_template]',
838
+ '---18' => '',
839
+ );
840
  }
841
 
842
+ /**
843
+ * Facebook Attribute List
844
+ *
845
+ * @return array
846
+ */
847
+ public function facebookAttributes() {
848
+ return array(
849
+ '--1' => 'Basic Information',
850
+ 'id' => 'Product Id[id]',
851
+ 'title' => 'Product Title[title]',
852
+ 'description' => 'Product Description[description]',
853
+ 'link' => 'Product URL[link]',
854
+ 'mobile_link' => 'Product URL[mobile_link]',
855
+ 'product_type' => 'Product Categories[product_type] ',
856
+ 'fb_product_category' => 'Facebook Product Category[fb_product_category]',
857
+ 'current_category' => 'Google Product Category[google_product_category]',
858
+ 'image' => 'Main Image[image_link]',
859
+ 'images' => 'Additional Images [additional_image_link]',
860
+ 'images_1' => 'Additional Image 1 [additional_image_link]',
861
+ 'images_2' => 'Additional Image 2 [additional_image_link]',
862
+ 'images_3' => 'Additional Image 3 [additional_image_link]',
863
+ 'images_4' => 'Additional Image 4 [additional_image_link]',
864
+ 'images_5' => 'Additional Image 5 [additional_image_link]',
865
+ 'images_6' => 'Additional Image 6 [additional_image_link]',
866
+ 'images_7' => 'Additional Image 7 [additional_image_link]',
867
+ 'images_8' => 'Additional Image 8 [additional_image_link]',
868
+ 'images_9' => 'Additional Image 9 [additional_image_link]',
869
+ 'images_10' => 'Additional Image 10 [additional_image_link]',
870
+ 'condition' => 'Condition[condition]',
871
+ '---1' => '',
872
+ '--2' => 'Availability & Price',
873
+ 'availability' => 'Stock Status[availability]',
874
+ 'availability_date' => 'Availability Date[availability_date]',
875
+ 'price' => 'Regular Price[price]',
876
+ 'sale_price' => 'Sale Price[sale_price]',
877
+ 'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
878
+ '---2' => '',
879
+ '--3' => 'Unique Product Identifiers',
880
+ 'brand' => 'Manufacturer[brand]',
881
+ 'gtin' => 'GTIN[gtin]',
882
+ 'mpn' => 'MPN[mpn]',
883
+ 'identifier_exists' => 'Identifier Exist[identifier_exists]',
884
+ '---3' => '',
885
+ '--4' => 'Detailed Product Attributes',
886
+ 'item_group_id' => 'Item Group Id[item_group_id]',
887
+ 'color' => 'Color[color]',
888
+ 'gender' => 'Gender[gender]',
889
+ 'age_group' => 'Age Group[age_group]',
890
+ 'material' => 'Material[material]',
891
+ 'pattern' => 'Pattern[pattern]',
892
+ 'size' => 'Size of the item[size]',
893
+ '---4' => '',
894
+ '--5' => 'Tax & Shipping',
895
+ 'tax' => 'Tax[tax]',
896
+ 'tax_country' => 'Tax Country[tax_country]',
897
+ 'tax_region' => 'Tax Region[tax_region]',
898
+ 'tax_rate' => 'Tax Rate[tax_rate]',
899
+ 'tax_ship' => 'Tax Ship[tax_ship]',
900
+ 'tax_category' => 'Tax[tax_category]',
901
+ 'shipping' => 'Shipping',
902
+ 'shipping_weight' => 'Shipping Weight[shipping_weight]',
903
+ '---5' => '',
904
+ '--6' => 'Custom Label Attributes',
905
+ 'custom_label_0' => 'Custom label 0 [custom_label_0]',
906
+ 'custom_label_1' => 'Custom label 1 [custom_label_1]',
907
+ 'custom_label_2' => 'Custom label 2 [custom_label_2]',
908
+ 'custom_label_3' => 'Custom label 3 [custom_label_3]',
909
+ 'custom_label_4' => 'Custom label 4 [custom_label_4]',
910
+ '---6' => '',
911
+ '--7' => 'Additional Attributes',
912
+ 'inventory' => 'Facebook Inventory[inventory]',
913
+ 'override' => 'Facebook Override[override]',
914
+ 'status' => 'Status [status]',
915
+ 'video' => 'Video [video]',
916
+ 'unit_price_value' => 'Unit Price > Value [unit_price_value]',
917
+ 'unit_price_currency' => 'Unit Price > Currency [unit_price_currency]',
918
+ 'unit_price_unit' => 'Unit Price > Unit [unit_price_unit]',
919
+ 'quantity_to_sell_on_facebook' => 'Quantity to Sell on Facebook [quantity_to_sell_on_facebook]',
920
+ 'commerce_tax_category' => 'Commerce Tax Category [commerce_tax_category]',
921
+ 'expiration_date' => 'Expiration Date[expiration_date]',
922
+ 'marked_for_product_launch' => 'Marked for Product Launce [marked_for_product_launch]',
923
+ 'rich_text_description' => 'Rich Text Description [rich_text_description]',
924
+ 'visibility' => 'Visibility [visibility]',
925
+ 'additional_variant_label' => 'Additional Variant Attribute > Label [Variant Label]',
926
+ 'additional_variant_value' => 'Additional Variant Attribute > Value [Variant Value]',
927
+ 'applink' => 'Applink [applink]',
928
+ 'origin_country' => 'Origin Country [origin_country]',
929
+ 'importer_name' => 'Importer Name [importer_name]',
930
+ 'importer_address' => 'Importer Address [importer_address]',
931
+ 'manufacturer_info' => 'Manufacturer Info [manufacturer_info]',
932
+ 'return_policy_info' => 'Return Policy Info [return_policy_info]',
933
+ '---7' => '',
934
+ );
935
+ }
936
 
937
+ /**
938
+ * Google Dynamic Ads Attribute List
939
+ *
940
+ * @return array
941
+ */
942
+ public function google_dynamic_adsAttributes() {
943
 
944
+ return array(
945
+ '--1' => 'Basic Information',
946
+ 'Page URL' => 'Page URL[Page URL]',
947
+ 'Custom Label' => 'Custom Label [Custom Label]',
948
+ '---1' => '',
949
 
950
+ );
951
+ }
952
 
953
+ /**
954
+ * Bing Attribute List
955
+ *
956
+ * @return array
957
+ */
958
+ public function bingAttributes() {
959
 
960
+ return array(
961
+ '--1' => 'Basic Information',
962
+ 'id' => 'Product Id[id]',
963
+ 'title' => 'Product Title[title]',
964
+ 'link' => 'Product URL[link]',
965
+ 'price' => 'Product Price[price]',
966
+ 'description' => 'Product Description[description]',
967
+ 'image_link' => 'Image[image_link]',
968
+ 'shipping' => 'Shipping [shipping]',
969
+ 'shipping_country' => 'Shipping Country[shipping]',
970
+ 'shipping_service' => 'Shipping Service[shipping]',
971
+ 'shipping_price' => 'Shipping Price[shipping]',
972
+ 'gtin' => 'GTIN[gtin]',
973
+ 'mpn' => 'MPN[mpn]',
974
+ 'brand' => 'Brand[brand]',
975
+ 'identifier_exists' => 'Identifier Exists[identifier_exists]',
976
+ '---1' => '',
977
+ '--2' => 'Apparel Products',
978
+ 'gender' => 'Gender[gender]',
979
+ 'age_group' => 'Age Group[age_group]',
980
+ 'color' => 'Color[color]',
981
+ 'size' => 'Size[size]',
982
+ 'size_type' => 'Size Type[size_type]',
983
+ 'size_system' => 'Size System[size_system]',
984
+ '---2' => '',
985
+ '--3' => 'Product Variants',
986
+ 'item_group_id' => 'Item Group ID[item_group_id]',
987
+ 'material' => 'Material[material]',
988
+ 'pattern' => 'Pattern[pattern]',
989
+ 'additional_image_link' => 'Additional Image Link[additional_image_link]',
990
+ '---3' => '',
991
+ '--4' => 'Other Information',
992
+ 'adult' => 'Adult[adult]',
993
+ 'availability' => 'Availability[availability]',
994
+ 'product_category' => 'Product Category[product_category]',
995
+ 'condition' => 'Condition[condition]',
996
+ 'expiration_date' => 'Expiration Date[expiration_date]',
997
+ 'multipack' => 'Multipack[multipack]',
998
+ 'product_type' => 'Product Type[product_type]',
999
+ 'mobile_link' => 'Mobile Link[mobile_link]',
1000
+ 'unit_pricing_measure' => 'Unit Pricing Measure[unit_pricing_measure]',
1001
+ 'unit_pricing_base_measure' => 'Unit Pricing Base Measure[unit_pricing_base_measure]',
1002
+ 'installment' => 'Installment[installment]',
1003
+ 'energy_efficiency_class' => 'Energy Efficiency Class[energy_efficiency_class]',
1004
+ 'min_energy_efficiency_class' => 'Min Energy Efficiency Class[min_energy_efficiency_class]',
1005
+ 'max_energy_efficiency_class' => 'Max Energy Efficiency Class[max_energy_efficiency_class]',
1006
+ 'seller_name' => 'Seller Name[seller_name]',
1007
+ 'ads_redirect' => 'Ads Redirect[ads_redirect]',
1008
+ 'custom_label_0' => 'Custom Label 0[custom_label_0]',
1009
+ 'custom_label_1' => 'Custom Label 1[custom_label_1]',
1010
+ 'custom_label_2' => 'Custom Label 2[custom_label_2]',
1011
+ 'custom_label_3' => 'Custom Label 3[custom_label_3]',
1012
+ 'custom_label_4' => 'Custom Label 4[custom_label_4]',
1013
+ '---4' => '',
1014
+ '--5' => 'Sales & Promotions',
1015
+ 'sale_price' => 'Sale Price[sale_price]',
1016
+ 'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
1017
+ 'promotion_ID' => 'Promotion ID[promotion_ID]',
1018
+ '---5' => '',
1019
+ '--6' => 'Local Product Inventory',
1020
+ 'store_code' => 'Store Code[store_code]',
1021
+ 'itemid' => 'Item ID[itemid]',
1022
+ 'quantity' => 'Quantity[quantity]',
1023
+ 'weeks_of_supply' => 'Weeks Of Supply[weeks_of_supply]',
1024
+ 'pick_up_method' => 'Pick Up Method[pick_up_method]',
1025
+ 'pick_up_sla' => 'Pick Up SLA[pick_up_sla]',
1026
+ '---6' => '',
1027
+ );
1028
+ }
1029
 
1030
+ /**
1031
+ * Pinterest RSS Board Attribute List
1032
+ *
1033
+ * @return array
1034
+ */
1035
+ public function pinterest_rssAttributes() {
1036
 
1037
+ return array(
1038
+ '--1' => 'Basic Information',
1039
+ 'title' => 'Product Title[title]',
1040
+ 'description' => 'Product Description[description]',
1041
+ 'link' => 'Product URL[link]',
1042
+ 'image' => 'Main Image[image]',
1043
+ 'pubDate' => 'Publish Date[pubDate]',
1044
+ 'guid' => 'GUID[guid]',
1045
+ '---1' => '',
1046
 
1047
+ );
1048
+ }
1049
 
1050
+ /**
1051
+ * Google Product Review Attribute List
1052
+ *
1053
+ * @return array
1054
+ */
1055
+ public function googlereviewAttributes() {
1056
+ return array(
1057
+ 'product_name' => 'Product Title [product_name]',
1058
+ 'product_url' => 'Product URL [product_url]',
1059
+ 'review_temp_gtin' => 'GTIN [gtin]',
1060
+ 'review_temp_mpn' => 'MPN [mpn]',
1061
+ 'review_temp_sku' => 'SKU [sku]',
1062
+ 'review_temp_brand' => 'Brand [brand]',
1063
+ );
1064
+ }
1065
 
1066
+ /**
1067
+ * Wine Searcher Attribute List
1068
+ *
1069
+ * @return array
1070
+ */
1071
+ public function winesearcherAttributes() {
1072
+ return array(
1073
+ '--1' => 'Basic Information',
1074
+ 'name' => 'Product Title[name]',
1075
+ 'description' => 'Product description[description]',
1076
+ 'vintage' => 'Vintage[vintage]',
1077
+ 'link' => 'Product URL[link]',
1078
+ 'unit-size' => 'Unit Size[unit-size]',
1079
+ 'price' => 'Price[price]',
1080
+ 'url' => 'URL[url] ',
1081
+ 'min-order' => 'Minimum Order[min-order]',
1082
+ 'tax' => 'Tax[tax]',
1083
+ 'offer-type' => 'Offer Type[offer-type]',
1084
+ 'delivery-time' => 'Delivery Time[delivery-time]',
1085
+ 'stock-level' => 'Stock Level[stock-level]',
1086
+ );
1087
+ }
1088
 
1089
+ /**
1090
+ * TikTok Attribute List
1091
+ *
1092
+ * @since 4.4.31
1093
+ * @author Nazrul Islam Nayan
1094
+ * @return array
1095
+ */
1096
+ public function tiktokAttributes() {
1097
+ return array(
1098
+ '--1' => 'Basic Information',
1099
+ 'sku_id' => 'SKU ID[id]',
1100
+ 'title' => 'Product Title[title]',
1101
+ 'description' => 'Product description[description]',
1102
+ 'availability' => 'Availability[availability]',
1103
+ 'condition' => 'Condition[condition]',
1104
+ 'price' => 'Price[price]',
1105
+ 'sale_price' => 'Sale Price[sale_price]',
1106
+ 'shipping' => 'Shipping[shipping]',
1107
+ 'tax ' => 'Tax[tax]',
1108
+ 'shipping_weight' => 'Shipping Weight[shipping_weight]',
1109
+ 'link' => 'Product URL[link]',
1110
+ 'image_link' => 'Product Image[image_link]',
1111
+ 'additional_image_link' => 'Additional Image [additional_image_link]',
1112
+ 'item_group_id' => 'Parent ID[item_group_id]',
1113
+ 'brand' => 'Product Brand[brand]',
1114
+ 'gtin' => 'Gtin[gtin]',
1115
+ 'mpn' => 'MPN[mpn]',
1116
+ 'google_product_category' => 'Google Product Category[google_product_category]',
1117
+ 'video_link' => 'Video Link[video_link]',
1118
+ 'age_group' => 'Age Group[age_group]',
1119
+ 'color' => 'Color[color]',
1120
+ 'size' => 'Size[size]',
1121
+ 'gender' => 'Gender[gender]',
1122
+ 'material' => 'Material[material]',
1123
+ 'pattern' => 'Pattern[pattern]',
1124
+ 'product_type' => 'Product Type[product_type]',
1125
+ 'ios_url' => 'IOS URL[ios_url]',
1126
+ 'ios_app_store_id' => 'IOS App Store ID[ios_app_store_id]',
1127
+ 'ios_app_name' => 'IOS App Name[ios_app_name]',
1128
+ 'iPhone_url' => 'iPhone URL[iPhone_url]',
1129
+ 'iPhone_app_store_id' => 'iPhone App Store ID[iPhone_app_store_id]',
1130
+ 'iPhone_app_name' => 'iPhone App Name[iPhone_app_name]',
1131
+ 'iPad_url' => 'iPad URL[iPad_url]',
1132
+ 'iPad_app_store_id' => 'iPad App Store ID[iPad_app_store_id]',
1133
+ 'iPad_app_name' => 'iPad App Name[iPad_app_name]',
1134
+ 'android_url' => 'Android URL[android_url]',
1135
+ 'android_package' => 'Android Package[android_package]',
1136
+ 'android_app_name' => 'Android App Name[android_app_name]',
1137
+ 'custom_label_0' => 'custom_label_0[custom_label_0]',
1138
+ 'custom_label_1' => 'custom_label_1[custom_label_1]',
1139
+ 'custom_label_2' => 'custom_label_2[custom_label_2]',
1140
+ 'custom_label_3' => 'custom_label_3[custom_label_3]',
1141
+ 'custom_label_4' => 'custom_label_4[custom_label_4]',
1142
+ 'merchant_brand' => 'Merchant Brand[merchant_brand]',
1143
+ 'productHisEval' => 'Purchase Count:FeedBack[productHisEval]',
1144
+ 'sale_price_effective_date' => 'Sale Price Effective Date[sale_price_effective_date]',
1145
+ );
1146
+ }
1147
 
1148
+ /**
1149
+ * Modalova Attribute List
1150
+ *
1151
+ * @since 5.2.10
1152
+ * @author Nazrul Islam Nayan
1153
+ * @return array
1154
+ */
1155
+ public function modalovaAttributes() {
1156
+ return array(
1157
+ '--1' => 'Basic Information',
1158
+ 'id' => 'Product ID[id]',
1159
+ 'title' => 'Product Title[title]',
1160
+ 'slug' => 'Product URL Slug[slug]',
1161
+ 'description' => 'Product description[description]',
1162
+ 'short_description' => 'Product Short description[short_description]',
1163
+ 'link' => 'Product URL[link]',
1164
+ 'sku' => 'SKU[sku]',
1165
+ 'brand' => 'Product Brand[brand]',
1166
+ 'main_image' => 'Product Image[main_image]',
1167
+ 'featured_image' => 'Featured Image[featured_image]',
1168
+ 'images' => 'Images[images]',
1169
+ 'price' => 'Price[price]',
1170
+ 'sale_price' => 'Sale Price[sale_price]',
1171
+ 'availability' => 'Availability[availability]',
1172
+ 'tags' => 'Tags[tags]',
1173
+ 'color' => 'Color[color]',
1174
+ 'size' => 'Size[size]',
1175
+ 'quantity' => 'Quantity[quantity]',
1176
+ 'parent_id' => 'Parent ID[parent_id]',
1177
+ 'condition' => 'Condition[condition]',
1178
+ 'category' => 'Category[category]',
1179
+ 'parent_category' => 'Parent Category[parent_category]',
1180
+ 'child_category' => 'Child Category[child_category]',
1181
+ 'category_path' => 'Category Path[category_path]',
1182
+ 'created_at' => 'Created At[created_at]',
1183
+ 'updated_at' => 'Updated At[updated_at]',
1184
+ );
1185
+ }
1186
 
1187
+ /**
1188
+ * Catch.com.au Attribute List
1189
+ *
1190
+ * @return array
1191
+ */
1192
+ public function catchdotcomAttributes() {
1193
+ return array(
1194
+ 'product-id' => 'Product ID [product-id]',
1195
+ 'title' => 'Product title [title]',
1196
+ 'product-description' => 'Product Description[product-description]',
1197
+ 'product-id-type' => 'Product ID Type[product-id-type]',
1198
+ 'internal-sku' => 'Internal SKU[internal-sku]',
1199
+ 'category' => 'Product Category[category]',
1200
+ 'image-1' => 'Image 1 [image-1]',
1201
+ 'images-2' => 'Image 2 [image-2]',
1202
+ 'images-3' => 'Image 3 [image-3]',
1203
+ 'images-4' => 'Image 4 [image-4]',
1204
+ 'images-5' => 'Image 5 [image-5]',
1205
+ 'images-6' => 'Image 6 [image-6]',
1206
+ 'image-size-chart' => 'Image Size Chart[image-size-chart]',
1207
+ 'brand' => 'Brand[brand]',
1208
+ 'adult' => 'Adult[adult]',
1209
+ 'keywords' => 'Keywords[keywords]',
1210
+ 'sku' => 'Offer SKU[sku]',
1211
+ 'inventory' => 'Facebook Inventory[inventory]',
1212
+ 'override' => 'Facebook Override[override]',
1213
+ 'price' => 'Regular Price[price]',
1214
+ 'quantity' => 'Offer Quantity[quantity]',
1215
+ 'min-quantity-alert' => 'Minimum Quantity Alert[min-quantity-alert]',
1216
+ 'state' => 'Offer State[state]',
1217
+ 'logistic-class' => 'Logistic Class[logistic-class]',
1218
+ 'discount-price' => 'Discount Price[discount-price]',
1219
+ 'leadtime-to-ship' => 'Lead Time to Ship[leadtime-to-ship]',
1220
+ 'club-catch-eligible' => 'Club Catch eligible[club-catch-eligible]',
1221
+ 'tax-au' => 'GST %[tax-au]',
1222
+ );
1223
+ }
1224
 
1225
+ /**
1226
+ * Fashionchick.nl Attribute List
1227
+ *
1228
+ * @return array
1229
+ */
1230
+ public function fashionchickAttributes() {
1231
+ return array(
1232
+ 'Product ID' => 'Product ID [Product ID]',
1233
+ 'Titel' => 'Product Titel [Titel]',
1234
+ 'Omschrijving' => 'Product Description [Omschrijving]',
1235
+ 'Url' => 'Product URL [Url]',
1236
+ 'Image' => 'Image [Image]',
1237
+ 'Category' => 'Product Category [Category (pad)]',
1238
+ 'Prijs' => 'Regular Price [Prijs]',
1239
+ 'Merk' => 'Brand [Merk]',
1240
+ 'Cluster ID' => 'Cluster ID [Cluster ID]',
1241
+ 'internal-sku' => 'Internal SKU [internal-sku]',
1242
+ 'sku' => 'Offer SKU[sku]',
1243
+ 'Delivery Time' => 'Delivery Time [Delivery Time]',
1244
+ 'Shipping Costs' => 'Shipping Costs [Shipping Costs]',
1245
+ 'Old price' => 'Old price [Old price]',
1246
+ 'Product maten' => 'Product sizes [Product maten]',
1247
+ 'Stock' => 'Stock [Stock]',
1248
+ 'Voorraad aantal' => 'Stock quantity [Voorraad aantal]',
1249
+ 'Materiaal' => 'Material [Materiaal]',
1250
+ 'Geslacht' => 'Gender [Geslacht]',
1251
+ 'Kleur' => 'Color [Kleur]',
1252
+ );
1253
+ }
1254
+
1255
+ /**
1256
+ * GoedGeplaatst.nl Attribute List
1257
+ *
1258
+ * @return array
1259
+ */
1260
+ public function goedgeplaatstAttributes() {
1261
+ return array(
1262
+ 'title' => 'Product Title [title]',
1263
+ 'description' => 'Product Description [description]',
1264
+ 'type' => 'Product Type [type]',
1265
+ 'price' => 'Price [price]',
1266
+ 'images' => 'Images [images]',
1267
+ 'categoryId' => 'Category ID [categoryId]',
1268
+ 'externalAdId' => 'External Ad ID [externalAdId]',
1269
+ 'priceRetail' => 'Retail Price [priceRetail]',
1270
+ 'priceOther' => 'Other Price [priceOther]',
1271
+ 'bid' => 'Bid [bid]',
1272
+ 'showContact' => 'Show Contact [showContact]',
1273
+ 'website' => 'Website [website]',
1274
+ 'name' => 'Name [name]',
1275
+ 'phone' => 'Phone [phone]',
1276
+ 'address' => 'Address [address]',
1277
+ 'houseNumber' => 'House Number [houseNumber]',
1278
+ 'postalCode' => 'Postal Code [postalCode]',
1279
+ 'city' => 'City [city]',
1280
+ 'country' => 'Country [country]',
1281
+ 'autoReplace' => 'Auto Replace [autoReplace]',
1282
+ 'directForwardToMp' => 'Direct Forward Mp [directForwardToMp]',
1283
+ 'priceBidMinimal' => 'Price Bid Minimal [priceBidMinimal]',
1284
+ 'priceBidAsking' => 'Price Bid Asking [priceBidAsking]',
1285
+ );
1286
+ }
1287
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1288
  /**
1289
  * Skroutz Attribute List
1290
  *
1291
  * @return array
1292
  */
1293
  public function skroutzAttributes() {
1294
+ return array(
1295
+ '--1' => 'Required Information',
1296
+ 'id' => 'Unique ID',
1297
+ 'name' => 'Product Title',
1298
+ 'description' => 'Product Description',
1299
+ 'link' => 'Product Link',
1300
+ 'image' => 'Image Link',
1301
+ 'category' => 'Category Name',
1302
+ 'price' => 'Price',
1303
+ 'price_with_vat' => 'Price With Tax',
1304
+ 'manufacturer' => 'Manufacturer',
1305
+ 'mpn' => 'MPN / ISBN',
1306
+ 'availability' => 'Availability',
1307
+ '---1' => '',
1308
+ 'instock' => 'Stock Status [InStock]',
1309
+ 'ean' => 'EAN / Barcode',
1310
+ 'additional_imageurl' => 'Additional Image Link',
1311
+ 'additional_imageurl_1' => 'Additional Image Link 1',
1312
+ 'additional_imageurl_2' => 'Additional Image Link 2',
1313
+ 'additional_imageurl_3' => 'Additional Image Link 3',
1314
+ 'additional_imageurl_4' => 'Additional Image Link 4',
1315
+ 'additional_imageurl_5' => 'Additional Image Link 5',
1316
+ 'additional_imageurl_6' => 'Additional Image Link 6',
1317
+ 'additional_imageurl_7' => 'Additional Image Link 7',
1318
+ 'additional_imageurl_8' => 'Additional Image Link 8',
1319
+ 'additional_imageurl_9' => 'Additional Image Link 9',
1320
+ 'additional_imageurl_10' => 'Additional Image Link 10',
1321
+ 'color' => 'Color',
1322
+ 'size' => 'Size',
1323
+ 'weight' => 'Weight',
1324
+ 'quantity' => 'Quantity',
1325
+ );
1326
+ }
1327
+ /**
1328
+ * BestPrice Attribute List
1329
+ *
1330
+ * @return array
1331
+ */
1332
+ public function bestpriceAttributes() {
1333
+ return array(
1334
+ '--1' => 'Required Attributes',
1335
+ 'productId' => 'Product ID[productId]',
1336
+ 'name' => 'Product Title[name]',
1337
+ 'description' => 'Product Description[description]',
1338
+ 'link' => 'Product Link[link]',
1339
+ 'image' => 'Image Link[image]',
1340
+ 'categoryPath' => 'Category Path[categoryPath]',
1341
+ 'categoryID' => 'Category Id[categoryID]',
1342
+ 'price' => 'Price[price]',
1343
+ 'manufacturer' => 'Manufacturer[manufacturer]',
1344
+ 'mpn' => 'MPN / ISBN',
1345
+ 'availability' => 'Availability',
1346
+ '---1' => 'Recommended Attributes',
1347
+ 'instock' => 'Stock Status[instock]',
1348
+ 'ean' => 'EAN/Barcode',
1349
+ 'additional_image' => 'Additional Image Link',
1350
+ 'color' => 'Color',
1351
+ 'size' => 'Size',
1352
+ 'weight' => 'Weight',
1353
+ 'features' => 'Features',
1354
+ );
1355
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1356
  /**
1357
  * Daisycon Attribute List
1358
  *
1359
  * @return array
1360
  */
1361
  public function daisyconAttributes() {
1362
+ return array(
1363
  '--1' => 'Required Attributes',
1364
  'sku' => 'Unique Product ID [SKU]',
1365
  'description' => 'Description',
1407
  'size_description' => 'Description for the “size” field',
1408
  'terms_conditions' => 'Full terms and conditions',
1409
  '---4' => '',
1410
+ );
1411
  }
1412
+
1413
  /**
1414
  * Daisycon Automotive Attribute List
1415
  *
1416
  * @return array
1417
  */
1418
  public function daisycon_automotiveAttributes() {
1419
+ return array(
1420
  '--1' => 'Required Attributes',
1421
  'description' => 'Description of the product',
1422
  'link' => 'URL to the page of the product',
1473
  'year_built' => 'Year in which the product is fabricated',
1474
  'terms_conditions' => 'Full terms and conditions',
1475
  '---4' => '',
1476
+ );
1477
  }
1478
+
1479
  /**
1480
  * Daisycon Books Attribute List
1481
  *
1482
  * @return array
1483
  */
1484
  public function daisycon_booksAttributes() {
1485
+ return array(
1486
  '--1' => 'Required Attributes',
1487
  'description' => 'Description of the product',
1488
  'link' => 'URL to the page of the product',
1545
  'material_3' => 'The tertiary material',
1546
  'terms_conditions' => 'Full terms and conditions',
1547
  '---5' => '',
1548
+ );
1549
  }
1550
+
1551
  /**
1552
  * Daisycon Cosmetics Attribute List
1553
  *
1554
  * @return array
1555
  */
1556
  public function daisycon_cosmeticsAttributes() {
1557
+ return array(
1558
  '--1' => 'Required Attributes',
1559
  'description' => 'Description of the product',
1560
  'link' => 'URL to the page of the product',
1609
  'material_3' => 'The tertiary material',
1610
  'terms_conditions' => 'Full terms and conditions',
1611
  '---5' => '',
1612
+ );
1613
  }
1614
+
1615
  /**
1616
  * Daisycon Daily Offers Attribute List
1617
  *
1618
  * @return array
1619
  */
1620
  public function daisycon_daily_offersAttributes() {
1621
+ return array(
1622
  '--1' => 'Required Attributes',
1623
  'description' => 'Description of the product',
1624
  'link' => 'URL to the page of the product',
1669
  'material_3' => 'The tertiary material',
1670
  'terms_conditions' => 'Full terms and conditions',
1671
  '---4' => '',
1672
+ );
1673
  }
1674
+
1675
  /**
1676
  * Daisycon Electronics Attribute List
1677
  *
1678
  * @return array
1679
  */
1680
  public function daisycon_electronicsAttributes() {
1681
+ return array(
1682
  '--1' => 'Required Attributes',
1683
  'description' => 'Description of the product',
1684
  'link' => 'URL to the page of the product',
1757
  'material_2' => 'The secondary material',
1758
  'material_3' => 'The tertiary material',
1759
  '---5' => '',
1760
+ );
1761
  }
1762
+
1763
  /**
1764
  * Daisycon Food & Drinks Attribute List
1765
  *
1766
  * @return array
1767
  */
1768
  public function daisycon_food_drinksAttributes() {
1769
+ return array(
1770
  '--1' => 'Required Attributes',
1771
  'description' => 'Description of the product',
1772
  'link' => 'URL to the page of the product',
1832
  'material_3' => 'The tertiary material',
1833
  'terms_conditions' => 'Full terms and conditions',
1834
  '---5' => '',
1835
+ );
1836
  }
1837
+
1838
  /**
1839
  * Daisycon Home & Garden Attribute List
1840
  *
1841
  * @return array
1842
  */
1843
  public function daisycon_home_gardenAttributes() {
1844
+ return array(
1845
  '--1' => 'Required Attributes',
1846
  'description' => 'Description of the product',
1847
  'link' => 'URL to the page of the product',
1896
  'material_3' => 'The tertiary material',
1897
  'terms_conditions' => 'Full terms and conditions',
1898
  '---5' => '',
1899
+ );
1900
  }
1901
+
1902
  /**
1903
  * Daisycon Housing Attribute List
1904
  *
1905
  * @return array
1906
  */
1907
  public function daisycon_housingAttributes() {
1908
+ return array(
1909
  '--1' => 'Required Attributes',
1910
  'description' => 'Description of the product',
1911
  'link' => 'URL to the page of the product',
2002
  'material_3' => 'The tertiary material',
2003
  'terms_conditions' => 'Full terms and conditions',
2004
  '---5' => '',
2005
+ );
2006
  }
2007
+
2008
  /**
2009
  * Daisycon Fashion Attribute List
2010
  *
2011
  * @return array
2012
  */
2013
  public function daisycon_fashionAttributes() {
2014
+ return array(
2015
  '--1' => 'Required Attributes',
2016
  'description' => 'Description of the product',
2017
  'link' => 'URL to the page of the product',
2061
  'material_3' => 'The tertiary material',
2062
  'terms_conditions' => 'Full terms and conditions',
2063
  '---5' => '',
2064
+ );
2065
  }
2066
+
2067
  /**
2068
  * Daisycon Studies & Trainings Attribute List
2069
  *
2070
  * @return array
2071
  */
2072
  public function daisycon_studies_trainingsAttributes() {
2073
+ return array(
2074
  '--1' => 'Required Attributes',
2075
  'description' => 'Description of the product',
2076
  'link' => 'URL to the page of the product',
2123
  'material_3' => 'The tertiary material',
2124
  'terms_conditions' => 'Full terms and conditions',
2125
  '---5' => '',
2126
+ );
2127
  }
2128
+
2129
  /**
2130
  * Daisycon Telecom: Accessories Attribute List
2131
  *
2132
  * @return array
2133
  */
2134
  public function daisycon_telecom_accessoriesAttributes() {
2135
+ return array(
2136
  '--1' => 'Required Attributes',
2137
  'description' => 'Description of the product',
2138
  'link' => 'URL to the page of the product',
2183
  'material_3' => 'The tertiary material',
2184
  'terms_conditions' => 'Full terms and conditions',
2185
  '---5' => '',
2186
+ );
2187
  }
2188
+
2189
  /**
2190
  * Daisycon Telecom: All-in-one Attribute List
2191
  *
2192
  * @return array
2193
  */
2194
  public function daisycon_telecom_all_in_oneAttributes() {
2195
+ return array(
2196
  '--1' => 'Required Attributes',
2197
  'allinone_subscription_type' => 'Subscription type',
2198
  'bandwidth_download' => 'Download in Mbits',
2261
  'material_3' => 'The tertiary material',
2262
  'terms_conditions' => 'Full terms and conditions',
2263
  '---5' => '',
2264
+ );
2265
  }
2266
+
2267
  /**
2268
  * Daisycon Telecom: GSM + Subscription Attribute List
2269
  *
2270
  * @return array
2271
  */
2272
  public function daisycon_telecom_gsm_subscriptionAttributes() {
2273
+ return array(
2274
  '--1' => 'Required Attributes',
2275
  'description' => 'Description of the product',
2276
  'link' => 'URL to the page of the product',
2366
  'material_3' => 'The tertiary material',
2367
  'terms_conditions' => 'Full terms and conditions',
2368
  '---5' => '',
2369
+ );
2370
  }
2371
+
2372
  /**
2373
  * Daisycon Telecom: GSM only Attribute List
2374
  *
2375
  * @return array
2376
  */
2377
  public function daisycon_telecom_gsmAttributes() {
2378
+ return array(
2379
  '--1' => 'Required Attributes',
2380
  'description' => 'Description of the GSM-device',
2381
  'link' => 'URL to the page of the GSM-device',
2433
  'size_description' => 'Description for the "size" field',
2434
  'size_length' => 'GSM-device length in mm',
2435
  'size_width' => 'GSM-device width in mm',
2436
+
2437
  'weight' => 'GSM-device weight in grams',
2438
  'material_1' => 'The primary material',
2439
  'material_2' => 'The secondary material',
2440
  'material_3' => 'The tertiary material',
2441
  'terms_conditions' => 'Full terms and conditions',
2442
  '---5' => '',
2443
+ );
2444
  }
2445
+
2446
  /**
2447
  * Daisycon Telecom: Sim only Attribute List
2448
  *
2449
  * @return array
2450
  */
2451
  public function daisycon_telecom_simAttributes() {
2452
+ return array(
2453
  '--1' => 'Required Attributes',
2454
  'description' => 'Description of the subscription',
2455
  'link' => 'URL to the page of the subscription',
2523
  'material_3' => 'The tertiary material',
2524
  'terms_conditions' => 'Full terms and conditions',
2525
  '---5' => '',
2526
+ );
2527
  }
2528
+
2529
  /**
2530
  * Daisycon Magazines Attribute List
2531
  *
2532
  * @return array
2533
  */
2534
  public function daisycon_magazinesAttributes() {
2535
+ return array(
2536
  '--1' => 'Required Attributes',
2537
  'description' => 'Description of the magazine',
2538
  'link' => 'URL to the page of the magazine',
2597
  'material_3' => 'The tertiary material',
2598
  'terms_conditions' => 'Full terms and conditions',
2599
  '---5' => '',
2600
+ );
2601
  }
2602
+
2603
  /**
2604
  * Daisycon Holidays: Accommodations Attribute List
2605
  *
2606
  * @return array
2607
  */
2608
  public function daisycon_holidays_accommodationsAttributes() {
2609
+ return array(
2610
  '--1' => 'Required Attributes',
2611
  'description' => 'Description of the product',
2612
  'link' => 'URL to the page of the product',
2716
  'material_3' => 'The tertiary material',
2717
  'terms_conditions' => 'Full terms and conditions',
2718
  '---5' => '',
2719
+ );
2720
  }
2721
+
2722
  /**
2723
  * Daisycon Holidays: Accommodations and transport Attribute List
2724
  *
2725
  * @return array
2726
  */
2727
  public function daisycon_holidays_accommodations_and_transportAttributes() {
2728
+ return array(
2729
  '--1' => 'Required Attributes',
2730
  'description' => 'Description of the product',
2731
  'link' => 'URL to the page of the product',
2851
  'material_3' => 'The tertiary material',
2852
  'terms_conditions' => 'Full terms and conditions',
2853
  '---5' => '',
2854
+ );
2855
  }
2856
+
2857
  /**
2858
  * Daisycon Holidays: Trips Attribute List
2859
  *
2860
  * @return array
2861
  */
2862
  public function daisycon_holidays_tripsAttributes() {
2863
+ return array(
2864
  '--1' => 'Required Attributes',
2865
  'description' => 'Description of the product',
2866
  'link' => 'URL to the page of the product',
2936
  'material_3' => 'The tertiary material',
2937
  'terms_conditions' => 'Full terms and conditions',
2938
  '---5' => '',
2939
+ );
2940
  }
2941
+
2942
  /**
2943
  * Daisycon Work & Jobs Attribute List
2944
  *
2945
  * @return array
2946
  */
2947
  public function daisycon_work_jobsAttributes() {
2948
+ return array(
2949
  '--1' => 'Required Attributes',
2950
  'description' => 'Description of the product',
2951
  'link' => 'URL to the page of the product',
3006
  'material_3' => 'The tertiary material',
3007
  'terms_conditions' => 'Full terms and conditions',
3008
  '---5' => '',
3009
+ );
3010
  }
3011
  }
woo-feed.php CHANGED
@@ -10,7 +10,7 @@
10
  * Plugin Name: CTX Feed
11
  * Plugin URI: https://webappick.com/
12
  * Description: Easily generate woocommerce product feed for any marketing channel like Google Shopping(Merchant), Facebook Remarketing, Bing, eBay & more. Support 100+ Merchants.
13
- * Version: 4.5.9
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
10
  * Plugin Name: CTX Feed
11
  * Plugin URI: https://webappick.com/
12
  * Description: Easily generate woocommerce product feed for any marketing channel like Google Shopping(Merchant), Facebook Remarketing, Bing, eBay & more. Support 100+ Merchants.
13
+ * Version: 4.5.10
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2