Advanced Woo Search - Version 1.09

Version Description

  • Make indexing of the products content much more fuster
  • Fix several bugs
Download this release

Release Info

Developer Mihail Barinov
Plugin Icon 128x128 Advanced Woo Search
Version 1.09
Comparing to
See all releases

Code changes from version 1.08 to 1.09

advanced-woo-search.php CHANGED
@@ -3,7 +3,7 @@
3
  /*
4
  Plugin Name: Advanced Woo Search
5
  Description: Advance ajax WooCommerce product search.
6
- Version: 1.08
7
  Author: ILLID
8
  Text Domain: aws
9
  */
@@ -13,7 +13,7 @@ if ( ! defined( 'ABSPATH' ) ) {
13
  exit;
14
  }
15
 
16
- define( 'AWS_VERSION', '1.08' );
17
 
18
 
19
  define( 'AWS_DIR', dirname( __FILE__ ) );
@@ -74,6 +74,8 @@ final class AWS_Main {
74
 
75
  load_plugin_textdomain( 'aws', false, dirname( plugin_basename( __FILE__ ) ). '/languages/' );
76
 
 
 
77
  $this->includes();
78
 
79
  }
@@ -109,14 +111,6 @@ final class AWS_Main {
109
  wp_enqueue_script( 'aws-script', AWS_URL . '/assets/js/common.js', array('jquery'), AWS_VERSION, true );
110
  }
111
 
112
- /*
113
- * Get plugin settings
114
- */
115
- public function get_settings( $name ) {
116
- $plugin_options = $this->data['settings'];
117
- return $plugin_options[ $name ];
118
- }
119
-
120
  /*
121
  * Add settings link to plugins
122
  */
@@ -134,6 +128,14 @@ final class AWS_Main {
134
  return $links;
135
  }
136
 
 
 
 
 
 
 
 
 
137
  }
138
 
139
  endif;
3
  /*
4
  Plugin Name: Advanced Woo Search
5
  Description: Advance ajax WooCommerce product search.
6
+ Version: 1.09
7
  Author: ILLID
8
  Text Domain: aws
9
  */
13
  exit;
14
  }
15
 
16
+ define( 'AWS_VERSION', '1.09' );
17
 
18
 
19
  define( 'AWS_DIR', dirname( __FILE__ ) );
74
 
75
  load_plugin_textdomain( 'aws', false, dirname( plugin_basename( __FILE__ ) ). '/languages/' );
76
 
77
+ update_option( 'aws_plugin_ver', AWS_VERSION );
78
+
79
  $this->includes();
80
 
81
  }
111
  wp_enqueue_script( 'aws-script', AWS_URL . '/assets/js/common.js', array('jquery'), AWS_VERSION, true );
112
  }
113
 
 
 
 
 
 
 
 
 
114
  /*
115
  * Add settings link to plugins
116
  */
128
  return $links;
129
  }
130
 
131
+ /*
132
+ * Get plugin settings
133
+ */
134
+ public function get_settings( $name ) {
135
+ $plugin_options = $this->data['settings'];
136
+ return $plugin_options[ $name ];
137
+ }
138
+
139
  }
140
 
141
  endif;
includes/class-aws-admin.php CHANGED
@@ -47,8 +47,8 @@ class AWS_Admin {
47
 
48
  $tabs = array(
49
  'general' => __( 'General', 'aws' ),
50
- //'query' => __( 'Query', 'aws' ),
51
- //'view' => __( 'View', 'aws' )
52
  );
53
 
54
  $current_tab = empty( $_GET['tab'] ) ? 'general' : sanitize_title( $_GET['tab'] );
@@ -112,11 +112,11 @@ class AWS_Admin {
112
  echo '<tbody>';
113
 
114
  switch ($current_tab) {
115
- case('query'):
116
- $this->generate_options( $options['query'] );
117
  break;
118
- case('view'):
119
- $this->generate_options( $options['view'] );
120
  break;
121
  default:
122
  $this->update_table();
47
 
48
  $tabs = array(
49
  'general' => __( 'General', 'aws' ),
50
+ 'form' => __( 'Search Form', 'aws' ),
51
+ 'results' => __( 'Search Results', 'aws' )
52
  );
53
 
54
  $current_tab = empty( $_GET['tab'] ) ? 'general' : sanitize_title( $_GET['tab'] );
112
  echo '<tbody>';
113
 
114
  switch ($current_tab) {
115
+ case('form'):
116
+ $this->generate_options( $options['form'] );
117
  break;
118
+ case('results'):
119
+ $this->generate_options( $options['results'] );
120
  break;
121
  default:
122
  $this->update_table();
includes/class-aws-markup.php CHANGED
@@ -25,9 +25,10 @@ if ( ! class_exists( 'AWS_Markup' ) ) :
25
  return;
26
  }
27
 
28
- $placeholder = $this->get_settings( 'search_field_text' );
29
- $min_chars = $this->get_settings( 'min_chars' );
30
- $show_loader = $this->get_settings( 'show_loader' );
 
31
 
32
  $params_string = '';
33
 
@@ -39,7 +40,7 @@ if ( ! class_exists( 'AWS_Markup' ) ) :
39
  );
40
 
41
  foreach( $params as $key => $value ) {
42
- $params_string .= $key . '="' . $value . '"';
43
  }
44
 
45
  $markup = '';
@@ -55,14 +56,6 @@ if ( ! class_exists( 'AWS_Markup' ) ) :
55
 
56
  }
57
 
58
- /*
59
- * Get plugin settings
60
- */
61
- private function get_settings( $name ) {
62
- $plugin_options = get_option( 'aws_settings' );
63
- return $plugin_options[ $name ];
64
- }
65
-
66
  }
67
 
68
  endif;
25
  return;
26
  }
27
 
28
+
29
+ $placeholder = AWS()->get_settings( 'search_field_text' );
30
+ $min_chars = AWS()->get_settings( 'min_chars' );
31
+ $show_loader = AWS()->get_settings( 'show_loader' );
32
 
33
  $params_string = '';
34
 
40
  );
41
 
42
  foreach( $params as $key => $value ) {
43
+ $params_string .= $key . '="' . $value . '" ';
44
  }
45
 
46
  $markup = '';
56
 
57
  }
58
 
 
 
 
 
 
 
 
 
