Advanced Custom Fields: Table Field - Version 1.3.3

Version Description

  • Fixes returning empty table after saving content containing a single quote.
Download this release

Release Info

Developer Jonua
Plugin Icon 128x128 Advanced Custom Fields: Table Field
Version 1.3.3
Comparing to
See all releases

Code changes from version 1.3.2 to 1.3.3

acf-table-v4.php CHANGED
@@ -37,7 +37,7 @@
37
  // settings
38
  $this->settings = array(
39
  'dir_url' => plugins_url( '', __FILE__ ) . '/',
40
- 'version' => '1.3.2',
41
  );
42
 
43
  // PREVENTS SAVING INVALID TABLE FIELD JSON DATA {
@@ -369,7 +369,7 @@
369
  {
370
  if ( is_string( $value ) ) {
371
 
372
- //$value = str_replace( '%5C', '%5C%5C', $value );
373
  $value = urldecode( $value );
374
  $value = json_decode( $value, true );
375
  }
@@ -401,8 +401,51 @@
401
  $value = array_replace_recursive( $data, $value );
402
  }
403
 
 
 
404
  return $value;
405
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
406
  }
407
 
408
  // create field
37
  // settings
38
  $this->settings = array(
39
  'dir_url' => plugins_url( '', __FILE__ ) . '/',
40
+ 'version' => '1.3.3',
41
  );
42
 
43
  // PREVENTS SAVING INVALID TABLE FIELD JSON DATA {
369
  {
370
  if ( is_string( $value ) ) {
371
 
372
+ $value = wp_unslash( $value );
373
  $value = urldecode( $value );
374
  $value = json_decode( $value, true );
375
  }
401
  $value = array_replace_recursive( $data, $value );
402
  }
403
 
404
+ $value = $this->table_slash( $value );
405
+
406
  return $value;
407
  }
408
+
409
+ /**
410
+ * table_slash()
411
+ *
412
+ * Add slashes to a string or strings in an array.
413
+ *
414
+ * This should be used instead of wp_slash() because wp_slash() convertes all
415
+ * array values to strings which affects also the table object values of
416
+ * type number converting to string.
417
+ */
418
+
419
+ function table_slash( $value ) {
420
+
421
+ if ( is_array( $value ) ) {
422
+
423
+ foreach ( $value as $k => $v ) {
424
+
425
+ if (
426
+ is_array( $v ) OR
427
+ is_object( $v )
428
+ ) {
429
+ $value[ $k ] = $this->table_slash( $v );
430
+ }
431
+ else if( is_string( $v ) ) {
432
+
433
+ $value[ $k ] = addslashes( $v );
434
+ }
435
+ else {
436
+
437
+ $value[ $k ] = $v;
438
+ }
439
+ }
440
+
441
+ } else {
442
+
443
+ $value = addslashes( $value );
444
+ }
445
+
446
+ return $value;
447
+ }
448
+
449
  }
450
 
451
  // create field
acf-table-v5.php CHANGED
@@ -21,7 +21,7 @@ class acf_field_table extends acf_field {
21
  * settings (array) Array of settings
22
  */
23
  $this->settings = array(
24
- 'version' => '1.3.2',
25
  'dir_url' => plugins_url( '', __FILE__ ) . '/',
26
  );
27
 
@@ -425,7 +425,7 @@ class acf_field_table extends acf_field {
425
 
426
  if ( is_string( $value ) ) {
427
 
428
- //$value = str_replace( '%5C', '%5C%5C', $value );
429
  $value = urldecode( $value );
430
  $value = json_decode( $value, true );
431
  }
@@ -457,6 +457,8 @@ class acf_field_table extends acf_field {
457
  $value = array_replace_recursive( $data, $value );
458
  }
459
 
 
 
460
  return $value;
461
  }
462
 
@@ -679,6 +681,46 @@ class acf_field_table extends acf_field {
679
 
680
  */
681
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
682
  }
683
 
684
  // create field
21
  * settings (array) Array of settings
22
  */
23
  $this->settings = array(
24
+ 'version' => '1.3.3',
25
  'dir_url' => plugins_url( '', __FILE__ ) . '/',
26
  );
27
 
425
 
426
  if ( is_string( $value ) ) {
427
 
428
+ $value = wp_unslash( $value );
429
  $value = urldecode( $value );
430
  $value = json_decode( $value, true );
431
  }
457
  $value = array_replace_recursive( $data, $value );
458
  }
