Featured Image From URL - Version 3.4.3

Version Description

  • Notice: FIFU Premium has now a 30-day money-back guarantee; notice: support to WooCommerce Import and WP All Import are available only in the Premium version now; improvement: integration with User Submitted Posts plugin.
Download this release

Release Info

Developer marceljm
Plugin Icon 128x128 Featured Image From URL
Version 3.4.3
Comparing to
See all releases

Code changes from version 3.4.2 to 3.4.3

admin/html/menu.html CHANGED
@@ -2302,8 +2302,44 @@
2302
  </div>
2303
 
2304
  <div class="box">
2305
- <h2><?php $fifu['title']['import']() ?></h2>
2306
  <div class="greybox">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2307
  <?php $fifu['import']['desc']() ?>
2308
  <br/>
2309
  <br/>
@@ -2312,41 +2348,9 @@
2312
  <ul>
2313
  <li><a href="#tabs-3"><?php $fifu['import']['tab']['import']() ?></a></li>
2314
  <li><a href="#tabs-1"><?php $fifu['import']['tab']['custom']() ?></a></li>
2315
- <li><a href="#tabs-2"><?php $fifu['import']['tab']['custom']() ?> (premium)</a></li>
2316
  <li><a href="#tabs-4"><?php $fifu['import']['tab']['priority']() ?></a></li>
2317
  </ul>
2318
  <div id="tabs-1">
2319
-
2320
- <table style="text-align:left">
2321
- <tr>
2322
- <th>
2323
- </th>
2324
- <th>
2325
- <?php $fifu['import']['custom']['key']() ?>
2326
- </th>
2327
- </tr>
2328
- <tr>
2329
- <th>
2330
- <?php $fifu['import']['custom']['image']() ?>
2331
- </th>
2332
- <th>
2333
- fifu_image_url
2334
- </th>
2335
- </tr>
2336
- <tr>
2337
- <th>
2338
- <?php $fifu['import']['custom']['alt']() ?>
2339
- </th>
2340
- <th>
2341
- fifu_image_alt
2342
- </th>
2343
- </tr>
2344
- </table>
2345
-
2346
- <br/>
2347
- </div>
2348
-
2349
- <div id="tabs-2">
2350
  <table style="text-align:left">
2351
  <tr>
2352
  <th>
@@ -2454,40 +2458,6 @@
2454
  </div>
2455
  </div>
2456
 
2457
- <div class="box">
2458
- <h2><?php $fifu['title']['grid']() ?></h2>
2459
- <div class="greybox">
2460
- <?php $fifu['grid']['desc']() ?>
2461
- </div>
2462
- <br>
2463
- <table style="text-align:left">
2464
- <tr>
2465
- <th>
2466
- <form
2467
- id="fifu_form_grid_category"
2468
- action="javascript:void(0)"
2469
- method="post">
2470
- <input
2471
- type="submit"
2472
- href="javascript:void(0)"
2473
- id="fifu_toggle_grid_category"
2474
- onclick="invert('grid_category')"
2475
- name="fifu_toggle_grid_category"
2476
- class="<?php echo $enable_grid_category; ?>"
2477
- value=""
2478
- style="display:block;border:none">
2479
-
2480
- <input
2481
- type="hidden"
2482
- id="fifu_input_grid_category"
2483
- name="fifu_input_grid_category"
2484
- value="" >
2485
- </form>
2486
- </th>
2487
- </tr>
2488
- </table>
2489
- </div>
2490
-
2491
  <div class="box">
2492
  <div class="fifu-pro"><a href="https://fifu.app" target="_blank" style="color:grey">premium</a></div>
2493
  <h2><?php $fifu['title']['fields']() ?></h2>
@@ -2576,8 +2546,10 @@
2576
 
2577
  <div id="tabs-p">
2578
  <div class="box">
 
2579
  <h2><?php $fifu['title']['addon']() ?></h2>
2580
- <div class="greybox">
 
2581
  <?php $fifu['addon']['desc']() ?>
2582
  <br/>
2583
  <br/>
@@ -2671,7 +2643,7 @@
2671
  <i class="fab fa-facebook" style="font-size:30px"></i>
2672
  </td>
2673
  <td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
2674
- <i class="fas fa-skull-crossbones" style="font-size:30px"></i>
2675
  </td>
2676
  <td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
2677
  <i class="fas fa-tachometer-alt" style="font-size:30px"></i>
@@ -2682,7 +2654,7 @@
2682
  <i><?php $fifu['support']['facebook']() ?></i>
2683
  </td>
2684
  <td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
2685
- <i><?php $fifu['support']['null']() ?></i>
2686
  </td>
2687
  <td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
2688
  <i><?php $fifu['support']['speed']() ?></i>
@@ -2693,7 +2665,7 @@
2693
  <?php $fifu['support']['facebook-desc']() ?>
2694
  </td>
2695
  <td style="vertical-align: top;">
2696
- <?php $fifu['support']['null-desc']() ?>
2697
  </td>
2698
  <td style="vertical-align: top;">
2699
  <?php $fifu['support']['speed-desc']() ?>
2302
  </div>
2303
 
2304
  <div class="box">
2305
+ <h2><?php $fifu['title']['grid']() ?></h2>
2306
  <div class="greybox">
2307
+ <?php $fifu['grid']['desc']() ?>
2308
+ </div>
2309
+ <br>
2310
+ <table style="text-align:left">
2311
+ <tr>
2312
+ <th>
2313
+ <form
2314
+ id="fifu_form_grid_category"
2315
+ action="javascript:void(0)"
2316
+ method="post">
2317
+ <input
2318
+ type="submit"
2319
+ href="javascript:void(0)"
2320
+ id="fifu_toggle_grid_category"
2321
+ onclick="invert('grid_category')"
2322
+ name="fifu_toggle_grid_category"
2323
+ class="<?php echo $enable_grid_category; ?>"
2324
+ value=""
2325
+ style="display:block;border:none">
2326
+
2327
+ <input
2328
+ type="hidden"
2329
+ id="fifu_input_grid_category"
2330
+ name="fifu_input_grid_category"
2331
+ value="" >
2332
+ </form>
2333
+ </th>
2334
+ </tr>
2335
+ </table>
2336
+ </div>
2337
+
2338
+ <div class="box">
2339
+ <div class="fifu-pro"><a href="https://fifu.app" target="_blank" style="color:grey">premium</a></div>
2340
+ <h2><?php $fifu['title']['import']() ?></h2>
2341
+
2342
+ <div class="greybox" id="grad2">
2343
  <?php $fifu['import']['desc']() ?>
2344
  <br/>
2345
  <br/>
2348
  <ul>
2349
  <li><a href="#tabs-3"><?php $fifu['import']['tab']['import']() ?></a></li>
2350
  <li><a href="#tabs-1"><?php $fifu['import']['tab']['custom']() ?></a></li>
 
2351
  <li><a href="#tabs-4"><?php $fifu['import']['tab']['priority']() ?></a></li>
2352
  </ul>
2353
  <div id="tabs-1">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2354
  <table style="text-align:left">
2355
  <tr>
2356
  <th>
2458
  </div>
2459
  </div>
2460
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2461
  <div class="box">
2462
  <div class="fifu-pro"><a href="https://fifu.app" target="_blank" style="color:grey">premium</a></div>
2463
  <h2><?php $fifu['title']['fields']() ?></h2>
2546
 
2547
  <div id="tabs-p">
2548
  <div class="box">
2549
+ <div class="fifu-pro"><a href="https://fifu.app" target="_blank" style="color:grey">premium</a></div>
2550
  <h2><?php $fifu['title']['addon']() ?></h2>
2551
+
2552
+ <div class="greybox" id="grad2">
2553
  <?php $fifu['addon']['desc']() ?>
2554
  <br/>
2555
  <br/>
2643
  <i class="fab fa-facebook" style="font-size:30px"></i>
2644
  </td>
2645
  <td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
2646
+ <i class="fas fa-money-bill-alt" style="font-size:30px"></i>
2647
  </td>
2648
  <td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
2649
  <i class="fas fa-tachometer-alt" style="font-size:30px"></i>
2654
  <i><?php $fifu['support']['facebook']() ?></i>
2655
  </td>
2656
  <td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
2657
+ <i><?php $fifu['support']['money']() ?></i>
2658
  </td>
2659
  <td style="width:33%;text-align:center;border-bottom: 1px solid #ddd !important">
2660
  <i><?php $fifu['support']['speed']() ?></i>