59
  }
60
 
61
  endif;
includes/class-aws-search.php CHANGED
@@ -35,7 +35,7 @@ if ( ! class_exists( 'AWS_Search' ) ) :
35
 
36
  global $wpdb;
37
 
38
- $cache = $this->get_settings( 'cache' );
39
 
40
  $s = esc_attr( $_POST['keyword'] );
41
  $s = stripslashes( $s );
@@ -56,12 +56,12 @@ if ( ! class_exists( 'AWS_Search' ) ) :
56
  }
57
 
58
 
59
- $show_cats = $this->get_settings( 'show_cats' );
60
- $show_tags = $this->get_settings( 'show_tags' );
61
- $results_num = $this->get_settings( 'results_num' );
62
- $search_in = $this->get_settings( 'search_in' );
63
 
64
- $search_in_arr = explode( ',', $this->get_settings( 'search_in' ) );
65
 
66
  // Search in title if all options is disabled
67
  if ( ! $search_in ) {
@@ -259,14 +259,14 @@ if ( ! class_exists( 'AWS_Search' ) ) :
259
 
260
  if ( count( $posts_ids ) > 0 ) {
261
 
262
- $show_excerpt = $this->get_settings( 'show_excerpt' );
263
- $excerpt_source = $this->get_settings( 'desc_source' );
264
- $excerpt_length = $this->get_settings( 'excerpt_length' );
265
- $mark_search_words = $this->get_settings( 'mark_words' );
266
- $show_price = $this->get_settings( 'show_price' );
267
- $show_sale = $this->get_settings( 'show_sale' );
268
- $show_image = $this->get_settings( 'show_image' );
269
- $show_sku = $this->get_settings( 'show_sku' );
270
 
271
  foreach ( $posts_ids as $post_id ) {
272
 
@@ -501,14 +501,6 @@ if ( ! class_exists( 'AWS_Search' ) ) :
501
 
502
  }
503
 
504
- /*
505
- * Get plugin settings
506
- */
507
- public function get_settings( $name ) {
508
- $plugin_options = $this->data['settings'];
509
- return $plugin_options[ $name ];
510
- }
511
-
512
  }
513
 
514
 
35
 
36
  global $wpdb;
37
 
38
+ $cache = AWS()->get_settings( 'cache' );
39
 
40
  $s = esc_attr( $_POST['keyword'] );
41
  $s = stripslashes( $s );
56
  }
57
 
58
 
59
+ $show_cats = AWS()->get_settings( 'show_cats' );
60
+ $show_tags = AWS()->get_settings( 'show_tags' );
61
+ $results_num = AWS()->get_settings( 'results_num' );
62
+ $search_in = AWS()->get_settings( 'search_in' );
63
 
64
+ $search_in_arr = explode( ',', AWS()->get_settings( 'search_in' ) );
65
 
66
  // Search in title if all options is disabled
67
  if ( ! $search_in ) {
259
 
260
  if ( count( $posts_ids ) > 0 ) {
261
 
262
+ $show_excerpt = AWS()->get_settings( 'show_excerpt' );
263
+ $excerpt_source = AWS()->get_settings( 'desc_source' );
264
+ $excerpt_length = AWS()->get_settings( 'excerpt_length' );
265
+ $mark_search_words = AWS()->get_settings( 'mark_words' );
266
+ $show_price = AWS()->get_settings( 'show_price' );
267
+ $show_sale = AWS()->get_settings( 'show_sale' );
268
+ $show_image = AWS()->get_settings( 'show_image' );
269
+ $show_sku = AWS()->get_settings( 'show_sku' );
270
 
271
  foreach ( $posts_ids as $post_id ) {
272
 
501
 
502
  }
503
 
 
 
 
 
 
 
 
 
504
  }
505
 
506
 
includes/class-aws-table.php CHANGED
@@ -97,15 +97,17 @@ if ( ! class_exists( 'AWS_Table' ) ) :
97
  $posts = get_posts( array(
98
  'posts_per_page' => -1,
99
  'post_type' => 'product',
 
100
  'include' => $post_id
101
  ) );
102
 
103
 
104
  foreach ( $posts as $post ) {
105
 
106
- $terms = array();
107
 
108
- $id = $post->ID;
 
109
 
110
  $custom = get_post_custom($id);
111
 
@@ -113,6 +115,10 @@ if ( ! class_exists( 'AWS_Table' ) ) :
113
  continue;
114
  }
115
 
 
 
 
 
116
  $product = new WC_product( $id );
117
 
118
  $sku = $product->get_sku();
@@ -148,22 +154,31 @@ if ( ! class_exists( 'AWS_Table' ) ) :
148
  continue;
149
  }
150
 
151
- $wpdb->insert(
152
- $this->table_name,
153
- array(
154
- 'id' => $id,
155
- 'term' => $term,
156
- 'term_source' => $source,
157
- 'type' => 'product',
158
- 'count' => $count
159
- )
160
  );
161
 
 
 
162
  }
163
 
164
  }
165
 
166
- // break;
 
 
 
 
 
 
 
 
 
 
 
 
 
167
 
168
  }
169
 
@@ -231,36 +246,47 @@ if ( ! class_exists( 'AWS_Table' ) ) :
231
  //$str = preg_replace( '/\b\w{1}\b/i', " ", $str );
232
 
233
  $str = str_replace( array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
234
  ".",
235
  ",",
236
- "$",
237
- "\\",
238
- "/",
239
  "{",
240
- "^",
241
  "}",
242
- "?",
243
- "!",
244
- ";",
245
- "(",
246
- ")",
247
- ":",
248
  "[",
249
  "]",
250
- "'",
251
- "+",
 
252
  "ˇ",
253
  "°",
254
- "~",
255
- '"',
256
  "Ë›",
257
  "Ă‹ĹĄ",
258
  "¸",
259
  "§",
260
- "%",
261
  "=",
262
  "¨",
263
- "`",
264
  "’",
265
  "‘",
266
  "”",
97
  $posts = get_posts( array(
98
  'posts_per_page' => -1,
99
  'post_type' => 'product',
100
+ 'no_found_rows' => 1,
101
  'include' => $post_id
102
  ) );
103
 
104
 
105
  foreach ( $posts as $post ) {
106
 
107
+ $values = array();
108
 
109
+ $terms = array();
110
+ $id = $post->ID;
111
 
112
  $custom = get_post_custom($id);
113
 
115
  continue;
116
  }
117
 
118
+ // if ( isset( $custom['_stock_status'] ) && $custom['_stock_status'][0] == 'outofstock' ) {
119
+ // continue;
120
+ // }
121
+
122
  $product = new WC_product( $id );
123
 
124
  $sku = $product->get_sku();
154
  continue;
155
  }