459
 
460
+ $value = $this->table_slash( $value );
461
+
462
  return $value;
463
  }
464
 
681
 
682
  */
683
 
684
+ /**
685
+ * table_slash()
686
+ *
687
+ * Add slashes to a string or strings in an array.
688
+ *
689
+ * This should be used instead of wp_slash() because wp_slash() convertes all
690
+ * array values to strings which affects also the table object values of
691
+ * type number converting to string.
692
+ */
693
+
694
+ function table_slash( $value ) {
695
+
696
+ if ( is_array( $value ) ) {
697
+
698
+ foreach ( $value as $k => $v ) {
699
+
700
+ if (
701
+ is_array( $v ) OR
702
+ is_object( $v )
703
+ ) {
704
+ $value[ $k ] = $this->table_slash( $v );
705
+ }
706
+ else if( is_string( $v ) ) {
707
+
708
+ $value[ $k ] = addslashes( $v );
709
+ }
710
+ else {
711
+
712
+ $value[ $k ] = $v;
713
+ }
714
+ }
715
+
716
+ } else {
717
+
718
+ $value = addslashes( $value );
719
+ }
720
+
721
+ return $value;
722
+ }
723
+
724
  }
725
 
726
  // create field
acf-table.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Advanced Custom Fields: Table Field
4
  Plugin URI: http://www.johannheyne.de/
5
  Description: This free Add-on adds a table field type for the Advanced Custom Fields plugin.
6
- Version: 1.3.2
7
  Author: Johann Heyne
8
  Author URI: http://www.johannheyne.de/
9
  License: GPLv2 or later
3
  Plugin Name: Advanced Custom Fields: Table Field
4
  Plugin URI: http://www.johannheyne.de/
5
  Description: This free Add-on adds a table field type for the Advanced Custom Fields plugin.
6
+ Version: 1.3.3
7
  Author: Johann Heyne
8
  Author URI: http://www.johannheyne.de/
9
  License: GPLv2 or later
changelog.txt CHANGED
@@ -1,10 +1,13 @@
1
  == Changelog ==
2
 
3
- = 1.3.2 =
 
 
 
4
  * Fixes returning empty table after saving content containing quotes
5
  * Fixes an issue using update_field() on a table field
6
 
7
- = 1.3.2 =
8
  * Changes table data storing format from JSON string to serialized array. This is due to an issue caused by third party plugins using update_post_meta() without providing wp_slash() to the value before. Existing table data values in JSON string format in the database will still exists and be compatible. When a field is saved again, the storage format changes from JSON to serialized array.
9
  * Fixes an PHP error of table caption
10
 
1
  == Changelog ==
2
 
3
+ = 1.3.3 =
4
+ * Fixes returning empty table after saving content containing a single quote
5
+
6
+ = 1.3.3 =
7
  * Fixes returning empty table after saving content containing quotes
8
  * Fixes an issue using update_field() on a table field
9
 
10
+ = 1.3.3 =
11
  * Changes table data storing format from JSON string to serialized array. This is due to an issue caused by third party plugins using update_post_meta() without providing wp_slash() to the value before. Existing table data values in JSON string format in the database will still exists and be compatible. When a field is saved again, the storage format changes from JSON to serialized array.
12
  * Fixes an PHP error of table caption
13
 
js/input-v4.js CHANGED
@@ -4,7 +4,7 @@
4
 
5
  var t = this;
6
 
7
- t.version = '1.3.2';
8
 
9
  t.param = {};
10
 
4
 
5
  var t = this;
6
 
7
+ t.version = '1.3.3';
8
 
9
  t.param = {};
10
 
js/input-v5.js CHANGED
@@ -4,7 +4,7 @@
4
 
5
  var t = this;
6
 
7
- t.version = '1.3.2';
8
 
9
  t.param = {};
10
 
4
 
5
  var t = this;
6
 
7
+ t.version = '1.3.3';
8
 
9
  t.param = {};
10
 
lang/acf-table-da_DK.po CHANGED
@@ -38,10 +38,10 @@ msgid ""
38
  msgstr ""
39
 
40
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
41
- #. Fields: Table Field 1.3.2) #-#-#-#-#
42
  #. Plugin URI of the plugin/theme
