Version Description
- Fixed several security issues.
Download this release
Release Info
Developer | zaantar |
Plugin | Toolset Types – Custom Post Types, Custom Fields and Taxonomies |
Version | 2.2.3 |
Comparing to | |
See all releases |
Code changes from version 2.2.2 to 2.2.3
- application/controllers/admin_menu.php +1 -1
- application/controllers/ajax/handler/field_control_action.php +8 -5
- application/controllers/ajax/handler/settings_action.php +13 -7
- application/controllers/api/handler/import_from_zip_file.php +33 -11
- application/controllers/asset/help_tab_loader.php +1 -1
- application/controllers/page/dashboard.php +11 -1
- application/controllers/page/extension/edit_post_fields.php +3 -1
- application/controllers/page/extension/edit_post_type.php +4 -2
- application/controllers/page/hidden/helper.php +13 -10
- application/models/helper/condition.php +4 -2
- application/models/helper/placeholder.php +7 -4
- library/toolset/toolset-common/bootstrap.php +3 -2
- library/toolset/toolset-common/changelog.md +14 -0
- library/toolset/toolset-common/changelog.txt +14 -0
- library/toolset/toolset-common/classes/forms.php +1 -1
- library/toolset/toolset-common/deprecated.php +1 -1
- library/toolset/toolset-common/inc/toolset.css.component.class.php +3 -3
- library/toolset/toolset-common/inc/toolset.relevanssi.compatibility.class.php +1 -1
- library/toolset/toolset-common/lib/enlimbo.forms.class.php +1 -1
- library/toolset/toolset-common/loader.php +10 -9
- library/toolset/toolset-common/res/js/toolset-select2-compatibility.js +68 -42
- library/toolset/toolset-common/res/lib/select2/select2.js +3 -2
- library/toolset/toolset-common/toolset-common-loader.php +29 -10
- library/toolset/toolset-common/toolset-forms/bootstrap.php +15 -10
- library/toolset/toolset-common/toolset-forms/classes/class.date.scripts.php +1 -1
- library/toolset/toolset-common/toolset-forms/classes/class.eforms.php +1 -1
- library/toolset/toolset-common/toolset-forms/classes/class.recaptcha.php +1 -1
- library/toolset/toolset-common/toolset-forms/classes/submit.php +1 -1
- library/toolset/toolset-common/user-editors/editor/screen/beaver/backend.php +6 -6
- library/toolset/toolset-common/user-editors/medium/content-template.php +5 -5
- library/toolset/toolset-common/user-editors/medium/screen/content-template/backend.php +1 -1
- library/toolset/toolset-common/user-editors/medium/screen/content-template/frontend-editor.php +3 -3
- library/toolset/toolset-common/user-editors/resource/views/dialog/dialog.php +1 -1
- library/toolset/toolset-common/user-editors/resource/views/dialog/for-any-input.php +2 -2
- library/toolset/toolset-common/utility/help-videos/toolset-help-videos.php +1 -1
- library/toolset/types/admin.php +3 -3
- library/toolset/types/embedded/admin.php +1 -1
- library/toolset/types/embedded/classes/forms.php +1 -1
- library/toolset/types/embedded/classes/gui/term_field_editing.php +1 -1
- library/toolset/types/embedded/includes/ajax.php +3 -3
- library/toolset/types/embedded/includes/fields-post.php +1 -1
- library/toolset/types/embedded/includes/fields.php +1 -1
- library/toolset/types/embedded/includes/module-manager.php +1 -1
- library/toolset/types/embedded/includes/post-relationship.php +5 -5
- library/toolset/types/embedded/usermeta-init.php +2 -2
- library/toolset/types/help.php +1 -1
- library/toolset/types/includes/classes/class.types.admin.edit.fields.php +1 -1
- library/toolset/types/includes/classes/class.types.admin.edit.post.type.php +3 -2
- library/toolset/types/includes/classes/class.types.admin.page.php +8 -8
- library/toolset/types/includes/classes/class.types.admin.post.types.list.table.php +1 -1
- library/toolset/types/includes/classes/class.types.admin.usermeta.groups.list.table.php +1 -1
- library/toolset/types/includes/classes/class.types.admin.usermeta.table.php +2 -2
- library/toolset/types/includes/classes/class.wpcf.custom.fields.list.table.php +1 -1
- library/toolset/types/includes/classes/page/edit/termmeta_form.php +4 -4
- library/toolset/types/includes/classes/page/listing/table.php +1 -1
- library/toolset/types/includes/classes/page/listing/termmeta_table.php +2 -0
- library/toolset/types/wpcf.php +5 -5
- readme.txt +4 -1
- wpcf.php +2 -2
application/controllers/admin_menu.php
CHANGED
@@ -64,7 +64,7 @@ final class Types_Admin_Menu {
|
|
64 |
// Add legacy pages
|
65 |
$pages = wpcf_admin_toolset_register_menu_pages( $pages );
|
66 |
|
67 |
-
$page_name = wpcf_getget( 'page' );
|
68 |
if( !empty( $page_name ) ) {
|
69 |
$pages = $this->maybe_add_ondemand_submenu( $pages, $page_name );
|
70 |
}
|
64 |
// Add legacy pages
|
65 |
$pages = wpcf_admin_toolset_register_menu_pages( $pages );
|
66 |
|
67 |
+
$page_name = sanitize_text_field( wpcf_getget( 'page' ) );
|
68 |
if( !empty( $page_name ) ) {
|
69 |
$pages = $this->maybe_add_ondemand_submenu( $pages, $page_name );
|
70 |
}
|
application/controllers/ajax/handler/field_control_action.php
CHANGED
@@ -22,8 +22,8 @@ final class Types_Ajax_Handler_Field_Control_Action extends Types_Ajax_Handler_A
|
|
22 |
$am->ajax_begin( array( 'nonce' => $am->get_action_js_name( Types_Ajax::CALLBACK_FIELD_CONTROL_ACTION ) ) );
|
23 |
|
24 |
// Read and validate input
|
25 |
-
$field_action = wpcf_getpost( 'field_action' );
|
26 |
-
$fields = wpcf_getpost( 'fields' );
|
27 |
|
28 |
$current_domain = wpcf_getpost( 'domain', null, Types_Field_Utils::get_domains() );
|
29 |
if( null == $current_domain ) {
|
@@ -34,6 +34,7 @@ final class Types_Ajax_Handler_Field_Control_Action extends Types_Ajax_Handler_A
|
|
34 |
$am->ajax_finish( array( 'message' => __( 'No fields have been selected.', 'wpcf' ) ), false );
|
35 |
}
|
36 |
|
|
|
37 |
$action_specific_data = wpcf_getpost( 'action_specific', array() );
|
38 |
|
39 |
// Process fields one by one
|
@@ -92,17 +93,19 @@ final class Types_Ajax_Handler_Field_Control_Action extends Types_Ajax_Handler_A
|
|
92 |
*/
|
93 |
private function single_field_control_action( $action_name, $field, $domain, $action_specific_data ) {
|
94 |
|
95 |
-
$field_slug = wpcf_getarr( $field, 'slug' );
|
96 |
|
97 |
switch ( $action_name ) {
|
98 |
|
99 |
case 'manage_with_types':
|
100 |
-
return $this->start_managing_field( wpcf_getarr( $field, 'metaKey' ), $domain );
|
101 |
|
102 |
case 'stop_managing_with_types':
|
103 |
return $this->stop_managing_field( $field_slug, $domain );
|
104 |
|
105 |
case 'change_group_assignment':
|
|
|
|
|
106 |
return $this->change_assignment_to_groups( $field_slug, $domain, $action_specific_data );
|
107 |
|
108 |
case 'delete_field':
|
@@ -284,7 +287,7 @@ final class Types_Ajax_Handler_Field_Control_Action extends Types_Ajax_Handler_A
|
|
284 |
return new WP_Error( 42, sprintf( __( 'Field "%s" will not be converted because it is not managed by Types.', 'wpcf' ), sanitize_text_field( $field_slug ) ) );
|
285 |
}
|
286 |
|
287 |
-
$type_slug = wpcf_getarr( $arguments, 'field_type' );
|
288 |
$target_type = Types_Field_Type_Definition_Factory::get_instance()->load_field_type_definition( $type_slug );
|
289 |
if( null == $target_type ) {
|
290 |
return new WP_Error( 42, sprintf( __( 'Unknown field type "%s".', 'wpcf' ), $type_slug ) );
|
22 |
$am->ajax_begin( array( 'nonce' => $am->get_action_js_name( Types_Ajax::CALLBACK_FIELD_CONTROL_ACTION ) ) );
|
23 |
|
24 |
// Read and validate input
|
25 |
+
$field_action = sanitize_text_field( wpcf_getpost( 'field_action' ) );
|
26 |
+
$fields = wpcf_getpost( 'fields' ); // array of values, will be sanitized when processed
|
27 |
|
28 |
$current_domain = wpcf_getpost( 'domain', null, Types_Field_Utils::get_domains() );
|
29 |
if( null == $current_domain ) {
|
34 |
$am->ajax_finish( array( 'message' => __( 'No fields have been selected.', 'wpcf' ) ), false );
|
35 |
}
|
36 |
|
37 |
+
// will be sanitized when/if used by the action-specific method
|
38 |
$action_specific_data = wpcf_getpost( 'action_specific', array() );
|
39 |
|
40 |
// Process fields one by one
|
93 |
*/
|
94 |
private function single_field_control_action( $action_name, $field, $domain, $action_specific_data ) {
|
95 |
|
96 |
+
$field_slug = sanitize_text_field( wpcf_getarr( $field, 'slug' ) );
|
97 |
|
98 |
switch ( $action_name ) {
|
99 |
|
100 |
case 'manage_with_types':
|
101 |
+
return $this->start_managing_field( sanitize_text_field( wpcf_getarr( $field, 'metaKey' ) ), $domain );
|
102 |
|
103 |
case 'stop_managing_with_types':
|
104 |
return $this->stop_managing_field( $field_slug, $domain );
|
105 |
|
106 |
case 'change_group_assignment':
|
107 |
+
// $action_specific_data is a list of group slugs, will be sanitized by
|
108 |
+
// trying to load a group model
|
109 |
return $this->change_assignment_to_groups( $field_slug, $domain, $action_specific_data );
|
110 |
|
111 |
case 'delete_field':
|
287 |
return new WP_Error( 42, sprintf( __( 'Field "%s" will not be converted because it is not managed by Types.', 'wpcf' ), sanitize_text_field( $field_slug ) ) );
|
288 |
}
|
289 |
|
290 |
+
$type_slug = sanitize_text_field( wpcf_getarr( $arguments, 'field_type' ) );
|
291 |
$target_type = Types_Field_Type_Definition_Factory::get_instance()->load_field_type_definition( $type_slug );
|
292 |
if( null == $target_type ) {
|
293 |
return new WP_Error( 42, sprintf( __( 'Unknown field type "%s".', 'wpcf' ), $type_slug ) );
|
application/controllers/ajax/handler/settings_action.php
CHANGED
@@ -20,12 +20,18 @@ final class Types_Ajax_Handler_Settings_Action extends Types_Ajax_Handler_Abstra
|
|
20 |
|
21 |
$am->ajax_begin( array( 'nonce' => $am->get_action_js_name( Types_Ajax::CALLBACK_SETTINGS_ACTION ) ) );
|
22 |
|
23 |
-
$setting = wpcf_getpost( 'setting' );
|
24 |
-
$
|
25 |
|
26 |
-
if( !is_array( $
|
27 |
-
parse_str( $
|
28 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
}
|
30 |
|
31 |
// use toolset settings if available
|
@@ -34,12 +40,12 @@ final class Types_Ajax_Handler_Settings_Action extends Types_Ajax_Handler_Abstra
|
|
34 |
$toolset_settings = Toolset_Settings::get_instance();
|
35 |
|
36 |
if( method_exists( $toolset_settings, 'save' ) ) {
|
37 |
-
$toolset_settings[$setting] = $
|
38 |
$toolset_settings->save();
|
39 |
$am->ajax_finish( 'success', true );
|
40 |
}
|
41 |
} else {
|
42 |
-
update_option( $setting, $
|
43 |
$am->ajax_finish( 'success', true );
|
44 |
}
|
45 |
|
20 |
|
21 |
$am->ajax_begin( array( 'nonce' => $am->get_action_js_name( Types_Ajax::CALLBACK_SETTINGS_ACTION ) ) );
|
22 |
|
23 |
+
$setting = sanitize_text_field( wpcf_getpost( 'setting' ) );
|
24 |
+
$setting_value = wpcf_getpost( 'setting_value' );
|
25 |
|
26 |
+
if( !is_array( $setting_value ) ) {
|
27 |
+
parse_str( $setting_value, $setting_value );
|
28 |
+
$setting_value = array_pop( $setting_value );
|
29 |
+
}
|
30 |
+
|
31 |
+
$sanitized_value = array();
|
32 |
+
foreach( $setting_value as $key => $value ) {
|
33 |
+
$sanitized_key = sanitize_title( $key );
|
34 |
+
$sanitized_value[ $sanitized_key ] = sanitize_text_field( $value );
|
35 |
}
|
36 |
|
37 |
// use toolset settings if available
|
40 |
$toolset_settings = Toolset_Settings::get_instance();
|
41 |
|
42 |
if( method_exists( $toolset_settings, 'save' ) ) {
|
43 |
+
$toolset_settings[ $setting ] = $sanitized_value;
|
44 |
$toolset_settings->save();
|
45 |
$am->ajax_finish( 'success', true );
|
46 |
}
|
47 |
} else {
|
48 |
+
update_option( $setting, $sanitized_value );
|
49 |
$am->ajax_finish( 'success', true );
|
50 |
}
|
51 |
|
application/controllers/api/handler/import_from_zip_file.php
CHANGED
@@ -50,17 +50,39 @@ class Types_Api_Handler_Import_From_Zip_File implements Types_Api_Handler_Interf
|
|
50 |
|
51 |
add_filter('wpcf_admin_message_store', '__return_false');
|
52 |
|
53 |
-
$_POST['overwrite-settings'] = isset( $import_args['overwrite-settings'] ) ? $import_args['overwrite-settings'] : false;
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
$_POST['
|
62 |
-
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
* This can be emtpy string '' or 'wpvdemo', but this second option has a serious bug with xml parsing/looping
|
65 |
*/
|
66 |
$context = isset( $import_args['context'] ) ? $import_args['context'] : '';
|
50 |
|
51 |
add_filter('wpcf_admin_message_store', '__return_false');
|
52 |
|
53 |
+
$_POST['overwrite-settings'] = isset( $import_args['overwrite-settings'] ) ? (bool) $import_args['overwrite-settings'] : false;
|
54 |
+
|
55 |
+
$_POST['overwrite-groups'] = (
|
56 |
+
isset( $import_args['overwrite-groups'] ) && 1 == $import_args['overwrite-groups']
|
57 |
+
? 1
|
58 |
+
: 0
|
59 |
+
);
|
60 |
+
|
61 |
+
$_POST['overwrite-fields'] = (
|
62 |
+
isset( $import_args['overwrite-fields'] ) && 1 == $import_args['overwrite-fields']
|
63 |
+
? 1
|
64 |
+
: 0
|
65 |
+
);
|
66 |
+
|
67 |
+
$_POST['overwrite-types'] = (
|
68 |
+
isset( $import_args['overwrite-types'] ) && 1 == $import_args['overwrite-types']
|
69 |
+
? 1
|
70 |
+
: 0
|
71 |
+
);
|
72 |
+
|
73 |
+
$_POST['overwrite-tax'] = (
|
74 |
+
isset( $import_args['overwrite-tax'] ) && 1 == $import_args['overwrite-tax']
|
75 |
+
? 1
|
76 |
+
: 0
|
77 |
+
);
|
78 |
+
|
79 |
+
$_POST['post_relationship'] = isset( $import_args['post_relationship'] ) ? (bool) $import_args['post_relationship'] : false;
|
80 |
+
$_POST['delete-groups'] = isset( $import_args['delete-groups'] ) ? (bool) $import_args['delete-groups'] : false;
|
81 |
+
$_POST['delete-fields'] = isset( $import_args['delete-fields'] ) ? (bool) $import_args['delete-fields'] : false;
|
82 |
+
$_POST['delete-types'] = isset( $import_args['delete-types'] ) ? (bool) $import_args['delete-types'] : false;
|
83 |
+
$_POST['delete-tax'] = isset( $import_args['delete-tax'] ) ? (bool) $import_args['delete-tax'] : false;
|
84 |
+
|
85 |
+
/**
|
86 |
* This can be emtpy string '' or 'wpvdemo', but this second option has a serious bug with xml parsing/looping
|
87 |
*/
|
88 |
$context = isset( $import_args['context'] ) ? $import_args['context'] : '';
|
application/controllers/asset/help_tab_loader.php
CHANGED
@@ -41,7 +41,7 @@ final class Types_Asset_Help_Tab_Loader {
|
|
41 |
return;
|
42 |
}
|
43 |
|
44 |
-
$current_page = wpcf_getget( 'page', null );
|
45 |
if ( null == $current_page ) {
|
46 |
return;
|
47 |
}
|
41 |
return;
|
42 |
}
|
43 |
|
44 |
+
$current_page = sanitize_text_field( wpcf_getget( 'page', null ) );
|
45 |
if ( null == $current_page ) {
|
46 |
return;
|
47 |
}
|
application/controllers/page/dashboard.php
CHANGED
@@ -420,7 +420,17 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
|
|
420 |
|
421 |
public function screen_settings_save($status, $option, $value) {
|
422 |
if ( 'toolset_dashboard_screen_post_types' == $option ) {
|
423 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
424 |
}
|
425 |
return $value;
|
426 |
}
|
420 |
|
421 |
public function screen_settings_save($status, $option, $value) {
|
422 |
if ( 'toolset_dashboard_screen_post_types' == $option ) {
|
423 |
+
if ( is_array( $_POST['toolset_dashboard_screen_post_types'] ) ) {
|
424 |
+
$toolset_dashboard_screen_post_types = array();
|
425 |
+
foreach( $_POST['toolset_dashboard_screen_post_types'] as $tdspt_key => $tdspt_value ) {
|
426 |
+
$tdspt_key = sanitize_text_field( $tdspt_key );
|
427 |
+
$tdspt_value = sanitize_text_field( $tdspt_value );
|
428 |
+
$toolset_dashboard_screen_post_types[ $tdspt_key ] = $tdspt_value;
|
429 |
+
}
|
430 |
+
} else {
|
431 |
+
$toolset_dashboard_screen_post_types = sanitize_text_field( $_POST['toolset_dashboard_screen_post_types'] );
|
432 |
+
}
|
433 |
+
$value = $toolset_dashboard_screen_post_types;
|
434 |
}
|
435 |
return $value;
|
436 |
}
|
application/controllers/page/extension/edit_post_fields.php
CHANGED
@@ -19,8 +19,10 @@ final class Types_Page_Extension_Edit_Post_Fields {
|
|
19 |
private function __construct() {
|
20 |
if( ! isset( $_GET['group_id'] ) )
|
21 |
return;
|
|
|
|
|
22 |
|
23 |
-
$post_types = get_post_meta( $
|
24 |
$post_types = explode( ',', $post_types );
|
25 |
$post_types = array_values( array_filter( $post_types ) );
|
26 |
|
19 |
private function __construct() {
|
20 |
if( ! isset( $_GET['group_id'] ) )
|
21 |
return;
|
22 |
+
|
23 |
+
$group_id = (int) $_GET['group_id'];
|
24 |
|
25 |
+
$post_types = get_post_meta( $group_id, '_wp_types_group_post_types', 'string' );
|
26 |
$post_types = explode( ',', $post_types );
|
27 |
$post_types = array_values( array_filter( $post_types ) );
|
28 |
|
application/controllers/page/extension/edit_post_type.php
CHANGED
@@ -19,9 +19,11 @@ final class Types_Page_Extension_Edit_Post_Type {
|
|
19 |
private function __construct() {
|
20 |
if( ! isset( $_GET['wpcf-post-type'] ) )
|
21 |
return;
|
|
|
|
|
22 |
|
23 |
-
Types_Helper_Placeholder::set_post_type( $
|
24 |
-
Types_Helper_Condition::set_post_type( $
|
25 |
|
26 |
$this->prepare();
|
27 |
}
|
19 |
private function __construct() {
|
20 |
if( ! isset( $_GET['wpcf-post-type'] ) )
|
21 |
return;
|
22 |
+
|
23 |
+
$wpcf_post_type = sanitize_text_field( $_GET['wpcf-post-type'] );
|
24 |
|
25 |
+
Types_Helper_Placeholder::set_post_type( $wpcf_post_type );
|
26 |
+
Types_Helper_Condition::set_post_type( $wpcf_post_type );
|
27 |
|
28 |
$this->prepare();
|
29 |
}
|
application/controllers/page/hidden/helper.php
CHANGED
@@ -54,25 +54,28 @@ class Types_Page_Hidden_Helper extends Types_Page_Abstract {
|
|
54 |
$this->redirect_url = false;
|
55 |
|
56 |
if( isset( $_GET['action'] ) && isset( $_GET['type'] ) ) {
|
|
|
|
|
|
|
57 |
|
58 |
-
switch( $
|
59 |
case 'new-form':
|
60 |
-
$this->redirect_url = $this->new_form_action( $
|
61 |
break;
|
62 |
case 'new-view':
|
63 |
-
$this->redirect_url = $this->new_view_action( $
|
64 |
break;
|
65 |
case 'new-layout-template':
|
66 |
-
$this->redirect_url = $this->new_layout_template_action( $
|
67 |
break;
|
68 |
case 'new-content-template':
|
69 |
-
$this->redirect_url = $this->new_content_template_action( $
|
70 |
break;
|
71 |
case 'new-wordpress-archive':
|
72 |
-
$this->redirect_url = $this->new_wordpress_archive_action( $
|
73 |
break;
|
74 |
case 'new-post-field-group':
|
75 |
-
$this->redirect_url = $this->new_post_field_group_action( $
|
76 |
break;
|
77 |
}
|
78 |
|
@@ -146,7 +149,7 @@ class Types_Page_Hidden_Helper extends Types_Page_Abstract {
|
|
146 |
$new_post_field_group->assign_post_type( $type );
|
147 |
|
148 |
$url = isset( $_GET['ref'] )
|
149 |
-
? 'admin.php?page=wpcf-edit&group_id='.$new_post_field_group->get_id().'&ref='
|
150 |
: 'admin.php?page=wpcf-edit&group_id='.$new_post_field_group->get_id();
|
151 |
|
152 |
return admin_url( $url );
|
@@ -155,11 +158,11 @@ class Types_Page_Hidden_Helper extends Types_Page_Abstract {
|
|
155 |
private function add_params_to_url( $url ) {
|
156 |
// forward parameter toolset_help_video
|
157 |
if( isset( $_GET['toolset_help_video'] ) )
|
158 |
-
$url = add_query_arg( 'toolset_help_video', $_GET['toolset_help_video'], $url );
|
159 |
|
160 |
// forward parameter ref
|
161 |
if( isset( $_GET['ref'] ) )
|
162 |
-
$url = add_query_arg( 'ref', $_GET['ref'], $url );
|
163 |
|
164 |
return $url;
|
165 |
}
|
54 |
$this->redirect_url = false;
|
55 |
|
56 |
if( isset( $_GET['action'] ) && isset( $_GET['type'] ) ) {
|
57 |
+
|
58 |
+
$action = sanitize_text_field( $_GET['action'] );
|
59 |
+
$type = sanitize_text_field( $_GET['type'] );
|
60 |
|
61 |
+
switch( $action ) {
|
62 |
case 'new-form':
|
63 |
+
$this->redirect_url = $this->new_form_action( $type );
|
64 |
break;
|
65 |
case 'new-view':
|
66 |
+
$this->redirect_url = $this->new_view_action( $type );
|
67 |
break;
|
68 |
case 'new-layout-template':
|
69 |
+
$this->redirect_url = $this->new_layout_template_action( $type );
|
70 |
break;
|
71 |
case 'new-content-template':
|
72 |
+
$this->redirect_url = $this->new_content_template_action( $type );
|
73 |
break;
|
74 |
case 'new-wordpress-archive':
|
75 |
+
$this->redirect_url = $this->new_wordpress_archive_action( $type );
|
76 |
break;
|
77 |
case 'new-post-field-group':
|
78 |
+
$this->redirect_url = $this->new_post_field_group_action( $type );
|
79 |
break;
|
80 |
}
|
81 |
|
149 |
$new_post_field_group->assign_post_type( $type );
|
150 |
|
151 |
$url = isset( $_GET['ref'] )
|
152 |
+
? 'admin.php?page=wpcf-edit&group_id='.$new_post_field_group->get_id().'&ref='.sanitize_text_field( $_GET['ref'] )
|
153 |
: 'admin.php?page=wpcf-edit&group_id='.$new_post_field_group->get_id();
|
154 |
|
155 |
return admin_url( $url );
|
158 |
private function add_params_to_url( $url ) {
|
159 |
// forward parameter toolset_help_video
|
160 |
if( isset( $_GET['toolset_help_video'] ) )
|
161 |
+
$url = add_query_arg( 'toolset_help_video', sanitize_text_field( $_GET['toolset_help_video'] ), $url );
|
162 |
|
163 |
// forward parameter ref
|
164 |
if( isset( $_GET['ref'] ) )
|
165 |
+
$url = add_query_arg( 'ref', sanitize_text_field( $_GET['ref'] ), $url );
|
166 |
|
167 |
return $url;
|
168 |
}
|
application/models/helper/condition.php
CHANGED
@@ -15,8 +15,10 @@ abstract class Types_Helper_Condition {
|
|
15 |
|
16 |
protected static function get_type_name() {
|
17 |
// per post
|
18 |
-
if( isset( $_GET['post'] ) )
|
19 |
-
|
|
|
|
|
20 |
|
21 |
return self::$post_type->name;
|
22 |
}
|
15 |
|
16 |
protected static function get_type_name() {
|
17 |
// per post
|
18 |
+
if( isset( $_GET['post'] ) ) {
|
19 |
+
$get_type_name_id = (int) $_GET['post'];
|
20 |
+
return get_post_type( $get_type_name_id );
|
21 |
+
}
|
22 |
|
23 |
return self::$post_type->name;
|
24 |
}
|
application/models/helper/placeholder.php
CHANGED
@@ -159,12 +159,15 @@ class Types_Helper_Placeholder {
|
|
159 |
return $permalink;
|
160 |
}
|
161 |
|
162 |
-
if( isset( $_GET['post'] ) && $id != $_GET['post'] )
|
163 |
-
|
|
|
|
|
164 |
|
165 |
// cpt edit page
|
166 |
if( isset( $_GET['wpcf-post-type'] ) && $id == 0 ) {
|
167 |
-
$
|
|
|
168 |
if( $query->have_posts() )
|
169 |
return self::get_permalink( $query->posts[0]->ID );
|
170 |
}
|
@@ -181,7 +184,7 @@ class Types_Helper_Placeholder {
|
|
181 |
|
182 |
public static function get_archive_permalink() {
|
183 |
if( array_key_exists( 'wpcf-post-type', $_GET ) ) {
|
184 |
-
$post_type = $_GET['wpcf-post-type'];
|
185 |
} else {
|
186 |
if( ! is_object( self::$post_type ) )
|
187 |
self::set_post_type();
|
159 |
return $permalink;
|
160 |
}
|
161 |
|
162 |
+
if( isset( $_GET['post'] ) && $id != $_GET['post'] ) {
|
163 |
+
$get_permalink_id = (int) $_GET['post'];
|
164 |
+
return self::get_permalink( $get_permalink_id );
|
165 |
+
}
|
166 |
|
167 |
// cpt edit page
|
168 |
if( isset( $_GET['wpcf-post-type'] ) && $id == 0 ) {
|
169 |
+
$get_permalink_post_type = sanitize_text_field( $_GET['wpcf-post-type'] );
|
170 |
+
$query = new WP_Query( 'post_type=' . $get_permalink_post_type . '&posts_per_page=1' );
|
171 |
if( $query->have_posts() )
|
172 |
return self::get_permalink( $query->posts[0]->ID );
|
173 |
}
|
184 |
|
185 |
public static function get_archive_permalink() {
|
186 |
if( array_key_exists( 'wpcf-post-type', $_GET ) ) {
|
187 |
+
$post_type = sanitize_text_field( $_GET['wpcf-post-type'] );
|
188 |
} else {
|
189 |
if( ! is_object( self::$post_type ) )
|
190 |
self::set_post_type();
|
library/toolset/toolset-common/bootstrap.php
CHANGED
@@ -19,9 +19,10 @@
|
|
19 |
* TOOLSET_COMMON_PATH The path to the active Toolset Common directory
|
20 |
* TOOLSET_COMMON_DIR The name of the directory of the active Toolset Common
|
21 |
* TOOLSET_COMMON_URL The URL to the root of Toolset Common, to be used in backend - adjusted as per SSL settings
|
22 |
-
* TOOLSET_COMMON_PROTOCOL The protocol of TOOLSET_COMMON_URL - http | https
|
23 |
* TOOLSET_COMMON_FRONTEND_URL The URL to the root of Toolset Common, to be used in frontend - adjusted as per SSL settings
|
24 |
-
*
|
|
|
|
|
25 |
*
|
26 |
* @todo create an admin page with Common info: path, bundled libraries versions, etc
|
27 |
*/
|
19 |
* TOOLSET_COMMON_PATH The path to the active Toolset Common directory
|
20 |
* TOOLSET_COMMON_DIR The name of the directory of the active Toolset Common
|
21 |
* TOOLSET_COMMON_URL The URL to the root of Toolset Common, to be used in backend - adjusted as per SSL settings
|
|
|
22 |
* TOOLSET_COMMON_FRONTEND_URL The URL to the root of Toolset Common, to be used in frontend - adjusted as per SSL settings
|
23 |
+
*
|
24 |
+
* TOOLSET_COMMON_PROTOCOL Deprecated - To be removed - The protocol of TOOLSET_COMMON_URL - http | https
|
25 |
+
* TOOLSET_COMMON_FRONTEND_PROTOCOL Deprecated - To be removed - The protocol of TOOLSET_COMMON_FRONTEND_URL - http | https
|
26 |
*
|
27 |
* @todo create an admin page with Common info: path, bundled libraries versions, etc
|
28 |
*/
|
library/toolset/toolset-common/changelog.md
CHANGED
@@ -1,3 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
Common 2.2.2 (September 26, 2016)
|
2 |
- Updated the bundled select2 script to version 4.0.3
|
3 |
- Fixed a problem with some assets URLs lacking a backslash
|
1 |
+
Common 2.2.5 (November 5, 2016)
|
2 |
+
- Thorough check for security vulnerabilities.
|
3 |
+
|
4 |
+
Common 2.2.4 (November 2, 2016)
|
5 |
+
- Fixed a problem with some assets management by definind better rules on constant definitions.
|
6 |
+
|
7 |
+
-------------------------------------------------------------------------------------------------------------------
|
8 |
+
|
9 |
+
Common 2.2.3 (October 10, 2016)
|
10 |
+
- Fixed select2 edge cases when methods are called on non-select2 initialised element
|
11 |
+
- Refined special handling of old inputs by making sure target is only a select and not the hidden relative element
|
12 |
+
|
13 |
+
-------------------------------------------------------------------------------------------------------------------
|
14 |
+
|
15 |
Common 2.2.2 (September 26, 2016)
|
16 |
- Updated the bundled select2 script to version 4.0.3
|
17 |
- Fixed a problem with some assets URLs lacking a backslash
|
library/toolset/toolset-common/changelog.txt
CHANGED
@@ -1,3 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
Common 2.2.2 (September 26, 2016)
|
2 |
- Updated the bundled select2 script to version 4.0.3
|
3 |
- Fixed a problem with some assets URLs lacking a backslash
|
1 |
+
Common 2.2.5 (November 5, 2016)
|
2 |
+
- Thorough check for security vulnerabilities.
|
3 |
+
|
4 |
+
Common 2.2.4 (November 2, 2016)
|
5 |
+
- Fixed a problem with some assets management by definind better rules on constant definitions.
|
6 |
+
|
7 |
+
-------------------------------------------------------------------------------------------------------------------
|
8 |
+
|
9 |
+
Common 2.2.3 (October 10, 2016)
|
10 |
+
- Fixed select2 edge cases when methods are called on non-select2 initialised element
|
11 |
+
- Refined special handling of old inputs by making sure target is only a select and not the hidden relative element
|
12 |
+
|
13 |
+
-------------------------------------------------------------------------------------------------------------------
|
14 |
+
|
15 |
Common 2.2.2 (September 26, 2016)
|
16 |
- Updated the bundled select2 script to version 4.0.3
|
17 |
- Fixed a problem with some assets URLs lacking a backslash
|
library/toolset/toolset-common/classes/forms.php
CHANGED
@@ -931,7 +931,7 @@ if (!class_exists('Enlimbo_Forms_Wpcf')) {
|
|
931 |
if ($element['#type'] == 'file') {
|
932 |
return $_FILES[$name]['tmp_name'];
|
933 |
}
|
934 |
-
return isset($_REQUEST[$name]) ? $_REQUEST[$name] : in_array($element['#type'],
|
935 |
array('textfield', 'textarea')) ? '' : 0;
|
936 |
}
|
937 |
|
931 |
if ($element['#type'] == 'file') {
|
932 |
return $_FILES[$name]['tmp_name'];
|
933 |
}
|
934 |
+
return isset($_REQUEST[$name]) ? sanitize_text_field( $_REQUEST[$name] ) : in_array($element['#type'],
|
935 |
array('textfield', 'textarea')) ? '' : 0;
|
936 |
}
|
937 |
|
library/toolset/toolset-common/deprecated.php
CHANGED
@@ -50,7 +50,7 @@ if ( ! function_exists( 'wpv_dismiss_message_ajax' ) ) {
|
|
50 |
&& wp_verify_nonce( $_GET['_wpnonce'], 'dismiss_message' )
|
51 |
) {
|
52 |
$dismissed_messages = get_option( 'wpv-dismissed-messages', array() );
|
53 |
-
$dismissed_image_val = isset( $_GET['timestamp'] ) ? $_GET['timestamp'] : 1;
|
54 |
$dismissed_messages[strval( $_GET['message_id'] )] = $dismissed_image_val;
|
55 |
update_option( 'wpv-dismissed-messages', $dismissed_messages );
|
56 |
}
|
50 |
&& wp_verify_nonce( $_GET['_wpnonce'], 'dismiss_message' )
|
51 |
) {
|
52 |
$dismissed_messages = get_option( 'wpv-dismissed-messages', array() );
|
53 |
+
$dismissed_image_val = isset( $_GET['timestamp'] ) ? sanitize_text_field( $_GET['timestamp'] ) : 1;
|
54 |
$dismissed_messages[strval( $_GET['message_id'] )] = $dismissed_image_val;
|
55 |
update_option( 'wpv-dismissed-messages', $dismissed_messages );
|
56 |
}
|
library/toolset/toolset-common/inc/toolset.css.component.class.php
CHANGED
@@ -59,7 +59,7 @@ if ( ! class_exists( 'Toolset_CssComponent' ) ) {
|
|
59 |
public function toolset_bs_update_option(){
|
60 |
if($_POST['option'] && isset($_POST['option']) && $_POST['value'] && isset($_POST['value'])){
|
61 |
|
62 |
-
$option_name = 'toolset_bs_component_'
|
63 |
$value = ($_POST['value'] === "true") ? "yes" : "no";
|
64 |
|
65 |
update_option( $option_name, $value);
|
@@ -132,8 +132,8 @@ if ( ! class_exists( 'Toolset_CssComponent' ) ) {
|
|
132 |
if(defined('LAYOUTS_PLUGIN_NAME')){
|
133 |
$bootstrap_available = true;
|
134 |
}
|
135 |
-
|
136 |
-
$get_page = (isset($_GET['page']) && $_GET['page']) ? $_GET['page'] : null;
|
137 |
|
138 |
if(!in_array($get_page, $this->allowed_pages()) || $bootstrap_available === false){
|
139 |
return false;
|
59 |
public function toolset_bs_update_option(){
|
60 |
if($_POST['option'] && isset($_POST['option']) && $_POST['value'] && isset($_POST['value'])){
|
61 |
|
62 |
+
$option_name = 'toolset_bs_component_'.sanitize_text_field( $_POST['option'] );
|
63 |
$value = ($_POST['value'] === "true") ? "yes" : "no";
|
64 |
|
65 |
update_option( $option_name, $value);
|
132 |
if(defined('LAYOUTS_PLUGIN_NAME')){
|
133 |
$bootstrap_available = true;
|
134 |
}
|
135 |
+
|
136 |
+
$get_page = (isset($_GET['page']) && $_GET['page']) ? sanitize_text_field( $_GET['page'] ) : null;
|
137 |
|
138 |
if(!in_array($get_page, $this->allowed_pages()) || $bootstrap_available === false){
|
139 |
return false;
|
library/toolset/toolset-common/inc/toolset.relevanssi.compatibility.class.php
CHANGED
@@ -508,7 +508,7 @@ if ( ! class_exists( 'Toolset_Relevanssi_Compatibility' ) ) {
|
|
508 |
|
509 |
$current_page = '';
|
510 |
if ( isset( $_GET['page'] ) ) {
|
511 |
-
$current_page = $_GET['page'];
|
512 |
}
|
513 |
|
514 |
if ( ! $current_page == 'wpcf-edit' ) {
|
508 |
|
509 |
$current_page = '';
|
510 |
if ( isset( $_GET['page'] ) ) {
|
511 |
+
$current_page = sanitize_text_field( $_GET['page'] );
|
512 |
}
|
513 |
|
514 |
if ( ! $current_page == 'wpcf-edit' ) {
|
library/toolset/toolset-common/lib/enlimbo.forms.class.php
CHANGED
@@ -927,7 +927,7 @@ if ( ! class_exists('Toolset_Enlimbo_Forms' ) ) {
|
|
927 |
if ($element['#type'] == 'file') {
|
928 |
return $_FILES[$name]['tmp_name'];
|
929 |
}
|
930 |
-
return isset($_REQUEST[$name]) ? $_REQUEST[$name] : in_array($element['#type'],
|
931 |
array('textfield', 'textarea')) ? '' : 0;
|
932 |
}
|
933 |
|
927 |
if ($element['#type'] == 'file') {
|
928 |
return $_FILES[$name]['tmp_name'];
|
929 |
}
|
930 |
+
return isset($_REQUEST[$name]) ? sanitize_text_field( $_REQUEST[$name] ) : in_array($element['#type'],
|
931 |
array('textfield', 'textarea')) ? '' : 0;
|
932 |
}
|
933 |
|
library/toolset/toolset-common/loader.php
CHANGED
@@ -8,6 +8,8 @@
|
|
8 |
* plugin loader and then call the toolset_common_initialize function.
|
9 |
* The toolset_common_initialize should be passed the file path to the directory
|
10 |
* where this file is located and also the url to this directory.
|
|
|
|
|
11 |
*
|
12 |
*
|
13 |
*
|
@@ -18,17 +20,17 @@
|
|
18 |
* The version number will then be used to work out which plugin has the latest
|
19 |
* version of the code.
|
20 |
*
|
21 |
-
* The version number will have a format of
|
22 |
-
* where
|
23 |
-
* and
|
24 |
-
* so we allow up to
|
25 |
*
|
26 |
*/
|
27 |
/**
|
28 |
* Now that we have a unique version for all plugins
|
29 |
* we define the version here
|
30 |
*/
|
31 |
-
$toolset_common_version =
|
32 |
|
33 |
|
34 |
// ----------------------------------------------------------------------//
|
@@ -74,10 +76,9 @@ if ( ! function_exists( 'toolset_common_initialize' ) ) {
|
|
74 |
global $toolset_common_paths;
|
75 |
|
76 |
$path = str_replace( '\\', '/', $path );
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
}
|
81 |
|
82 |
// Save the url in the matching path
|
83 |
foreach ( $toolset_common_paths as $key => $data ) {
|
8 |
* plugin loader and then call the toolset_common_initialize function.
|
9 |
* The toolset_common_initialize should be passed the file path to the directory
|
10 |
* where this file is located and also the url to this directory.
|
11 |
+
* Note that both the path and URL will be normalized with untrailingslashit
|
12 |
+
* so they do not pack any trailing slash.
|
13 |
*
|
14 |
*
|
15 |
*
|
20 |
* The version number will then be used to work out which plugin has the latest
|
21 |
* version of the code.
|
22 |
*
|
23 |
+
* The version number will have a format of XXXYYY
|
24 |
+
* where XXX is the future target Toolset Common version number, built upon the stable released one stated in changelog.txt plus 1
|
25 |
+
* and YYY is incremented by 1 on each change to the Toolset Common repo
|
26 |
+
* so we allow up to 1000 changes per dev cycle.
|
27 |
*
|
28 |
*/
|
29 |
/**
|
30 |
* Now that we have a unique version for all plugins
|
31 |
* we define the version here
|
32 |
*/
|
33 |
+
$toolset_common_version = 225000;
|
34 |
|
35 |
|
36 |
// ----------------------------------------------------------------------//
|
76 |
global $toolset_common_paths;
|
77 |
|
78 |
$path = str_replace( '\\', '/', $path );
|
79 |
+
|
80 |
+
$path = untrailingslashit( $path );
|
81 |
+
$url = untrailingslashit( $url );
|
|
|
82 |
|
83 |
// Save the url in the matching path
|
84 |
foreach ( $toolset_common_paths as $key => $data ) {
|
library/toolset/toolset-common/res/js/toolset-select2-compatibility.js
CHANGED
@@ -11,7 +11,7 @@ ToolsetCommon.initSelect2Compatibility = function( $ ){
|
|
11 |
jQuery.fn.toolset_select2_original = jQuery.fn.toolset_select2;
|
12 |
//backwards compatible object
|
13 |
jQuery.fn.toolset_select2 = function(options, param){
|
14 |
-
if(typeof options == "string"){
|
15 |
ToolsetCommon.toolset_select2ExecMethods(this, options, param)
|
16 |
}else if (typeof options == "object"){
|
17 |
if(jQuery(this)){
|
@@ -64,45 +64,61 @@ ToolsetCommon.toolset_select2ConvertInputToSelect = function(el, options){
|
|
64 |
jQuery(hiddenInput).insertAfter("."+dynamicClass);
|
65 |
}
|
66 |
//initialize toolset_select2
|
67 |
-
|
|
|
|
|
|
|
|
|
68 |
|
69 |
//Add event listener on tags fields to update hidden inputs on change
|
70 |
if(options && options.hasOwnProperty("tags")){
|
71 |
-
jQuery(
|
72 |
-
var actualValue = jQuery(
|
73 |
-
|
74 |
if(actualValue && actualValue.length > 0 && hiddenInput){
|
75 |
jQuery("."+hiddenDynamicClass).attr("value", actualValue.join(","));
|
76 |
}
|
77 |
});
|
78 |
-
jQuery("."+dynamicClass).trigger("change");
|
79 |
}
|
80 |
return convertedEl;
|
81 |
}else{
|
82 |
-
|
83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
}
|
85 |
};
|
86 |
/*
|
87 |
* @description checks if input needs to be converted to a select element.
|
88 |
*/
|
89 |
ToolsetCommon.toolset_select2ConversionRequired = function(el, options){
|
90 |
-
if(
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
options.
|
95 |
-
|
96 |
-
options.
|
97 |
-
|
98 |
-
|
|
|
|
|
99 |
});
|
100 |
-
|
101 |
-
|
|
|
|
|
|
|
102 |
}
|
103 |
-
return true;
|
104 |
-
}else{
|
105 |
-
return (jQuery(el).prop("tagName") !== "SELECT");
|
106 |
}
|
107 |
};
|
108 |
|
@@ -113,27 +129,36 @@ ToolsetCommon.toolset_select2ConversionRequired = function(el, options){
|
|
113 |
ToolsetCommon.toolset_select2ExecMethods = function(el, method, param){
|
114 |
if(jQuery(el).data("toolset_select2")){
|
115 |
var elm_id = jQuery(el).attr("id");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
|
117 |
-
switch(method){
|
118 |
-
case "val":
|
119 |
-
if(param !== undefined && param !== null){
|
120 |
-
jQuery(el).val(param).trigger("change");
|
121 |
-
}else{
|
122 |
-
return jQuery(el).val();
|
123 |
-
}
|
124 |
-
break;
|
125 |
-
case "enable":
|
126 |
-
jQuery(el).prop("disabled", !param);
|
127 |
-
break;
|
128 |
-
case "data":
|
129 |
-
jQuery(el).val(param.ID).trigger("change").trigger("toolset_select2:selecting");
|
130 |
-
break;
|
131 |
-
case "close":
|
132 |
-
jQuery(el).toolset_select2_original("close");
|
133 |
-
break;
|
134 |
-
default:
|
135 |
-
jQuery("#"+elm_id).toolset_select2_original(method, param);
|
136 |
-
break;
|
137 |
}
|
138 |
}
|
139 |
};
|
@@ -144,6 +169,7 @@ ToolsetCommon.toolset_select2ExecMethods = function(el, method, param){
|
|
144 |
ToolsetCommon.addSelect2RandomClassName = function(el) {
|
145 |
var className = ("toolset_select2_prefix_" + (Math.round(Math.random() * (100000 - 99) + 99)).toString());
|
146 |
jQuery(el).addClass(className);
|
|
|
147 |
return className;
|
148 |
};
|
149 |
|
11 |
jQuery.fn.toolset_select2_original = jQuery.fn.toolset_select2;
|
12 |
//backwards compatible object
|
13 |
jQuery.fn.toolset_select2 = function(options, param){
|
14 |
+
if( typeof options == "string" ){
|
15 |
ToolsetCommon.toolset_select2ExecMethods(this, options, param)
|
16 |
}else if (typeof options == "object"){
|
17 |
if(jQuery(this)){
|
64 |
jQuery(hiddenInput).insertAfter("."+dynamicClass);
|
65 |
}
|
66 |
//initialize toolset_select2
|
67 |
+
try{
|
68 |
+
convertedEl = jQuery("."+dynamicClass).toolset_select2_original(options);
|
69 |
+
}catch(err){
|
70 |
+
console.log(err.message);
|
71 |
+
}
|
72 |
|
73 |
//Add event listener on tags fields to update hidden inputs on change
|
74 |
if(options && options.hasOwnProperty("tags")){
|
75 |
+
jQuery("."+dynamicClass).on("change", function(event){
|
76 |
+
var actualValue = jQuery(event.target).val();
|
|
|
77 |
if(actualValue && actualValue.length > 0 && hiddenInput){
|
78 |
jQuery("."+hiddenDynamicClass).attr("value", actualValue.join(","));
|
79 |
}
|
80 |
});
|
|
|
81 |
}
|
82 |
return convertedEl;
|
83 |
}else{
|
84 |
+
if(!jQuery(el).data("toolset_select2")){
|
85 |
+
var dynamicClass = ToolsetCommon.addSelect2RandomClassName(el);
|
86 |
+
var convertedEl = null;
|
87 |
+
|
88 |
+
try{
|
89 |
+
convertedEl = jQuery("."+dynamicClass).toolset_select2_original(options);
|
90 |
+
}catch(err){
|
91 |
+
console.log(err.message);
|
92 |
+
}
|
93 |
+
|
94 |
+
return convertedEl;
|
95 |
+
}else{
|
96 |
+
return el;
|
97 |
+
}
|
98 |
}
|
99 |
};
|
100 |
/*
|
101 |
* @description checks if input needs to be converted to a select element.
|
102 |
*/
|
103 |
ToolsetCommon.toolset_select2ConversionRequired = function(el, options){
|
104 |
+
if(!jQuery(el).hasClass("toolset_select2_converted")){
|
105 |
+
if(options && options.hasOwnProperty("tags")){
|
106 |
+
jQuery(el).prop("multiple", "multiple");
|
107 |
+
options.multiple = true;
|
108 |
+
if(options.tags instanceof Array && options.tags.length > 0){
|
109 |
+
options.data = [];
|
110 |
+
options.tags.forEach(function(item){
|
111 |
+
options.data.push({
|
112 |
+
id: item,
|
113 |
+
text: item
|
114 |
+
});
|
115 |
});
|
116 |
+
options.tags = true;
|
117 |
+
}
|
118 |
+
return true;
|
119 |
+
}else{
|
120 |
+
return (jQuery(el).prop("tagName") !== "SELECT");
|
121 |
}
|
|
|
|
|
|
|
122 |
}
|
123 |
};
|
124 |
|
129 |
ToolsetCommon.toolset_select2ExecMethods = function(el, method, param){
|
130 |
if(jQuery(el).data("toolset_select2")){
|
131 |
var elm_id = jQuery(el).attr("id");
|
132 |
+
try{
|
133 |
+
switch(method){
|
134 |
+
case "val":
|
135 |
+
if(param !== undefined && param !== null){
|
136 |
+
jQuery(el).val(param).trigger("change");
|
137 |
+
}else{
|
138 |
+
return jQuery(el).val();
|
139 |
+
}
|
140 |
+
break;
|
141 |
+
case "enable":
|
142 |
+
jQuery(el).prop("disabled", !param);
|
143 |
+
break;
|
144 |
+
case "data":
|
145 |
+
jQuery(el).val(param.ID).trigger("change").trigger("toolset_select2:selecting");
|
146 |
+
break;
|
147 |
+
case "close":
|
148 |
+
if(jQuery(el).data("toolset_select2") != null && jQuery(el).data("toolset_select2") != undefined){
|
149 |
+
jQuery(el).toolset_select2_original("close");
|
150 |
+
}
|
151 |
+
break;
|
152 |
+
case "destory":
|
153 |
+
jQuery(el).removeClass("toolset_select2_converted");
|
154 |
+
jQuery(el).toolset_select2_original("destroy");
|
155 |
+
break;
|
156 |
+
default:
|
157 |
+
jQuery("#"+elm_id).toolset_select2_original(method, param);
|
158 |
+
break;
|
159 |
+
}
|
160 |
+
}catch(err){
|
161 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
}
|
163 |
}
|
164 |
};
|
169 |
ToolsetCommon.addSelect2RandomClassName = function(el) {
|
170 |
var className = ("toolset_select2_prefix_" + (Math.round(Math.random() * (100000 - 99) + 99)).toString());
|
171 |
jQuery(el).addClass(className);
|
172 |
+
jQuery(el).addClass("toolset_select2_converted");
|
173 |
return className;
|
174 |
};
|
175 |
|
library/toolset/toolset-common/res/lib/select2/select2.js
CHANGED
@@ -5671,15 +5671,16 @@ Toolset_S2.define('jquery.toolset_select2',[
|
|
5671 |
} else if (typeof options === 'string') {
|
5672 |
var ret;
|
5673 |
var args = Array.prototype.slice.call(arguments, 1);
|
5674 |
-
|
5675 |
this.each(function () {
|
5676 |
var instance = $(this).data('toolset_select2');
|
5677 |
|
5678 |
if (instance == null && window.console && console.error) {
|
5679 |
-
console.
|
5680 |
'The toolset_select2(\'' + options + '\') method was called on an ' +
|
5681 |
'element that is not using Select2.'
|
5682 |
);
|
|
|
5683 |
}
|
5684 |
|
5685 |
ret = instance[options].apply(instance, args);
|
5671 |
} else if (typeof options === 'string') {
|
5672 |
var ret;
|
5673 |
var args = Array.prototype.slice.call(arguments, 1);
|
5674 |
+
//TODO: the return statement and console.log instead of console error is our code
|
5675 |
this.each(function () {
|
5676 |
var instance = $(this).data('toolset_select2');
|
5677 |
|
5678 |
if (instance == null && window.console && console.error) {
|
5679 |
+
console.log(
|
5680 |
'The toolset_select2(\'' + options + '\') method was called on an ' +
|
5681 |
'element that is not using Select2.'
|
5682 |
);
|
5683 |
+
return;
|
5684 |
}
|
5685 |
|
5686 |
ret = instance[options].apply(instance, args);
|
library/toolset/toolset-common/toolset-common-loader.php
CHANGED
@@ -5,11 +5,11 @@ if ( class_exists( 'Toolset_Common_Bootstrap' ) ) {
|
|
5 |
};
|
6 |
|
7 |
if( !defined('TOOLSET_VERSION') ){
|
8 |
-
define('TOOLSET_VERSION', '2.2.
|
9 |
}
|
10 |
|
11 |
if ( ! defined('TOOLSET_COMMON_VERSION' ) ) {
|
12 |
-
define( 'TOOLSET_COMMON_VERSION', '2.2.
|
13 |
}
|
14 |
|
15 |
if ( ! defined('TOOLSET_COMMON_PATH' ) ) {
|
@@ -29,13 +29,32 @@ if ( ! function_exists( 'toolset_common_boostrap' ) ) {
|
|
29 |
}
|
30 |
|
31 |
/**
|
32 |
-
*
|
33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
* will be calculated by itself.
|
35 |
-
|
|
|
|
|
|
|
|
|
36 |
* define('TOOLSET_COMMON_URL', set_url_scheme( $url ) ); covers everything
|
|
|
|
|
|
|
37 |
*/
|
38 |
function toolset_common_set_constants_and_start( $url ) {
|
|
|
|
|
|
|
|
|
39 |
if (
|
40 |
is_ssl()
|
41 |
|| (
|
@@ -44,17 +63,17 @@ if ( ! function_exists( 'toolset_common_boostrap' ) ) {
|
|
44 |
)
|
45 |
) {
|
46 |
define( 'TOOLSET_COMMON_URL', str_replace( 'http://', 'https://', $url ) );
|
47 |
-
define( 'TOOLSET_COMMON_PROTOCOL', 'https' );
|
48 |
} else {
|
49 |
define( 'TOOLSET_COMMON_URL', $url );
|
50 |
-
define( 'TOOLSET_COMMON_PROTOCOL', 'http' );
|
51 |
-
|
52 |
if ( is_ssl() ) {
|
53 |
define( 'TOOLSET_COMMON_FRONTEND_URL', TOOLSET_COMMON_URL );
|
54 |
-
define( 'TOOLSET_COMMON_FRONTEND_PROTOCOL', 'https' );
|
55 |
} else {
|
56 |
define( 'TOOLSET_COMMON_FRONTEND_URL', str_replace( 'https://', 'http://', TOOLSET_COMMON_URL ) );
|
57 |
-
define( 'TOOLSET_COMMON_FRONTEND_PROTOCOL', 'http' );
|
58 |
}
|
59 |
}
|
60 |
// Load early
|
5 |
};
|
6 |
|
7 |
if( !defined('TOOLSET_VERSION') ){
|
8 |
+
define('TOOLSET_VERSION', '2.2.5');
|
9 |
}
|
10 |
|
11 |
if ( ! defined('TOOLSET_COMMON_VERSION' ) ) {
|
12 |
+
define( 'TOOLSET_COMMON_VERSION', '2.2.5' );
|
13 |
}
|
14 |
|
15 |
if ( ! defined('TOOLSET_COMMON_PATH' ) ) {
|
29 |
}
|
30 |
|
31 |
/**
|
32 |
+
* Set Toolset Common constants.
|
33 |
+
*
|
34 |
+
* TOOLSET_COMMON_URL Base URL for the Toolset Common instance. Note that is does not have a trailing slash.
|
35 |
+
* TOOLSET_COMMON_FRONTEND_URL Base frontend URL for the Toolset Common instance. Note that is does not have a trailing slash.
|
36 |
+
*
|
37 |
+
* TOOLSET_COMMON_PROTOCOL Deprecated.
|
38 |
+
* TOOLSET_COMMON_FRONTEND_PROTOCOL Deprecated.
|
39 |
+
*
|
40 |
+
* @TODO: there is no need to manipulate URL values for http/https if everyone uses plugins_url, but not everyone does, so:
|
41 |
+
* this is necessary, but it should be enough to do $url = set_url_scheme( $url ) and the protocol
|
42 |
* will be calculated by itself.
|
43 |
+
* Note that set_url_scheme( $url ) takes care of FORCE_SSL_AMIN too:
|
44 |
+
* https://developer.wordpress.org/reference/functions/set_url_scheme/
|
45 |
+
*
|
46 |
+
* @TODO: no need of TOOLSET_COMMON_URL, TOOLSET_COMMON_PROTOCOL, TOOLSET_COMMON_FRONTEND_URL, TOOLSET_COMMON_FRONTEND_PROTOCOL
|
47 |
+
* In fact, TOOLSET_COMMON_PROTOCOL and TOOLSET_COMMON_FRONTEND_PROTOCOL are not used anywhere and I am maring them as deprecated.
|
48 |
* define('TOOLSET_COMMON_URL', set_url_scheme( $url ) ); covers everything
|
49 |
+
* although there might be cases where an AJAX call is performed, hence happening on the backend,
|
50 |
+
* and we ned to build a frontend URL based on the Toolset Common URL, while they have different SSL schemas,
|
51 |
+
* so if possible, I would keep those two constants.
|
52 |
*/
|
53 |
function toolset_common_set_constants_and_start( $url ) {
|
54 |
+
|
55 |
+
// Backwards compatibility: make sure that the URL constants do not include a trailing slash.
|
56 |
+
$url = untrailingslashit( $url );
|
57 |
+
|
58 |
if (
|
59 |
is_ssl()
|
60 |
|| (
|
63 |
)
|
64 |
) {
|
65 |
define( 'TOOLSET_COMMON_URL', str_replace( 'http://', 'https://', $url ) );
|
66 |
+
define( 'TOOLSET_COMMON_PROTOCOL', 'https' ); // DEPRECATED
|
67 |
} else {
|
68 |
define( 'TOOLSET_COMMON_URL', $url );
|
69 |
+
define( 'TOOLSET_COMMON_PROTOCOL', 'http' ); // DEPRECATED
|
70 |
+
}
|
71 |
if ( is_ssl() ) {
|
72 |
define( 'TOOLSET_COMMON_FRONTEND_URL', TOOLSET_COMMON_URL );
|
73 |
+
define( 'TOOLSET_COMMON_FRONTEND_PROTOCOL', 'https' ); // DEPRECATED
|
74 |
} else {
|
75 |
define( 'TOOLSET_COMMON_FRONTEND_URL', str_replace( 'https://', 'http://', TOOLSET_COMMON_URL ) );
|
76 |
+
define( 'TOOLSET_COMMON_FRONTEND_PROTOCOL', 'http' ); // DEPRECATED
|
77 |
}
|
78 |
}
|
79 |
// Load early
|
library/toolset/toolset-common/toolset-forms/bootstrap.php
CHANGED
@@ -132,20 +132,23 @@ class WPToolset_Forms_Bootstrap {
|
|
132 |
* @since 1.5.0
|
133 |
*/
|
134 |
public function wpt_suggest_taxonomy_term() {
|
|
|
135 |
if (
|
136 |
!isset($_REQUEST['q']) || $_REQUEST['q'] == ''
|
137 |
) {
|
138 |
die();
|
139 |
}
|
140 |
global $wpdb;
|
|
|
141 |
$values_to_prepare = array();
|
142 |
if (function_exists("wpv_esc_like")) {
|
143 |
-
$term_name = '%' . wpv_esc_like($
|
144 |
} else {
|
145 |
if (function_exists("cred_wrap_esc_like")) {
|
146 |
-
$term_name = '%' . cred_wrap_esc_like($
|
147 |
}
|
148 |
}
|
|
|
149 |
$values_to_prepare[] = $term_name;
|
150 |
|
151 |
$tax_join = "";
|
@@ -155,23 +158,25 @@ class WPToolset_Forms_Bootstrap {
|
|
155 |
) {
|
156 |
$tax_join = " JOIN {$wpdb->term_taxonomy} tt ON t.term_id = tt.term_id ";
|
157 |
$tax_where = " AND tt.taxonomy = %s ";
|
158 |
-
$values_to_prepare[] = $_REQUEST['taxonomy'];
|
159 |
|
160 |
global $sitepress;
|
161 |
if (isset($sitepress)) {
|
162 |
-
if (isset($
|
163 |
-
$src_lang = $
|
164 |
} else {
|
165 |
$src_lang = $sitepress->get_current_language();
|
166 |
}
|
167 |
-
if (isset($
|
168 |
-
$lang = sanitize_text_field($
|
169 |
} else {
|
170 |
$lang = $src_lang;
|
171 |
}
|
172 |
-
$tax_where .= " AND t.term_id in (SELECT element_id from {$wpdb->prefix}icl_translations WHERE element_type =
|
|
|
|
|
173 |
}
|
174 |
-
}
|
175 |
|
176 |
$results = $wpdb->get_results(
|
177 |
$wpdb->prepare(
|
@@ -182,7 +187,7 @@ class WPToolset_Forms_Bootstrap {
|
|
182 |
LIMIT 5", $values_to_prepare
|
183 |
)
|
184 |
);
|
185 |
-
|
186 |
foreach ($results as $row) {
|
187 |
echo $row->name . "\n";
|
188 |
}
|
132 |
* @since 1.5.0
|
133 |
*/
|
134 |
public function wpt_suggest_taxonomy_term() {
|
135 |
+
|
136 |
if (
|
137 |
!isset($_REQUEST['q']) || $_REQUEST['q'] == ''
|
138 |
) {
|
139 |
die();
|
140 |
}
|
141 |
global $wpdb;
|
142 |
+
$_q = $_REQUEST['q'];
|
143 |
$values_to_prepare = array();
|
144 |
if (function_exists("wpv_esc_like")) {
|
145 |
+
$term_name = '%' . wpv_esc_like($_q) . '%';
|
146 |
} else {
|
147 |
if (function_exists("cred_wrap_esc_like")) {
|
148 |
+
$term_name = '%' . cred_wrap_esc_like($_q) . '%';
|
149 |
}
|
150 |
}
|
151 |
+
|
152 |
$values_to_prepare[] = $term_name;
|
153 |
|
154 |
$tax_join = "";
|
158 |
) {
|
159 |
$tax_join = " JOIN {$wpdb->term_taxonomy} tt ON t.term_id = tt.term_id ";
|
160 |
$tax_where = " AND tt.taxonomy = %s ";
|
161 |
+
$values_to_prepare[] = sanitize_text_field( $_REQUEST['taxonomy'] );
|
162 |
|
163 |
global $sitepress;
|
164 |
if (isset($sitepress)) {
|
165 |
+
if (isset($_REQUEST['source_lang'])) {
|
166 |
+
$src_lang = sanitize_text_field( $_REQUEST['source_lang'] );
|
167 |
} else {
|
168 |
$src_lang = $sitepress->get_current_language();
|
169 |
}
|
170 |
+
if (isset($_REQUEST['lang'])) {
|
171 |
+
$lang = sanitize_text_field( $_REQUEST['lang'] );
|
172 |
} else {
|
173 |
$lang = $src_lang;
|
174 |
}
|
175 |
+
$tax_where .= " AND t.term_id in (SELECT element_id from {$wpdb->prefix}icl_translations WHERE element_type = %s AND language_code = %s ) ";
|
176 |
+
$values_to_prepare[] = sanitize_text_field( "tax_" . $_REQUEST['taxonomy'] );
|
177 |
+
$values_to_prepare[] = $lang;
|
178 |
}
|
179 |
+
}
|
180 |
|
181 |
$results = $wpdb->get_results(
|
182 |
$wpdb->prepare(
|
187 |
LIMIT 5", $values_to_prepare
|
188 |
)
|
189 |
);
|
190 |
+
|
191 |
foreach ($results as $row) {
|
192 |
echo $row->name . "\n";
|
193 |
}
|
library/toolset/toolset-common/toolset-forms/classes/class.date.scripts.php
CHANGED
@@ -29,7 +29,7 @@ class WPToolset_Field_Date_Scripts
|
|
29 |
|
30 |
$is_frontend = ( !is_admin() );
|
31 |
|
32 |
-
$current_admin_page = isset( $_GET['page'] ) ? $_GET['page'] : null;
|
33 |
$field_group_edit_pages = array( 'wpcf-edit-usermeta', 'wpcf-edit', 'wpcf-termmeta-edit' );
|
34 |
$is_types_edit_page = in_array( $current_admin_page, $field_group_edit_pages );
|
35 |
|
29 |
|
30 |
$is_frontend = ( !is_admin() );
|
31 |
|
32 |
+
$current_admin_page = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : null;
|
33 |
$field_group_edit_pages = array( 'wpcf-edit-usermeta', 'wpcf-edit', 'wpcf-termmeta-edit' );
|
34 |
$is_types_edit_page = in_array( $current_admin_page, $field_group_edit_pages );
|
35 |
|
library/toolset/toolset-common/toolset-forms/classes/class.eforms.php
CHANGED
@@ -1165,7 +1165,7 @@ class Enlimbo_Forms {
|
|
1165 |
if ($element['#type'] == 'file') {
|
1166 |
return $_FILES[$name]['tmp_name'];
|
1167 |
}
|
1168 |
-
return isset($_REQUEST[$name]) ? $_REQUEST[$name] : in_array($element['#type'], array('textfield', 'textarea')) ? '' : 0;
|
1169 |
}
|
1170 |
|
1171 |
$parts = explode('[', $name);
|
1165 |
if ($element['#type'] == 'file') {
|
1166 |
return $_FILES[$name]['tmp_name'];
|
1167 |
}
|
1168 |
+
return isset($_REQUEST[$name]) ? sanitize_text_field( $_REQUEST[$name] ) : in_array($element['#type'], array('textfield', 'textarea')) ? '' : 0;
|
1169 |
}
|
1170 |
|
1171 |
$parts = explode('[', $name);
|
library/toolset/toolset-common/toolset-forms/classes/class.recaptcha.php
CHANGED
@@ -26,7 +26,7 @@ class WPToolset_Field_Recaptcha extends WPToolset_Field_Textfield {
|
|
26 |
$lang = substr(get_locale(), 0, 2);
|
27 |
if (isset($sitepress)) {
|
28 |
if (isset($_GET['source_lang'])) {
|
29 |
-
$src_lang = $_GET['source_lang'];
|
30 |
} else {
|
31 |
$src_lang = $sitepress->get_current_language();
|
32 |
}
|
26 |
$lang = substr(get_locale(), 0, 2);
|
27 |
if (isset($sitepress)) {
|
28 |
if (isset($_GET['source_lang'])) {
|
29 |
+
$src_lang = sanitize_text_field( $_GET['source_lang'] );
|
30 |
} else {
|
31 |
$src_lang = $sitepress->get_current_language();
|
32 |
}
|
library/toolset/toolset-common/toolset-forms/classes/submit.php
CHANGED
@@ -54,7 +54,7 @@ $data = array();
|
|
54 |
if (isset($_REQUEST['nonce']) && check_ajax_referer('ajax_nonce', 'nonce', false)) {
|
55 |
|
56 |
if (isset($_POST['action']) && $_POST['action'] == 'delete' && isset($_POST['file'])) {
|
57 |
-
$file = $_POST['file'];
|
58 |
$id = isset($_POST['id']) ? (int) $_POST['id'] : 0;
|
59 |
|
60 |
$data = array('result' => true);
|
54 |
if (isset($_REQUEST['nonce']) && check_ajax_referer('ajax_nonce', 'nonce', false)) {
|
55 |
|
56 |
if (isset($_POST['action']) && $_POST['action'] == 'delete' && isset($_POST['file'])) {
|
57 |
+
$file = esc_url_raw( $_POST['file'] );
|
58 |
$id = isset($_POST['id']) ? (int) $_POST['id'] : 0;
|
59 |
|
60 |
$data = array('result' => true);
|
library/toolset/toolset-common/user-editors/editor/screen/beaver/backend.php
CHANGED
@@ -46,10 +46,10 @@ class Toolset_User_Editors_Editor_Screen_Beaver_Backend
|
|
46 |
&& isset( $_REQUEST['preview_slug'] )
|
47 |
) {
|
48 |
$this->storeTemplateSettings(
|
49 |
-
$_REQUEST['post_id'],
|
50 |
$_REQUEST['template_path'],
|
51 |
-
$_REQUEST['preview_domain'],
|
52 |
-
$_REQUEST['preview_slug']
|
53 |
);
|
54 |
}
|
55 |
|
@@ -77,7 +77,7 @@ class Toolset_User_Editors_Editor_Screen_Beaver_Backend
|
|
77 |
// ./backend.css
|
78 |
wp_enqueue_style(
|
79 |
'toolset-user-editors-beaver-style',
|
80 |
-
TOOLSET_COMMON_URL . 'user-editors/editor/screen/beaver/backend.css',
|
81 |
array(),
|
82 |
TOOLSET_COMMON_VERSION
|
83 |
);
|
@@ -85,7 +85,7 @@ class Toolset_User_Editors_Editor_Screen_Beaver_Backend
|
|
85 |
// ./backend.js
|
86 |
wp_enqueue_script(
|
87 |
'toolset-user-editors-beaver-script',
|
88 |
-
TOOLSET_COMMON_URL . 'user-editors/editor/screen/beaver/backend.js',
|
89 |
array( 'jquery' ),
|
90 |
TOOLSET_COMMON_VERSION,
|
91 |
true
|
@@ -147,7 +147,7 @@ class Toolset_User_Editors_Editor_Screen_Beaver_Backend
|
|
147 |
public function layoutTemplateRegisterAssets() {
|
148 |
wp_register_script(
|
149 |
'toolset-user-editors-beaver-layout-template-script',
|
150 |
-
TOOLSET_COMMON_URL . 'user-editors/editor/screen/beaver/backend_layout_template.js',
|
151 |
array( 'jquery', 'views-layout-template-js', 'underscore' ),
|
152 |
TOOLSET_COMMON_VERSION,
|
153 |
true
|
46 |
&& isset( $_REQUEST['preview_slug'] )
|
47 |
) {
|
48 |
$this->storeTemplateSettings(
|
49 |
+
(int) $_REQUEST['post_id'],
|
50 |
$_REQUEST['template_path'],
|
51 |
+
sanitize_text_field( $_REQUEST['preview_domain'] ),
|
52 |
+
sanitize_text_field( $_REQUEST['preview_slug'] )
|
53 |
);
|
54 |
}
|
55 |
|
77 |
// ./backend.css
|
78 |
wp_enqueue_style(
|
79 |
'toolset-user-editors-beaver-style',
|
80 |
+
TOOLSET_COMMON_URL . '/user-editors/editor/screen/beaver/backend.css',
|
81 |
array(),
|
82 |
TOOLSET_COMMON_VERSION
|
83 |
);
|
85 |
// ./backend.js
|
86 |
wp_enqueue_script(
|
87 |
'toolset-user-editors-beaver-script',
|
88 |
+
TOOLSET_COMMON_URL . '/user-editors/editor/screen/beaver/backend.js',
|
89 |
array( 'jquery' ),
|
90 |
TOOLSET_COMMON_VERSION,
|
91 |
true
|
147 |
public function layoutTemplateRegisterAssets() {
|
148 |
wp_register_script(
|
149 |
'toolset-user-editors-beaver-layout-template-script',
|
150 |
+
TOOLSET_COMMON_URL . '/user-editors/editor/screen/beaver/backend_layout_template.js',
|
151 |
array( 'jquery', 'views-layout-template-js', 'underscore' ),
|
152 |
TOOLSET_COMMON_VERSION,
|
153 |
true
|
library/toolset/toolset-common/user-editors/medium/content-template.php
CHANGED
@@ -12,7 +12,7 @@ class Toolset_User_Editors_Medium_Content_Template
|
|
12 |
|
13 |
public function __construct() {
|
14 |
if( array_key_exists( 'ct_id', $_REQUEST ) )
|
15 |
-
$this->id = $_REQUEST['ct_id'];
|
16 |
|
17 |
if( $this->id && array_key_exists( 'ct_editor_choice', $_REQUEST ) )
|
18 |
update_post_meta( $this->id, $this->option_name_editor_choice, sanitize_text_field( $_REQUEST['ct_editor_choice'] ) );
|
@@ -143,7 +143,7 @@ class Toolset_User_Editors_Medium_Content_Template
|
|
143 |
|
144 |
// Make sure that the stored template path is in the allowed ones, or force it otherwise
|
145 |
$allowed_paths = wp_list_pluck( $this->allowed_templates, 'path' );
|
146 |
-
$current_template = get_post_meta( $_GET['ct_id'], $this->manager->getActiveEditor()->getOptionName(), true );
|
147 |
|
148 |
if (
|
149 |
isset( $_GET['ct_id'] )
|
@@ -161,8 +161,8 @@ class Toolset_User_Editors_Medium_Content_Template
|
|
161 |
'preview_slug' => $first_allowed_template['slug']
|
162 |
);
|
163 |
|
164 |
-
update_post_meta( $_GET['ct_id'], $this->manager->getActiveEditor()->getOptionName(), $settings_to_store );
|
165 |
-
$stored = get_post_meta( $_GET['ct_id'], $this->manager->getActiveEditor()->getOptionName(), true );
|
166 |
}
|
167 |
|
168 |
return $this->allowed_templates;
|
@@ -235,7 +235,7 @@ class Toolset_User_Editors_Medium_Content_Template
|
|
235 |
$editors = $this->manager->getEditors();
|
236 |
|
237 |
if( count( $editors ) > 1 ) {
|
238 |
-
$admin_url = admin_url( 'admin.php?page=ct-editor&ct_id='
|
239 |
|
240 |
$editor_current = '';
|
241 |
$editor_switch_buttons = array();
|
12 |
|
13 |
public function __construct() {
|
14 |
if( array_key_exists( 'ct_id', $_REQUEST ) )
|
15 |
+
$this->id = (int) $_REQUEST['ct_id'];
|
16 |
|
17 |
if( $this->id && array_key_exists( 'ct_editor_choice', $_REQUEST ) )
|
18 |
update_post_meta( $this->id, $this->option_name_editor_choice, sanitize_text_field( $_REQUEST['ct_editor_choice'] ) );
|
143 |
|
144 |
// Make sure that the stored template path is in the allowed ones, or force it otherwise
|
145 |
$allowed_paths = wp_list_pluck( $this->allowed_templates, 'path' );
|
146 |
+
$current_template = get_post_meta( (int) $_GET['ct_id'], $this->manager->getActiveEditor()->getOptionName(), true );
|
147 |
|
148 |
if (
|
149 |
isset( $_GET['ct_id'] )
|
161 |
'preview_slug' => $first_allowed_template['slug']
|
162 |
);
|
163 |
|
164 |
+
update_post_meta( (int) $_GET['ct_id'], $this->manager->getActiveEditor()->getOptionName(), $settings_to_store );
|
165 |
+
$stored = get_post_meta( (int) $_GET['ct_id'], $this->manager->getActiveEditor()->getOptionName(), true );
|
166 |
}
|
167 |
|
168 |
return $this->allowed_templates;
|
235 |
$editors = $this->manager->getEditors();
|
236 |
|
237 |
if( count( $editors ) > 1 ) {
|
238 |
+
$admin_url = admin_url( 'admin.php?page=ct-editor&ct_id='. (int) $_GET['ct_id'] );
|
239 |
|
240 |
$editor_current = '';
|
241 |
$editor_switch_buttons = array();
|
library/toolset/toolset-common/user-editors/medium/screen/content-template/backend.php
CHANGED
@@ -12,7 +12,7 @@ class Toolset_User_Editors_Medium_Screen_Content_Template_Backend
|
|
12 |
return false;
|
13 |
}
|
14 |
|
15 |
-
return $_REQUEST['ct_id'];
|
16 |
}
|
17 |
|
18 |
public function equivalentEditorScreenIsActive() {
|
12 |
return false;
|
13 |
}
|
14 |
|
15 |
+
return (int) $_REQUEST['ct_id'];
|
16 |
}
|
17 |
|
18 |
public function equivalentEditorScreenIsActive() {
|
library/toolset/toolset-common/user-editors/medium/screen/content-template/frontend-editor.php
CHANGED
@@ -54,7 +54,7 @@ class Toolset_User_Editors_Medium_Screen_Content_Template_Frontend_Editor
|
|
54 |
// ./backend.css
|
55 |
wp_enqueue_style(
|
56 |
'toolset-user-editors-ct-frontend-editor-style',
|
57 |
-
TOOLSET_COMMON_URL . 'user-editors/medium/screen/content-template/frontend-editor.css',
|
58 |
array(),
|
59 |
TOOLSET_COMMON_VERSION
|
60 |
);
|
@@ -62,7 +62,7 @@ class Toolset_User_Editors_Medium_Screen_Content_Template_Frontend_Editor
|
|
62 |
// ./backend.js
|
63 |
wp_enqueue_script(
|
64 |
'toolset-user-editors-ct-frontend-editor-script',
|
65 |
-
TOOLSET_COMMON_URL . 'user-editors/medium/screen/content-template/frontend-editor.js',
|
66 |
array( 'jquery' ),
|
67 |
TOOLSET_COMMON_VERSION,
|
68 |
true
|
@@ -175,7 +175,7 @@ class Toolset_User_Editors_Medium_Screen_Content_Template_Frontend_Editor
|
|
175 |
}
|
176 |
|
177 |
if( isset( $_REQUEST['ct_id'] ) && isset( $_REQUEST['preview_post_id'] ) ) {
|
178 |
-
$this->store_preview_post_id( $_REQUEST['ct_id'], $_REQUEST['preview_post_id'] );
|
179 |
}
|
180 |
|
181 |
die( 1 );
|
54 |
// ./backend.css
|
55 |
wp_enqueue_style(
|
56 |
'toolset-user-editors-ct-frontend-editor-style',
|
57 |
+
TOOLSET_COMMON_URL . '/user-editors/medium/screen/content-template/frontend-editor.css',
|
58 |
array(),
|
59 |
TOOLSET_COMMON_VERSION
|
60 |
);
|
62 |
// ./backend.js
|
63 |
wp_enqueue_script(
|
64 |
'toolset-user-editors-ct-frontend-editor-script',
|
65 |
+
TOOLSET_COMMON_URL . '/user-editors/medium/screen/content-template/frontend-editor.js',
|
66 |
array( 'jquery' ),
|
67 |
TOOLSET_COMMON_VERSION,
|
68 |
true
|
175 |
}
|
176 |
|
177 |
if( isset( $_REQUEST['ct_id'] ) && isset( $_REQUEST['preview_post_id'] ) ) {
|
178 |
+
$this->store_preview_post_id( (int) $_REQUEST['ct_id'], (int) $_REQUEST['preview_post_id'] );
|
179 |
}
|
180 |
|
181 |
die( 1 );
|
library/toolset/toolset-common/user-editors/resource/views/dialog/dialog.php
CHANGED
@@ -88,7 +88,7 @@ class Toolset_User_Editors_Resource_Views_Dialog
|
|
88 |
|
89 |
wp_enqueue_style(
|
90 |
'toolset-user-editors-ressource-views-dialog',
|
91 |
-
TOOLSET_COMMON_URL . 'user-editors/resource/views/dialog/dialog.css',
|
92 |
array(),
|
93 |
TOOLSET_COMMON_VERSION
|
94 |
);
|
88 |
|
89 |
wp_enqueue_style(
|
90 |
'toolset-user-editors-ressource-views-dialog',
|
91 |
+
TOOLSET_COMMON_URL . '/user-editors/resource/views/dialog/dialog.css',
|
92 |
array(),
|
93 |
TOOLSET_COMMON_VERSION
|
94 |
);
|
library/toolset/toolset-common/user-editors/resource/views/dialog/for-any-input.php
CHANGED
@@ -43,14 +43,14 @@ class Toolset_User_Editors_Resource_Views_Dialog_For_Any_Input
|
|
43 |
public function _actionScriptsAndStyles() {
|
44 |
wp_enqueue_style(
|
45 |
'toolset-user-editors-ressource-views-dialog-for-any-input',
|
46 |
-
TOOLSET_COMMON_URL . 'user-editors/resource/views/dialog/for-any-input.css',
|
47 |
array(),
|
48 |
TOOLSET_COMMON_VERSION
|
49 |
);
|
50 |
|
51 |
wp_enqueue_script(
|
52 |
'toolset-user-editors-ressource-views-dialog-for-any-input',
|
53 |
-
TOOLSET_COMMON_URL . 'user-editors/resource/views/dialog/for-any-input.js',
|
54 |
array( 'jquery' ),
|
55 |
TOOLSET_COMMON_VERSION,
|
56 |
true
|
43 |
public function _actionScriptsAndStyles() {
|
44 |
wp_enqueue_style(
|
45 |
'toolset-user-editors-ressource-views-dialog-for-any-input',
|
46 |
+
TOOLSET_COMMON_URL . '/user-editors/resource/views/dialog/for-any-input.css',
|
47 |
array(),
|
48 |
TOOLSET_COMMON_VERSION
|
49 |
);
|
50 |
|
51 |
wp_enqueue_script(
|
52 |
'toolset-user-editors-ressource-views-dialog-for-any-input',
|
53 |
+
TOOLSET_COMMON_URL . '/user-editors/resource/views/dialog/for-any-input.js',
|
54 |
array( 'jquery' ),
|
55 |
TOOLSET_COMMON_VERSION,
|
56 |
true
|
library/toolset/toolset-common/utility/help-videos/toolset-help-videos.php
CHANGED
@@ -22,7 +22,7 @@ if( !class_exists('Toolset_HelpVideo') ) {
|
|
22 |
|
23 |
if (empty($arguments)) return;
|
24 |
|
25 |
-
self::$current = isset($_REQUEST[self::KEY]) ? $_REQUEST[self::KEY] : null;
|
26 |
|
27 |
if (self::$current === null) return;
|
28 |
|
22 |
|
23 |
if (empty($arguments)) return;
|
24 |
|
25 |
+
self::$current = isset($_REQUEST[self::KEY]) ? sanitize_text_field( $_REQUEST[self::KEY] ) : null;
|
26 |
|
27 |
if (self::$current === null) return;
|
28 |
|
library/toolset/types/admin.php
CHANGED
@@ -49,7 +49,7 @@ if ( defined( 'DOING_AJAX' ) ) {
|
|
49 |
// that post and user fields can use the same handler (which is originally meant for post fields only).
|
50 |
|
51 |
// We don't have functions.php at this point, can't use wpcf_getpost().
|
52 |
-
$current_page = isset( $_REQUEST['page'] ) ? $_REQUEST['page'] : Types_Admin_Edit_Custom_Fields_Group::PAGE_NAME;
|
53 |
if( in_array( $current_page, array( Types_Admin_Edit_Custom_Fields_Group::PAGE_NAME, 'wpcf-edit-usermeta' ) ) ) {
|
54 |
new Types_Admin_Edit_Custom_Fields_Group();
|
55 |
}
|
@@ -175,7 +175,7 @@ function wpcf_admin_toolset_register_menu_pages( $pages ) {
|
|
175 |
|
176 |
$current_page = '';
|
177 |
if ( isset( $_GET['page'] ) ) {
|
178 |
-
$current_page = $_GET['page'];
|
179 |
}
|
180 |
|
181 |
$pages['wpcf-cpt'] = array(
|
@@ -541,7 +541,7 @@ function wpcf_admin_menu_edit_fields()
|
|
541 |
$post_type = current_filter();
|
542 |
$title = __('View Post Field Group', 'wpcf');
|
543 |
if ( isset( $_GET['group_id'] ) ) {
|
544 |
-
if ( WPCF_Roles::user_can_edit('custom-field', array('id' => $_GET['group_id']))) {
|
545 |
$title = __( 'Edit Post Field Group', 'wpcf' );
|
546 |
$add_new = array(
|
547 |
'page' => 'wpcf-edit',
|
49 |
// that post and user fields can use the same handler (which is originally meant for post fields only).
|
50 |
|
51 |
// We don't have functions.php at this point, can't use wpcf_getpost().
|
52 |
+
$current_page = isset( $_REQUEST['page'] ) ? sanitize_text_field( $_REQUEST['page'] ) : Types_Admin_Edit_Custom_Fields_Group::PAGE_NAME;
|
53 |
if( in_array( $current_page, array( Types_Admin_Edit_Custom_Fields_Group::PAGE_NAME, 'wpcf-edit-usermeta' ) ) ) {
|
54 |
new Types_Admin_Edit_Custom_Fields_Group();
|
55 |
}
|
175 |
|
176 |
$current_page = '';
|
177 |
if ( isset( $_GET['page'] ) ) {
|
178 |
+
$current_page = sanitize_text_field( $_GET['page'] );
|
179 |
}
|
180 |
|
181 |
$pages['wpcf-cpt'] = array(
|
541 |
$post_type = current_filter();
|
542 |
$title = __('View Post Field Group', 'wpcf');
|
543 |
if ( isset( $_GET['group_id'] ) ) {
|
544 |
+
if ( WPCF_Roles::user_can_edit('custom-field', array('id' => (int) $_GET['group_id']))) {
|
545 |
$title = __( 'Edit Post Field Group', 'wpcf' );
|
546 |
$add_new = array(
|
547 |
'page' => 'wpcf-edit',
|
library/toolset/types/embedded/admin.php
CHANGED
@@ -754,7 +754,7 @@ function wpcf_admin_get_edited_post_type( $post = null ) {
|
|
754 |
$post_type = 'post';
|
755 |
} else if ( in_array( $_GET['post_type'],
|
756 |
get_post_types( array('show_ui' => true) ) ) ) {
|
757 |
-
$post_type = $_GET['post_type'];
|
758 |
} else {
|
759 |
$post_type = 'post';
|
760 |
}
|
754 |
$post_type = 'post';
|
755 |
} else if ( in_array( $_GET['post_type'],
|
756 |
get_post_types( array('show_ui' => true) ) ) ) {
|
757 |
+
$post_type = sanitize_text_field( $_GET['post_type'] );
|
758 |
} else {
|
759 |
$post_type = 'post';
|
760 |
}
|
library/toolset/types/embedded/classes/forms.php
CHANGED
@@ -1118,7 +1118,7 @@ class Enlimbo_Forms_Wpcf
|
|
1118 |
if ( $element['#type'] == 'file' ) {
|
1119 |
return $_FILES[$name]['tmp_name'];
|
1120 |
}
|
1121 |
-
return isset( $_REQUEST[$name] ) ? $_REQUEST[$name] : in_array( $element['#type'],
|
1122 |
array('textfield', 'textarea') ) ? '' : 0;
|
1123 |
}
|
1124 |
|
1118 |
if ( $element['#type'] == 'file' ) {
|
1119 |
return $_FILES[$name]['tmp_name'];
|
1120 |
}
|
1121 |
+
return isset( $_REQUEST[$name] ) ? sanitize_text_field( $_REQUEST[$name] ) : in_array( $element['#type'],
|
1122 |
array('textfield', 'textarea') ) ? '' : 0;
|
1123 |
}
|
1124 |
|
library/toolset/types/embedded/classes/gui/term_field_editing.php
CHANGED
@@ -390,8 +390,8 @@ final class WPCF_GUI_Term_Field_Editing {
|
|
390 |
*/
|
391 |
public function manage_term_listing_columns( $columns ) {
|
392 |
|
393 |
-
$taxonomy_slug = wpcf_getget( 'taxonomy' );
|
394 |
$factory = Types_Field_Group_Term_Factory::get_instance();
|
|
|
395 |
$groups = $factory->get_groups_by_taxonomy( $taxonomy_slug );
|
396 |
|
397 |
$columns_to_insert = array();
|
390 |
*/
|
391 |
public function manage_term_listing_columns( $columns ) {
|
392 |
|
|
|
393 |
$factory = Types_Field_Group_Term_Factory::get_instance();
|
394 |
+
$taxonomy_slug = sanitize_text_field( wpcf_getget( 'taxonomy' ) );
|
395 |
$groups = $factory->get_groups_by_taxonomy( $taxonomy_slug );
|
396 |
|
397 |
$columns_to_insert = array();
|
library/toolset/types/embedded/includes/ajax.php
CHANGED
@@ -344,7 +344,7 @@ function wpcf_ajax_embedded() {
|
|
344 |
case 'um_repetitive_add':
|
345 |
|
346 |
if ( isset( $_GET['user_id'] ) ) {
|
347 |
-
$user_id = $_GET['user_id'];
|
348 |
} else {
|
349 |
$user_id = wpcf_usermeta_get_user();
|
350 |
}
|
@@ -494,7 +494,7 @@ function wpcf_ajax_embedded() {
|
|
494 |
$args = array(
|
495 |
'posts_per_page' => apply_filters( 'wpcf_pr_belongs_post_posts_per_page', $posts_per_page ),
|
496 |
'post_status' => apply_filters( 'wpcf_pr_belongs_post_status', array( 'publish', 'private' ) ),
|
497 |
-
'post_type' => $_REQUEST['post_type'],
|
498 |
'suppress_filters' => 1,
|
499 |
);
|
500 |
|
@@ -544,7 +544,7 @@ function wpcf_ajax_embedded() {
|
|
544 |
|
545 |
case 'wpcf_entry_entry':
|
546 |
if( current_user_can( 'edit_posts' ) && isset($_REQUEST['p'])) {
|
547 |
-
$wpcf_post = get_post($_REQUEST['p'], ARRAY_A);
|
548 |
if ( isset($wpcf_post['ID']) ) {
|
549 |
$post_title = $wpcf_post['post_title'];
|
550 |
if ( empty($post_title) ) {
|
344 |
case 'um_repetitive_add':
|
345 |
|
346 |
if ( isset( $_GET['user_id'] ) ) {
|
347 |
+
$user_id = (int) $_GET['user_id'];
|
348 |
} else {
|
349 |
$user_id = wpcf_usermeta_get_user();
|
350 |
}
|
494 |
$args = array(
|
495 |
'posts_per_page' => apply_filters( 'wpcf_pr_belongs_post_posts_per_page', $posts_per_page ),
|
496 |
'post_status' => apply_filters( 'wpcf_pr_belongs_post_status', array( 'publish', 'private' ) ),
|
497 |
+
'post_type' => sanitize_text_field( $_REQUEST['post_type'] ),
|
498 |
'suppress_filters' => 1,
|
499 |
);
|
500 |
|
544 |
|
545 |
case 'wpcf_entry_entry':
|
546 |
if( current_user_can( 'edit_posts' ) && isset($_REQUEST['p'])) {
|
547 |
+
$wpcf_post = get_post( (int) $_REQUEST['p'], ARRAY_A );
|
548 |
if ( isset($wpcf_post['ID']) ) {
|
549 |
$post_title = $wpcf_post['post_title'];
|
550 |
if ( empty($post_title) ) {
|
library/toolset/types/embedded/includes/fields-post.php
CHANGED
@@ -1586,7 +1586,7 @@ function wpcf_admin_post_get_post_groups_fields( $post = false, $context = 'grou
|
|
1586 |
if ( !isset( $_GET['post_type'] ) ) {
|
1587 |
$post_type = 'post';
|
1588 |
} else if ( in_array( $_GET['post_type'], get_post_types( array('show_ui' => true) ) ) ) {
|
1589 |
-
$post_type = $_GET['post_type'];
|
1590 |
} else {
|
1591 |
$post_type = 'post';
|
1592 |
}
|
1586 |
if ( !isset( $_GET['post_type'] ) ) {
|
1587 |
$post_type = 'post';
|
1588 |
} else if ( in_array( $_GET['post_type'], get_post_types( array('show_ui' => true) ) ) ) {
|
1589 |
+
$post_type = sanitize_text_field( $_GET['post_type'] );
|
1590 |
} else {
|
1591 |
$post_type = 'post';
|
1592 |
}
|
library/toolset/types/embedded/includes/fields.php
CHANGED
@@ -940,7 +940,7 @@ function wpcf_get_all_field_slugs_except_current_group( $current_group = false )
|
|
940 |
}
|
941 |
}
|
942 |
if( !$current_group && isset( $_REQUEST['group_id'] ) )
|
943 |
-
$current_group = $_REQUEST['group_id'];
|
944 |
|
945 |
// if no new group
|
946 |
if( $current_group && !empty( $all_fields ) ) {
|
940 |
}
|
941 |
}
|
942 |
if( !$current_group && isset( $_REQUEST['group_id'] ) )
|
943 |
+
$current_group = (int) $_REQUEST['group_id'];
|
944 |
|
945 |
// if no new group
|
946 |
if( $current_group && !empty( $all_fields ) ) {
|
library/toolset/types/embedded/includes/module-manager.php
CHANGED
@@ -27,7 +27,7 @@ function wpcf_module_inline_table_fields()
|
|
27 |
_e('There is a problem with Module Manager', 'wpcf');
|
28 |
return;
|
29 |
}
|
30 |
-
$group = wpcf_admin_fields_get_group($_GET['group_id']);
|
31 |
if ( empty($group) ) {
|
32 |
_e('Wrong group id.', 'wpcf');
|
33 |
return;
|
27 |
_e('There is a problem with Module Manager', 'wpcf');
|
28 |
return;
|
29 |
}
|
30 |
+
$group = wpcf_admin_fields_get_group( (int) $_GET['group_id'] );
|
31 |
if ( empty($group) ) {
|
32 |
_e('Wrong group id.', 'wpcf');
|
33 |
return;
|
library/toolset/types/embedded/includes/post-relationship.php
CHANGED
@@ -629,7 +629,7 @@ function wpcf_pr_admin_wpcf_relationship_check($keys_to_check = array())
|
|
629 |
die(__('Sorry, something went wrong. The requested can not be completed.', 'wpcf'));
|
630 |
}
|
631 |
}
|
632 |
-
$id = esc_attr(sprintf('wpcf_pr_belongs_%d_%s', $_REQUEST['post_id'], $_REQUEST['post_type']));
|
633 |
if ( !wp_verify_nonce($_REQUEST['nounce'], $id) ) {
|
634 |
die(__('Sorry, something went wrong. The requested can not be completed.', 'wpcf'));
|
635 |
}
|
@@ -712,7 +712,7 @@ function wpcf_pr_admin_wpcf_relationship_search()
|
|
712 |
function wpcf_pr_admin_wpcf_relationship_entry()
|
713 |
{
|
714 |
wpcf_pr_admin_wpcf_relationship_check(array('p'));
|
715 |
-
$wpcf_post = get_post($_REQUEST['p'], ARRAY_A);
|
716 |
/**
|
717 |
* remove unnecessary data and add some necessary
|
718 |
*/
|
@@ -732,10 +732,10 @@ function wpcf_pr_admin_wpcf_relationship_entry()
|
|
732 |
function wpcf_pr_admin_wpcf_relationship_delete()
|
733 |
{
|
734 |
wpcf_pr_admin_wpcf_relationship_check();
|
735 |
-
delete_post_meta( $_REQUEST['post_id'], sprintf('_wpcf_belongs_%s_id', $_REQUEST['post_type']));
|
736 |
echo json_encode(
|
737 |
array(
|
738 |
-
'target' => sprintf('#wpcf_pr_belongs_%d_%s-wrapper', $_REQUEST['post_id'], $_REQUEST['post_type']),
|
739 |
)
|
740 |
);
|
741 |
die;
|
@@ -745,7 +745,7 @@ function wpcf_pr_admin_wpcf_relationship_delete()
|
|
745 |
function wpcf_pr_admin_wpcf_relationship_save()
|
746 |
{
|
747 |
wpcf_pr_admin_wpcf_relationship_check(array('p'));
|
748 |
-
update_post_meta( $_REQUEST['post_id'], sprintf('_wpcf_belongs_%s_id', $_REQUEST['post_type']), intval($_REQUEST['p']));
|
749 |
die;
|
750 |
}
|
751 |
|
629 |
die(__('Sorry, something went wrong. The requested can not be completed.', 'wpcf'));
|
630 |
}
|
631 |
}
|
632 |
+
$id = esc_attr(sprintf('wpcf_pr_belongs_%d_%s', (int) $_REQUEST['post_id'], sanitize_text_field( $_REQUEST['post_type'] )));
|
633 |
if ( !wp_verify_nonce($_REQUEST['nounce'], $id) ) {
|
634 |
die(__('Sorry, something went wrong. The requested can not be completed.', 'wpcf'));
|
635 |
}
|
712 |
function wpcf_pr_admin_wpcf_relationship_entry()
|
713 |
{
|
714 |
wpcf_pr_admin_wpcf_relationship_check(array('p'));
|
715 |
+
$wpcf_post = get_post( (int) $_REQUEST['p'], ARRAY_A);
|
716 |
/**
|
717 |
* remove unnecessary data and add some necessary
|
718 |
*/
|
732 |
function wpcf_pr_admin_wpcf_relationship_delete()
|
733 |
{
|
734 |
wpcf_pr_admin_wpcf_relationship_check();
|
735 |
+
delete_post_meta( (int) $_REQUEST['post_id'], sprintf('_wpcf_belongs_%s_id', sanitize_text_field( $_REQUEST['post_type'] )));
|
736 |
echo json_encode(
|
737 |
array(
|
738 |
+
'target' => sprintf('#wpcf_pr_belongs_%d_%s-wrapper', (int) $_REQUEST['post_id'], sanitize_text_field( $_REQUEST['post_type'] )),
|
739 |
)
|
740 |
);
|
741 |
die;
|
745 |
function wpcf_pr_admin_wpcf_relationship_save()
|
746 |
{
|
747 |
wpcf_pr_admin_wpcf_relationship_check(array('p'));
|
748 |
+
update_post_meta( (int) $_REQUEST['post_id'], sprintf('_wpcf_belongs_%s_id', sanitize_text_field( $_REQUEST['post_type'] )), intval($_REQUEST['p']));
|
749 |
die;
|
750 |
}
|
751 |
|
library/toolset/types/embedded/usermeta-init.php
CHANGED
@@ -111,7 +111,7 @@ function wpcf_admin_menu_edit_user_fields()
|
|
111 |
$post_type = current_filter();
|
112 |
$title = __('View User Field Group', 'wpcf');
|
113 |
if ( isset( $_GET['group_id'] ) ) {
|
114 |
-
$item = wpcf_admin_get_user_field_group_by_id($_GET['group_id']);
|
115 |
if ( WPCF_Roles::user_can_edit('user-meta-field', $item) ) {
|
116 |
$title = __( 'Edit User Field Group', 'wpcf' );
|
117 |
$add_new = array(
|
@@ -238,7 +238,7 @@ if ( !isset( $_GET['post_type'] ) && isset( $_GET['post'] ) ) {
|
|
238 |
isset( $_GET['post_type'] )
|
239 |
&& in_array( $_GET['post_type'], get_post_types( array('show_ui' => true) ) )
|
240 |
) {
|
241 |
-
$post_type = $_GET['post_type'];
|
242 |
}
|
243 |
|
244 |
/*
|
111 |
$post_type = current_filter();
|
112 |
$title = __('View User Field Group', 'wpcf');
|
113 |
if ( isset( $_GET['group_id'] ) ) {
|
114 |
+
$item = wpcf_admin_get_user_field_group_by_id( (int) $_GET['group_id'] );
|
115 |
if ( WPCF_Roles::user_can_edit('user-meta-field', $item) ) {
|
116 |
$title = __( 'Edit User Field Group', 'wpcf' );
|
117 |
$add_new = array(
|
238 |
isset( $_GET['post_type'] )
|
239 |
&& in_array( $_GET['post_type'], get_post_types( array('show_ui' => true) ) )
|
240 |
) {
|
241 |
+
$post_type = sanitize_text_field( $_GET['post_type'] );
|
242 |
}
|
243 |
|
244 |
/*
|
library/toolset/types/help.php
CHANGED
@@ -358,7 +358,7 @@ function wpcf_admin_help_add_tabs_load_hook() {
|
|
358 |
|
359 |
$current_page = '';
|
360 |
if ( isset( $_GET['page'] ) ) {
|
361 |
-
$current_page = $_GET['page'];
|
362 |
} else {
|
363 |
return;
|
364 |
}
|
358 |
|
359 |
$current_page = '';
|
360 |
if ( isset( $_GET['page'] ) ) {
|
361 |
+
$current_page = sanitize_text_field( $_GET['page'] );
|
362 |
} else {
|
363 |
return;
|
364 |
}
|
library/toolset/types/includes/classes/class.types.admin.edit.fields.php
CHANGED
@@ -599,7 +599,7 @@ abstract class Types_Admin_Edit_Fields extends Types_Admin_Page
|
|
599 |
'data-wpcf-nonce' => wp_create_nonce('wpcf-edit-'.$this->ct['id']),
|
600 |
// This can be wpcf-postmeta, wpcf-usermeta or wpcf-termmeta.
|
601 |
'data-wpcf-type' => $this->type,
|
602 |
-
'data-wpcf-page' => wpcf_getget( 'page' )
|
603 |
),
|
604 |
'_builtin' => true,
|
605 |
'#name' => 'fields-button-add',
|
599 |
'data-wpcf-nonce' => wp_create_nonce('wpcf-edit-'.$this->ct['id']),
|
600 |
// This can be wpcf-postmeta, wpcf-usermeta or wpcf-termmeta.
|
601 |
'data-wpcf-type' => $this->type,
|
602 |
+
'data-wpcf-page' => esc_attr( wpcf_getget( 'page' ) )
|
603 |
),
|
604 |
'_builtin' => true,
|
605 |
'#name' => 'fields-button-add',
|
library/toolset/types/includes/classes/class.types.admin.edit.post.type.php
CHANGED
@@ -1115,7 +1115,7 @@ class Types_Admin_Edit_Post_Type extends Types_Admin_Page
|
|
1115 |
|| $_GET['wpcf-post-type'] == 'page'
|
1116 |
|| $_GET['wpcf-post-type'] == 'attachment'
|
1117 |
) {
|
1118 |
-
$data['slug'] = $_GET['wpcf-post-type'];
|
1119 |
} else {
|
1120 |
$data['slug'] = null;
|
1121 |
}
|
@@ -2024,7 +2024,8 @@ class Types_Admin_Edit_Post_Type extends Types_Admin_Page
|
|
2024 |
// get current post type
|
2025 |
require_once WPCF_INC_ABSPATH.'/classes/class.types.admin.post-type.php';
|
2026 |
$wpcf_post_type = new Types_Admin_Post_Type();
|
2027 |
-
|
|
|
2028 |
if ( isset($custom_post_type['slug']) ) {
|
2029 |
return $custom_post_type['slug'];
|
2030 |
}
|
1115 |
|| $_GET['wpcf-post-type'] == 'page'
|
1116 |
|| $_GET['wpcf-post-type'] == 'attachment'
|
1117 |
) {
|
1118 |
+
$data['slug'] = sanitize_text_field( $_GET['wpcf-post-type'] );
|
1119 |
} else {
|
1120 |
$data['slug'] = null;
|
1121 |
}
|
2024 |
// get current post type
|
2025 |
require_once WPCF_INC_ABSPATH.'/classes/class.types.admin.post-type.php';
|
2026 |
$wpcf_post_type = new Types_Admin_Post_Type();
|
2027 |
+
$get_post_type_slug_from_request = sanitize_text_field( $_GET['wpcf-post-type'] );
|
2028 |
+
$custom_post_type = $wpcf_post_type->get_post_type($get_post_type_slug_from_request);
|
2029 |
if ( isset($custom_post_type['slug']) ) {
|
2030 |
return $custom_post_type['slug'];
|
2031 |
}
|
library/toolset/types/includes/classes/class.types.admin.page.php
CHANGED
@@ -262,13 +262,13 @@ abstract class Types_Admin_Page
|
|
262 |
);
|
263 |
|
264 |
if( isset( $_GET['group_id'] ) ) {
|
265 |
-
$args['group_id'] = $_GET['group_id'];
|
266 |
-
$args['wpcf_ajax_update'] = 'wpcf_list_ajax_response_'
|
267 |
-
$delete_id_addition = $_GET['group_id'];
|
268 |
} else if( isset( $_GET['wpcf-tax'] ) ) {
|
269 |
-
$args['wpcf-tax'] = $_GET['wpcf-tax'];
|
270 |
-
$args['wpcf_ajax_update'] = 'wpcf_list_ajax_response_'
|
271 |
-
$delete_id_addition = $_GET['wpcf-tax'];
|
272 |
}
|
273 |
|
274 |
$args['wpcf_ref'] = isset( $_GET['ref'] )
|
@@ -480,7 +480,7 @@ abstract class Types_Admin_Page
|
|
480 |
'#attributes' => array(
|
481 |
'class' => 'js-wpcf-filter-button-edit wpcf-filter-button-edit',
|
482 |
'data-wpcf-type' => esc_attr($type),
|
483 |
-
'data-wpcf-page' => wpcf_getget( 'page' ),
|
484 |
'data-wpcf-nonce' => wp_create_nonce($type),
|
485 |
),
|
486 |
'#inline' => true,
|
@@ -676,7 +676,7 @@ abstract class Types_Admin_Page
|
|
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 = $_REQUEST[$request_name];
|
680 |
}
|
681 |
}
|
682 |
return $post_type;
|
262 |
);
|
263 |
|
264 |
if( isset( $_GET['group_id'] ) ) {
|
265 |
+
$args['group_id'] = sanitize_text_field( $_GET['group_id'] );
|
266 |
+
$args['wpcf_ajax_update'] = 'wpcf_list_ajax_response_'.sanitize_text_field( $_GET['group_id'] );
|
267 |
+
$delete_id_addition = sanitize_text_field( $_GET['group_id'] );
|
268 |
} else if( isset( $_GET['wpcf-tax'] ) ) {
|
269 |
+
$args['wpcf-tax'] = sanitize_text_field( $_GET['wpcf-tax'] );
|
270 |
+
$args['wpcf_ajax_update'] = 'wpcf_list_ajax_response_'.sanitize_text_field( $_GET['wpcf-tax'] );
|
271 |
+
$delete_id_addition = sanitize_text_field( $_GET['wpcf-tax'] );
|
272 |
}
|
273 |
|
274 |
$args['wpcf_ref'] = isset( $_GET['ref'] )
|
480 |
'#attributes' => array(
|
481 |
'class' => 'js-wpcf-filter-button-edit wpcf-filter-button-edit',
|
482 |
'data-wpcf-type' => esc_attr($type),
|
483 |
+
'data-wpcf-page' => esc_attr( wpcf_getget( 'page' ) ),
|
484 |
'data-wpcf-nonce' => wp_create_nonce($type),
|
485 |
),
|
486 |
'#inline' => true,
|
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 |
}
|
681 |
}
|
682 |
return $post_type;
|
library/toolset/types/includes/classes/class.types.admin.post.types.list.table.php
CHANGED
@@ -316,7 +316,7 @@ class Types_Admin_Post_Types_List_Table extends WP_List_Table
|
|
316 |
if (!empty($action)) {
|
317 |
$nonce = '';
|
318 |
if ( isset($_REQUEST['_wpnonce'] ) ) {
|
319 |
-
$nonce = $_REQUEST['_wpnonce'];
|
320 |
}
|
321 |
if ( ! wp_verify_nonce( $nonce, 'bulk-posttypes' ) ) {
|
322 |
die( 'Security check' );
|
316 |
if (!empty($action)) {
|
317 |
$nonce = '';
|
318 |
if ( isset($_REQUEST['_wpnonce'] ) ) {
|
319 |
+
$nonce = sanitize_text_field( $_REQUEST['_wpnonce'] );
|
320 |
}
|
321 |
if ( ! wp_verify_nonce( $nonce, 'bulk-posttypes' ) ) {
|
322 |
die( 'Security check' );
|
library/toolset/types/includes/classes/class.types.admin.usermeta.groups.list.table.php
CHANGED
@@ -296,7 +296,7 @@ class Types_Admin_Usermeta_Groups_List_Table extends WP_List_Table
|
|
296 |
if (!empty($action)) {
|
297 |
$nonce = '';
|
298 |
if ( isset($_REQUEST['_wpnonce'] ) ) {
|
299 |
-
$nonce = $_REQUEST['_wpnonce'];
|
300 |
}
|
301 |
if ( !wp_verify_nonce($nonce, 'bulk-userfieldgroups')) {
|
302 |
die( 'Security check' );
|
296 |
if (!empty($action)) {
|
297 |
$nonce = '';
|
298 |
if ( isset($_REQUEST['_wpnonce'] ) ) {
|
299 |
+
$nonce = sanitize_text_field( $_REQUEST['_wpnonce'] );
|
300 |
}
|
301 |
if ( !wp_verify_nonce($nonce, 'bulk-userfieldgroups')) {
|
302 |
die( 'Security check' );
|
library/toolset/types/includes/classes/class.types.admin.usermeta.table.php
CHANGED
@@ -153,8 +153,8 @@ class Types_Admin_Usermeta_Control_Table extends WP_List_Table
|
|
153 |
}
|
154 |
|
155 |
// Order
|
156 |
-
$orderby = isset($_REQUEST['orderby']) && !empty($_REQUEST['orderby'])? $_REQUEST['orderby']:'c';
|
157 |
-
$order = isset($_REQUEST['order']) && !empty($_REQUEST['order'])? $_REQUEST['order']:'asc';
|
158 |
$sort_matches = array(
|
159 |
'c' => 'name',
|
160 |
'g' => 'groups_txt',
|
153 |
}
|
154 |
|
155 |
// Order
|
156 |
+
$orderby = isset($_REQUEST['orderby']) && !empty($_REQUEST['orderby'])? sanitize_text_field( $_REQUEST['orderby'] ):'c';
|
157 |
+
$order = isset($_REQUEST['order']) && !empty($_REQUEST['order'])? sanitize_text_field( $_REQUEST['order'] ):'asc';
|
158 |
$sort_matches = array(
|
159 |
'c' => 'name',
|
160 |
'g' => 'groups_txt',
|
library/toolset/types/includes/classes/class.wpcf.custom.fields.list.table.php
CHANGED
@@ -327,7 +327,7 @@ class WPCF_Custom_Fields_List_Table extends WP_List_Table
|
|
327 |
if (!empty($action)) {
|
328 |
$nonce = '';
|
329 |
if ( isset($_REQUEST['_wpnonce'] ) ) {
|
330 |
-
$nonce = $_REQUEST['_wpnonce'];
|
331 |
}
|
332 |
if ( !wp_verify_nonce($nonce, 'bulk-customfieldgroups')) {
|
333 |
die( 'Security check' );
|
327 |
if (!empty($action)) {
|
328 |
$nonce = '';
|
329 |
if ( isset($_REQUEST['_wpnonce'] ) ) {
|
330 |
+
$nonce = sanitize_text_field( $_REQUEST['_wpnonce'] );
|
331 |
}
|
332 |
if ( !wp_verify_nonce($nonce, 'bulk-customfieldgroups')) {
|
333 |
die( 'Security check' );
|
library/toolset/types/includes/classes/page/edit/termmeta_form.php
CHANGED
@@ -64,7 +64,7 @@ final class WPCF_Page_Edit_Termmeta_Form extends Types_Admin_Edit_Fields {
|
|
64 |
public function get_page_purpose() {
|
65 |
|
66 |
$role_type = 'term-field';
|
67 |
-
$group_id =
|
68 |
$is_group_specified = ( 0 != $group_id );
|
69 |
|
70 |
if( $is_group_specified ) {
|
@@ -457,7 +457,7 @@ final class WPCF_Page_Edit_Termmeta_Form extends Types_Admin_Edit_Fields {
|
|
457 |
$this->verification_failed_and_die( 2 );
|
458 |
}
|
459 |
|
460 |
-
// save group data to the database
|
461 |
$group_id = wpcf_admin_fields_save_group( wpcf_getarr( $wpcf_data, 'group', array() ), Types_Field_Group_Term::POST_TYPE, 'term' );
|
462 |
$field_group = $this->load_field_group( $group_id );
|
463 |
|
@@ -468,7 +468,7 @@ final class WPCF_Page_Edit_Termmeta_Form extends Types_Admin_Edit_Fields {
|
|
468 |
// Why are we doing this?!
|
469 |
$_REQUEST[ $this->get_id ] = $group_id;
|
470 |
|
471 |
-
// save taxonomies
|
472 |
$taxonomies_post = wpcf_getnest( $wpcf_data, array( 'group', 'taxonomies' ), array() );
|
473 |
$field_group->update_associated_taxonomies( $taxonomies_post );
|
474 |
|
@@ -536,7 +536,7 @@ final class WPCF_Page_Edit_Termmeta_Form extends Types_Admin_Edit_Fields {
|
|
536 |
}
|
537 |
}
|
538 |
|
539 |
-
$field['submit-key'] = $field_key;
|
540 |
|
541 |
// Field ID and slug are same thing
|
542 |
$field_slug = wpcf_admin_fields_save_field(
|
64 |
public function get_page_purpose() {
|
65 |
|
66 |
$role_type = 'term-field';
|
67 |
+
$group_id = (int) wpcf_getget( 'group_id' );
|
68 |
$is_group_specified = ( 0 != $group_id );
|
69 |
|
70 |
if( $is_group_specified ) {
|
457 |
$this->verification_failed_and_die( 2 );
|
458 |
}
|
459 |
|
460 |
+
// save group data to the database (sanitizing there)
|
461 |
$group_id = wpcf_admin_fields_save_group( wpcf_getarr( $wpcf_data, 'group', array() ), Types_Field_Group_Term::POST_TYPE, 'term' );
|
462 |
$field_group = $this->load_field_group( $group_id );
|
463 |
|
468 |
// Why are we doing this?!
|
469 |
$_REQUEST[ $this->get_id ] = $group_id;
|
470 |
|
471 |
+
// save taxonomies; sanitized on a lower level before saving to the database
|
472 |
$taxonomies_post = wpcf_getnest( $wpcf_data, array( 'group', 'taxonomies' ), array() );
|
473 |
$field_group->update_associated_taxonomies( $taxonomies_post );
|
474 |
|
536 |
}
|
537 |
}
|
538 |
|
539 |
+
$field['submit-key'] = sanitize_text_field( $field_key );
|
540 |
|
541 |
// Field ID and slug are same thing
|
542 |
$field_slug = wpcf_admin_fields_save_field(
|
library/toolset/types/includes/classes/page/listing/table.php
CHANGED
@@ -1048,7 +1048,7 @@ class WPCF_Page_Listing_Table {
|
|
1048 |
$current_url = remove_query_arg( 'paged', $current_url );
|
1049 |
|
1050 |
if ( isset( $_GET['orderby'] ) ) {
|
1051 |
-
$current_orderby = $_GET['orderby'];
|
1052 |
} else {
|
1053 |
$current_orderby = '';
|
1054 |
}
|
1048 |
$current_url = remove_query_arg( 'paged', $current_url );
|
1049 |
|
1050 |
if ( isset( $_GET['orderby'] ) ) {
|
1051 |
+
$current_orderby = sanitize_text_field( $_GET['orderby'] );
|
1052 |
} else {
|
1053 |
$current_orderby = '';
|
1054 |
}
|
library/toolset/types/includes/classes/page/listing/termmeta_table.php
CHANGED
@@ -282,6 +282,8 @@ class WPCF_Page_Listing_Termmeta_Table extends WPCF_Page_Listing_Table {
|
|
282 |
|
283 |
foreach ( $selected_field_group_ids as $field_group_id ) {
|
284 |
|
|
|
|
|
285 |
if ( ! WPCF_Roles::user_can_edit( 'term-field', array( 'id' => $field_group_id ) ) ) {
|
286 |
continue;
|
287 |
}
|
282 |
|
283 |
foreach ( $selected_field_group_ids as $field_group_id ) {
|
284 |
|
285 |
+
$field_group_id = (int) $field_group_id;
|
286 |
+
|
287 |
if ( ! WPCF_Roles::user_can_edit( 'term-field', array( 'id' => $field_group_id ) ) ) {
|
288 |
continue;
|
289 |
}
|
library/toolset/types/wpcf.php
CHANGED
@@ -143,12 +143,12 @@ function ajax_wpcf_is_reserved_name() {
|
|
143 |
|
144 |
// slug
|
145 |
$name = isset( $_POST['slug'] )
|
146 |
-
? $_POST['slug']
|
147 |
: '';
|
148 |
|
149 |
// context
|
150 |
$context = isset( $_POST['context'] )
|
151 |
-
? $_POST['context']
|
152 |
: false;
|
153 |
|
154 |
// check also page slugs
|
@@ -162,11 +162,11 @@ function ajax_wpcf_is_reserved_name() {
|
|
162 |
|
163 |
// for taxonomy
|
164 |
if( $context == 'taxonomy' )
|
165 |
-
$_POST['ct']['wpcf-tax'] = $_POST['slugPreSave'];
|
166 |
|
167 |
// for post_type
|
168 |
if( $context == 'post_type' )
|
169 |
-
$_POST['ct']['wpcf-post-type'] = $_POST['slugPreSave'];
|
170 |
}
|
171 |
|
172 |
if( $context == 'post_type' || $context == 'taxonomy' ) {
|
@@ -590,7 +590,7 @@ function types_ajax_notice_dismiss_permanent() {
|
|
590 |
? get_user_meta( get_current_user_id(), '_types_notice_dismiss_permanent', true )
|
591 |
: array();
|
592 |
|
593 |
-
$user_dismissed_notices[] = $_POST['types_notice_dismiss_permanent'];
|
594 |
update_user_meta( get_current_user_id(), '_types_notice_dismiss_permanent', $user_dismissed_notices );
|
595 |
}
|
596 |
|
143 |
|
144 |
// slug
|
145 |
$name = isset( $_POST['slug'] )
|
146 |
+
? sanitize_text_field( $_POST['slug'] )
|
147 |
: '';
|
148 |
|
149 |
// context
|
150 |
$context = isset( $_POST['context'] )
|
151 |
+
? sanitize_text_field( $_POST['context'] )
|
152 |
: false;
|
153 |
|
154 |
// check also page slugs
|
162 |
|
163 |
// for taxonomy
|
164 |
if( $context == 'taxonomy' )
|
165 |
+
$_POST['ct']['wpcf-tax'] = sanitize_text_field( $_POST['slugPreSave'] );
|
166 |
|
167 |
// for post_type
|
168 |
if( $context == 'post_type' )
|
169 |
+
$_POST['ct']['wpcf-post-type'] = sanitize_text_field( $_POST['slugPreSave'] );
|
170 |
}
|
171 |
|
172 |
if( $context == 'post_type' || $context == 'taxonomy' ) {
|
590 |
? get_user_meta( get_current_user_id(), '_types_notice_dismiss_permanent', true )
|
591 |
: array();
|
592 |
|
593 |
+
$user_dismissed_notices[] = sanitize_text_field( $_POST['types_notice_dismiss_permanent'] );
|
594 |
update_user_meta( get_current_user_id(), '_types_notice_dismiss_permanent', $user_dismissed_notices );
|
595 |
}
|
596 |
|
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.6
|
10 |
-
Stable tag: 2.2.
|
11 |
|
12 |
The complete and reliable plugin for managing custom post types, custom taxonomies and custom fields.
|
13 |
|
@@ -151,6 +151,9 @@ Additionally, Types is the only plugin that lets you define parent/child relatio
|
|
151 |
|
152 |
== Changelog ==
|
153 |
|
|
|
|
|
|
|
154 |
= 2.2.2 =
|
155 |
|
156 |
* Toolset Dashboard now supports custom post types created by theme or other plugins
|
7 |
License: GPLv2
|
8 |
Requires at least: 3.7
|
9 |
Tested up to: 4.6
|
10 |
+
Stable tag: 2.2.3
|
11 |
|
12 |
The complete and reliable plugin for managing custom post types, custom taxonomies and custom fields.
|
13 |
|
151 |
|
152 |
== Changelog ==
|
153 |
|
154 |
+
= 2.2.3 =
|
155 |
+
* Fixed several security issues.
|
156 |
+
|
157 |
= 2.2.2 =
|
158 |
|
159 |
* Toolset Dashboard now supports custom post types created by theme or other plugins
|
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.
|
9 |
License: GPLv2 or later
|
10 |
|
11 |
Types is free software: you can redistribute it and/or modify
|
@@ -28,7 +28,7 @@ if( !function_exists( 'add_action' ) )
|
|
28 |
|
29 |
// version
|
30 |
if( ! defined( 'TYPES_VERSION' ) )
|
31 |
-
define( 'TYPES_VERSION', '2.2.
|
32 |
|
33 |
// backward compatibility
|
34 |
if ( ! defined( 'WPCF_VERSION' ) )
|
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.3
|
9 |
License: GPLv2 or later
|
10 |
|
11 |
Types is free software: you can redistribute it and/or modify
|
28 |
|
29 |
// version
|
30 |
if( ! defined( 'TYPES_VERSION' ) )
|
31 |
+
define( 'TYPES_VERSION', '2.2.3' );
|
32 |
|
33 |
// backward compatibility
|
34 |
if ( ! defined( 'WPCF_VERSION' ) )
|