156
 
157
+ $value = $wpdb->prepare(
158
+ "(%d, %s, %s, %s, %d)",
159
+ $id, $term, $source, 'product', $count
 
 
 
 
 
 
160
  );
161
 
162
+ $values[] = $value;
163
+
164
  }
165
 
166
  }
167
 
168
+
169
+ if ( count( $values ) > 0 ) {
170
+
171
+ $values = implode( ', ', $values );
172
+
173
+ $query = "INSERT IGNORE INTO {$this->table_name}
174
+ (`id`, `term`, `term_source`, `type`, `count`)
175
+ VALUES $values
176
+ ";
177
+
178
+ $wpdb->query( $query );
179
+
180
+ }
181
+
182
 
183
  }
184
 
246
  //$str = preg_replace( '/\b\w{1}\b/i', " ", $str );
247
 
248
  $str = str_replace( array(
249
+ '_',
250
+ '|',
251
+ '+',
252
+ '`',
253
+ '~',
254
+ '!',
255
+ '@',
256
+ '#',
257
+ '$',
258
+ '%',
259
+ '^',
260
+ '&',
261
+ '*',
262
+ '(',
263
+ ')',
264
+ '\\',
265
+ '?',
266
+ ';',
267
+ ':',
268
+ "'",
269
+ '"',
270
  ".",
271
  ",",
272
+ "<",
273
+ ">",
 
274
  "{",
 
275
  "}",
276
+ "/",
 
 
 
 
 
277
  "[",
278
  "]",
279
+ ), "", $str );
280
+
281
+ $str = str_replace( array(
282
  "ˇ",
283
  "°",
 
 
284
  "Ë›",
285
  "Ă‹ĹĄ",
286
  "¸",
287
  "§",
 
288
  "=",
289
  "¨",
 
290
  "’",
291
  "‘",
292
  "”",
includes/options.php CHANGED
@@ -18,6 +18,17 @@ $options['general'][] = array(
18
  );
19
 
20
  $options['general'][] = array(
 
 
 
 
 
 
 
 
 
 
 
21
  "name" => __( "Text for search field", "aws" ),
22
  "desc" => __( "Text for search field placeholder.", "aws" ),
23
  "id" => "search_field_text",
@@ -25,7 +36,7 @@ $options['general'][] = array(
25
  "type" => "text"
26
  );
27
 
28
- $options['general'][] = array(
29
  "name" => __( "Minimum number of characters", "aws" ),
30
  "desc" => __( "Minimum number of characters required to run ajax search.", "aws" ),
31
  "id" => "min_chars",
@@ -33,7 +44,7 @@ $options['general'][] = array(
33
  "type" => "number"
34
  );
35
 
36
- $options['general'][] = array(
37
  "name" => __( "Show loader", "aws" ),
38
  "desc" => __( "Show loader animation while searching.", "aws" ),
39
  "id" => "show_loader",
@@ -45,7 +56,10 @@ $options['general'][] = array(
45
  )
46
  );
47
 
48
- $options['general'][] = array(
 
 
 
49
  "name" => __( "Show image", "aws" ),
50
  "desc" => __( "Show product image for each search result.", "aws" ),
51
  "id" => "show_image",
@@ -57,7 +71,7 @@ $options['general'][] = array(
57
  )
58
  );
59
 
60
- $options['general'][] = array(
61
  "name" => __( "Show description", "aws" ),
62
  "desc" => __( "Show product description for each search result.", "aws" ),
63
  "id" => "show_excerpt",
@@ -69,7 +83,7 @@ $options['general'][] = array(
69
  )
70
  );
71
 
72
- $options['general'][] = array(
73
  "name" => __( "Description source", "aws" ),
74
  "desc" => __( "From where to take product description.<br>If first source is empty data will be taken from other sources.", "aws" ),
75
  "id" => "desc_source",
@@ -81,7 +95,7 @@ $options['general'][] = array(
81
  )
82
  );
83
 
84
- $options['general'][] = array(
85
  "name" => __( "Description length", "aws" ),
86
  "desc" => __( "Maximal allowed number of words for product description.", "aws" ),
87
  "id" => "excerpt_length",
@@ -89,31 +103,31 @@ $options['general'][] = array(
89
  "type" => "number"
90
  );
91
 
92
- $options['general'][] = array(
93
- "name" => __( "Show price", "aws" ),
94
- "desc" => __( "Show product price for each search result.", "aws" ),
95
- "id" => "show_price",
96
  "value" => 'true',
97
  "type" => "radio",
98
  'choices' => array(
99
- 'true' => __( 'On', 'aws' ),
100
- 'false' => __( 'Off', 'aws' ),
101
  )
102
  );
103
 
104
- $options['general'][] = array(
105
- "name" => __( "Description content", "aws" ),
106
- "desc" => __( "What to show in product description?", "aws" ),
107
- "id" => "mark_words",
108
  "value" => 'true',
109
  "type" => "radio",
110
  'choices' => array(
111
- 'true' => __( "Smart scrapping sentences with searching terms from product description.", "aws" ),
112
- 'false' => __( "First N words of product description ( number of words that you choose below. )", "aws" ),
113
  )
114
  );
115
 
116
- $options['general'][] = array(
117
  "name" => __( "Show categories", "aws" ),
118
  "desc" => __( "Include categories in search result.", "aws" ),
119
  "id" => "show_cats",
@@ -125,7 +139,7 @@ $options['general'][] = array(
125
  )
126
  );
127
 
128
- $options['general'][] = array(
129
  "name" => __( "Show tags", "aws" ),
130
  "desc" => __( "Include tags in search result.", "aws" ),
131
  "id" => "show_tags",
@@ -137,7 +151,7 @@ $options['general'][] = array(
137
  )
138
  );
139
 
140
- $options['general'][] = array(
141
  "name" => __( "Show sale badge", "aws" ),
142
  "desc" => __( "Show sale badge for products in search results.", "aws" ),
143
  "id" => "show_sale",
@@ -149,7 +163,7 @@ $options['general'][] = array(
149
  )
150
  );
151
 
152
- $options['general'][] = array(
153
  "name" => __( "Show product SKU", "aws" ),
154
  "desc" => __( "Show product SKU in search results.", "aws" ),
155
  "id" => "show_sku",
@@ -161,21 +175,10 @@ $options['general'][] = array(
161
  )
162
  );
163
 
164
- // Query tab
165
-
166
- $options['general'][] = array(
167
  "name" => __( "Max number of results", "aws" ),
168
  "desc" => __( "Maximum number of displayed search results.", "aws" ),
169
  "id" => "results_num",
170
  "value" => 10,
171
  "type" => "number"
172
- );
173
-
174
- $options['general'][] = array(
175
- "name" => __( "Search in", "aws" ),
176
- "desc" => __( "Source of searching. Set the source of searching by drag&drop needed fields to the right area.", "aws" ),
177
- "id" => "search_in",
178
- "value" => "title,content,sku,excerpt",
179
- "choices" => array( "title", "content", "sku", "excerpt", "category", "tag" ),
180
- "type" => "sortable"
181
  );
18
  );
19
 
20
  $options['general'][] = array(
21
+ "name" => __( "Search in", "aws" ),
22
+ "desc" => __( "Source of searching. Set the source of searching by drag&drop needed fields to the right area.", "aws" ),
23
+ "id" => "search_in",
24
+ "value" => "title,content,sku,excerpt",
25
+ "choices" => array( "title", "content", "sku", "excerpt", "category", "tag" ),
26
+ "type" => "sortable"
27
+ );
28
+
29
+
30
+ // Search Form Settings
31
+ $options['form'][] = array(
32
  "name" => __( "Text for search field", "aws" ),
33
  "desc" => __( "Text for search field placeholder.", "aws" ),
34
  "id" => "search_field_text",
36
  "type" => "text"
37
  );
38
 
39
+ $options['form'][] = array(
40
  "name" => __( "Minimum number of characters", "aws" ),
41
  "desc" => __( "Minimum number of characters required to run ajax search.", "aws" ),
42
  "id" => "min_chars",
44
  "type" => "number"
45
  );
46
 
47
+ $options['form'][] = array(
48
  "name" => __( "Show loader", "aws" ),
49
  "desc" => __( "Show loader animation while searching.", "aws" ),
50
  "id" => "show_loader",
56
  )
57
  );
58
 
59
+
60
+ // Search Results Settings
61
+
62
+ $options['results'][] = array(
63
  "name" => __( "Show image", "aws" ),
64
  "desc" => __( "Show product image for each search result.", "aws" ),
65
  "id" => "show_image",
71
  )
72
  );
73
 
74
+ $options['results'][] = array(
75
  "name" => __( "Show description", "aws" ),
76
  "desc" => __( "Show product description for each search result.", "aws" ),
77
  "id" => "show_excerpt",
83
  )
84
  );
85
 
86
+ $options['results'][] = array(
87
  "name" => __( "Description source", "aws" ),
88
  "desc" => __( "From where to take product description.<br>If first source is empty data will be taken from other sources.", "aws" ),
89
  "id" => "desc_source",
95
  )
96
  );