43
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
44
- #. Fields: Table Field 1.3.2) #-#-#-#-#
45
  #. Author URI of the plugin/theme
46
  msgid "http://www.johannheyne.de/"
47
  msgstr "http://www.johannheyne.de/"
38
  msgstr ""
39
 
40
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
41
+ #. Fields: Table Field 1.3.3) #-#-#-#-#
42
  #. Plugin URI of the plugin/theme
43
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
44
+ #. Fields: Table Field 1.3.3) #-#-#-#-#
45
  #. Author URI of the plugin/theme
46
  msgid "http://www.johannheyne.de/"
47
  msgstr "http://www.johannheyne.de/"
lang/acf-table-de_DE.po CHANGED
@@ -38,10 +38,10 @@ msgstr ""
38
  "Tabellen Feldtype hinzu."
39
 
40
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
41
- #. Fields: Table Field 1.3.2) #-#-#-#-#
42
  #. Plugin URI of the plugin/theme
43
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
44
- #. Fields: Table Field 1.3.2) #-#-#-#-#
45
  #. Author URI of the plugin/theme
46
  msgid "http://www.johannheyne.de/"
47
  msgstr "http://www.johannheyne.de/"
38
  "Tabellen Feldtype hinzu."
39
 
40
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
41
+ #. Fields: Table Field 1.3.3) #-#-#-#-#
42
  #. Plugin URI of the plugin/theme
43
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
44
+ #. Fields: Table Field 1.3.3) #-#-#-#-#
45
  #. Author URI of the plugin/theme
46
  msgid "http://www.johannheyne.de/"
47
  msgstr "http://www.johannheyne.de/"
lang/acf-table-pl_PL.po CHANGED
@@ -36,10 +36,10 @@ msgid ""
36
  msgstr ""
37
 
38
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
39
- #. Fields: Table Field 1.3.2) #-#-#-#-#
40
  #. Plugin URI of the plugin/theme
41
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
42
- #. Fields: Table Field 1.3.2) #-#-#-#-#
43
  #. Author URI of the plugin/theme
44
  msgid "http://www.johannheyne.de/"
45
  msgstr ""
36
  msgstr ""
37
 
38
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
39
+ #. Fields: Table Field 1.3.3) #-#-#-#-#
40
  #. Plugin URI of the plugin/theme
41
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
42
+ #. Fields: Table Field 1.3.3) #-#-#-#-#
43
  #. Author URI of the plugin/theme
44
  msgid "http://www.johannheyne.de/"
45
  msgstr ""
lang/acf-table.pot CHANGED
@@ -32,10 +32,10 @@ msgid "This free Add-on adds a table field type for the Advanced Custom Fields p
32
  msgstr ""
33
 
34
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
35
- #. Fields: Table Field 1.3.2) #-#-#-#-#
36
  #. Plugin URI of the plugin/theme
37
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
38
- #. Fields: Table Field 1.3.2) #-#-#-#-#
39
  #. Author URI of the plugin/theme
40
  msgid "http://www.johannheyne.de/"
41
  msgstr ""
32
  msgstr ""
33
 
34
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
35
+ #. Fields: Table Field 1.3.3) #-#-#-#-#
36
  #. Plugin URI of the plugin/theme
37
  #. #-#-#-#-# advanced-custom-fields-table-field-code.pot (Advanced Custom
38
+ #. Fields: Table Field 1.3.3) #-#-#-#-#
39
  #. Author URI of the plugin/theme
40
  msgid "http://www.johannheyne.de/"
41
  msgstr ""
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: jonua
3
  Tags: acf table
4
  Requires at least: 5.0.3
5
  Tested up to: 5.1
6
- Stable tag: 1.3.2
7
  Requires PHP: 5.6
8
  License: GPLv2 or later
9
 
@@ -235,17 +235,48 @@ Or you can **insert a table from a ACF option page**…
235
 
236
  `[table field-name="your table field name" post-id="option" table-class="my-table"]`
237
 
238
- = Third party plugins issues =
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
239
 
240
- The table field stores the table data as a JSON string in postmeta. This can lead to situations where the table plugin prevents third party plugins to update, copy or otherwise storing the tables data.
 
 
 
 
241
 