2665
  <?php $fifu['support']['facebook-desc']() ?>
2666
  </td>
2667
  <td style="vertical-align: top;">
2668
+ <?php $fifu['support']['money-desc']() ?>
2669
  </td>
2670
  <td style="vertical-align: top;">
2671
  <?php $fifu['support']['speed-desc']() ?>
admin/meta-box.php CHANGED
@@ -195,32 +195,8 @@ function fifu_update_or_delete_ctgr($post_id, $field, $url) {
195
  delete_term_meta($post_id, $field, $url);
196
  }
197
 
198
- function fifu_wai_save($post_id, $is_ctgr) {
199
- if ($is_ctgr) {
200
- $url = get_term_meta($post_id, 'fifu_image_url', true);
201
- $alt = get_term_meta($post_id, 'fifu_image_alt', true);
202
- fifu_update_or_delete_ctgr($post_id, 'fifu_image_url', $url);
203
- fifu_update_or_delete_ctgr($post_id, 'fifu_image_alt', $alt);
204
- } else {
205
- $url = get_post_meta($post_id, 'fifu_image_url', true);
206
- $alt = get_term_meta($post_id, 'fifu_image_alt', true);
207
- fifu_update_or_delete($post_id, 'fifu_image_url', $url);
208
- fifu_update_or_delete($post_id, 'fifu_image_alt', $alt);
209
- }
210
- }
211
-
212
  add_action('before_delete_post', 'fifu_db_before_delete_post');
213
 
214
- /* regular woocommerce import */
215
-
216
- add_action('woocommerce_product_import_inserted_product_object', 'fifu_woocommerce_import');
217
-
218
- function fifu_woocommerce_import($object) {
219
- $post_id = $object->get_id();
220
- fifu_wai_save($post_id, null);
221
- fifu_update_fake_attach_id($post_id);
222
- }
223
-
224
  /* plugin: wcfm */
225
 
226
  function fifu_is_wcfm_active() {
195
  delete_term_meta($post_id, $field, $url);
196
  }
197
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  add_action('before_delete_post', 'fifu_db_before_delete_post');
199
 
 
 
 
 
 
 
 
 
 
 
200
  /* plugin: wcfm */
201
 