97
 
98
+ $options['results'][] = array(
99
  "name" => __( "Description length", "aws" ),
100
  "desc" => __( "Maximal allowed number of words for product description.", "aws" ),
101
  "id" => "excerpt_length",
103
  "type" => "number"
104
  );
105
 
106
+ $options['results'][] = array(
107
+ "name" => __( "Description content", "aws" ),
108
+ "desc" => __( "What to show in product description?", "aws" ),
109
+ "id" => "mark_words",
110
  "value" => 'true',
111
  "type" => "radio",
112
  'choices' => array(
113
+ 'true' => __( "Smart scrapping sentences with searching terms from product description.", "aws" ),
114
+ 'false' => __( "First N words of product description ( number of words that you choose below. )", "aws" ),
115
  )
116
  );
117
 
118
+ $options['results'][] = array(
119
+ "name" => __( "Show price", "aws" ),
120
+ "desc" => __( "Show product price for each search result.", "aws" ),
121
+ "id" => "show_price",
122
  "value" => 'true',
123
  "type" => "radio",
124
  'choices' => array(
125
+ 'true' => __( 'On', 'aws' ),
126
+ 'false' => __( 'Off', 'aws' ),
127
  )
128
  );
129
 
130
+ $options['results'][] = array(
131
  "name" => __( "Show categories", "aws" ),
132
  "desc" => __( "Include categories in search result.", "aws" ),
133
  "id" => "show_cats",
139
  )
140
  );
141
 
142
+ $options['results'][] = array(
143
  "name" => __( "Show tags", "aws" ),
144
  "desc" => __( "Include tags in search result.", "aws" ),
145
  "id" => "show_tags",
151
  )
152
  );
153
 
154
+ $options['results'][] = array(
155
  "name" => __( "Show sale badge", "aws" ),
156
  "desc" => __( "Show sale badge for products in search results.", "aws" ),
157
  "id" => "show_sale",
163
  )
164
  );
165
 
166
+ $options['results'][] = array(
167
  "name" => __( "Show product SKU", "aws" ),
168
  "desc" => __( "Show product SKU in search results.", "aws" ),
169
  "id" => "show_sku",
175
  )
176
  );
177
 
178
+ $options['results'][] = array(
 
 
179
  "name" => __( "Max number of results", "aws" ),
180
  "desc" => __( "Maximum number of displayed search results.", "aws" ),
181
  "id" => "results_num",
182
  "value" => 10,
183
  "type" => "number"
 
 
 
 
 
 
 
 
 
184
  );
