Toolset Types – Custom Post Types, Custom Fields and Taxonomies - Version 2.2.18

Version Description

  • Fixed an issue when adding option to checkbox / radio / select field
  • Fixed an issue with Custom Post Types loading (since WordPress 4.8.2)
Download this release

Release Info

Developer christianglingener
Plugin Icon 128x128 Toolset Types – Custom Post Types, Custom Fields and Taxonomies
Version 2.2.18
Comparing to
See all releases

Code changes from version 2.2.17 to 2.2.18

Files changed (42) hide show
  1. application/autoload_classmap.php +2 -1
  2. application/controllers/ajax/handler/check_slug_conflicts.php +2 -1
  3. application/controllers/page/dashboard.php +3 -1
  4. application/controllers/page/extension/edit_post.php +2 -1
  5. application/controllers/utils/post_type_option.php +175 -0
  6. application/controllers/{utils.php → utils/utils.php} +0 -0
  7. readme.txt +5 -1
  8. vendor/autoload.php +1 -1
  9. vendor/composer/autoload_classmap.php +2 -1
  10. vendor/composer/autoload_real.php +7 -7
  11. vendor/composer/autoload_static.php +7 -6
  12. vendor/toolset/types/admin.php +4 -2
  13. vendor/toolset/types/embedded/classes/relationship/form-child.php +2 -1
  14. vendor/toolset/types/embedded/functions.php +8 -3
  15. vendor/toolset/types/embedded/includes/classes/class.types.data.installer.php +23 -3
  16. vendor/toolset/types/embedded/includes/custom-types.php +28 -15
  17. vendor/toolset/types/embedded/includes/import-export.php +2 -2
  18. vendor/toolset/types/embedded/includes/module-manager.php +8 -4
  19. vendor/toolset/types/embedded/includes/wpml.php +2 -1
  20. vendor/toolset/types/embedded/resources/js/basic.js +7 -5
  21. vendor/toolset/types/embedded/resources/js/custom-fields-form-filter.js +1 -1
  22. vendor/toolset/types/embedded/resources/js/fields-form.js +1 -1
  23. vendor/toolset/types/embedded/resources/js/fields-post.js +2 -2
  24. vendor/toolset/types/embedded/resources/js/post-relationship.js +2 -2
  25. vendor/toolset/types/embedded/resources/js/repetitive.js +1 -1
  26. vendor/toolset/types/includes/ajax.php +11 -6
  27. vendor/toolset/types/includes/classes/class.types.admin.edit.post.type.php +3 -37
  28. vendor/toolset/types/includes/classes/class.types.admin.edit.taxonomy.php +2 -1
  29. vendor/toolset/types/includes/classes/class.types.admin.page.php +3 -18
  30. vendor/toolset/types/includes/classes/class.types.admin.post-type.php +2 -2
  31. vendor/toolset/types/includes/classes/class.types.admin.post.types.list.table.php +3 -26
  32. vendor/toolset/types/includes/classes/class.types.admin.taxonomies.list.table.php +2 -1
  33. vendor/toolset/types/includes/classes/class.wpcf.marketing.messages.php +2 -2
  34. vendor/toolset/types/includes/classes/class.wpcf.roles.php +2 -1
  35. vendor/toolset/types/includes/custom-types-form.php +2 -1
  36. vendor/toolset/types/includes/custom-types-taxonomies-list.php +2 -1
  37. vendor/toolset/types/includes/import-export.php +2 -1
  38. vendor/toolset/types/includes/post-relationship.php +2 -1
  39. vendor/toolset/types/resources/js/collapsible.js +1 -1
  40. vendor/toolset/types/resources/js/fields-form.js +6 -4
  41. vendor/toolset/types/wpcf.php +2 -1
  42. wpcf.php +2 -2
application/autoload_classmap.php CHANGED
@@ -133,7 +133,8 @@ return array(
133
  'Types_Taxonomy' => dirname( __FILE__ ) . '/models/taxonomy.php',
134
  'Types_Twig_Autoloader' => dirname( __FILE__ ) . '/controllers/twig_autoloader.php',
135
  'Types_Upgrade' => dirname( __FILE__ ) . '/controllers/upgrade.php',
136
- 'Types_Utils' => dirname( __FILE__ ) . '/controllers/utils.php',
 
137
  'Types_Wpml_Field_Group' => dirname( __FILE__ ) . '/models/wpml/field_group.php',
138
  'Types_Wpml_Field_Group_String_Description' => dirname( __FILE__ ) . '/models/wpml/field/group/string/description.php',
139
  'Types_Wpml_Field_Group_String' => dirname( __FILE__ ) . '/models/wpml/field/group/string.php',
133
  'Types_Taxonomy' => dirname( __FILE__ ) . '/models/taxonomy.php',
134
  'Types_Twig_Autoloader' => dirname( __FILE__ ) . '/controllers/twig_autoloader.php',
135
  'Types_Upgrade' => dirname( __FILE__ ) . '/controllers/upgrade.php',
136
+ 'Types_Utils' => dirname( __FILE__ ) . '/controllers/utils/utils.php',
137
+ 'Types_Utils_Post_Type_Option' => dirname( __FILE__ ) . '/controllers/utils/post_type_option.php',
138
  'Types_Wpml_Field_Group' => dirname( __FILE__ ) . '/models/wpml/field_group.php',
139
  'Types_Wpml_Field_Group_String_Description' => dirname( __FILE__ ) . '/models/wpml/field/group/string/description.php',
140
  'Types_Wpml_Field_Group_String' => dirname( __FILE__ ) . '/models/wpml/field/group/string.php',
application/controllers/ajax/handler/check_slug_conflicts.php CHANGED
@@ -208,7 +208,8 @@ class Types_Ajax_Handler_Check_Slug_Conflicts extends Types_Ajax_Handler_Abstrac
208
 
209
  // Merge currently registered post types (which might include some from other plugins) and
210
  // Types settings (which might include deactivated post types).
211
- $post_type_settings = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
212
  if( !is_array( $post_type_settings ) ) {
213
  return false;
214
  }
208
 
209
  // Merge currently registered post types (which might include some from other plugins) and
210
  // Types settings (which might include deactivated post types).
211
+ $post_type_option = new Types_Utils_Post_Type_Option();
212
+ $post_type_settings = $post_type_option->get_post_types();
213
  if( !is_array( $post_type_settings ) ) {
214
  return false;
215
  }
application/controllers/page/dashboard.php CHANGED
@@ -191,8 +191,10 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
191
  if( $this->types_by_toolset !== null )
192
  return $this->types_by_toolset;
193
 
 
 
194
  $cpts_raw = ! isset( $_GET['toolset-dashboard-simulate-no-custom-post-types'] )
195
- ? get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() )
196
  : array();
197
 
198
  // remove buildin types
191
  if( $this->types_by_toolset !== null )
192
  return $this->types_by_toolset;
193
 
194
+ $post_type_option = new Types_Utils_Post_Type_Option();
195
+
196
  $cpts_raw = ! isset( $_GET['toolset-dashboard-simulate-no-custom-post-types'] )
197
+ ? $post_type_option->get_post_types()
198
  : array();
199
 
200
  // remove buildin types