242
- Third party plugins may using update_post_metadata() on table fields data wich removes backslashes by default. Without applying wp_slash() to the value before update_post_metadata(), the JSON string of the table data would break because backslashes are part of the JSON data syntax escaping quotation marks in content.
 
 
 
 
243
 
244
- To prevent that issue, the table field plugin checks on every update_post_metadata() if the content value is from a table field and still is a valid JSON string. If not, update_post_metadata() will fail and throw an error message, that explains the issue.
 
245
 
246
- In same cases, the table JSON string is just part of serialized data by a third party plugin. The JSON string check of the table field plugin prevents storing that data as well even though the data JSON string may is correct. You could disable the check using the following code in the wp-config.php file. But then the table data are no longe protected from destroing by update_post_metadata(). Use the following code only, if you understand the risk…
 
 
 
 
 
 
 
 
247
 
248
- `define( "ACF_TABLEFIELD_FILTER_POSTMETA", false );`
249
 
250
  == Installation ==
251
 
@@ -278,6 +309,9 @@ However, only when activated as a plugin will updates be available.
278
 
279
  == Upgrade Notice ==
280
 
 
 
 
281
  = 1.3.2 =
282
  Fixes returning empty table after saving content containing quotes.
283
  Fixes an issue using update_field() on a table field.
@@ -288,6 +322,9 @@ Fixes an PHP error of table caption.
288
 
289
  == Changelog ==
290
 
 
 
 
291
  = 1.3.2 =
292
  * Fixes returning empty table after saving content containing quotes
293
  * Fixes an issue using update_field() on a table field
3
  Tags: acf table
4
  Requires at least: 5.0.3
5
  Tested up to: 5.1
6
+ Stable tag: 1.3.3
7
  Requires PHP: 5.6
8
  License: GPLv2 or later
9
 
235
 
236
  `[table field-name="your table field name" post-id="option" table-class="my-table"]`
237
 
238
+ = Updating a table using update_field() =
239
+
240
+ You can use the ACF PHP function `update_field()` to change a tables data.
241
+
242
+ Example: adding a new row
243
+ `
244
+ // the post ID where to update the table field
245
+ $post_id = 123;
246
+
247
+ // gets the table data
248
+ $table_data = get_field( 'table', $post_id );
249
+
250
+ // defines the new row and its columns
251
+ $new_row = array(
252
+
253
+ // must define the same amount of columns as exists in the table
254
 
255
+ // column 1
256
+ array(
257
+ // the 'c' stands for content of the cell
258
+ 'c' => 'Cell Content of Column 1',
259
+ ),
260
 
261
+ // column 2
262
+ array(
263
+ 'c' => 'Cell Content of Column 2',
264
+ )
265
+ );
266
 
267
+ // adds the new row to the table body data
268
+ array_push( $table_data['body'], $new_row );
269
 
270
+ // saves the new table data
271
+ update_field( 'table', $table_data, $post_id );
272
+ `
273
+
274
+ = Third party plugins issues =
275
+
276
+ Since version 1.3.1 of the table plugin, the storing format of the table data changes from JSON string to serialized array for new or updated tables. The issue with JSON is because of third party plugins that do not properly applying `wp_slash()` to a post_meta value before updating with `update_post_metadata()`. This can break JSON strings because `update_post_metadata()` removes backslashes by default. Backslashes are part of the JSON string syntax escaping quotation marks in content.
277
+
278
+ The table field plugin prevents broken JSON strings to save as a table field data and throws an error message that explains the issue. But this may also breaks the functionality of the third party plugin trying to update the table data. You could disable the JSON string check in the table field plugin using the following code in the wp-config.php file. But then the table JSON data are no longer protected from destroing by `update_post_metadata()`. Use the following code in wp-config.php only, if you understand the risk…
279
 
 
280
 
281
  == Installation ==
282
 
309
 
310
  == Upgrade Notice ==
311
 
312
+ = 1.3.3 =
313
+ * Fixes returning empty table after saving content containing a single quote.
314
+
315
  = 1.3.2 =
316
  Fixes returning empty table after saving content containing quotes.
317
  Fixes an issue using update_field() on a table field.
322
 
323
  == Changelog ==
324
 
325
+ = 1.3.3 =
326
+ * Fixes returning empty table after saving content containing a single quote.
327
+
328
  = 1.3.2 =
329
  * Fixes returning empty table after saving content containing quotes
330
  * Fixes an issue using update_field() on a table field