languages/aws-hu_HU.po CHANGED
@@ -1,284 +1,284 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Advanced Woo Search\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2016-08-22 17:10+0000\n"
6
- "PO-Revision-Date: 2016-08-22 17:22+0000\n"
7
- "Last-Translator: Gasparics Sándor <gs@viky.hu>\n"
8
- "Language-Team: Hungarian\n"
9
- "Language: hu-HU\n"
10
- "Plural-Forms: nplurals=2; plural=n != 1\n"
11
- "MIME-Version: 1.0\n"
12
- "Content-Type: text/plain; charset=UTF-8\n"
13
- "Content-Transfer-Encoding: 8bit\n"
14
- "X-Generator: Loco - https://localise.biz/"
15
-
16
- #: includes/class-aws-admin.php:129
17
- msgid "Save Changes"
18
- msgstr "Beállítások mentése"
19
-
20
- #: includes/class-aws-admin.php:351
21
- msgid "Reindex table"
22
- msgstr "Táblák újraindexelése"
23
-
24
- #: includes/class-aws-admin.php:352
25
- msgid ""
26
- "Update all data in plugins index table. Index table - table with products "
27
- "data where plugin is searching all typed terms.<br>Use this button if you "
28
- "think that plugin not shows last actual data in its search results.<br>"
29
- "<strong>CAUTION:</strong> this can take large amount of time.</span>"
30
- msgstr ""
31
- "A bővítmény indexének frissítése. Az index tábla tartalmazza az összes "
32
- "használt keresőszót a hozzá tartozó termék adataival.<br>Akkor használjuk "
33
- "ezt a gombot, ha érzéseink szerint a keresési eredmények között nem pontos, "
34
- "aktuális adatok jelennek meg.<br><strong>FIGYELEM:</strong> ez sokáig fog "
35
- "tartani.</span>"
36
-
37
- #: includes/class-aws-admin.php:362
38
- msgid "Clear cache"
39
- msgstr "Gyorsítótár törlése"
40
-
41
- #: includes/class-aws-admin.php:363
42
- msgid "Clear cache for all search results."
43
- msgstr "Az összes keresési eredmény törlése a gyorsítótárból"
44
-
45
- #: includes/options.php:111
46
- msgid ""
47
- "Smart scrapping sentences with searching terms from product description."
48
- msgstr ""
49
- "A keresési kifejezést tartalmazó mondatot jelenítsük meg leírásként a "
50
- "találat alatt."
51
-
52
- #: includes/options.php:112
53
- msgid ""
54
- "First N words of product description ( number of words that you choose below."
55
- " )"
56
- msgstr ""
57
- "A termékleírás fix első néhány szavát (a \"Leírás hossza\" beállításnál "
58
- "adhatjuk meg) jelenítsük meg leírásként a találat alatt."
59
-
60
- #: advanced-woo-search.php:127
61
- msgid "Settings"
62
- msgstr "Beállítások"
63
-
64
- #: advanced-woo-search.php:130 includes/class-aws-admin.php:63
65
- msgid "Get Premium"
66
- msgstr "Frissítés prémium verzióra"
67
-
68
- #: advanced-woo-search.php:166
69
- msgid ""
70
- "Advanced Woo Search plugin is enabled but not effective. It requires "
71
- "WooCommerce in order to work."
72
- msgstr ""
73
- "Az Advanced Woo Search bővítmény be van kapcsolva, de nem használható. "
74
- "Működéséhez a WooCommerce is szükséges."
75
-
76
- #: includes/widget.php:15
77
- msgid "Advanced WooCommerce search widget"
78
- msgstr "Advanced WooCommerce kereső widget"
79
-
80
- #: includes/widget.php:17
81
- msgid "&raquo; AWS Widget"
82
- msgstr "&raquo; AWS Widget"
83
-
84
- #: includes/widget.php:56
85
- msgid "Search..."
86
- msgstr "Keresés..."
87
-
88
- #: includes/widget.php:62
89
- msgid "Title:"
90
- msgstr "Cím:"
91
-
92
- #: includes/class-aws-admin.php:38 includes/class-aws-admin.php:38
93
- msgid "Adv. Woo Search"
94
- msgstr "Adv. Woo Search"
95
-
96
- #: includes/class-aws-admin.php:49
97
- msgid "General"
98
- msgstr "Általános"
99
-
100
- #: includes/class-aws-admin.php:295
101
- msgid "Available fields"
102
- msgstr "Elérhető mezők"
103
-
104
- #: includes/class-aws-admin.php:311
105
- msgid "Drag&drop to enable"
106
- msgstr "Az engedélyezni kívánt mezőket ide kell húzni"
107
-
108
- #: includes/options.php:9
109
- msgid "Cache results"
110
- msgstr "Gyorsítótárazás"
111
-
112
- #: includes/options.php:10
113
- msgid ""
114
- "Turn off if you have old data in the search results after content of "
115
- "products was changed.<br><strong>CAUTION:</strong> can dramatically increase "
116
- "search speed"
117
- msgstr ""
118
- "Ki kell kapcsolni, ha a keresési találatokban régi adatok vannak "
119
- "termékmódosítás után.<br><strong>FIGYELEM:</strong> drámaian megnöveli "
120
- "keresési időt"
121
-
122
- #: includes/options.php:15 includes/options.php:43 includes/options.php:55
123
- #: includes/options.php:67 includes/options.php:99 includes/options.php:123
124
- #: includes/options.php:135 includes/options.php:147 includes/options.php:159
125
- msgid "On"
126
- msgstr "Be"
127
-
128
- #: includes/options.php:16 includes/options.php:44 includes/options.php:56
129
- #: includes/options.php:68 includes/options.php:100 includes/options.php:124
130
- #: includes/options.php:136 includes/options.php:148 includes/options.php:160
131
- msgid "Off"
132
- msgstr "Ki"
133
-
134
- #: includes/options.php:21
135
- msgid "Text for search field"
136
- msgstr "Keresőmező szövege"
137
-
138
- #: includes/options.php:22
139
- msgid "Text for search field placeholder."
140
- msgstr "Keresőmező helyőrző szövege"
141
-
142
- #: includes/options.php:29
143
- msgid "Minimum number of characters"
144
- msgstr "Karakterek minimális száma"
145
-
146
- #: includes/options.php:30
147
- msgid "Minimum number of characters required to run ajax search."
148
- msgstr ""
149
- "Minimum hány karaktert kell a felhasználónak beírni, hogy az AWS működésbe "
150
- "lépjen."
151
-
152
- #: includes/options.php:37
153
- msgid "Show loader"
154
- msgstr "Betöltő animáció"
155
-
156
- #: includes/options.php:38
157
- msgid "Show loader animation while searching."
158
- msgstr "Betöltő animáció mutatása keresés közben"
159
-
160
- #: includes/options.php:49
161
- msgid "Show image"
162
- msgstr "Termékkép mutatása"
163
-
164
- #: includes/options.php:50
165
- msgid "Show product image for each search result."
166
- msgstr "Minden keresési találathoz mutatja a termék képet is."
167
-
168
- #: includes/options.php:61
169
- msgid "Show description"
170
- msgstr "Leírás mutatása"
171
-
172
- #: includes/options.php:62
173
- msgid "Show product description for each search result."
174
- msgstr "Minden keresési találathoz mutatja a termék leírását is."
175
-
176
- #: includes/options.php:73
177
- msgid "Description source"
178
- msgstr "Leírás forrása"
179
-
180
- #: includes/options.php:74
181
- msgid ""
182
- "From where to take product description.<br>If first source is empty data "
183
- "will be taken from other sources."
184
- msgstr ""
185
- "Honnan jelenjen meg a termékleírás.<br>Ha a választott mezőben nincs adat, "
186
- "akkor másik mezőből próbálja kivenni."
187
-
188
- #: includes/options.php:79
189
- msgid "Content"
190
- msgstr "Teljes leírás"
191
-
192
- #: includes/options.php:80
193
- msgid "Excerpt"
194
- msgstr "Rövid leírás"
195
-
196
- #: includes/options.php:85
197
- msgid "Description length"
198
- msgstr "Leírás hossza"
199
-
200
- #: includes/options.php:86
201
- msgid "Maximal allowed number of words for product description."
202
- msgstr "A maximálisan megengedett szó szám amit a termékleírásból megjelenít."
203
-
204
- #: includes/options.php:93
205
- msgid "Show price"
206
- msgstr "Ár mutatása"
207
-
208
- #: includes/options.php:94
209
- msgid "Show product price for each search result."
210
- msgstr "Minden keresési találathoz mutatja a termék árát is."
211
-
212
- #: includes/options.php:105
213
- msgid "Description content"
214
- msgstr "Leírás tartalma"
215
-
216
- #: includes/options.php:106
217
- msgid "What to show in product description?"
218
- msgstr "Mit mutassunk a termék leírásnál?"
219
-
220
- #: includes/options.php:117
221
- msgid "Show categories"
222
- msgstr "Kategóriák mutatása"
223
-
224
- #: includes/options.php:118
225
- msgid "Include categories in search result."
226
- msgstr "Minden keresési találathoz mutatja a termék kategóriáit is."
227
-
228
- #: includes/options.php:129
229
- msgid "Show tags"
230
- msgstr "Címkék mutatása"
231
-
232
- #: includes/options.php:130
233
- msgid "Include tags in search result."
234
- msgstr "Minden keresési találathoz mutatja a termék címkéit is."
235
-
236
- #: includes/options.php:141
237
- msgid "Show sale badge"
238
- msgstr "Akciós matrica mutatása"
239
-
240
- #: includes/options.php:142
241
- msgid "Show sale badge for products in search results."
242
- msgstr "Minden keresési találathoz mutatja a termék akciós matricáját is."
243
-
244
- #: includes/options.php:153
245
- msgid "Show product SKU"
246
- msgstr "Cikkszám mutatása"
247
-
248
- #: includes/options.php:154
249
- msgid "Show product SKU in search results."
250
- msgstr "Minden keresési találathoz mutatja a termék cikkszámát is."
251
-
252
- #: includes/options.php:167
253
- msgid "Max number of results"
254
- msgstr "Találatok maximális száma"
255
-
256
- #: includes/options.php:168
257
- msgid "Maximum number of displayed search results."
258
- msgstr "A maximálisan megjelenítendő keresési találatok száma"
259
-
260
- #: includes/options.php:175
261
- msgid "Search in"
262
- msgstr "Miben keressek?"
263
-
264
- #: includes/options.php:176
265
- msgid ""
266
- "Source of searching. Set the source of searching by drag&drop needed fields "
267
- "to the right area."
268
- msgstr ""
269
- "Az alábbi termék mezőkben van lehetőség keresni, engedélyezéshez csupán a "
270
- "bal oldalról a jobb oldalra kell a mezőt áthúzni."
271
-
272
- #. Name of the plugin
273
- msgid "Advanced Woo Search"
274
- msgstr "Advanced Woo Search"
275
-
276
- #. Description of the plugin
277
- msgid "Advance ajax WooCommerce product search."
278
- msgstr ""
279
- "Ajax alapú, keresőszó gépelése közben működésbe lépő (prediktív) termék "
280
- "kereső WooCommerce áruházhoz."
281
-
282
- #. Author of the plugin
283
- msgid "ILLID"
284
- msgstr "ILLID - Magyar fordítás: DuraSoft"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Advanced Woo Search\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2016-08-22 17:10+0000\n"
6
+ "PO-Revision-Date: 2016-08-22 17:22+0000\n"
7
+ "Last-Translator: Gasparics Sándor <gs@viky.hu>\n"
8
+ "Language-Team: Hungarian\n"
9
+ "Language: hu-HU\n"
10
+ "Plural-Forms: nplurals=2; plural=n != 1\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "X-Generator: Loco - https://localise.biz/"
15
+
16
+ #: includes/class-aws-admin.php:129
17
+ msgid "Save Changes"
18
+ msgstr "Beállítások mentése"
19
+
20
+ #: includes/class-aws-admin.php:351
21
+ msgid "Reindex table"
22
+ msgstr "Táblák újraindexelése"
23
+
24
+ #: includes/class-aws-admin.php:352
25
+ msgid ""
26
+ "Update all data in plugins index table. Index table - table with products "
27
+ "data where plugin is searching all typed terms.<br>Use this button if you "
28
+ "think that plugin not shows last actual data in its search results.<br>"
29
+ "<strong>CAUTION:</strong> this can take large amount of time.</span>"
30
+ msgstr ""
31
+ "A bővítmény indexének frissítése. Az index tábla tartalmazza az összes "
32
+ "használt keresőszót a hozzá tartozó termék adataival.<br>Akkor használjuk "
33
+ "ezt a gombot, ha érzéseink szerint a keresési eredmények között nem pontos, "
34
+ "aktuális adatok jelennek meg.<br><strong>FIGYELEM:</strong> ez sokáig fog "
35
+ "tartani.</span>"
36
+
37
+ #: includes/class-aws-admin.php:362
38
+ msgid "Clear cache"
39
+ msgstr "Gyorsítótár törlése"
40
+
41
+ #: includes/class-aws-admin.php:363
42
+ msgid "Clear cache for all search results."
43
+ msgstr "Az összes keresési eredmény törlése a gyorsítótárból"
44
+
45
+ #: includes/options.php:111
46
+ msgid ""
47
+ "Smart scrapping sentences with searching terms from product description."
48
+ msgstr ""
49
+ "A keresési kifejezést tartalmazó mondatot jelenítsük meg leírásként a "
50
+ "találat alatt."
51
+
52
+ #: includes/options.php:112
53
+ msgid ""
54
+ "First N words of product description ( number of words that you choose below."
55
+ " )"
56
+ msgstr ""
57
+ "A termékleírás fix első néhány szavát (a \"Leírás hossza\" beállításnál "
58
+ "adhatjuk meg) jelenítsük meg leírásként a találat alatt."
59
+
60
+ #: advanced-woo-search.php:127
61
+ msgid "Settings"
62
+ msgstr "Beállítások"
63
+
64
+ #: advanced-woo-search.php:130 includes/class-aws-admin.php:63
65
+ msgid "Get Premium"
66
+ msgstr "Frissítés prémium verzióra"
67
+
68
+ #: advanced-woo-search.php:166
69
+ msgid ""
70
+ "Advanced Woo Search plugin is enabled but not effective. It requires "
71
+ "WooCommerce in order to work."
72
+ msgstr ""
73
+ "Az Advanced Woo Search bővítmény be van kapcsolva, de nem használható. "
74
+ "Működéséhez a WooCommerce is szükséges."
75
+
76
+ #: includes/widget.php:15
77
+ msgid "Advanced WooCommerce search widget"
78
+ msgstr "Advanced WooCommerce kereső widget"
79
+
80
+ #: includes/widget.php:17
81
+ msgid "&raquo; AWS Widget"
82
+ msgstr "&raquo; AWS Widget"
83
+
84
+ #: includes/widget.php:56
85
+ msgid "Search..."
86
+ msgstr "Keresés..."
87
+
88
+ #: includes/widget.php:62
89
+ msgid "Title:"
90
+ msgstr "Cím:"
91
+
92
+ #: includes/class-aws-admin.php:38 includes/class-aws-admin.php:38
93
+ msgid "Adv. Woo Search"
94
+ msgstr "Adv. Woo Search"
95
+
96
+ #: includes/class-aws-admin.php:49
97
+ msgid "General"
98
+ msgstr "Általános"
99
+
100
+ #: includes/class-aws-admin.php:295
101
+ msgid "Available fields"
102
+ msgstr "Elérhető mezők"
103
+
104
+ #: includes/class-aws-admin.php:311
105
+ msgid "Drag&drop to enable"
106
+ msgstr "Az engedélyezni kívánt mezőket ide kell húzni"
107
+
108
+ #: includes/options.php:9
109
+ msgid "Cache results"
110
+ msgstr "Gyorsítótárazás"
111
+
112
+ #: includes/options.php:10
113
+ msgid ""
114
+ "Turn off if you have old data in the search results after content of "
115
+ "products was changed.<br><strong>CAUTION:</strong> can dramatically increase "
116
+ "search speed"
117
+ msgstr ""
118
+ "Ki kell kapcsolni, ha a keresési találatokban régi adatok vannak "
119
+ "termékmódosítás után.<br><strong>FIGYELEM:</strong> drámaian megnöveli "
120
+ "keresési időt"
121
+
122
+ #: includes/options.php:15 includes/options.php:43 includes/options.php:55
123
+ #: includes/options.php:67 includes/options.php:99 includes/options.php:123
124
+ #: includes/options.php:135 includes/options.php:147 includes/options.php:159
125
+ msgid "On"
126
+ msgstr "Be"
127
+
128
+ #: includes/options.php:16 includes/options.php:44 includes/options.php:56
129
+ #: includes/options.php:68 includes/options.php:100 includes/options.php:124
130
+ #: includes/options.php:136 includes/options.php:148 includes/options.php:160
131
+ msgid "Off"
132
+ msgstr "Ki"
133
+
134
+ #: includes/options.php:21
135
+ msgid "Text for search field"
136
+ msgstr "Keresőmező szövege"
137
+
138
+ #: includes/options.php:22
139
+ msgid "Text for search field placeholder."
140
+ msgstr "Keresőmező helyőrző szövege"
141
+
142
+ #: includes/options.php:29
143
+ msgid "Minimum number of characters"
144
+ msgstr "Karakterek minimális száma"
145
+
146
+ #: includes/options.php:30
147
+ msgid "Minimum number of characters required to run ajax search."
148
+ msgstr ""
149
+ "Minimum hány karaktert kell a felhasználónak beírni, hogy az AWS működésbe "
150
+ "lépjen."
151
+
152
+ #: includes/options.php:37
153
+ msgid "Show loader"
154
+ msgstr "Betöltő animáció"
155
+
156
+ #: includes/options.php:38
157
+ msgid "Show loader animation while searching."
158
+ msgstr "Betöltő animáció mutatása keresés közben"
159
+
160
+ #: includes/options.php:49
161
+ msgid "Show image"
162
+ msgstr "Termékkép mutatása"
163
+
164
+ #: includes/options.php:50
165
+ msgid "Show product image for each search result."
166
+ msgstr "Minden keresési találathoz mutatja a termék képet is."
167
+
168
+ #: includes/options.php:61
169
+ msgid "Show description"
170
+ msgstr "Leírás mutatása"
171
+
172
+ #: includes/options.php:62
173
+ msgid "Show product description for each search result."
174
+ msgstr "Minden keresési találathoz mutatja a termék leírását is."
175
+
176
+ #: includes/options.php:73
177
+ msgid "Description source"
178
+ msgstr "Leírás forrása"
179
+
180
+ #: includes/options.php:74
181
+ msgid ""
182
+ "From where to take product description.<br>If first source is empty data "
183
+ "will be taken from other sources."
184
+ msgstr ""
185
+ "Honnan jelenjen meg a termékleírás.<br>Ha a választott mezőben nincs adat, "
186
+ "akkor másik mezőből próbálja kivenni."
187
+
188
+ #: includes/options.php:79
189
+ msgid "Content"
190
+ msgstr "Teljes leírás"
191
+
192
+ #: includes/options.php:80
193
+ msgid "Excerpt"
194
+ msgstr "Rövid leírás"
195
+
196
+ #: includes/options.php:85
197
+ msgid "Description length"
198
+ msgstr "Leírás hossza"
199
+
200
+ #: includes/options.php:86
201
+ msgid "Maximal allowed number of words for product description."
202
+ msgstr "A maximálisan megengedett szó szám amit a termékleírásból megjelenít."
203
+
204
+ #: includes/options.php:93
205
+ msgid "Show price"
206
+ msgstr "Ár mutatása"
207
+
208
+ #: includes/options.php:94
209
+ msgid "Show product price for each search result."
210
+ msgstr "Minden keresési találathoz mutatja a termék árát is."
211
+
212
+ #: includes/options.php:105
213
+ msgid "Description content"
214
+ msgstr "Leírás tartalma"
215
+
216
+ #: includes/options.php:106
217
+ msgid "What to show in product description?"
218
+ msgstr "Mit mutassunk a termék leírásnál?"
219
+
220
+ #: includes/options.php:117
221
+ msgid "Show categories"
222
+ msgstr "Kategóriák mutatása"
223
+
224
+ #: includes/options.php:118
225
+ msgid "Include categories in search result."
226
+ msgstr "Minden keresési találathoz mutatja a termék kategóriáit is."
227
+
228
+ #: includes/options.php:129
229
+ msgid "Show tags"
230
+ msgstr "Címkék mutatása"
231
+
232
+ #: includes/options.php:130
233
+ msgid "Include tags in search result."
234
+ msgstr "Minden keresési találathoz mutatja a termék címkéit is."
235
+
236
+ #: includes/options.php:141
237
+ msgid "Show sale badge"
238
+ msgstr "Akciós matrica mutatása"
239
+
240
+ #: includes/options.php:142
241
+ msgid "Show sale badge for products in search results."
242
+ msgstr "Minden keresési találathoz mutatja a termék akciós matricáját is."
243
+
244
+ #: includes/options.php:153
245
+ msgid "Show product SKU"
246
+ msgstr "Cikkszám mutatása"
247
+
248
+ #: includes/options.php:154
249
+ msgid "Show product SKU in search results."
250
+ msgstr "Minden keresési találathoz mutatja a termék cikkszámát is."
251
+
252
+ #: includes/options.php:167
253
+ msgid "Max number of results"
254
+ msgstr "Találatok maximális száma"
255
+
256
+ #: includes/options.php:168
257
+ msgid "Maximum number of displayed search results."
258
+ msgstr "A maximálisan megjelenítendő keresési találatok száma"
259
+
260
+ #: includes/options.php:175
261
+ msgid "Search in"
262
+ msgstr "Miben keressek?"
263
+
264
+ #: includes/options.php:176
265
+ msgid ""
266
+ "Source of searching. Set the source of searching by drag&drop needed fields "
267
+ "to the right area."
268
+ msgstr ""
269
+ "Az alábbi termék mezőkben van lehetőség keresni, engedélyezéshez csupán a "
270
+ "bal oldalról a jobb oldalra kell a mezőt áthúzni."
271
+
272
+ #. Name of the plugin
273
+ msgid "Advanced Woo Search"
274
+ msgstr "Advanced Woo Search"
275
+
276
+ #. Description of the plugin
277
+ msgid "Advance ajax WooCommerce product search."
278
+ msgstr ""
279
+ "Ajax alapú, keresőszó gépelése közben működésbe lépő (prediktív) termék "
280
+ "kereső WooCommerce áruházhoz."
281
+
282
+ #. Author of the plugin
283
+ msgid "ILLID"
284
+ msgstr "ILLID - Magyar fordítás: DuraSoft"
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
4
  Tags: widget, plugin, woocommerce, search, product search, woocommerce search, ajax search, live search, custom search, ajax, shortcode, better search, relevance search, relevant search, search by sku, search plugin, shop, store, wordpress search, wp ajax search, wp search, wp search plugin, sidebar, ecommerce, merketing, products, category search, instant-search, search highlight, woocommerce advanced search, woocommerce live search, WooCommerce Plugin, woocommerce product search