202
  function fifu_is_wcfm_active() {
admin/rapid-addon.php DELETED
@@ -1,1256 +0,0 @@
1
- <?php
2
- /**
3
- * RapidAddon
4
- *
5
- * @package WP All Import RapidAddon
6
- * @copyright Copyright (c) 2014, Soflyy
7
- * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
8
- * @version 1.1.1
9
- */
10
- /* https://github.com/soflyy/wp-all-import-rapid-addon/edit/master/rapid-addon.php */
11
-
12
- if (!class_exists('RapidAddon')) {
13
-
14
- class RapidAddon {
15
-
16
- public $name;
17
- public $slug;
18
- public $fields;
19
- public $options = array();
20
- public $accordions = array();
21
- public $image_sections = array();
22
- public $import_function;
23
- public $post_saved_function;
24
- public $notice_text;
25
- public $logger = null;
26
- public $when_to_run = false;
27
- public $image_options = array(
28
- 'download_images' => 'yes',
29
- 'download_featured_delim' => ',',
30
- 'download_featured_image' => '',
31
- 'gallery_featured_image' => '',
32
- 'gallery_featured_delim' => ',',
33
- 'featured_image' => '',
34
- 'featured_delim' => ',',
35
- 'search_existing_images' => 1,
36
- 'is_featured' => 0,
37
- 'create_draft' => 'no',
38
- 'set_image_meta_title' => 0,
39
- 'image_meta_title_delim' => ',',
40
- 'image_meta_title' => '',
41
- 'set_image_meta_caption' => 0,
42
- 'image_meta_caption_delim' => ',',
43
- 'image_meta_caption' => '',
44
- 'set_image_meta_alt' => 0,
45
- 'image_meta_alt_delim' => ',',
46
- 'image_meta_alt' => '',
47
- 'set_image_meta_description' => 0,
48
- 'image_meta_description_delim' => ',',
49
- 'image_meta_description_delim_logic' => 'separate',
50
- 'image_meta_description' => '',
51
- 'auto_rename_images' => 0,
52
- 'auto_rename_images_suffix' => '',
53
- 'auto_set_extension' => 0,
54
- 'new_extension' => '',
55
- 'do_not_remove_images' => 1,
56
- 'search_existing_images_logic' => 'by_url'
57
- );
58
- protected $isWizard = true;
59
-
60
- function __construct($name, $slug) {
61
- $this->name = $name;
62
- $this->slug = $slug;
63
- if (!empty($_GET['id'])) {
64
- $this->isWizard = false;
65
- }
66
- }
67
-
68
- function set_import_function($name) {
69
- $this->import_function = $name;
70
- }
71
-
72
- function set_post_saved_function($name) {
73
- $this->post_saved_function = $name;
74
- }
75
-
76
- function is_active_addon($post_type = null) {
77
-
78
- if (!is_plugin_active('wp-all-import-pro/wp-all-import-pro.php') and ! is_plugin_active('wp-all-import/plugin.php')) {
79
- return false;
80
- }
81
-
82
- $addon_active = false;
83
-
84
- if ($post_type !== null) {
85
- if (@in_array($post_type, $this->active_post_types) or empty($this->active_post_types)) {
86
- $addon_active = true;
87
- }
88
- }
89
-
90
- if ($addon_active) {
91
-
92
- $current_theme = wp_get_theme();
93
-
94
- $parent_theme = $current_theme->parent();
95
-
96
- $theme_name = $current_theme->get('Name');
97
-
98
- $addon_active = (@in_array($theme_name, $this->active_themes) or empty($this->active_themes)) ? true : false;
99
-
100
- if (!$addon_active and $parent_theme) {
101
- $parent_theme_name = $parent_theme->get('Name');
102
- $addon_active = (@in_array($parent_theme_name, $this->active_themes) or empty($this->active_themes)) ? true : false;
103
- }
104
-
105
- if ($addon_active and ! empty($this->active_plugins)) {
106
-
107
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
108
-
109
- foreach ($this->active_plugins as $plugin) {
110
- if (!is_plugin_active($plugin)) {
111
- $addon_active = false;
112
- break;
113
- }
114
- }
115
- }
116
- }
117
-
118
- if ($this->when_to_run == "always") {
119
- $addon_active = true;
120
- }
121
-
122
- return apply_filters('rapid_is_active_add_on', $addon_active, $post_type, $this->slug);
123
- }
124
-
125
- /**
126
- *
127
- * Add-On Initialization
128
- *
129
- * @param array $conditions - list of supported themes and post types
130
- *
131
- */
132
- function run($conditions = array()) {
133
-
134
- if (empty($conditions)) {
135
- $this->when_to_run = "always";
136
- }
137
-
138
- @$this->active_post_types = (!empty($conditions['post_types'])) ? $conditions['post_types'] : array();
139
- @$this->active_themes = (!empty($conditions['themes'])) ? $conditions['themes'] : array();
140
- @$this->active_plugins = (!empty($conditions['plugins'])) ? $conditions['plugins'] : array();
141
-
142
- add_filter('pmxi_addons', array($this, 'wpai_api_register'));
143
- add_filter('wp_all_import_addon_parse', array($this, 'wpai_api_parse'));
144
- add_filter('wp_all_import_addon_import', array($this, 'wpai_api_import'));
145
- add_filter('wp_all_import_addon_saved_post', array($this, 'wpai_api_post_saved'));
146
- add_filter('pmxi_options_options', array($this, 'wpai_api_options'));
147
- add_filter('wp_all_import_image_sections', array($this, 'additional_sections'), 10, 1);
148
- add_filter('pmxi_custom_types', array($this, 'filter_post_types'), 10, 2);
149
- add_filter('pmxi_post_list_order', array($this, 'sort_post_types'), 10, 1);
150
- add_filter('wp_all_import_post_type_image', array($this, 'post_type_image'), 10, 1);
151
- add_action('pmxi_extend_options_featured', array($this, 'wpai_api_metabox'), 10, 2);
152
- add_action('admin_init', array($this, 'admin_notice_ignore'));
153
- }
154
-
155
- function parse($data) {
156
-
157
- if (!$this->is_active_addon($data['import']->options['custom_type']))
158
- return false;
159
-
160
- $parsedData = $this->helper_parse($data, $this->options_array());
161
- return $parsedData;
162
- }
163
-
164
- function add_field($field_slug, $field_name, $field_type, $enum_values = null, $tooltip = "", $is_html = true, $default_text = '') {
165
-
166
- $field = array("name" => $field_name, "type" => $field_type, "enum_values" => $enum_values, "tooltip" => $tooltip, "is_sub_field" => false, "is_main_field" => false, "slug" => $field_slug, "is_html" => $is_html, 'default_text' => $default_text);
167
-
168
- $this->fields[$field_slug] = $field;
169
-
170
- if (!empty($enum_values)) {
171
- foreach ($enum_values as $key => $value) {
172
- if (is_array($value)) {
173
- if ($field['type'] == 'accordion') {
174
- $this->fields[$value['slug']]['is_sub_field'] = true;
175
- } else {
176
- foreach ($value as $n => $param) {
177
- if (is_array($param) and ! empty($this->fields[$param['slug']])) {
178
- $this->fields[$param['slug']]['is_sub_field'] = true;
179
- }
180
- }
181
- }
182
- }
183
- }
184
- }
185
-
186
- return $field;
187
- }
188
-
189
- function add_acf_field($field) {
190
- $this->fields[$field->post_name] = array(
191
- 'type' => 'acf',
192
- 'field_obj' => $field
193
- );
194
- }
195
-
196
- private $acfGroups = array();
197
-
198
- function use_acf_group($acf_group) {
199
- $this->add_text(
200
- '<div class="postbox acf_postbox default acf_signle_group rad4">
201
- <h3 class="hndle" style="margin-top:0;"><span>' . $acf_group['title'] . '</span></h3>
202
- <div class="inside">');
203
- $acf_fields = get_posts(array('posts_per_page' => -1, 'post_type' => 'acf-field', 'post_parent' => $acf_group['ID'], 'post_status' => 'publish', 'orderby' => 'menu_order', 'order' => 'ASC'));
204
- if (!empty($acf_fields)) {
205
- foreach ($acf_fields as $field) {
206
- $this->add_acf_field($field);
207
- }
208
- }
209
- $this->add_text('</div></div>');
210
- $this->acfGroups[] = $acf_group['ID'];
211
- add_filter('wp_all_import_acf_is_show_group', array($this, 'acf_is_show_group'), 10, 2);
212
- }
213
-
214
- function acf_is_show_group($is_show, $acf_group) {
215
- return (in_array($acf_group['ID'], $this->acfGroups)) ? false : true;
216
- }
217
-
218
- /**
219
- *
220
- * Add an option to WP All Import options list
221
- *
222
- * @param string $slug - option name
223
- * @param string $default_value - default option value
224
- *
225
- */
226
- function add_option($slug, $default_value = '') {
227
- $this->options[$slug] = $default_value;
228
- }
229
-
230
- function options_array() {
231
-
232
- $options_list = array();
233
-
234
- if (!empty($this->fields)) {
235
-
236
- foreach ($this->fields as $field_slug => $field_params) {
237
- if (in_array($field_params['type'], array('title', 'plain_text', 'acf')))
238
- continue;
239
- $default_value = '';
240
- if (!empty($field_params['enum_values'])) {
241
- foreach ($field_params['enum_values'] as $key => $value) {
242
- $default_value = $key;
243
- break;
244
- }
245
- }
246
- $options_list[$field_slug] = $default_value;
247
- }
248
- }
249
-
250
- if (!empty($this->options)) {
251
- foreach ($this->options as $slug => $value) {
252
- $options_arr[$slug] = $value;
253
- }
254
- }
255
-
256
- $options_arr[$this->slug] = $options_list;
257
- $options_arr['rapid_addon'] = plugin_basename(__FILE__);
258
-
259
- return $options_arr;
260
- }
261
-
262
- function wpai_api_options($all_options) {
263
-
264
- $all_options = $all_options + $this->options_array();
265
-
266
- return $all_options;
267
- }
268
-
269
- function wpai_api_register($addons) {
270
-
271
- if (empty($addons[$this->slug])) {
272
- $addons[$this->slug] = 1;
273
- }
274
-
275
- return $addons;
276
- }
277
-
278
- function wpai_api_parse($functions) {
279
-
280
- $functions[$this->slug] = array($this, 'parse');
281
- return $functions;
282
- }
283
-
284
- function wpai_api_post_saved($functions) {
285
- $functions[$this->slug] = array($this, 'post_saved');
286
- return $functions;
287
- }
288
-
289
- function wpai_api_import($functions) {
290
-
291
- $functions[$this->slug] = array($this, 'import');
292
- return $functions;
293
- }
294
-
295
- function post_saved($importData) {
296
-
297
- if (is_callable($this->post_saved_function))
298
- call_user_func($this->post_saved_function, $importData['pid'], $importData['import'], $importData['logger']);
299
- }
300
-
301
- function import($importData, $parsedData) {
302
-
303
- if (!$this->is_active_addon($importData['post_type'])) {
304
- return;
305
- }
306
-
307
- $import_options = $importData['import']['options'][$this->slug];
308
-
309
- // echo "<pre>";
310
- // print_r($import_options);
311
- // echo "</pre>";
312
-
313
- if (!empty($parsedData)) {
314
-
315
- $this->logger = $importData['logger'];
316
-
317
- $post_id = $importData['pid'];
318
- $index = $importData['i'];
319
- $data = array();
320
- if (!empty($this->fields)) {
321
- foreach ($this->fields as $field_slug => $field_params) {
322
- if (in_array($field_params['type'], array('title', 'plain_text')))
323
- continue;
324
- switch ($field_params['type']) {
325
-
326
- case 'image':
327
-
328
- // import the specified image, then set the value of the field to the image ID in the media library
329
-
330
- $image_url_or_path = $parsedData[$field_slug][$index];
331
-
332
- $download = $import_options['download_image'][$field_slug];
333
-
334
- $uploaded_image = PMXI_API::upload_image($post_id, $image_url_or_path, $download, $importData['logger'], true, "", "images", true, $importData['articleData']);
335
-
336
- $data[$field_slug] = array(
337
- "attachment_id" => $uploaded_image,
338
- "image_url_or_path" => $image_url_or_path,
339
- "download" => $download
340
- );
341
-
342
- break;
343
-
344
- case 'file':
345
-
346
- $image_url_or_path = $parsedData[$field_slug][$index];
347
-
348
- $download = $import_options['download_image'][$field_slug];
349
-
350
- $uploaded_file = PMXI_API::upload_image($post_id, $image_url_or_path, $download, $importData['logger'], true, "", "files", true, $importData['articleData']);
351
-
352
- $data[$field_slug] = array(
353
- "attachment_id" => $uploaded_file,
354
- "image_url_or_path" => $image_url_or_path,
355
- "download" => $download
356
- );
357
-
358
- break;
359
-
360
- default:
361
- // set the field data to the value of the field after it's been parsed
362
- $data[$field_slug] = $parsedData[$field_slug][$index];
363
- break;
364
- }
365
-
366
- // apply mapping rules if they exist
367
- if (!empty($import_options['mapping'][$field_slug])) {
368
- $mapping_rules = json_decode($import_options['mapping'][$field_slug], true);
369
-
370
- if (!empty($mapping_rules) and is_array($mapping_rules)) {
371
- foreach ($mapping_rules as $rule_number => $map_to) {
372
- if (isset($map_to[trim($data[$field_slug])])) {
373
- $data[$field_slug] = trim($map_to[trim($data[$field_slug])]);
374
- break;
375
- }
376
- }
377
- }
378
- }
379
- // --------------------
380
- }
381
- }
382
-
383
- call_user_func($this->import_function, $post_id, $data, $importData['import'], $importData['articleData'], $importData['logger']);
384
- }
385
- }
386
-
387
- function wpai_api_metabox($post_type, $current_values) {
388
-
389
- if (!$this->is_active_addon($post_type)) {
390
- return;
391
- }
392
-
393
- echo $this->helper_metabox_top($this->name);
394
-
395
- $visible_fields = 0;
396
-
397
- foreach ($this->fields as $field_slug => $field_params) {
398
- if ($field_params['is_sub_field'])
399
- continue;
400
- $visible_fields++;
401
- }
402
-
403
- $counter = 0;
404
-
405
- foreach ($this->fields as $field_slug => $field_params) {
406
-
407
- // do not render sub fields
408
- if ($field_params['is_sub_field'])
409
- continue;
410
-
411
- $counter++;
412
-
413
- $this->render_field($field_params, $field_slug, $current_values, $visible_fields == $counter);
414
-
415
- //if ( $field_params['type'] != 'accordion' ) echo "<br />";
416
- }
417
-
418
- echo $this->helper_metabox_bottom();
419
-
420
- if (!empty($this->image_sections)) {
421
- $is_images_section_enabled = apply_filters('wp_all_import_is_images_section_enabled', true, $post_type);
422
- foreach ($this->image_sections as $k => $section) {
423
- $section_options = array();
424
- foreach ($this->image_options as $slug => $value) {
425
- $section_options[$section['slug'] . $slug] = $value;
426
- }
427
- if (!$is_images_section_enabled and ! $k) {
428
- $section_options[$section['slug'] . 'is_featured'] = 1;
429
- }
430
- PMXI_API::add_additional_images_section($section['title'], $section['slug'], $current_values, '', true, false, $section['type']);
431
- }
432
- }
433
- }
434
-
435
- function render_field($field_params, $field_slug, $current_values, $in_the_bottom = false) {
436
-
437
- if (!isset($current_values[$this->slug][$field_slug])) {
438
- $current_values[$this->slug][$field_slug] = isset($field_params['default_text']) ? $field_params['default_text'] : '';
439
- }
440
-
441
- if ($field_params['type'] == 'text') {
442
-
443
- PMXI_API::add_field(
444
- 'simple',
445
- $field_params['name'],
446
- array(
447
- 'tooltip' => $field_params['tooltip'],
448
- 'field_name' => $this->slug . "[" . $field_slug . "]",
449
- 'field_value' => ( $current_values[$this->slug][$field_slug] == '' && $this->isWizard ) ? $field_params['default_text'] : $current_values[$this->slug][$field_slug]
450
- )
451
- );
452
- } else if ($field_params['type'] == 'textarea') {
453
-
454
- PMXI_API::add_field(
455
- 'textarea',
456
- $field_params['name'],
457
- array(
458
- 'tooltip' => $field_params['tooltip'],
459
- 'field_name' => $this->slug . "[" . $field_slug . "]",
460
- 'field_value' => ( $current_values[$this->slug][$field_slug] == '' && $this->isWizard ) ? $field_params['default_text'] : $current_values[$this->slug][$field_slug]
461
- )
462
- );
463
- } else if ($field_params['type'] == 'wp_editor') {
464
-
465
- PMXI_API::add_field(
466
- 'wp_editor',
467
- $field_params['name'],
468
- array(
469
- 'tooltip' => $field_params['tooltip'],
470
- 'field_name' => $this->slug . "[" . $field_slug . "]",
471
- 'field_value' => ( $current_values[$this->slug][$field_slug] == '' && $this->isWizard ) ? $field_params['default_text'] : $current_values[$this->slug][$field_slug]
472
- )
473
- );
474
- } else if ($field_params['type'] == 'image' or $field_params['type'] == 'file') {
475
-
476
- if (!isset($current_values[$this->slug]['download_image'][$field_slug])) {
477
- $current_values[$this->slug]['download_image'][$field_slug] = '';
478
- }
479
-
480
- PMXI_API::add_field(
481
- $field_params['type'],
482
- $field_params['name'],
483
- array(
484
- 'tooltip' => $field_params['tooltip'],
485
- 'field_name' => $this->slug . "[" . $field_slug . "]",
486
- 'field_value' => $current_values[$this->slug][$field_slug],
487
- 'download_image' => $current_values[$this->slug]['download_image'][$field_slug],
488
- 'field_key' => $field_slug,
489
- 'addon_prefix' => $this->slug
490
- )
491
- );
492
- } else if ($field_params['type'] == 'radio') {
493
-
494
- if (!isset($current_values[$this->slug]['mapping'][$field_slug])) {
495
- $current_values[$this->slug]['mapping'][$field_slug] = array();
496
- }
497
- if (!isset($current_values[$this->slug]['xpaths'][$field_slug])) {
498
- $current_values[$this->slug]['xpaths'][$field_slug] = '';
499
- }
500
-
501
- PMXI_API::add_field(
502
- 'enum',
503
- $field_params['name'],
504
- array(
505
- 'tooltip' => $field_params['tooltip'],
506
- 'field_name' => $this->slug . "[" . $field_slug . "]",
507
- 'field_value' => $current_values[$this->slug][$field_slug],
508
- 'enum_values' => $field_params['enum_values'],
509
- 'mapping' => true,
510
- 'field_key' => $field_slug,
511
- 'mapping_rules' => $current_values[$this->slug]['mapping'][$field_slug],
512
- 'xpath' => $current_values[$this->slug]['xpaths'][$field_slug],
513
- 'addon_prefix' => $this->slug,
514
- 'sub_fields' => $this->get_sub_fields($field_params, $field_slug, $current_values)
515
- )
516
- );
517
- } else if ($field_params['type'] == 'accordion') {
518
-
519
- PMXI_API::add_field(
520
- 'accordion',
521
- $field_params['name'],
522
- array(
523
- 'tooltip' => $field_params['tooltip'],
524
- 'field_name' => $this->slug . "[" . $field_slug . "]",
525
- 'field_key' => $field_slug,
526
- 'addon_prefix' => $this->slug,
527
- 'sub_fields' => $this->get_sub_fields($field_params, $field_slug, $current_values),
528
- 'in_the_bottom' => $in_the_bottom
529
- )
530
- );
531
- } else if ($field_params['type'] == 'acf') {
532
- $fieldData = (!empty($field_params['field_obj']->post_content)) ? unserialize($field_params['field_obj']->post_content) : array();
533
- $fieldData['ID'] = $field_params['field_obj']->ID;
534
- $fieldData['id'] = $field_params['field_obj']->ID;
535
- $fieldData['label'] = $field_params['field_obj']->post_title;
536
- $fieldData['key'] = $field_params['field_obj']->post_name;
537
- if (empty($fieldData['name']))
538
- $fieldData['name'] = $field_params['field_obj']->post_excerpt;
539
- if (function_exists('pmai_render_field')) {
540
- echo pmai_render_field($fieldData, (!empty($current_values) ) ? $current_values : array() );
541
- }
542
- } else if ($field_params['type'] == 'title') {
543
- ?>
544
- <h4 class="wpallimport-add-on-options-title"><?php _e($field_params['name'], 'wp_all_import_plugin'); ?><?php if (!empty($field_params['tooltip'])): ?><a href="#help" class="wpallimport-help" title="<?php echo $field_params['tooltip']; ?>" style="position:relative; top: -1px;">?</a><?php endif; ?></h4>
545
- <?php
546
- } else if ($field_params['type'] == 'plain_text') {
547
- if ($field_params['is_html']):
548
- echo $field_params['name'];
549
- else:
550
- ?>
551
- <p style="margin: 0 0 12px 0;"><?php echo $field_params['name']; ?></p>
552
- <?php
553
- endif;
554
- }
555
- }
556
-
557
- /**
558
- *
559
- * Helper function for nested radio fields
560
- *
561
- */
562
- function get_sub_fields($field_params, $field_slug, $current_values) {
563
- $sub_fields = array();
564
- if (!empty($field_params['enum_values'])) {
565
- foreach ($field_params['enum_values'] as $key => $value) {
566
- $sub_fields[$key] = array();
567
- if (is_array($value)) {
568
- if ($field_params['type'] == 'accordion') {
569
- $sub_fields[$key][] = $this->convert_field($value, $current_values);
570
- } else {
571
- foreach ($value as $k => $sub_field) {
572
- if (is_array($sub_field) and ! empty($this->fields[$sub_field['slug']])) {
573
- $sub_fields[$key][] = $this->convert_field($sub_field, $current_values);
574
- }
575
- }
576
- }
577
- }
578
- }
579
- }
580
- return $sub_fields;
581
- }
582
-
583
- function convert_field($sub_field, $current_values) {
584
- $field = array();
585
- if (!isset($current_values[$this->slug][$sub_field['slug']])) {
586
- $current_values[$this->slug][$sub_field['slug']] = isset($sub_field['default_text']) ? $sub_field['default_text'] : '';
587
- }
588
- switch ($this->fields[$sub_field['slug']]['type']) {
589
- case 'text':
590
- $field = array(
591
- 'type' => 'simple',
592
- 'label' => $this->fields[$sub_field['slug']]['name'],
593
- 'params' => array(
594
- 'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
595
- 'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
596
- 'field_value' => ($current_values[$this->slug][$sub_field['slug']] == '' && $this->isWizard) ? $sub_field['default_text'] : $current_values[$this->slug][$sub_field['slug']],
597
- 'is_main_field' => $sub_field['is_main_field']
598
- )
599
- );
600
- break;
601
- case 'textarea':
602
- $field = array(
603
- 'type' => 'textarea',
604
- 'label' => $this->fields[$sub_field['slug']]['name'],
605
- 'params' => array(
606
- 'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
607
- 'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
608
- 'field_value' => ($current_values[$this->slug][$sub_field['slug']] == '' && $this->isWizard) ? $sub_field['default_text'] : $current_values[$this->slug][$sub_field['slug']],
609
- 'is_main_field' => $sub_field['is_main_field']
610
- )
611
- );
612
- break;
613
- case 'wp_editor':
614
- $field = array(
615
- 'type' => 'wp_editor',
616
- 'label' => $this->fields[$sub_field['slug']]['name'],
617
- 'params' => array(
618
- 'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
619
- 'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
620
- 'field_value' => ($current_values[$this->slug][$sub_field['slug']] == '' && $this->isWizard) ? $sub_field['default_text'] : $current_values[$this->slug][$sub_field['slug']],
621
- 'is_main_field' => $sub_field['is_main_field']
622
- )
623
- );
624
- break;
625
- case 'image':
626
- $field = array(
627
- 'type' => 'image',
628
- 'label' => $this->fields[$sub_field['slug']]['name'],
629
- 'params' => array(
630
- 'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
631
- 'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
632
- 'field_value' => $current_values[$this->slug][$sub_field['slug']],
633
- 'download_image' => null,
634
- 'field_key' => $sub_field['slug'],
635
- 'addon_prefix' => $this->slug,
636
- 'is_main_field' => $sub_field['is_main_field']
637
- )
638
- );
639
-
640
- if (array_key_exists('download_image', $current_values[$this->slug])) {
641
- $field['params']['download_image'] = $current_values[$this->slug]['download_image'][$sub_field['slug']];
642
- }
643
- break;
644
- case 'file':
645
- $field = array(
646
- 'type' => 'file',
647
- 'label' => $this->fields[$sub_field['slug']]['name'],
648
- 'params' => array(
649
- 'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
650
- 'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
651
- 'field_value' => $current_values[$this->slug][$sub_field['slug']],
652
- 'download_image' => null,
653
- 'field_key' => $sub_field['slug'],
654
- 'addon_prefix' => $this->slug,
655
- 'is_main_field' => $sub_field['is_main_field']
656
- )
657
- );
658
-
659
- if (array_key_exists('download_image', $current_values[$this->slug])) {
660
- $field['params']['download_image'] = $current_values[$this->slug]['download_image'][$sub_field['slug']];
661
- }
662
-
663
- break;
664
- case 'radio':
665
- $field = array(
666
- 'type' => 'enum',
667
- 'label' => $this->fields[$sub_field['slug']]['name'],
668
- 'params' => array(
669
- 'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
670
- 'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
671
- 'field_value' => $current_values[$this->slug][$sub_field['slug']],
672
- 'enum_values' => $this->fields[$sub_field['slug']]['enum_values'],
673
- 'mapping' => true,
674
- 'field_key' => $sub_field['slug'],
675
- 'mapping_rules' => isset($current_values[$this->slug]['mapping'][$sub_field['slug']]) ? $current_values[$this->slug]['mapping'][$sub_field['slug']] : array(),
676
- 'xpath' => isset($current_values[$this->slug]['xpaths'][$sub_field['slug']]) ? $current_values[$this->slug]['xpaths'][$sub_field['slug']] : '',
677
- 'addon_prefix' => $this->slug,
678
- 'sub_fields' => $this->get_sub_fields($this->fields[$sub_field['slug']], $sub_field['slug'], $current_values),
679
- 'is_main_field' => $sub_field['is_main_field']
680
- )
681
- );
682
- break;
683
- case 'accordion':
684
- $field = array(
685
- 'type' => 'accordion',
686
- 'label' => $this->fields[$sub_field['slug']]['name'],
687
- 'params' => array(
688
- 'tooltip' => $this->fields[$sub_field['slug']]['tooltip'],
689
- 'field_name' => $this->slug . "[" . $sub_field['slug'] . "]",
690
- 'field_key' => $sub_field['slug'],
691
- 'addon_prefix' => $this->slug,
692
- 'sub_fields' => $this->get_sub_fields($this->fields[$sub_field['slug']], $sub_field['slug'], $current_values),
693
- 'in_the_bottom' => false
694
- )
695
- );
696
- break;
697
- default:
698
- # code...
699
- break;
700
- }
701
- return $field;
702
- }
703
-
704
- /**
705
- *
706
- * Add accordion options
707
- *
708
- *
709
- */
710
- function add_options($main_field = false, $title = '', $fields = array()) {
711
-
712
- if (!empty($fields)) {
713
-
714
- if ($main_field) {
715
-
716
- $main_field['is_main_field'] = true;
717
- $fields[] = $main_field;
718
- }
719
-
720
- return $this->add_field('accordion_' . $fields[0]['slug'], $title, 'accordion', $fields);
721
- }
722
- }
723
-
724
- function add_title($title = '', $tooltip = '') {
725
-
726
- if (empty($title))
727
- return;
728
-
729
- return $this->add_field(sanitize_key($title) . time(), $title, 'title', null, $tooltip);
730
- }
731
-
732
- function add_text($text = '', $is_html = false) {
733
-
734
- if (empty($text))
735
- return;
736
-
737
- $count = is_array($this->fields) ? count($this->fields) : 0;
738
-
739
- return $this->add_field(sanitize_key($text) . time() . uniqid() . $count, $text, 'plain_text', null, "", $is_html);
740
- }
741
-
742
- function helper_metabox_top($name) {
743
-
744
- return '
745
- <style type="text/css">
746
- .wpallimport-plugin .wpallimport-addon div.input {
747
- margin-bottom: 15px;
748
- }
749
- .wpallimport-plugin .wpallimport-addon .custom-params tr td.action{
750
- width: auto !important;
751
- }
752
- .wpallimport-plugin .wpallimport-addon .wpallimport-custom-fields-actions{
753
- right:0 !important;
754
- }
755
- .wpallimport-plugin .wpallimport-addon table tr td.wpallimport-enum-input-wrapper{
756
- width: 80%;
757
- }
758
- .wpallimport-plugin .wpallimport-addon table tr td.wpallimport-enum-input-wrapper input{
759
- width: 100%;
760
- }
761
- .wpallimport-plugin .wpallimport-addon .wpallimport-custom-fields-actions{
762
- float: right;
763
- right: 30px;
764
- position: relative;
765
- border: 1px solid #ddd;
766
- margin-bottom: 10px;
767
- }
768
-
769
- .wpallimport-plugin .wpallimport-addon .wpallimport-sub-options {
770
- margin-bottom: 15px;
771
- margin-top: -16px;
772
- }
773
- .wpallimport-plugin .wpallimport-addon .wpallimport-sub-options .wpallimport-content-section{
774
- padding-bottom: 8px;
775
- margin:0;
776
- border: none;
777
- padding-top: 1px;
778
- background: #f1f2f2;
779
- }
780
- .wpallimport-plugin .wpallimport-addon .wpallimport-sub-options .wpallimport-collapsed-header{
781
- padding-left: 13px;
782
- }
783
- .wpallimport-plugin .wpallimport-addon .wpallimport-sub-options .wpallimport-collapsed-header h3{
784
- font-size: 14px;
785
- margin: 6px 0;
786
- }
787
-
788
- .wpallimport-plugin .wpallimport-addon .wpallimport-sub-options-full-width{
789
- bottom: -40px;
790
- margin-bottom: 0;
791
- margin-left: -25px;
792
- margin-right: -25px;
793
- position: relative;
794
- }
795
- .wpallimport-plugin .wpallimport-addon .wpallimport-sub-options-full-width .wpallimport-content-section{
796
- margin:0;
797
- border-top:1px solid #ddd;
798
- border-bottom: none;
799
- border-right: none;
800
- border-left: none;
801
- background: #f1f2f2;
802
- }
803
- .wpallimport-plugin .wpallimport-addon .wpallimport-sub-options-full-width .wpallimport-collapsed-header h3{
804
- margin: 14px 0;
805
- }
806
-
807
- .wpallimport-plugin .wpallimport-addon .wpallimport-dependent-options{
808
- margin-left: 1px;
809
- margin-right: -1px;
810
- }
811
- .wpallimport-plugin .wpallimport-addon .wpallimport-dependent-options .wpallimport-content-section{
812
- border: 1px solid #ddd;
813
- border-top: none;
814
- }
815
- .wpallimport-plugin .wpallimport-addon .wpallimport-full-with-bottom{
816
- margin-left: -25px;
817
- margin-right: -25px;
818
- }
819
- .wpallimport-plugin .wpallimport-addon .wpallimport-full-with-not-bottom{
820
- margin: 25px -1px 25px 1px;
821
- }
822
- .wpallimport-plugin .wpallimport-addon .wpallimport-full-with-not-bottom .wpallimport-content-section{
823
- border: 1px solid #ddd;
824
- }
825
- .wpallimport-plugin .wpallimport-addon .wpallimport-add-on-options-title{
826
- font-size: 14px;
827
- margin: 45px 0 15px 0;
828
- }
829
- </style>
830
- <div class="wpallimport-collapsed wpallimport-section wpallimport-addon ' . $this->slug . ' closed">
831
- <div class="wpallimport-content-section">
832
- <div class="wpallimport-collapsed-header">
833
- <h3>' . __($name, 'pmxi_plugin') . '</h3>
834
- </div>
835
- <div class="wpallimport-collapsed-content" style="padding: 0;">
836
- <div class="wpallimport-collapsed-content-inner">
837
- <table class="form-table" style="max-width:none;">
838
- <tr>
839
- <td colspan="3">';
840
- }
841
-
842
- function helper_metabox_bottom() {
843
-
844
- return ' </td>
845
- </tr>
846
- </table>
847
- </div>
848
- </div>
849
- </div>
850
- </div>';
851
- }
852
-
853
- /**
854
- *
855
- * simply add an additional section for attachments
856
- *
857
- */
858
- function import_files($slug, $title) {
859
- $this->import_images($slug, $title, 'files');
860
- }
861
-
862
- /**
863
- *
864
- * simply add an additional section
865
- *
866
- */
867
- function import_images($slug, $title, $type = 'images') {
868
-
869
- if (empty($title) or empty($slug))
870
- return;
871
-
872
- $section_slug = 'pmxi_' . $slug;
873
-
874
- $this->image_sections[] = array(
875
- 'title' => $title,
876
- 'slug' => $section_slug,
877
- 'type' => $type
878
- );
879
-
880
- foreach ($this->image_options as $option_slug => $value) {
881
- $this->add_option($section_slug . $option_slug, $value);
882
- }
883
-
884
- if (count($this->image_sections) > 1) {
885
- add_filter('wp_all_import_is_show_add_new_images', array($this, 'filter_is_show_add_new_images'), 10, 2);
886
- }
887
-
888
- add_filter('wp_all_import_is_allow_import_images', array($this, 'is_allow_import_images'), 10, 2);
889
-
890
- if (function_exists($slug))
891
- add_action($section_slug, $slug, 10, 4);
892
- }
893
-
894
- /**
895
- *
896
- * filter to allow import images for free edition of WP All Import
897
- *
898
- */
899
- function is_allow_import_images($is_allow, $post_type) {
900
- return ($this->is_active_addon($post_type)) ? true : $is_allow;
901
- }
902
-
903
- /**
904
- *
905
- * filter to control additional images sections
906
- *
907
- */
908
- function additional_sections($sections) {
909
- if (!empty($this->image_sections)) {
910
- foreach ($this->image_sections as $add_section) {
911
- $sections[] = $add_section;
912
- }
913
- }
914
-
915
- return $sections;
916
- }
917
-
918
- /**
919
- *
920
- * remove the 'Don't touch existing images, append new images' when more than one image section is in use.
921
- *
922
- */
923
- function filter_is_show_add_new_images($is_show, $post_type) {
924
- return ($this->is_active_addon($post_type)) ? false : $is_show;
925
- }
926
-
927
- /**
928
- *
929
- * disable the default images section
930
- *
931
- */
932
- function disable_default_images($post_type = false) {
933
-
934
- add_filter('wp_all_import_is_images_section_enabled', array($this, 'is_enable_default_images_section'), 10, 2);
935
- }
936
-
937
- function is_enable_default_images_section($is_enabled, $post_type) {
938
-
939
- return ($this->is_active_addon($post_type)) ? false : true;
940
- }
941
-
942
- function helper_parse($parsingData, $options) {
943
-
944
- extract($parsingData);
945
-
946
- $data = array(); // parsed data
947
-
948
- if (!empty($import->options[$this->slug])) {
949
-
950
- $this->logger = $parsingData['logger'];
951
-
952
- $cxpath = $xpath_prefix . $import->xpath;
953
-
954
- $tmp_files = array();
955
-
956
- foreach ($options[$this->slug] as $option_name => $option_value) {
957
- if (isset($import->options[$this->slug][$option_name]) and $import->options[$this->slug][$option_name] != '') {
958
- if ($import->options[$this->slug][$option_name] == "xpath") {
959
- if ($import->options[$this->slug]['xpaths'][$option_name] == "") {
960
- $count and $data[$option_name] = array_fill(0, $count, "");
961
- } else {
962
- $data[$option_name] = XmlImportParser::factory($xml, $cxpath, (string) $import->options[$this->slug]['xpaths'][$option_name], $file)->parse();
963
- $tmp_files[] = $file;
964
- }
965
- } else {
966
- $data[$option_name] = XmlImportParser::factory($xml, $cxpath, (string) $import->options[$this->slug][$option_name], $file)->parse();
967
- $tmp_files[] = $file;
968
- }
969
- } else {
970
- $data[$option_name] = array_fill(0, $count, "");
971
- }
972
- }
973
-
974
- foreach ($tmp_files as $file) { // remove all temporary files created
975
- unlink($file);
976
- }
977
- }
978
-
979
- return $data;
980
- }
981
-
982
- function can_update_meta($meta_key, $import_options) {
983
-
984
- //echo "<pre>";
985
- //print_r($import_options['options']);
986
- //echo "</pre>";
987
-
988
- $import_options = $import_options['options'];
989
-
990
- if ($import_options['update_all_data'] == 'yes')
991
- return true;
992
-
993
- if (!$import_options['is_update_custom_fields'])
994
- return false;
995
-
996
- if ($import_options['update_custom_fields_logic'] == "full_update")
997
- return true;
998
- if ($import_options['update_custom_fields_logic'] == "only" and ! empty($import_options['custom_fields_list']) and is_array($import_options['custom_fields_list']) and in_array($meta_key, $import_options['custom_fields_list']))
999
- return true;
1000
- if ($import_options['update_custom_fields_logic'] == "all_except" and ( empty($import_options['custom_fields_list']) or ! in_array($meta_key, $import_options['custom_fields_list']) ))
1001
- return true;
1002
-
1003
- return false;
1004
- }
1005
-
1006
- function can_update_taxonomy($tax_name, $import_options) {
1007
-
1008
- //echo "<pre>";
1009
- //print_r($import_options['options']);
1010
- //echo "</pre>";
1011
-
1012
- $import_options = $import_options['options'];
1013
-
1014
- if ($import_options['update_all_data'] == 'yes')
1015
- return true;
1016
-
1017
- if (!$import_options['is_update_categories'])
1018
- return false;
1019
-
1020
- if ($import_options['update_categories_logic'] == "full_update")
1021
- return true;
1022
- if ($import_options['update_categories_logic'] == "only" and ! empty($import_options['taxonomies_list']) and is_array($import_options['taxonomies_list']) and in_array($tax_name, $import_options['taxonomies_list']))
1023
- return true;
1024
- if ($import_options['update_categories_logic'] == "all_except" and ( empty($import_options['taxonomies_list']) or ! in_array($tax_name, $import_options['taxonomies_list']) ))
1025
- return true;
1026
-
1027
- return false;
1028
- }
1029
-
1030
- function can_update_image($import_options) {
1031
-
1032
- $import_options = $import_options['options'];
1033
-
1034
- if ($import_options['update_all_data'] == 'yes')
1035
- return true;
1036
-
1037
- if (!$import_options['is_update_images'])
1038
- return false;
1039
-
1040
- if ($import_options['is_update_images'])
1041
- return true;
1042
-
1043
- return false;
1044
- }
1045
-
1046
- function admin_notice_ignore() {
1047
- if (isset($_GET[$this->slug . '_ignore']) && '0' == $_GET[$this->slug . '_ignore']) {
1048
- update_option($this->slug . '_ignore', 'true');
1049
- }
1050
- }
1051
-
1052
- function display_admin_notice() {
1053
-
1054
-
1055
- if ($this->notice_text) {
1056
- $notice_text = $this->notice_text;
1057
- } else {
1058
- $notice_text = $this->name . ' requires WP All Import <a href="http://www.wpallimport.com/" target="_blank">Pro</a> or <a href="http://wordpress.org/plugins/wp-all-import" target="_blank">Free</a>.';
1059
- }
1060
-
1061
- if (!get_option(sanitize_key($this->slug) . '_notice_ignore')) {
1062
- ?>
1063
-
1064
- <div class="error notice is-dismissible wpallimport-dismissible" style="margin-top: 10px;" rel="<?php echo sanitize_key($this->slug); ?>">
1065
- <p><?php
1066
- _e(
1067
- sprintf(
1068
- $notice_text,
1069
- '?' . $this->slug . '_ignore=0'
1070
- ),
1071
- 'rapid_addon_' . $this->slug
1072
- );
1073
- ?></p>
1074
- </div>
1075
-
1076
- <?php
1077
- }
1078
- }
1079
-
1080
- /*
1081
- *
1082
- * $conditions - array('themes' => array('Realia'), 'plugins' => array('plugin-directory/plugin-file.php', 'plugin-directory2/plugin-file.php'))
1083
- *
1084
- */
1085
-
1086
- function admin_notice($notice_text = '', $conditions = array()) {
1087
-
1088
- $is_show_notice = false;
1089
-
1090
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
1091
-
1092
- if (!is_plugin_active('wp-all-import-pro/wp-all-import-pro.php') and ! is_plugin_active('wp-all-import/plugin.php')) {
1093
- $is_show_notice = true;
1094
- }
1095
-
1096
- // Supported Themes
1097
- if (!$is_show_notice and ! empty($conditions['themes'])) {
1098
-
1099
- $themeInfo = wp_get_theme();
1100
- $parentInfo = $themeInfo->parent();
1101
- $currentTheme = $themeInfo->get('Name');
1102
-
1103
- $is_show_notice = in_array($currentTheme, $conditions['themes']) ? false : true;
1104
-
1105
- if ($is_show_notice and $parentInfo) {
1106
- $parent_theme = $parentInfo->get('Name');
1107
- $is_show_notice = in_array($parent_theme, $conditions['themes']) ? false : true;
1108
- }
1109
- }
1110
-
1111
- // Required Plugins
1112
- if (!$is_show_notice and ! empty($conditions['plugins'])) {
1113
-
1114
- $requires_counter = 0;
1115
- foreach ($conditions['plugins'] as $plugin) {
1116
- if (is_plugin_active($plugin))
1117
- $requires_counter++;
1118
- }
1119
-
1120
- if ($requires_counter != count($conditions['plugins'])) {
1121
- $is_show_notice = true;
1122
- }
1123
- }
1124
-
1125
- if ($is_show_notice) {
1126
-
1127
- if ($notice_text != '') {
1128
- $this->notice_text = $notice_text;
1129
- }
1130
-
1131
- add_action('admin_notices', array($this, 'display_admin_notice'));
1132
- }
1133
- }
1134
-
1135
- function log($m = false) {
1136
-
1137
- $m and $this->logger and call_user_func($this->logger, $m);
1138
- }
1139
-
1140
- public function remove_post_type($type = '') {
1141
- if (!empty($type)) {
1142
- $this->add_option('post_types_to_remove', $type);
1143
- }
1144
- }
1145
-
1146
- public function filter_post_types($custom_types = array(), $custom_type = '') {
1147
- $options = $this->options_array();
1148
- $option_key = 'post_types_to_remove';
1149
-
1150
- if (array_key_exists($option_key, $options)) {
1151
- $type = $options[$option_key];
1152
-
1153
- if (!empty($type)) {
1154
- if (!is_array($type)) {
1155
- if (array_key_exists($type, $custom_types)) {
1156
- unset($custom_types[$type]);
1157
- }
1158
- } else {
1159
- foreach ($type as $key => $post_type) {
1160
- if (array_key_exists($post_type, $custom_types)) {
1161
- unset($custom_types[$post_type]);
1162
- }
1163
- }
1164
- }
1165
- }
1166
- }
1167
- return $custom_types;
1168
- }
1169
-
1170
- public function sort_post_types(array $order) {
1171
- $options = $this->options_array();
1172
- $option_key = 'post_type_move';
1173
-
1174
- if (array_key_exists($option_key, $options)) {
1175
- $move_rules = maybe_unserialize($options[$option_key]);
1176
-
1177
- foreach ($move_rules as $rule) {
1178
- $move_this = $rule['move_this'];
1179
- $move_to = $rule['move_to'];
1180
- if ($move_to > count($order)) {
1181
- if (( $rm_key = array_search($move_this, $order) ) !== false) {
1182
- unset($order[$rm_key]);
1183
- }
1184
- array_push($order, $move_this);
1185
- } else {
1186
- if (( $rm_key = array_search($move_this, $order) ) !== false) {
1187
- unset($order[$rm_key]);
1188
- }
1189
- array_splice($order, $move_to, 0, $move_this);
1190
- }
1191
- }
1192
-
1193
- return $order;
1194
- }
1195
-
1196
- return $order;
1197
- }
1198
-
1199
- public function move_post_type($move_this = null, $move_to = null) {
1200
- $move_rules = array();
1201
-
1202
- if (!is_array($move_this) && !is_array($move_to)) {
1203
- $move_rules[] = array(
1204
- 'move_this' => $move_this,
1205
- 'move_to' => $move_to
1206
- );
1207
- } else {
1208
- foreach ($move_this as $key => $move_post) {
1209
- $move_rules[] = array(
1210
- 'move_this' => $move_post,
1211
- 'move_to' => $move_to[$key]
1212
- );
1213
- }
1214
- }
1215
-
1216
- $this->add_option('post_type_move', $move_rules);
1217
- }
1218
-
1219
- public function set_post_type_image($post_type = null, $image = null) {
1220
- $post_type_image_rules = array();
1221
-
1222
- if (!is_array($post_type)) {
1223
-
1224
- $post_type_image_rules[$post_type] = array(
1225
- 'post_type' => $post_type,
1226
- 'image' => $image
1227
- );
1228
- } else {
1229
-
1230
- if (count($post_type) == count($image)) {
1231
-
1232
- foreach ($post_type as $key => $post_name) {
1233
- $post_type_image_rules[$post_name] = array(
1234
- 'post_type' => $post_name,
1235
- 'image' => $image[$key]
1236
- );
1237
- }
1238
- }
1239
- }
1240
-
1241
- $this->add_option('post_type_image', $post_type_image_rules);
1242
- }
1243
-
1244
- public function post_type_image($image) {
1245
- $options = $this->options_array();
1246
- $option_key = 'post_type_image';
1247
- if (array_key_exists($option_key, $options)) {
1248
- $post_type_image_rules = maybe_unserialize($options[$option_key]);
1249
- return $post_type_image_rules;
1250
- }
1251
- return $image;
1252
- }
1253
-
1254
- }
1255
-
1256
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/strings.php CHANGED
@@ -345,6 +345,9 @@ function fifu_get_strings_settings() {
345
  $fifu['support']['null'] = function() {
346
  _e("\"Nulled\" Premium doesn't work", FIFU_SLUG);
347
  };
 
 
 
348
  $fifu['support']['speed'] = function() {
349
  _e("PageSpeed and GTmetrix issues", FIFU_SLUG);
350
  };
@@ -363,6 +366,9 @@ function fifu_get_strings_settings() {
363
  $fifu['support']['null-desc'] = function() {
364
  _e("This plugin has NO nulled versions, but pirate versions. Don't install that. It's illegal and should ruin your site. Moreover, sales of the original premium version keep this project alive.", FIFU_SLUG);
365
  };
 
 
 
366
  $fifu['support']['speed-desc'] = function() {
367
  _e("You can solve that installing Jetpack plugin. Access its \"Settings\", \"Performance\" and enable \"Speed up image load times\". You'll have a free CDN + optimized external thumbnails.", FIFU_SLUG);
368
  };
@@ -1342,3 +1348,4 @@ function fifu_get_strings_wai() {
1342
 
1343
  return $fifu;
1344
  }
 
345
  $fifu['support']['null'] = function() {
346
  _e("\"Nulled\" Premium doesn't work", FIFU_SLUG);
347
  };
348
+ $fifu['support']['money'] = function() {
349
+ _e("Does FIFU Premium work on my site?", FIFU_SLUG);
350
+ };
351
  $fifu['support']['speed'] = function() {
352
  _e("PageSpeed and GTmetrix issues", FIFU_SLUG);
353
  };
366
  $fifu['support']['null-desc'] = function() {
367
  _e("This plugin has NO nulled versions, but pirate versions. Don't install that. It's illegal and should ruin your site. Moreover, sales of the original premium version keep this project alive.", FIFU_SLUG);
368
  };
369
+ $fifu['support']['money-desc'] = function() {
370
+ _e("You have a 30-day money-back guarantee to test for yourself. If something goes wrong just contact the support and ask for a solution or refund.", FIFU_SLUG);
371
+ };
372
  $fifu['support']['speed-desc'] = function() {
373
  _e("You can solve that installing Jetpack plugin. Access its \"Settings\", \"Performance\" and enable \"Speed up image load times\". You'll have a free CDN + optimized external thumbnails.", FIFU_SLUG);
374
  };
1348
 
1349
  return $fifu;
1350
  }
1351
+
admin/wai-addon.php DELETED
@@ -1,51 +0,0 @@
1
- <?php
2
-
3
- include 'rapid-addon.php';
4
- $fifu = fifu_get_strings_wai();
5
- $fifu_wai_addon = new RapidAddon('<div style="color:#777"><span class="dashicons dashicons-camera" style="font-size:30px;padding-right:10px"></span> Featured Image from URL</div>', 'fifu_wai_addon');
6
- $fifu_wai_addon->add_field('fifu_image_url', '<div title="fifu_image_url">' . $fifu['title']['image']() . '</div>', 'text', null, null, false, null);
7
- $fifu_wai_addon->add_field('fifu_image_alt', '<div title="fifu_image_alt">' . $fifu['title']['title']() . '</div>', 'text', null, null, false, null);
8
- $fifu_wai_addon->set_import_function('fifu_wai_addon_save');
9
- $fifu_wai_addon->run();
10
-
11
- function fifu_wai_addon_save($post_id, $data, $import_options, $article) {
12
- $fields = array();
13
-
14
- if (!empty($data['fifu_image_url']))
15
- array_push($fields, 'fifu_image_url');
16
-
17
- if (!empty($data['fifu_image_alt']))
18
- array_push($fields, 'fifu_image_alt');
19
-
20
- if (empty($fields)) {
21
- if (fifu_is_off('fifu_enable_default_url'))
22
- return;
23
- }
24
-
25
- $is_ctgr = $article['post_type'] == 'taxonomies';
26
- $update = false;
27
- foreach ($fields as $field) {
28
- $current_value = get_post_meta($post_id, $field, true);
29
- if ($current_value != $data[$field]) {
30
- $update = true;
31
- $value = $data[$field];
32
- if ($is_ctgr)
33
- update_term_meta($post_id, $field, $value);
34
- else
35
- update_post_meta($post_id, $field, $value);
36
- }
37
- }
38
-
39
- global $fifu_wai_addon;
40
- if (!$update && !$fifu_wai_addon->can_update_image($import_options))
41
- return;
42
-
43
- fifu_wai_save($post_id, $is_ctgr);
44
-
45
- /* metadata */
46
- if ($is_ctgr)
47
- add_action('pmxi_saved_post', 'fifu_db_ctgr_update_fake_attach_id');
48
- else
49
- add_action('pmxi_saved_post', 'fifu_update_fake_attach_id');
50
- }
51
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
featured-image-from-url.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin Name: Featured Image from URL | FIFU
5
  * Plugin URI: https://fifu.app/
6
  * Description: Use an external image as featured image of a post or WooCommerce product. Includes Image Search, Video, Social Tags, SEO, Lazy Load, Gallery, Automation etc.
7
- * Version: 3.4.2
8
  * Author: fifu.app
9
  * Author URI: https://fifu.app/
10
  * WC requires at least: 4.0
@@ -37,7 +37,6 @@ require_once (FIFU_ADMIN_DIR . '/column.php');
37
  require_once (FIFU_ADMIN_DIR . '/menu.php');
38
  require_once (FIFU_ADMIN_DIR . '/meta-box.php');
39
  require_once (FIFU_ADMIN_DIR . '/strings.php');
40
- require_once (FIFU_ADMIN_DIR . '/wai-addon.php');
41
 
42
  require_once (FIFU_ELEMENTOR_DIR . '/elementor-fifu-extension.php');
43
 
4
  * Plugin Name: Featured Image from URL | FIFU
5
  * Plugin URI: https://fifu.app/
6
  * Description: Use an external image as featured image of a post or WooCommerce product. Includes Image Search, Video, Social Tags, SEO, Lazy Load, Gallery, Automation etc.
7
+ * Version: 3.4.3
8
  * Author: fifu.app
9
  * Author URI: https://fifu.app/
10
  * WC requires at least: 4.0
37
  require_once (FIFU_ADMIN_DIR . '/menu.php');
38
  require_once (FIFU_ADMIN_DIR . '/meta-box.php');
39
  require_once (FIFU_ADMIN_DIR . '/strings.php');
 
40
 
41
  require_once (FIFU_ELEMENTOR_DIR . '/elementor-fifu-extension.php');
42
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://donorbox.org/fifu
4
  Tags: featured, image, url, woocommerce, thumbnail
5
  Requires at least: 5.3
6
  Tested up to: 5.5
7
- Stable tag: 3.4.2
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -56,8 +56,8 @@ Use an external image as featured image of your post, page or custom post type.
56
 
57
  #### AUTOMATION
58
 
59
- * WP All Import add-on
60
- * WooCommerce import
61
  * **[Premium]** WP REST API
62
  * **[Premium]** WooCommerce REST API
63
  * **[Premium]** Schedule metadata generation
@@ -195,20 +195,20 @@ Supports videos from YouTube, Vimeo, Imgur, 9GAG, Cloudinary, Tumblr and Publiti
195
 
196
  == Changelog ==
197
 
 
 
 
198
  = 3.4.2 =
199
  * Fix: conflict with Yoast SEO plugin (FIFU will not add social tags when Yoast have a Facebook/Twitter image on post editor); fix: conflict with Jetpack plugin (FIFU was getting CDN images even when Jetpack performance settings were disabled).
200
 
201
  = 3.4.1 =
202
  * Fix: Instagram URLs.
203
 
204
- = 3.4.0 =
205
- * Notice: for users with image URLs from Instagram (FIFU Settings > Troubleshooting).
206
-
207
  = others =
208
  * [more](https://fifu.app/changelog/)
209
 
210
 
211
  == Upgrade Notice ==
212
 
213
- = 3.4.2 =
214
- * Fix: conflict with Yoast SEO plugin (FIFU will not add social tags when Yoast have a Facebook/Twitter image on post editor); fix: conflict with Jetpack plugin (FIFU was getting CDN images even when Jetpack performance settings were disabled).
4
  Tags: featured, image, url, woocommerce, thumbnail
5
  Requires at least: 5.3
6
  Tested up to: 5.5
7
+ Stable tag: 3.4.3
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
10
 
56
 
57
  #### AUTOMATION
58
 
59
+ * **[Premium]** WP All Import add-on
60
+ * **[Premium]** WooCommerce import
61
  * **[Premium]** WP REST API
62
  * **[Premium]** WooCommerce REST API
63
  * **[Premium]** Schedule metadata generation
195
 
196
  == Changelog ==
197
 
198
+ = 3.4.3 =
199
+ * Notice: FIFU Premium has now a 30-day money-back guarantee; notice: support to WooCommerce Import and WP All Import are available only in the Premium version now; improvement: integration with User Submitted Posts plugin.
200
+
201
  = 3.4.2 =
202
  * Fix: conflict with Yoast SEO plugin (FIFU will not add social tags when Yoast have a Facebook/Twitter image on post editor); fix: conflict with Jetpack plugin (FIFU was getting CDN images even when Jetpack performance settings were disabled).
203
 
204
  = 3.4.1 =
205
  * Fix: Instagram URLs.
206
 
 
 
 
207
  = others =
208
  * [more](https://fifu.app/changelog/)
209
 
210
 
211
  == Upgrade Notice ==
212
 
213
+ = 3.4.3 =
214
+ * Notice: FIFU Premium has now a 30-day money-back guarantee; notice: support to WooCommerce Import and WP All Import are available only in the Premium version now; improvement: integration with User Submitted Posts plugin.