application/controllers/page/extension/edit_post.php CHANGED
@@ -22,7 +22,8 @@ final class Types_Page_Extension_Edit_Post {
22
 
23
  // if no post or no page
24
  if( $post_type != 'post' && $post_type != 'page' ) {
25
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
26
 
27
  // abort if also no custom post type of types
28
  if( ! array_key_exists( $post_type, $custom_types ) )
22
 
23
  // if no post or no page
24
  if( $post_type != 'post' && $post_type != 'page' ) {
25
+ $post_type_option = new Types_Utils_Post_Type_Option();
26
+ $custom_types = $post_type_option->get_post_types();
27
 
28
  // abort if also no custom post type of types
29
  if( ! array_key_exists( $post_type, $custom_types ) )
application/controllers/utils/post_type_option.php ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Provides a safer access to the option with post type values.
5
+ *
6
+ * If the option value is a standard serialized array, the performance is negligible. However, if the option is
7
+ * malformed by some sort of search-replace in string values (stored string length doesn't match the actual one),
8
+ * it will try to salvage the situation without the user even noticing.
9
+ *
10
+ * It specifically fixes on focusing a bug caused by WordPress 4.8.3 where in a certain situation the post type labels,
11
+ * which contain the %s placeholder, are damaged by replacing the '%' character by another placeholder (see
12
+ * https://make.wordpress.org/core/2017/10/31/changed-behaviour-of-esc_sql-in-wordpress-4-8-3/ for details).
13
+ *
14
+ * If the option needs to be fixed, we will further try to detect these placeholders in post type labels
15
+ * and replace them with '%s'. It is very unlikely that someone would save a value like '{18184a8b66ef}s' inside
16
+ * the label AND that the option becomes malformed at the same time, so we take the risk and replace it with '%s'.
17
+ *
18
+ * In order to be able to do this, we need to access the wp_options table directly, because get_option() calls
19
+ * unserialize() before a filter we could reasonably hook into, and at that point we already get just a 'false' value.
20
+ *
21
+ * As a consequence, all occurences of "get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() )" must be replaced
22
+ * by a call to Types_Utils_Post_Type_Option::get_post_types().
23
+ *
24
+ * The solution is inspired by https://github.com/Blogestudio/Fix-Serialization/blob/master/fix-serialization.php
25
+ *
26
+ * IMPORTANT: Beware that this class is being manually loaded even before Toolset Common in some cases. Do not move it
27
+ * without considering that and do not use anything fancy like toolset_ensarr() here.
28
+ *
29
+ * @since 2.2.18
30
+ */
31
+ class Types_Utils_Post_Type_Option {
32
+
33
+
34
+ /**
35
+ * Get the post types option.
36
+ *
37
+ * @return array
38
+ */
39
+ public function get_post_types() {
40
+ $post_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
41
+
42
+ if ( ! is_array( $post_types ) ) {
43
+ $raw_value = $this->get_raw_option();
44
+ if ( is_string( $raw_value ) && ! empty( $raw_value ) ) {
45
+ // Now we know that something went seriously wrong AND we probably have post types to save.
46
+ $post_types = $this->try_fix_serialized_array( $raw_value );
47
+ $post_types = maybe_unserialize( $post_types );
48
+ $post_types = $this->try_fix_post_type_labels( $post_types );
49
+ }
50
+ }
51
+
52
+ if ( ! is_array( $post_types ) ) {
53
+ return array();
54
+ }
55
+
56
+ return $post_types;
57
+ }
58
+
59
+
60
+ /**
61
+ * Get the raw WPCF_OPTION_NAME_CUSTOM_TYPES option from the database.
62
+ *
63
+ * @return null|string
64
+ */
65
+ private function get_raw_option() {
66
+ global $wpdb;
67
+
68
+ $option_value = $wpdb->get_var(
69
+ $wpdb->prepare(
70
+ "SELECT option_value FROM {$wpdb->options} WHERE option_name = %s",
71
+ WPCF_OPTION_NAME_CUSTOM_TYPES
72
+ )
73
+ );
74
+
75
+ return $option_value;
76
+ }
77
+
78
+
79
+ /**
80
+ * Restore a broken serialized array by fixing string lengths.
81
+ *
82
+ * @param $broken_serialized_array
83
+ * @return string
84
+ */
85
+ private function try_fix_serialized_array( $broken_serialized_array ) {
86
+ $output = preg_replace_callback(
87
+ '!s:(\d+):([\\\\]?"[\\\\]?"|[\\\\]?"((.*?)[^\\\\])[\\\\]?");!',
88
+ array( $this, 'preg_replace_callback' ),
89
+ $broken_serialized_array
90
+ );
91
+
92
+ return $output;
93
+ }
94
+
95
+
96
+ /**
97
+ * Fix a string length for a single occurence.
98
+ *
99
+ * @param array $matches
100
+ * @return string
101
+ */
102
+ private function preg_replace_callback( $matches ) {
103
+ if ( count( $matches ) < 4 ) {
104
+ // empty string
105
+ return $matches[0];
106
+ }
107
+
108
+ $stored_string = $matches[3];
109
+ $string_mysql_unescaped = $this->unescape_mysql( $stored_string );
110
+ $string_length = strlen( $string_mysql_unescaped );
111
+ $string_without_quotes = $this->unescape_quotes( $stored_string );
112
+
113
+ $replacement = 's:' . $string_length . ':"' . $string_without_quotes . '";';
114
+
115
+ return $replacement;
116
+ }
117
+
118
+
119
+ /**
120
+ * Update the post types option
121
+ * @param $post_types
122
+ */
123
+ public function update_post_types( $post_types ) {
124
+ update_option( WPCF_OPTION_NAME_CUSTOM_TYPES, $post_types, true );
125
+ }
126
+
127
+
128
+ /**
129
+ * Unescape to avoid dump-text issues.
130
+ *
131
+ * @param string $value
132
+ * @return string
133
+ */
134
+ private function unescape_mysql( $value ) {
135
+ return str_replace(
136
+ array( "\\\\", "\\0", "\\n", "\\r", "\Z", "\'", '\"' ),
137
+ array( "\\", "\0", "\n", "\r", "\x1a", "'", '"' ),
138
+ $value
139
+ );
140
+ }
141
+
142
+
143
+ /**
144
+ * Fix strange behaviour if you have escaped quotes in your replacement
145
+ *
146
+ * @param string $value
147
+ *
148
+ * @return string
149
+ */
150
+ private function unescape_quotes( $value ) {
151
+ return str_replace( '\"', '"', $value );
152
+ }
153
+
154
+
155
+ /**
156
+ * @param array $post_types
157
+ * @return array
158
+ */
159
+ private function try_fix_post_type_labels( $post_types ) {
160
+ foreach ( $post_types as $key => $post_type ) {
161
+ if ( ! array_key_exists( 'labels', $post_type ) ) {
162
+ continue;
163
+ }
164
+
165
+ foreach ( $post_type['labels'] as $label_name => $label_value ) {
166
+ $fixed_label = preg_replace( '/\{[a-f0-9]{8,}\}s/', '%s', $label_value );
167
+ $post_types[ $key ]['labels'][ $label_name ] = $fixed_label;
168
+ }
169
+ }
170
+
171
+ return $post_types;
172
+ }
173
+
174
+ }
175
+
application/controllers/{utils.php → utils/utils.php} RENAMED
File without changes
readme.txt CHANGED
@@ -7,7 +7,7 @@ Domain Path: /embedded/locale
7
  License: GPLv2
8
  Requires at least: 3.7
9
  Tested up to: 4.8.1
10
- Stable tag: 2.2.17
11
 
12
  The complete and reliable plugin for managing custom post types, custom taxonomies and custom fields.
13
 
@@ -158,6 +158,10 @@ Additionally, Types is the only plugin that lets you define parent/child relatio
158
 
159
  == Changelog ==
160
 
 
 
 
 
161
  = 2.2.17 =
162
  * Fixed an issue when saving field conditional while the latest version of Views was active.
163
  * Updated the list of WordPress reserved names.
7
  License: GPLv2
8
  Requires at least: 3.7
9
  Tested up to: 4.8.1
10
+ Stable tag: 2.2.18
11
 
12
  The complete and reliable plugin for managing custom post types, custom taxonomies and custom fields.
13
 
158
 
159
  == Changelog ==
160
 
161
+ = 2.2.18 =
162
+ * Fixed an issue when adding option to checkbox / radio / select field
163
+ * Fixed an issue with Custom Post Types loading (since WordPress 4.8.2)
164
+
165
  = 2.2.17 =
166
  * Fixed an issue when saving field conditional while the latest version of Views was active.
167
  * Updated the list of WordPress reserved names.
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit6a97a89ade699b56766115f79e4e4f36::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit02ae3ccb850d178bd58e2f427ca06b9a::getLoader();
vendor/composer/autoload_classmap.php CHANGED
@@ -649,7 +649,8 @@ return array(
649
  'Types_Taxonomy' => $baseDir . '/application/models/taxonomy.php',
650
  'Types_Twig_Autoloader' => $baseDir . '/application/controllers/twig_autoloader.php',
651
  'Types_Upgrade' => $baseDir . '/application/controllers/upgrade.php',
652
- 'Types_Utils' => $baseDir . '/application/controllers/utils.php',
 
653
  'Types_Wpml_Field_Group' => $baseDir . '/application/models/wpml/field_group.php',
654
  'Types_Wpml_Field_Group_String' => $baseDir . '/application/models/wpml/field/group/string.php',
655
  'Types_Wpml_Field_Group_String_Description' => $baseDir . '/application/models/wpml/field/group/string/description.php',
649
  'Types_Taxonomy' => $baseDir . '/application/models/taxonomy.php',
650
  'Types_Twig_Autoloader' => $baseDir . '/application/controllers/twig_autoloader.php',
651
  'Types_Upgrade' => $baseDir . '/application/controllers/upgrade.php',
652
+ 'Types_Utils' => $baseDir . '/application/controllers/utils/utils.php',
653
+ 'Types_Utils_Post_Type_Option' => $baseDir . '/application/controllers/utils/post_type_option.php',
654
  'Types_Wpml_Field_Group' => $baseDir . '/application/models/wpml/field_group.php',
655
  'Types_Wpml_Field_Group_String' => $baseDir . '/application/models/wpml/field/group/string.php',
656
  'Types_Wpml_Field_Group_String_Description' => $baseDir . '/application/models/wpml/field/group/string/description.php',
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit6a97a89ade699b56766115f79e4e4f36
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit6a97a89ade699b56766115f79e4e4f36
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit6a97a89ade699b56766115f79e4e4f36', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit6a97a89ade699b56766115f79e4e4f36', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit6a97a89ade699b56766115f79e4e4f36::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
@@ -48,19 +48,19 @@ class ComposerAutoloaderInit6a97a89ade699b56766115f79e4e4f36
48
  $loader->register(true);
49
 
50
  if ($useStaticLoader) {
51
- $includeFiles = Composer\Autoload\ComposerStaticInit6a97a89ade699b56766115f79e4e4f36::$files;
52
  } else {
53
  $includeFiles = require __DIR__ . '/autoload_files.php';
54
  }
55
  foreach ($includeFiles as $fileIdentifier => $file) {
56
- composerRequire6a97a89ade699b56766115f79e4e4f36($fileIdentifier, $file);
57
  }
58
 
59
  return $loader;
60
  }
61
  }
62
 
63
- function composerRequire6a97a89ade699b56766115f79e4e4f36($fileIdentifier, $file)
64
  {
65
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
66
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit02ae3ccb850d178bd58e2f427ca06b9a
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit02ae3ccb850d178bd58e2f427ca06b9a', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit02ae3ccb850d178bd58e2f427ca06b9a', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit02ae3ccb850d178bd58e2f427ca06b9a::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
48
  $loader->register(true);
49
 
50
  if ($useStaticLoader) {
51
+ $includeFiles = Composer\Autoload\ComposerStaticInit02ae3ccb850d178bd58e2f427ca06b9a::$files;
52
  } else {
53
  $includeFiles = require __DIR__ . '/autoload_files.php';
54
  }
55
  foreach ($includeFiles as $fileIdentifier => $file) {
56
+ composerRequire02ae3ccb850d178bd58e2f427ca06b9a($fileIdentifier, $file);
57
  }
58
 
59
  return $loader;
60
  }
61
  }
62
 
63
+ function composerRequire02ae3ccb850d178bd58e2f427ca06b9a($fileIdentifier, $file)
64
  {
65
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
66
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit6a97a89ade699b56766115f79e4e4f36
8
  {
9
  public static $files = array (
10
  'a52c1eba913b4ecdd3571194b37baea9' => __DIR__ . '/../..' . '/application/functions.php',
@@ -678,7 +678,8 @@ class ComposerStaticInit6a97a89ade699b56766115f79e4e4f36
678
  'Types_Taxonomy' => __DIR__ . '/../..' . '/application/models/taxonomy.php',
679
  'Types_Twig_Autoloader' => __DIR__ . '/../..' . '/application/controllers/twig_autoloader.php',
680
  'Types_Upgrade' => __DIR__ . '/../..' . '/application/controllers/upgrade.php',
681
- 'Types_Utils' => __DIR__ . '/../..' . '/application/controllers/utils.php',
 
682
  'Types_Wpml_Field_Group' => __DIR__ . '/../..' . '/application/models/wpml/field_group.php',
683
  'Types_Wpml_Field_Group_String' => __DIR__ . '/../..' . '/application/models/wpml/field/group/string.php',
684
  'Types_Wpml_Field_Group_String_Description' => __DIR__ . '/../..' . '/application/models/wpml/field/group/string/description.php',
@@ -726,10 +727,10 @@ class ComposerStaticInit6a97a89ade699b56766115f79e4e4f36
726
  public static function getInitializer(ClassLoader $loader)
727
  {
728
  return \Closure::bind(function () use ($loader) {
729
- $loader->prefixLengthsPsr4 = ComposerStaticInit6a97a89ade699b56766115f79e4e4f36::$prefixLengthsPsr4;
730
- $loader->prefixDirsPsr4 = ComposerStaticInit6a97a89ade699b56766115f79e4e4f36::$prefixDirsPsr4;
731
- $loader->prefixesPsr0 = ComposerStaticInit6a97a89ade699b56766115f79e4e4f36::$prefixesPsr0;
732
- $loader->classMap = ComposerStaticInit6a97a89ade699b56766115f79e4e4f36::$classMap;
733
 
734
  }, null, ClassLoader::class);
735
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit02ae3ccb850d178bd58e2f427ca06b9a
8
  {
9
  public static $files = array (
10
  'a52c1eba913b4ecdd3571194b37baea9' => __DIR__ . '/../..' . '/application/functions.php',
678
  'Types_Taxonomy' => __DIR__ . '/../..' . '/application/models/taxonomy.php',
679
  'Types_Twig_Autoloader' => __DIR__ . '/../..' . '/application/controllers/twig_autoloader.php',
680
  'Types_Upgrade' => __DIR__ . '/../..' . '/application/controllers/upgrade.php',
681
+ 'Types_Utils' => __DIR__ . '/../..' . '/application/controllers/utils/utils.php',
682
+ 'Types_Utils_Post_Type_Option' => __DIR__ . '/../..' . '/application/controllers/utils/post_type_option.php',
683
  'Types_Wpml_Field_Group' => __DIR__ . '/../..' . '/application/models/wpml/field_group.php',
684
  'Types_Wpml_Field_Group_String' => __DIR__ . '/../..' . '/application/models/wpml/field/group/string.php',
685
  'Types_Wpml_Field_Group_String_Description' => __DIR__ . '/../..' . '/application/models/wpml/field/group/string/description.php',
727
  public static function getInitializer(ClassLoader $loader)
728
  {
729
  return \Closure::bind(function () use ($loader) {
730
+ $loader->prefixLengthsPsr4 = ComposerStaticInit02ae3ccb850d178bd58e2f427ca06b9a::$prefixLengthsPsr4;
731
+ $loader->prefixDirsPsr4 = ComposerStaticInit02ae3ccb850d178bd58e2f427ca06b9a::$prefixDirsPsr4;
732
+ $loader->prefixesPsr0 = ComposerStaticInit02ae3ccb850d178bd58e2f427ca06b9a::$prefixesPsr0;
733
+ $loader->classMap = ComposerStaticInit02ae3ccb850d178bd58e2f427ca06b9a::$classMap;
734
 
735
  }, null, ClassLoader::class);
736
  }
vendor/toolset/types/admin.php CHANGED
@@ -570,7 +570,8 @@ function wpcf_admin_menu_summary_cpt()
570
  array('page'=>'wpcf-edit-type'),
571
  __('Add New', 'wpcf')
572
  );
573
- $to_display_posts = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
574
  $to_display_tax = get_option( WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array() );
575
  if ( !empty( $to_display_posts ) || !empty( $to_display_tax ) ) {
576
  add_action( 'wpcf_types_tax_list_table_after', 'wpcf_admin_promotional_text' );
@@ -1670,7 +1671,8 @@ function wpcf_admin_deactivate_content($type, $arg, $action = 'delete')
1670
  case 'taxonomy':
1671
  // Clean post relations
1672
  if ( $action == 'delete' ) {
1673
- $custom = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
1674
  foreach ( $custom as $post_type => $data ) {
1675
  if ( empty( $data['taxonomies'] ) ) {
1676
  continue;
570
  array('page'=>'wpcf-edit-type'),
571
  __('Add New', 'wpcf')
572
  );
573
+ $post_type_option = new Types_Utils_Post_Type_Option();
574
+ $to_display_posts = $post_type_option->get_post_types();
575
  $to_display_tax = get_option( WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array() );
576
  if ( !empty( $to_display_posts ) || !empty( $to_display_tax ) ) {
577
  add_action( 'wpcf_types_tax_list_table_after', 'wpcf_admin_promotional_text' );
1671
  case 'taxonomy':
1672
  // Clean post relations
1673
  if ( $action == 'delete' ) {
1674
+ $post_type_option = new Types_Utils_Post_Type_Option();
1675
+ $custom = $post_type_option->get_post_types();
1676
  foreach ( $custom as $post_type => $data ) {
1677
  if ( empty( $data['taxonomies'] ) ) {
1678
  continue;
vendor/toolset/types/embedded/classes/relationship/form-child.php CHANGED
@@ -122,7 +122,8 @@ class WPCF_Relationship_Child_Form
122
  /**
123
  * post types managed by Types
124
  */
125
- $post_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
126
  if (
127
  array_key_exists($child_post_type, $post_types )
128
  && array_key_exists('supports', $post_types[$child_post_type] )
122
  /**
123
  * post types managed by Types
124
  */
125
+ $post_type_option = new Types_Utils_Post_Type_Option();
126
+ $post_types = $post_type_option->get_post_types();
127
  if (
128
  array_key_exists($child_post_type, $post_types )
129
  && array_key_exists('supports', $post_types[$child_post_type] )
vendor/toolset/types/embedded/functions.php CHANGED
@@ -64,7 +64,10 @@ function wpcf_get_file_relpath($file)
64
  */
65
  function wpcf_embedded_after_setup_theme_hook()
66
  {
67
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
 
 
68
  if ( !empty( $custom_types ) ) {
69
  foreach ( $custom_types as $post_type => $data ) {
70
  if ( !empty( $data['supports']['thumbnail'] ) ) {
@@ -98,7 +101,8 @@ function wpcf_init_custom_types_taxonomies()
98
  }
99
 
100
  // register post types
101
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
102
  if ( !empty( $custom_types ) ) {
103
  require_once WPCF_EMBEDDED_INC_ABSPATH . '/custom-types.php';
104
  wpcf_custom_types_init();
@@ -672,7 +676,8 @@ function wpcf_is_embedded()
672
  */
673
  function wpcf_get_custom_post_type_settings($item = '')
674
  {
675
- $custom = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
676
  return !empty( $custom[$item] ) ? $custom[$item] : array();
677
  }
678
 
64
  */
65
  function wpcf_embedded_after_setup_theme_hook()
66
  {
67
+ // We need to require this file manually because this runs before the autoloader is registered.
68
+ require_once TYPES_ABSPATH . '/application/controllers/utils/post_type_option.php';
69
+ $post_type_option = new Types_Utils_Post_Type_Option();
70
+ $custom_types = $post_type_option->get_post_types();
71
  if ( !empty( $custom_types ) ) {
72
  foreach ( $custom_types as $post_type => $data ) {
73
  if ( !empty( $data['supports']['thumbnail'] ) ) {
101
  }
102
 
103
  // register post types
104
+ $post_type_option = new Types_Utils_Post_Type_Option();
105
+ $custom_types = $post_type_option->get_post_types();
106
  if ( !empty( $custom_types ) ) {
107
  require_once WPCF_EMBEDDED_INC_ABSPATH . '/custom-types.php';
108
  wpcf_custom_types_init();
676
  */
677
  function wpcf_get_custom_post_type_settings($item = '')
678
  {
679
+ $post_type_option = new Types_Utils_Post_Type_Option();
680
+ $custom = $post_type_option->get_post_types();
681
  return !empty( $custom[$item] ) ? $custom[$item] : array();
682
  }
683
 
vendor/toolset/types/embedded/includes/classes/class.types.data.installer.php CHANGED
@@ -193,9 +193,14 @@ if ( !class_exists('Types_Data_Installer') ) {
193
 
194
  $this->reset_toolset_edit_last_list[$group_name] = array();
195
 
196
- $date = date('Y-m-d H:i');
197
  $new = array();
198
- $data = get_option($group_name, array());
 
 
 
 
 
 
199
 
200
  foreach ( $groups as $group) {
201
  $slug = $group->slug->__toString();
@@ -248,8 +253,23 @@ if ( !class_exists('Types_Data_Installer') ) {
248
  }
249
  break;
250
  case WPCF_OPTION_NAME_CUSTOM_TYPES:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
251
  case WPCF_OPTION_NAME_CUSTOM_TAXONOMIES:
252
- $options = get_option( $group, array() );
253
  $new = array();
254
  foreach ( $options as $one ) {
255
  if ( in_array($one['slug'], $data ) ) {
193
 
194
  $this->reset_toolset_edit_last_list[$group_name] = array();
195
 
 
196
  $new = array();
197
+
198
+ if( WPCF_OPTION_NAME_CUSTOM_TYPES === $group_name ) {
199
+ $post_type_option = new Types_Utils_Post_Type_Option();
200
+ $data = $post_type_option->get_post_types();
201
+ } else {
202
+ $data = get_option( $group_name, array() );
203
+ }
204
 
205
  foreach ( $groups as $group) {
206
  $slug = $group->slug->__toString();
253
  }
254
  break;
255
  case WPCF_OPTION_NAME_CUSTOM_TYPES:
256
+
257
+ $post_type_option = new Types_Utils_Post_Type_Option();
258
+ $options = $post_type_option->get_post_types();
259
+ $new = array();
260
+ foreach ( $options as $one ) {
261
+ if ( in_array($one['slug'], $data ) ) {
262
+ if ( isset( $one[TOOLSET_EDIT_LAST]) ) {
263
+ unset($one[TOOLSET_EDIT_LAST]);
264
+ }
265
+ }
266
+ $new[$one['slug']] = $one;
267
+ }
268
+ update_option($group, $new);
269
+ break;
270
+
271
  case WPCF_OPTION_NAME_CUSTOM_TAXONOMIES:
272
+ $options = get_option( WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array() );
273
  $new = array();
274
  foreach ( $options as $one ) {
275
  if ( in_array($one['slug'], $data ) ) {
vendor/toolset/types/embedded/includes/custom-types.php CHANGED
@@ -84,7 +84,8 @@ function wpcf_custom_types_default() {
84
  * Inits custom types.
85
  */
86
  function wpcf_custom_types_init() {
87
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
88
  if ( !empty( $custom_types ) ) {
89
  foreach ( $custom_types as $post_type => $data ) {
90
  if ( empty($data) ) {
@@ -110,7 +111,8 @@ function wpcf_custom_types_init() {
110
  }
111
 
112
  function types_menu_order( $menu ) {
113
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
114
 
115
  if ( !empty( $custom_types ) ) {
116
  foreach( $custom_types as $post_type => $data ) {
@@ -454,21 +456,27 @@ function wpcf_filter_type( $data, $post_type ) {
454
  return $data;
455
  }
456
 
 
457
  /**
458
  * Returns active post types.
459
  *
460
- * @return type
 
 
461
  */
462
  function wpcf_get_active_custom_types() {
463
- $types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
464
- foreach ($types as $type => $data) {
465
- if (!empty($data['disabled'])) {
466
- unset($types[$type]);
467
- }
468
- }
469
- return $types;
 
 
470
  }
471
 
 
472
  /** This action is documented in wp-admin/includes/table.php */
473
  add_filter('dashboard_glance_items', 'wpcf_dashboard_glance_items');
474
 
@@ -487,7 +495,8 @@ function wpcf_dashboard_glance_items($elements)
487
  wp_register_style( 'wpcf-fix-wordpress-core', WPCF_EMBEDDED_RES_RELPATH . '/css/fix-wordpress-core.css', array(), WPCF_VERSION );
488
  wp_enqueue_style( 'wpcf-fix-wordpress-core' );
489
 
490
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
491
  if ( empty( $custom_types ) ) {
492
  return $elements;
493
  }
@@ -548,7 +557,8 @@ function wpcf_dashboard_glance_items($elements)
548
  function wpcf_filter_enter_title_here($enter_title_here, $post)
549
  {
550
  if ( is_object($post) && isset( $post->post_type) ) {
551
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
552
  if (
553
  true
554
  && isset($custom_types[$post->post_type])
@@ -592,7 +602,8 @@ function types_get_array_key_search_in_sub( $array, $search ) {
592
  */
593
  function types_rename_build_in_post_types_menu() {
594
 
595
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
596
 
597
  if ( !empty( $custom_types ) ) {
598
  global $menu, $submenu;
@@ -665,7 +676,8 @@ add_action( 'admin_menu', 'types_rename_build_in_post_types_menu' );
665
  */
666
  function types_rename_build_in_post_types() {
667
  global $wp_post_types;
668
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
669
 
670
  if ( !empty( $custom_types ) ) {
671
  foreach ( $custom_types as $post_type => $data ) {
@@ -714,7 +726,8 @@ add_action( 'init', 'types_rename_build_in_post_types' );
714
  * Visibility of inbuild types
715
  */
716
  function types_visibility_build_in_types() {
717
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
718
 
719
  // Type: Posts
720
  if( isset( $custom_types['post']['public'] )
84
  * Inits custom types.
85
  */
86
  function wpcf_custom_types_init() {
87
+ $post_type_option = new Types_Utils_Post_Type_Option();
88
+ $custom_types = $post_type_option->get_post_types();
89
  if ( !empty( $custom_types ) ) {
90
  foreach ( $custom_types as $post_type => $data ) {
91
  if ( empty($data) ) {
111
  }
112
 
113
  function types_menu_order( $menu ) {
114
+ $post_type_option = new Types_Utils_Post_Type_Option();
115
+ $custom_types = $post_type_option->get_post_types();
116
 
117
  if ( !empty( $custom_types ) ) {
118
  foreach( $custom_types as $post_type => $data ) {
456
  return $data;
457
  }
458
 
459
+
460
  /**
461
  * Returns active post types.
462
  *
463
+ * @return array
464
+ * @deprecated Use the Post Type API instead: https://git.onthegosystems.com/toolset/toolset-common/wikis/post-type-api
465
+ * @since unknown
466
  */
467
  function wpcf_get_active_custom_types() {
468
+ $post_type_option = new Types_Utils_Post_Type_Option();
469
+ $types = $post_type_option->get_post_types();
470
+ foreach ( $types as $type => $data ) {
471
+ if ( ! empty( $data['disabled'] ) ) {
472
+ unset( $types[ $type ] );
473
+ }
474
+ }
475
+
476
+ return $types;
477
  }
478
 
479
+
480
  /** This action is documented in wp-admin/includes/table.php */
481
  add_filter('dashboard_glance_items', 'wpcf_dashboard_glance_items');
482
 
495
  wp_register_style( 'wpcf-fix-wordpress-core', WPCF_EMBEDDED_RES_RELPATH . '/css/fix-wordpress-core.css', array(), WPCF_VERSION );
496
  wp_enqueue_style( 'wpcf-fix-wordpress-core' );
497
 
498
+ $post_type_option = new Types_Utils_Post_Type_Option();
499
+ $custom_types = $post_type_option->get_post_types();
500
  if ( empty( $custom_types ) ) {
501
  return $elements;
502
  }
557
  function wpcf_filter_enter_title_here($enter_title_here, $post)
558
  {
559
  if ( is_object($post) && isset( $post->post_type) ) {
560
+ $post_type_option = new Types_Utils_Post_Type_Option();
561
+ $custom_types = $post_type_option->get_post_types();
562
  if (
563
  true
564
  && isset($custom_types[$post->post_type])
602
  */
603
  function types_rename_build_in_post_types_menu() {
604
 
605
+ $post_type_option = new Types_Utils_Post_Type_Option();
606
+ $custom_types = $post_type_option->get_post_types();
607
 
608
  if ( !empty( $custom_types ) ) {
609
  global $menu, $submenu;
676
  */
677
  function types_rename_build_in_post_types() {
678
  global $wp_post_types;
679
+ $post_type_option = new Types_Utils_Post_Type_Option();
680
+ $custom_types = $post_type_option->get_post_types();
681
 
682
  if ( !empty( $custom_types ) ) {
683
  foreach ( $custom_types as $post_type => $data ) {
726
  * Visibility of inbuild types
727
  */
728
  function types_visibility_build_in_types() {
729
+ $post_type_option = new Types_Utils_Post_Type_Option();
730
+ $custom_types = $post_type_option->get_post_types();
731
 
732
  // Type: Posts
733
  if( isset( $custom_types['post']['public'] )
vendor/toolset/types/embedded/includes/import-export.php CHANGED
@@ -738,8 +738,8 @@ function wpcf_admin_import_data( $data = '', $redirect = true, $context = 'types
738
  $return = array_merge( $return, $term_group_results, $term_field_results );
739
 
740
  // Process types
741
-
742
- $types_existing = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
743
  $types_check = array();
744
  if ( ! empty( $data->types ) && isset( $data->types->type ) ) {
745
  $types = array();
738
  $return = array_merge( $return, $term_group_results, $term_field_results );
739
 
740
  // Process types
741
+ $post_type_option = new Types_Utils_Post_Type_Option();
742
+ $types_existing = $post_type_option->get_post_types();
743
  $types_check = array();
744
  if ( ! empty( $data->types ) && isset( $data->types->type ) ) {
745
  $types = array();
vendor/toolset/types/embedded/includes/module-manager.php CHANGED
@@ -133,7 +133,8 @@ function wpcf_admin_metabox_module_manager($type)
133
  function wpcf_module_inline_table_post_types() {
134
  // dont add module manager meta box on new post type form
135
  if ( defined( 'MODMAN_PLUGIN_NAME' ) && isset( $_GET['wpcf-post-type'] ) ) {
136
- $_custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
137
  if ( isset( $_custom_types[$_GET['wpcf-post-type']] ) ) {
138
  $_post_type = $_custom_types[$_GET['wpcf-post-type']];
139
  // add module manager meta box to post type form
@@ -249,7 +250,8 @@ if ( defined( 'MODMAN_PLUGIN_NAME' ) ) {
249
  }
250
 
251
  function wpcf_register_modules_items_types( $items ) {
252
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
253
  foreach ( $custom_types as $type ) {
254
  if ( empty($type) ) {
255
  continue;
@@ -636,7 +638,8 @@ function wpcf_admin_export_selected_data ( array $items, $_type = 'all', $return
636
 
637
  // Get custom types
638
  if ( 'types' == $_type || 'all' == $_type ) {
639
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
640
  // Get custom types
641
  // TODO Document $items
642
  if ( !empty( $items ) ) {
@@ -1078,7 +1081,8 @@ function wpcf_admin_import_data_from_xmlstring( $data = '', $_type = 'types',
1078
  if ( !empty( $data->types ) && 'types' == $_type ) {
1079
  $imported = true;
1080
 
1081
- $types_existing = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
1082
  $types = array();
1083
  $types_check = array();
1084
  // Set insert data from XML
133
  function wpcf_module_inline_table_post_types() {
134
  // dont add module manager meta box on new post type form
135
  if ( defined( 'MODMAN_PLUGIN_NAME' ) && isset( $_GET['wpcf-post-type'] ) ) {
136
+ $post_type_option = new Types_Utils_Post_Type_Option();
137
+ $_custom_types = $post_type_option->get_post_types();
138
  if ( isset( $_custom_types[$_GET['wpcf-post-type']] ) ) {
139
  $_post_type = $_custom_types[$_GET['wpcf-post-type']];
140
  // add module manager meta box to post type form
250
  }
251
 
252
  function wpcf_register_modules_items_types( $items ) {
253
+ $post_type_option = new Types_Utils_Post_Type_Option();
254
+ $custom_types = $post_type_option->get_post_types();
255
  foreach ( $custom_types as $type ) {
256
  if ( empty($type) ) {
257
  continue;
638
 
639
  // Get custom types
640
  if ( 'types' == $_type || 'all' == $_type ) {
641
+ $post_type_option = new Types_Utils_Post_Type_Option();
642
+ $custom_types = $post_type_option->get_post_types();
643
  // Get custom types
644
  // TODO Document $items
645
  if ( !empty( $items ) ) {
1081
  if ( !empty( $data->types ) && 'types' == $_type ) {
1082
  $imported = true;
1083
 
1084
+ $post_type_option = new Types_Utils_Post_Type_Option();
1085
+ $types_existing = $post_type_option->get_post_types();
1086
  $types = array();
1087
  $types_check = array();
1088
  // Set insert data from XML
vendor/toolset/types/embedded/includes/wpml.php CHANGED
@@ -378,7 +378,8 @@ function wpcf_admin_bulk_string_translation() {
378
  }
379
 
380
  // Register types
381
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
382
  foreach ( $custom_types as $post_type => $data ) {
383
  wpcf_custom_types_register_translation( $post_type, $data );
384
  }
378
  }
379
 
380
  // Register types
381
+ $post_type_option = new Types_Utils_Post_Type_Option();
382
+ $custom_types = $post_type_option->get_post_types();
383
  foreach ( $custom_types as $post_type => $data ) {
384
  wpcf_custom_types_register_translation( $post_type, $data );
385
  }
vendor/toolset/types/embedded/resources/js/basic.js CHANGED
@@ -19,6 +19,8 @@ if( typeof typesStatusBasicJsScript === 'undefined' ) {
19
 
20
  jQuery( document ).ready( function() {
21
 
 
 
22
  /**
23
  * check description field
24
  */
@@ -105,7 +107,7 @@ if( typeof typesStatusBasicJsScript === 'undefined' ) {
105
  // containment: 'parent'
106
  // });
107
 
108
- jQuery( ".wpcf-form-fieldset legend" ).on( 'click', function() {
109
  jQuery( this ).parent().children( ".collapsible" ).slideToggle( "fast", function() {
110
  var toggle = '';
111
  if( jQuery( this ).is( ":visible" ) ) {
@@ -144,16 +146,16 @@ if( typeof typesStatusBasicJsScript === 'undefined' ) {
144
  }
145
  } );
146
  } );
147
- jQuery( '.wpcf-form-groups-radio-update-title-display-value' ).on( 'keyup', function() {
148
  jQuery( '#' + jQuery( this ).attr( 'id' ) + '-display-value' ).prev( 'label' ).html( jQuery( this ).val() );
149
  } );
150
  jQuery( '.form-error' ).parents( '.collapsed' ).slideDown();
151
- jQuery( '.wpcf-form input' ).on( 'focus', function() {
152
  jQuery( this ).parents( '.collapsed' ).slideDown();
153
  } );
154
 
155
  // Delete AJAX added element
156
- jQuery( '.wpcf-form-fields-delete' ).on( 'click', function() {
157
  if( jQuery( this ).attr( 'href' ) == 'javascript:void(0);' ) {
158
  jQuery( this ).parent().fadeOut( function() {
159
  jQuery( this ).remove();
@@ -164,7 +166,7 @@ if( typeof typesStatusBasicJsScript === 'undefined' ) {
164
  /*
165
  * Generic AJAX call (link). Parameters can be used.
166
  */
167
- jQuery( '.wpcf-ajax-link' ).on( 'click', function() {
168
  var callback = wpcfGetParameterByName( 'wpcf_ajax_callback', jQuery( this ).attr( 'href' ) );
169
  var update = wpcfGetParameterByName( 'wpcf_ajax_update', jQuery( this ).attr( 'href' ) );
170
  var updateAdd = wpcfGetParameterByName( 'wpcf_ajax_update_add', jQuery( this ).attr( 'href' ) );
19
 
20
  jQuery( document ).ready( function() {
21
 
22
+ var wpcfBody = jQuery( 'body' );
23
+
24
  /**
25
  * check description field
26
  */
107
  // containment: 'parent'
108
  // });
109
 
110
+ wpcfBody.on( 'click', '.wpcf-form-fieldset legend', function() {
111
  jQuery( this ).parent().children( ".collapsible" ).slideToggle( "fast", function() {
112
  var toggle = '';
113
  if( jQuery( this ).is( ":visible" ) ) {
146
  }
147
  } );
148
  } );
149
+ wpcfBody.on( 'keyup', '.wpcf-form-groups-radio-update-title-display-value', function() {
150
  jQuery( '#' + jQuery( this ).attr( 'id' ) + '-display-value' ).prev( 'label' ).html( jQuery( this ).val() );
151
  } );
152
  jQuery( '.form-error' ).parents( '.collapsed' ).slideDown();
153
+ wpcfBody.on( 'focus', '.wpcf-form input', function() {
154
  jQuery( this ).parents( '.collapsed' ).slideDown();
155
  } );
156
 
157
  // Delete AJAX added element
158
+ wpcfBody.on( 'click', '.wpcf-form-fields-delete', function() {
159
  if( jQuery( this ).attr( 'href' ) == 'javascript:void(0);' ) {
160
  jQuery( this ).parent().fadeOut( function() {
161
  jQuery( this ).remove();
166
  /*
167
  * Generic AJAX call (link). Parameters can be used.
168
  */
169
+ wpcfBody.on( 'click', '.wpcf-ajax-link', function() {
170
  var callback = wpcfGetParameterByName( 'wpcf_ajax_callback', jQuery( this ).attr( 'href' ) );
171
  var update = wpcfGetParameterByName( 'wpcf_ajax_update', jQuery( this ).attr( 'href' ) );
172
  var updateAdd = wpcfGetParameterByName( 'wpcf_ajax_update_add', jQuery( this ).attr( 'href' ) );
vendor/toolset/types/embedded/resources/js/custom-fields-form-filter.js CHANGED
@@ -55,7 +55,7 @@ function _wpcfFilterTitle(e, title, title_not_empty, title_empty) {
55
  /**
56
  * Autocomplete slugs
57
  */
58
- jQuery('input.wpcf-forms-field-slug').on('blur focus click', function(){
59
  var slug = jQuery(this).val();
60
  if ( '' == slug ){
61
  // jQuery(this).val(wpcf_slugize(jQuery(this).parent().find('input.wpcf-forms-field-name').val()));
55
  /**
56
  * Autocomplete slugs
57
  */
58
+ jQuery( 'body' ).on('blur focus click', 'input.wpcf-forms-field-slug', function(){
59
  var slug = jQuery(this).val();
60
  if ( '' == slug ){
61
  // jQuery(this).val(wpcf_slugize(jQuery(this).parent().find('input.wpcf-forms-field-name').val()));
vendor/toolset/types/embedded/resources/js/fields-form.js CHANGED
@@ -104,7 +104,7 @@ jQuery(document).ready(function($){
104
  /**
105
  * confitonal logic button close on group edit screen
106
  */
107
- $('#conditional-logic-button-ok').on('click', function(){
108
  $(this).parent().slideUp('slow', function() {
109
  $('#conditional-logic-button-open').fadeIn();
110
  });
104
  /**
105
  * confitonal logic button close on group edit screen
106
  */
107
+ $( 'body' ).on('click', '#conditional-logic-button-ok', function(){
108
  $(this).parent().slideUp('slow', function() {
109
  $('#conditional-logic-button-open').fadeIn();
110
  });
vendor/toolset/types/embedded/resources/js/fields-post.js CHANGED
@@ -21,7 +21,7 @@ jQuery(document).ready(function(){
21
  /*
22
  * Generic AJAX call (link). Parameters can be used.
23
  */
24
- jQuery('.wpcf-ajax-link').on('click', function(){
25
  var callback = wpcfGetParameterByName('wpcf_ajax_callback', jQuery(this).attr('href'));
26
  var update = wpcfGetParameterByName('wpcf_ajax_update', jQuery(this).attr('href'));
27
  var updateAdd = wpcfGetParameterByName('wpcf_ajax_update_add', jQuery(this).attr('href'));
@@ -127,7 +127,7 @@ jQuery(document).ready(function(){
127
  jQuery('#post .wpcf-cd-failed, #post .wpcf-cd-group-failed').remove();
128
  });
129
 
130
- jQuery('.wpcf-pr-save-all-link, .wpcf-pr-save-ajax').on('click', function(){
131
  jQuery(this).parents('.wpcf-pr-has-entries').find('.wpcf-cd-failed').remove();
132
  });
133
 
21
  /*
22
  * Generic AJAX call (link). Parameters can be used.
23
  */
24
+ jQuery( 'body' ).on( 'click', '.wpcf-ajax-link', function(){
25
  var callback = wpcfGetParameterByName('wpcf_ajax_callback', jQuery(this).attr('href'));
26
  var update = wpcfGetParameterByName('wpcf_ajax_update', jQuery(this).attr('href'));
27
  var updateAdd = wpcfGetParameterByName('wpcf_ajax_update_add', jQuery(this).attr('href'));
127
  jQuery('#post .wpcf-cd-failed, #post .wpcf-cd-group-failed').remove();
128
  });
129
 
130
+ jQuery( 'body' ).on( 'click', '.wpcf-pr-save-all-link, .wpcf-pr-save-ajax', function(){
131
  jQuery(this).parents('.wpcf-pr-has-entries').find('.wpcf-cd-failed').remove();
132
  });
133
 
vendor/toolset/types/embedded/resources/js/post-relationship.js CHANGED
@@ -435,7 +435,7 @@ jQuery(document).ready(function($) {
435
  });
436
  return false;
437
  });
438
- jQuery('.wpcf-pr-delete-ajax').on('click', function () {
439
  if ($(this).hasClass('disabled'))
440
  return false;
441
 
@@ -499,7 +499,7 @@ jQuery(document).ready(function($) {
499
  });
500
  return false;
501
  });
502
- jQuery('.wpcf-pr-update-belongs').on('click', function () {
503
  var object = jQuery(this);
504
  jQuery.ajax({
505
  url: jQuery(this).attr('href'),
435
  });
436
  return false;
437
  });
438
+ jQuery( 'body' ).on( 'click', '.wpcf-pr-delete-ajax', function () {
439
  if ($(this).hasClass('disabled'))
440
  return false;
441
 
499
  });
500
  return false;
501
  });
502
+ jQuery( 'body' ).on( 'click', '.wpcf-pr-update-belongs', function () {
503
  var object = jQuery(this);
504
  jQuery.ajax({
505
  url: jQuery(this).attr('href'),
vendor/toolset/types/embedded/resources/js/repetitive.js CHANGED
@@ -45,7 +45,7 @@ jQuery(document).ready(function(){
45
  });
46
  return false;
47
  });
48
- jQuery('.wpcf-repetitive-delete').on('click', function(){
49
 
50
  var wrapper = jQuery(this).parents('.wpcf-repetitive-sortable-wrapper');
51
 
45
  });
46
  return false;
47
  });
48
+ jQuery( 'body' ).on( 'click', '.wpcf-repetitive-delete', function(){
49
 
50
  var wrapper = jQuery(this).parents('.wpcf-repetitive-sortable-wrapper');
51
 
vendor/toolset/types/includes/ajax.php CHANGED
@@ -68,6 +68,10 @@ function wpcf_ajax( $fallthrough )
68
  }
69
  require_once WPCF_INC_ABSPATH.'/classes/class.wpcf.roles.php';
70
 
 
 
 
 
71
  /**
72
  * check permissions
73
  */
@@ -356,7 +360,7 @@ function wpcf_ajax( $fallthrough )
356
  if ( empty($post_type) ) {
357
  wpcf_ajax_helper_print_error_and_die();
358
  }
359
- $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
360
  $custom_types[$post_type]['disabled'] = 1;
361
  $custom_types[$post_type][TOOLSET_EDIT_LAST] = time();
362
  update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $custom_types);
@@ -374,7 +378,7 @@ function wpcf_ajax( $fallthrough )
374
  if ( empty($post_type) ) {
375
  wpcf_ajax_helper_print_error_and_die();
376
  }
377
- $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
378
  unset($custom_types[$post_type]['disabled']);
379
  $custom_types[$post_type][TOOLSET_EDIT_LAST] = time();
380
  update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $custom_types);
@@ -392,7 +396,7 @@ function wpcf_ajax( $fallthrough )
392
  if ( empty($post_type) ) {
393
  wpcf_ajax_helper_print_error_and_die();
394
  }
395
- $post_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
396
 
397
  /**
398
  * Delete relation between custom posts types
@@ -459,7 +463,7 @@ function wpcf_ajax( $fallthrough )
459
  wpcf_ajax_helper_print_error_and_die();
460
  }
461
 
462
- $post_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
463
 
464
  $i = 0;
465
  $key = false;
@@ -544,7 +548,7 @@ function wpcf_ajax( $fallthrough )
544
  && is_array($custom_taxonomies[$key]['supports'])
545
  && !empty($custom_taxonomies[$key]['supports'])
546
  ) {
547
- $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
548
  foreach( array_keys($custom_taxonomies[$key]['supports']) as $custom_type ) {
549
  /**
550
  * avoid to create fake CPT from old data
@@ -959,7 +963,8 @@ function wpcf_ajax_helper_get_post_type()
959
  return false;
960
  }
961
  require_once WPCF_INC_ABSPATH . '/custom-types.php';
962
- $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
 
963
  if (
964
  isset($custom_types[$_REQUEST['wpcf-post-type']])
965
  && isset($custom_types[$_REQUEST['wpcf-post-type']]['slug'])
68
  }
69
  require_once WPCF_INC_ABSPATH.'/classes/class.wpcf.roles.php';
70
 
71
+ // We need to require this file manually because this runs before the autoloader is registered.
72
+ require_once TYPES_ABSPATH . '/application/controllers/utils/post_type_option.php';
73
+ $post_type_option = new Types_Utils_Post_Type_Option();
74
+
75
  /**
76
  * check permissions
77
  */
360
  if ( empty($post_type) ) {
361
  wpcf_ajax_helper_print_error_and_die();
362
  }
363
+ $custom_types = $post_type_option->get_post_types();
364
  $custom_types[$post_type]['disabled'] = 1;
365
  $custom_types[$post_type][TOOLSET_EDIT_LAST] = time();
366
  update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $custom_types);
378
  if ( empty($post_type) ) {
379
  wpcf_ajax_helper_print_error_and_die();
380
  }
381
+ $custom_types = $post_type_option->get_post_types();
382
  unset($custom_types[$post_type]['disabled']);
383
  $custom_types[$post_type][TOOLSET_EDIT_LAST] = time();
384
  update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $custom_types);
396
  if ( empty($post_type) ) {
397
  wpcf_ajax_helper_print_error_and_die();
398
  }
399
+ $post_types = $post_type_option->get_post_types();
400
 
401
  /**
402
  * Delete relation between custom posts types
463
  wpcf_ajax_helper_print_error_and_die();
464
  }
465
 
466
+ $post_types = $post_type_option->get_post_types();
467
 
468
  $i = 0;
469
  $key = false;
548
  && is_array($custom_taxonomies[$key]['supports'])
549
  && !empty($custom_taxonomies[$key]['supports'])
550
  ) {
551
+ $custom_types = $post_type_option->get_post_types();
552
  foreach( array_keys($custom_taxonomies[$key]['supports']) as $custom_type ) {
553
  /**
554
  * avoid to create fake CPT from old data
963
  return false;
964
  }
965
  require_once WPCF_INC_ABSPATH . '/custom-types.php';
966
+ $post_type_option = new Types_Utils_Post_Type_Option();
967
+ $custom_types = $post_type_option->get_post_types();
968
  if (
969
  isset($custom_types[$_REQUEST['wpcf-post-type']])
970
  && isset($custom_types[$_REQUEST['wpcf-post-type']]['slug'])
vendor/toolset/types/includes/classes/class.types.admin.edit.post.type.php CHANGED
@@ -81,40 +81,8 @@ class Types_Admin_Edit_Post_Type extends Types_Admin_Page
81
  ),
82
  );
83
 
84
- /**
85
- * Summary.
86
- *
87
- * Description.
88
- *
89
- * @since x.x.x
90
- *
91
- * @param type $var Description.
92
- * @param array $args {
93
- * Short description about this hash.
94
- *
95
- * @type type $var Description.
96
- * @type type $var Description.
97
- * }
98
- * @param type $var Description.
99
- */
100
  $this->boxes = apply_filters('wpcf_meta_box_order_defaults', $this->boxes, $this->post_type);
101
 
102
- /**
103
- * Summary.
104
- *
105
- * Description.
106
- *
107
- * @since x.x.x
108
- *
109
- * @param type $var Description.
110
- * @param array $args {
111
- * Short description about this hash.
112
- *
113
- * @type type $var Description.
114
- * @type type $var Description.
115
- * }
116
- * @param type $var Description.
117
- */
118
  $this->boxes = apply_filters('wpcf_meta_box_post_type', $this->boxes);
119
 
120
  /**
@@ -1116,7 +1084,8 @@ class Types_Admin_Edit_Post_Type extends Types_Admin_Page
1116
  }
1117
 
1118
  $data['slug'] = $post_type;
1119
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
1120
  $protected_data_check = array();
1121
 
1122
  if ( wpcf_is_builtin_post_types($data['slug']) ) {
@@ -1158,10 +1127,7 @@ class Types_Admin_Edit_Post_Type extends Types_Admin_Page
1158
  * update post meta "_wp_types_group_post_types"
1159
  */
1160
  $sql = $wpdb->prepare(
1161
- sprintf(
1162
- 'select meta_id, meta_value from %s where meta_key = %%s',
1163
- $wpdb->postmeta
1164
- ),
1165
  '_wp_types_group_post_types'
1166
  );
1167
  $all_meta = $wpdb->get_results($sql, OBJECT_K);
81
  ),
82
  );
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  $this->boxes = apply_filters('wpcf_meta_box_order_defaults', $this->boxes, $this->post_type);
85
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  $this->boxes = apply_filters('wpcf_meta_box_post_type', $this->boxes);
87
 
88
  /**
1084
  }
1085
 
1086
  $data['slug'] = $post_type;
1087
+ $post_type_option = new Types_Utils_Post_Type_Option();
1088
+ $custom_types = $post_type_option->get_post_types();
1089
  $protected_data_check = array();
1090
 
1091
  if ( wpcf_is_builtin_post_types($data['slug']) ) {
1127
  * update post meta "_wp_types_group_post_types"
1128
  */
1129
  $sql = $wpdb->prepare(
1130
+ "select meta_id, meta_value from {$wpdb->postmeta} where meta_key = %%s",
 
 
 
1131
  '_wp_types_group_post_types'
1132
  );
1133
  $all_meta = $wpdb->get_results($sql, OBJECT_K);
vendor/toolset/types/includes/classes/class.types.admin.edit.taxonomy.php CHANGED
@@ -914,7 +914,8 @@ class Types_Admin_Edit_Taxonomy extends Types_Admin_Page
914
  /**
915
  * Sync with post types
916
  */
917
- $post_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
918
  foreach ( $post_types as $id => $type ) {
919
  if ( !empty( $data['supports'] ) && array_key_exists( $id, $data['supports'] ) ) {
920
  if ( empty($post_types[$id]['taxonomies'][$data['slug']]) ) {
914
  /**
915
  * Sync with post types
916
  */
917
+ $post_type_option = new Types_Utils_Post_Type_Option();
918
+ $post_types = $post_type_option->get_post_types();
919
  foreach ( $post_types as $id => $type ) {
920
  if ( !empty( $data['supports'] ) && array_key_exists( $id, $data['supports'] ) ) {
921
  if ( empty($post_types[$id]['taxonomies'][$data['slug']]) ) {
vendor/toolset/types/includes/classes/class.types.admin.page.php CHANGED
@@ -346,23 +346,7 @@ abstract class Types_Admin_Page
346
  }
347
  }
348
 
349
- /**
350
- * Summary.
351
- *
352
- * Description.
353
- *
354
- * @since x.x.x
355
- * @access (for functions: only use if private)
356
- *
357
- * @see Function/method/class relied on
358
- * @link URL
359
- * @global type $varname Description.
360
- * @global type $varname Description.
361
- *
362
- * @param type $var Description.
363
- * @param type $var Optional. Description.
364
- * @return type Description.
365
- */
366
  public function add_box_howto($boxes)
367
  {
368
  $displaying_custom_content = include( WPCF_ABSPATH . '/marketing/displaying-custom-content/title-content.php' );
@@ -674,7 +658,8 @@ abstract class Types_Admin_Page
674
  {
675
  $post_type = '';
676
  if (isset($_REQUEST[$request_name]) ) {
677
- $post_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
 
678
  if ( array_key_exists($_REQUEST[$request_name], $post_types) ) {
679
  $post_type = sanitize_text_field( $_REQUEST[$request_name] );
680
  }
346
  }
347
  }
348
 
349
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
  public function add_box_howto($boxes)
351
  {
352
  $displaying_custom_content = include( WPCF_ABSPATH . '/marketing/displaying-custom-content/title-content.php' );
658
  {
659
  $post_type = '';
660
  if (isset($_REQUEST[$request_name]) ) {
661
+ $post_type_option = new Types_Utils_Post_Type_Option();
662
+ $post_types = $post_type_option->get_post_types();
663
  if ( array_key_exists($_REQUEST[$request_name], $post_types) ) {
664
  $post_type = sanitize_text_field( $_REQUEST[$request_name] );
665
  }
vendor/toolset/types/includes/classes/class.types.admin.post-type.php CHANGED
@@ -66,8 +66,8 @@ class Types_Admin_Post_Type extends Types_Admin_Page
66
  if ( empty($post_type_slug) ) {
67
  return wpcf_custom_types_default();
68
  }
69
- $post_type = array();
70
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
71
  if ( isset( $custom_types[$post_type_slug] ) ) {
72
  $post_type = $custom_types[$post_type_slug];
73
  $post_type['update'] = true;
66
  if ( empty($post_type_slug) ) {
67
  return wpcf_custom_types_default();
68
  }
69
+ $post_type_option = new Types_Utils_Post_Type_Option();
70
+ $custom_types = $post_type_option->get_post_types();
71
  if ( isset( $custom_types[$post_type_slug] ) ) {
72
  $post_type = $custom_types[$post_type_slug];
73
  $post_type['update'] = true;
vendor/toolset/types/includes/classes/class.types.admin.post.types.list.table.php CHANGED
@@ -43,10 +43,6 @@ class Types_Admin_Post_Types_List_Table extends WP_List_Table
43
  var $buildin_post_types;
44
  var $bulk_action_field_name = 'wpcf_cpt_ids';
45
 
46
- /** ************************************************************************
47
- * REQUIRED. Set up a constructor that references the parent constructor. We
48
- * use the parent reference to set some default configs.
49
- ***************************************************************************/
50
  function __construct()
51
  {
52
  //Set parent defaults
@@ -56,31 +52,12 @@ class Types_Admin_Post_Types_List_Table extends WP_List_Table
56
  'ajax' => true //does this table support ajax?
57
  ) );
58
 
59
- $this->custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
 
60
  $this->buildin_post_types = wpcf_get_builtin_in_post_types();
61
  }
62
 
63
- /** ************************************************************************
64
- * Recommended. This method is called when the parent class can't find a method
65
- * specifically build for a given column. Generally, it's recommended to include
66
- * one method for each column you want to render, keeping your package class
67
- * neat and organized. For example, if the class needs to process a column
68
- * named 'title', it would first see if a method named $this->column_title()
69
- * exists - if it does, that method will be used. If it doesn't, this one will
70
- * be used. Generally, you should try to use custom column methods as much as
71
- * possible.
72
- *
73
- * Since we have defined a column_title() method later on, this method doesn't
74
- * need to concern itself with any column with a name of 'title'. Instead, it
75
- * needs to handle everything else.
76
- *
77
- * For more detailed insight into how columns are handled, take a look at
78
- * WP_List_Table::single_row_columns()
79
- *
80
- * @param array $item A singular item (one full row's worth of data)
81
- * @param array $column_name The name/slug of the column to be processed
82
- * @return string Text or HTML to be placed inside the column <td>
83
- **************************************************************************/
84
  function column_default($item, $column_name)
85
  {
86
  switch($column_name){
43
  var $buildin_post_types;
44
  var $bulk_action_field_name = 'wpcf_cpt_ids';
45
 
 
 
 
 
46
  function __construct()
47
  {
48
  //Set parent defaults
52
  'ajax' => true //does this table support ajax?
53
  ) );
54
 
55
+ $post_type_option = new Types_Utils_Post_Type_Option();
56
+ $this->custom_types = $post_type_option->get_post_types();
57
  $this->buildin_post_types = wpcf_get_builtin_in_post_types();
58
  }
59
 
60
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  function column_default($item, $column_name)
62
  {
63
  switch($column_name){
vendor/toolset/types/includes/classes/class.types.admin.taxonomies.list.table.php CHANGED
@@ -365,7 +365,8 @@ class Types_Admin_Taxonomies_List_Table extends WP_List_Table
365
  * update post types
366
  */
367
  if ( count($slugs_to_delete) ) {
368
- $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
 
369
  if ( !empty($custom_types) ) {
370
  foreach ( $slugs_to_delete as $slug ) {
371
  foreach ( $custom_types as $custom_key => $data ) {
365
  * update post types
366
  */
367
  if ( count($slugs_to_delete) ) {
368
+ $post_type_option = new Types_Utils_Post_Type_Option();
369
+ $custom_types = $post_type_option->get_post_types();
370
  if ( !empty($custom_types) ) {
371
  foreach ( $slugs_to_delete as $slug ) {
372
  foreach ( $custom_types as $custom_key => $data ) {
vendor/toolset/types/includes/classes/class.wpcf.marketing.messages.php CHANGED
@@ -117,7 +117,8 @@ class WPCF_Types_Marketing_Messages extends WPCF_Types_Marketing
117
  is_array($_GET)
118
  && array_key_exists('wpcf-post-type', $_GET)
119
  ) {
120
- $types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
 
121
  $candidate_key = sanitize_text_field( $_GET['wpcf-post-type'] );
122
  if ( array_key_exists($candidate_key, $types ) ) {
123
  $text = preg_replace( '/PPP/', $types[$candidate_key]['labels']['name'], $text);
@@ -151,7 +152,6 @@ class WPCF_Types_Marketing_Messages extends WPCF_Types_Marketing
151
  }
152
  $text = preg_replace( '/TTT/', $ttt, $text);
153
  if ( array_key_exists('supports', $taxonomies[$candidate_key]) ) {
154
- $types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
155
  $post_type = array_keys($taxonomies[$candidate_key]['supports']);
156
  if ( !empty($post_type) ) {
157
  $post_type = $post_type[array_rand($post_type)];
117
  is_array($_GET)
118
  && array_key_exists('wpcf-post-type', $_GET)
119
  ) {
120
+ $post_type_option = new Types_Utils_Post_Type_Option();
121
+ $types = $post_type_option->get_post_types();
122
  $candidate_key = sanitize_text_field( $_GET['wpcf-post-type'] );
123
  if ( array_key_exists($candidate_key, $types ) ) {
124
  $text = preg_replace( '/PPP/', $types[$candidate_key]['labels']['name'], $text);
152
  }
153
  $text = preg_replace( '/TTT/', $ttt, $text);
154
  if ( array_key_exists('supports', $taxonomies[$candidate_key]) ) {
 
155
  $post_type = array_keys($taxonomies[$candidate_key]['supports']);
156
  if ( !empty($post_type) ) {
157
  $post_type = $post_type[array_rand($post_type)];
vendor/toolset/types/includes/classes/class.wpcf.roles.php CHANGED
@@ -342,7 +342,8 @@ class WPCF_Roles
342
 
343
  public static function user_can_edit_custom_post_by_slug($slug)
344
  {
345
- $entries = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array());
 
346
  if (isset($entries[$slug])) {
347
  return self::user_can_edit('custom-post-type', $entries[$slug]);
348
  }
342
 
343
  public static function user_can_edit_custom_post_by_slug($slug)
344
  {
345
+ $post_type_option = new Types_Utils_Post_Type_Option();
346
+ $entries = $post_type_option->get_post_types();
347
  if (isset($entries[$slug])) {
348
  return self::user_can_edit('custom-post-type', $entries[$slug]);
349
  }
vendor/toolset/types/includes/custom-types-form.php CHANGED
@@ -66,7 +66,8 @@ function wpcf_admin_custom_types_form_submit($form)
66
  }
67
 
68
  $data['slug'] = $post_type;
69
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
70
  $protected_data_check = array();
71
 
72
  if ( wpcf_is_builtin_post_types($data['slug']) ) {
66
  }
67
 
68
  $data['slug'] = $post_type;
69
+ $post_type_option = new Types_Utils_Post_Type_Option();
70
+ $custom_types = $post_type_option->get_post_types();
71
  $protected_data_check = array();
72
 
73
  if ( wpcf_is_builtin_post_types($data['slug']) ) {
vendor/toolset/types/includes/custom-types-taxonomies-list.php CHANGED
@@ -4,7 +4,8 @@
4
  */
5
 
6
  function wpcf_admin_ctt_list_header() {
7
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
8
  $custom_taxonomies = get_option( WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array() );
9
 
10
  if ( empty( $custom_types ) && empty( $custom_taxonomies ) ) {
4
  */
5
 
6
  function wpcf_admin_ctt_list_header() {
7
+ $post_type_option = new Types_Utils_Post_Type_Option();
8
+ $custom_types = $post_type_option->get_post_types();
9
  $custom_taxonomies = get_option( WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array() );
10
 
11
  if ( empty( $custom_types ) && empty( $custom_taxonomies ) ) {
vendor/toolset/types/includes/import-export.php CHANGED
@@ -888,7 +888,8 @@ function wpcf_admin_import_export_settings($data)
888
  '#type' => 'markup',
889
  '#markup' => '<h2>' . __( 'Post Types to be added/updated', 'wpcf' ) . '</h2>',
890
  );
891
- $types_existing = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
892
  $types_check = array();
893
  $types_to_be_deleted = array();
894
  foreach ( $data->types->type as $type ) {
888
  '#type' => 'markup',
889
  '#markup' => '<h2>' . __( 'Post Types to be added/updated', 'wpcf' ) . '</h2>',
890
  );
891
+ $post_type_option = new Types_Utils_Post_Type_Option();
892
+ $types_existing = $post_type_option->get_post_types();
893
  $types_check = array();
894
  $types_to_be_deleted = array();
895
  foreach ( $data->types->type as $type ) {
vendor/toolset/types/includes/post-relationship.php CHANGED
@@ -332,7 +332,8 @@ function wpcf_admin_metabox_relationship($post_type)
332
  )
333
  );
334
 
335
- $custom_types = get_option( WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
336
 
337
  $is_error = false;
338
  $error_message = '';
332
  )
333
  );
334
 
335
+ $post_type_option = new Types_Utils_Post_Type_Option();
336
+ $custom_types = $post_type_option->get_post_types();
337
 
338
  $is_error = false;
339
  $error_message = '';
vendor/toolset/types/resources/js/collapsible.js CHANGED
@@ -1,5 +1,5 @@
1
  jQuery(document).ready(function(){
2
- jQuery('.wpcf-collapsible-button').on('click', function() {
3
  var toggleButton = jQuery(this);
4
  var toggleDiv = jQuery('#'+jQuery(this).attr('id')+'-toggle');
5
  toggleDiv.slideToggle(function(){
1
  jQuery(document).ready(function(){
2
+ jQuery( 'body' ).on( 'click', '.wpcf-collapsible-button', function() {
3
  var toggleButton = jQuery(this);
4
  var toggleDiv = jQuery('#'+jQuery(this).attr('id')+'-toggle');
5
  toggleDiv.slideToggle(function(){
vendor/toolset/types/resources/js/fields-form.js CHANGED
@@ -3,6 +3,8 @@
3
  */
4
  jQuery(document).ready(function($){
5
 
 
 
6
  /**
7
  * Store all current used field slugs
8
  * @type {Array}
@@ -597,7 +599,7 @@ jQuery(document).ready(function($){
597
  /**
598
  * update box fifle by field name
599
  */
600
- $('.wpcf-forms-set-legend').on('keyup', function(){
601
  var val = $(this).val();
602
  if ( val ) {
603
  val = val.replace(/</, '&lt;');
@@ -652,7 +654,7 @@ jQuery(document).ready(function($){
652
  });
653
  if (passed == false) {
654
  // Bind message fade out
655
- $('.wpcf-compare-unique-value').on('keyup', function(){
656
  $(this).parents('.wpcf-compare-unique-value-wrapper').find('.wpcf-form-error-unique-value').fadeOut(function(){
657
  $(this).remove();
658
  });
@@ -689,7 +691,7 @@ jQuery(document).ready(function($){
689
  });
690
  if (passed == false) {
691
  // Bind message fade out
692
- $('.wpcf-forms-field-name').on('keyup', function(){
693
  $(this).removeClass('wpcf-name-checked-error').prev('.wpcf-form-error-unique-value').fadeOut(function(){
694
  $(this).remove();
695
  });
@@ -752,7 +754,7 @@ jQuery(document).ready(function($){
752
 
753
  if (passed == false) {
754
  // Bind message fade out
755
- $('.wpcf-forms-field-slug').on('keyup', function(){
756
  $(this).removeClass('wpcf-slug-checked-error').prev('.wpcf-form-error-unique-value').fadeOut(function(){
757
  $(this).remove();
758
  });
3
  */
4
  jQuery(document).ready(function($){
5
 
6
+ var wpcfBody = $( 'body' );
7
+
8
  /**
9
  * Store all current used field slugs
10
  * @type {Array}
599
  /**
600
  * update box fifle by field name
601
  */
602
+ wpcfBody.on( 'keyup', '.wpcf-forms-set-legend', function(){
603
  var val = $(this).val();
604
  if ( val ) {
605
  val = val.replace(/</, '&lt;');
654
  });
655
  if (passed == false) {
656
  // Bind message fade out
657
+ wpcfBody.on( 'keyup', '.wpcf-compare-unique-value', function(){
658
  $(this).parents('.wpcf-compare-unique-value-wrapper').find('.wpcf-form-error-unique-value').fadeOut(function(){
659
  $(this).remove();
660
  });
691
  });
692
  if (passed == false) {
693
  // Bind message fade out
694
+ wpcfBody.on( 'keyup', '.wpcf-forms-field-name', function(){
695
  $(this).removeClass('wpcf-name-checked-error').prev('.wpcf-form-error-unique-value').fadeOut(function(){
696
  $(this).remove();
697
  });
754
 
755
  if (passed == false) {
756
  // Bind message fade out
757
+ wpcfBody.on( 'keyup', '.wpcf-forms-field-slug', function(){
758
  $(this).removeClass('wpcf-slug-checked-error').prev('.wpcf-form-error-unique-value').fadeOut(function(){
759
  $(this).remove();
760
  });
vendor/toolset/types/wpcf.php CHANGED
@@ -202,7 +202,8 @@ function wpcf_is_reserved_name($name, $context, $check_pages = true)
202
  }
203
 
204
  // Add custom types
205
- $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array() );
 
206
  $post_types = get_post_types();
207
  if ( !empty( $custom_types ) ) {
208
  $custom_types = array_keys( $custom_types );
202
  }
203
 
204
  // Add custom types
205
+ $post_type_option = new Types_Utils_Post_Type_Option();
206
+ $custom_types = $post_type_option->get_post_types();
207
  $post_types = get_post_types();
208
  if ( !empty( $custom_types ) ) {
209
  $custom_types = array_keys( $custom_types );
wpcf.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://wordpress.org/extend/plugins/types/
5
  Description: Toolset Types defines custom content in WordPress. Easily create custom post types, fields and taxonomy and connect everything together.
6
  Author: OnTheGoSystems
7
  Author URI: http://www.onthegosystems.com
8
- Version: 2.2.17
9
  License: GPLv2 or later
10
 
11
  Types is free software: you can redistribute it and/or modify
@@ -29,7 +29,7 @@ if ( ! function_exists( 'add_action' ) ) {
29
 
30
  // version
31
  if ( ! defined( 'TYPES_VERSION' ) ) {
32
- define( 'TYPES_VERSION', '2.2.17' );
33
  }
34
 
35
  // backward compatibility
5
  Description: Toolset Types defines custom content in WordPress. Easily create custom post types, fields and taxonomy and connect everything together.
6
  Author: OnTheGoSystems
7
  Author URI: http://www.onthegosystems.com
8
+ Version: 2.2.18
9
  License: GPLv2 or later
10
 
11
  Types is free software: you can redistribute it and/or modify
29
 
30
  // version
31
  if ( ! defined( 'TYPES_VERSION' ) ) {
32
+ define( 'TYPES_VERSION', '2.2.18' );
33
  }
34
 
35
  // backward compatibility