5
  Requires at least: 4.0
6
  Tested up to: 4.6
7
- Stable tag: 1.08
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -12,7 +12,7 @@ Advanced AJAX search plugin for WooCommerce
12
 
13
  == Description ==
14
 
15
- Advanced Woo Search - powerful live search plugin for WooCommerce. Just start typing and you will immediately see the products that you search.
16
 
17
  = Main Features =
18
 
@@ -64,6 +64,10 @@ Or insert this function inside php file ( often it used to insert form inside pa
64
 
65
  == Changelog ==
66
 
 
 
 
 
67
  = 1.08 =
68
  * Update check for active WooCommerce plugin
69
  * Add hungarian translation ( big thanks to hunited! )
4
  Tags: widget, plugin, woocommerce, search, product search, woocommerce search, ajax search, live search, custom search, ajax, shortcode, better search, relevance search, relevant search, search by sku, search plugin, shop, store, wordpress search, wp ajax search, wp search, wp search plugin, sidebar, ecommerce, merketing, products, category search, instant-search, search highlight, woocommerce advanced search, woocommerce live search, WooCommerce Plugin, woocommerce product search
5
  Requires at least: 4.0
6
  Tested up to: 4.6
7
+ Stable tag: 1.09
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
12
 
13
  == Description ==
14
 
15
+ Advanced Woo Search - powerful live search plugin for WooCommerce. Just start typing and you will immediately see the products that you search
16
 
17
  = Main Features =
18
 
64
 
65
  == Changelog ==
66
 
67
+ = 1.09 =
68
+ * Make indexing of the products content much more fuster
69
+ * Fix several bugs
70
+
71
  = 1.08 =
72
  * Update check for active WooCommerce plugin
73
  * Add hungarian translation ( big thanks to hunited! )