/** * Conditional display form. * * @param type $data * @param type $group * @return type */ function wpcf_cd_admin_form_filter($data, $group = false) { if ($group) { $name = 'wpcf[group][conditional_display]'; } else { $name = 'wpcf[fields][' . $data['id'] . '][conditional_display]'; } $form = array(); if (!$group) { $form['cd'] = array('#type' => 'fieldset', '#title' => __('Conditional display', 'wpcf'), '#collapsed' => true, '#id' => $data['id'] . '_conditional_display', '#attributes' => array('class' => 'wpcf-cd-fieldset')); } else { $form['cd']['wrap'] = array('#type' => 'markup', '#markup' => '<strong>' . __('Data-dependent display filters', 'wpcf') . '</strong><br />' . __("Specify additional filters that control this group's display, based on values of custom fields.", 'wpcf') . '<br /><a class="button-secondary" onclick="jQuery(this).css(\'visibility\',\'hidden\').next().slideToggle();" style="line-height: 30px;" href="javascript:void(0);">' . __('Edit', 'wpcf') . '</a><div id="wpcf-cd-group" style="display:none;">'); } if (!empty($data['data']['conditional_display']['conditions'])) { $conditions = $data['data']['conditional_display']['conditions']; $count = count($conditions); } else { $count = 1; } $add = $group ? 'true' : 'false'; $form['cd']['add'] = array('#type' => 'markup', '#markup' => '<br /><a class="wpcf-ajax-link button-secondary" onclick="wpcfCdAddCondition(jQuery(this),' . $add . ');" href="javascript:void(0);">' . __('Add condition', 'wpcf') . '</a><br /><br /><div class="wpcf-cd-entries">'); if (!empty($data['data']['conditional_display']['conditions'])) { foreach ($data['data']['conditional_display']['conditions'] as $key => $condition) { $form['cd'] += wpcf_cd_admin_form_single_filter($data, $condition, $key, $group); } } $form['cd']['add_close'] = array('#type' => 'markup', '#markup' => '</div>'); $form['cd']['relation'] = array('#type' => 'radios', '#name' => $name . '[relation]', '#options' => array('AND' => array('#title' => 'AND', '#attributes' => array('onclick' => 'wpcfCdCreateSummary(\'' . md5($data['id']) . '_cd_summary\')'), '#inline' => true, '#value' => 'AND', '#after' => '<br />'), 'OR' => array('#title' => 'OR', '#attributes' => array('onclick' => 'wpcfCdCreateSummary(\'' . md5($data['id']) . '_cd_summary\')'), '#inline' => true, '#value' => 'OR')), '#default_value' => isset($data['data']['conditional_display']['relation']) ? $data['data']['conditional_display']['relation'] : 'AND', '#inline' => true, '#before' => '<br /><div class="wpcf-cd-relation" style="display:none;">', '#after' => '</div><br />'); $form['cd']['toggle_open'] = array('#type' => 'markup', '#markup' => '<div class="toggle-cd" style="display:none;">'); $prepopulate = !empty($data['data']['conditional_display']['custom']) ? ' jQuery(\'#' . md5($data['id']) . '_cd_summary\').val();' : ' wpcfCdCreateSummary(\'' . md5($data['id']) . '_cd_summary\');'; $form['cd']['customize_display_logic_link'] = array('#type' => 'markup', '#markup' => '<a href="javascript:void(0);" class="button-secondary wpcf-cd-enable-custom-mode" onclick="window.wpcfCdState_' . md5($data['id']) . ' = jQuery(\'#' . md5($data['id']) . '_cd_summary\').val();' . $prepopulate . ' jQuery(\'#' . md5($data['id']) . '_cd_summary\').parent().slideDown(); jQuery(this).hide().next().show();wpcfCdCheckDateCustomized(jQuery(this));">' . __('Customize the display logic', 'wpcf') . '</a>'); $form['cd']['revert_display_logic_link'] = array('#type' => 'markup', '#markup' => '<a href="javascript:void(0);" class="button-secondary wpcf-cd-enable-custom-mode hidden" onclick="jQuery(\'#' . md5($data['id']) . '_cd_summary\').parent().slideUp().find(\'.checkbox\').removeAttr(\'checked\'); jQuery(this).hide().prev().show();">' . __('Go back to simple logic', 'wpcf') . '</a>'); $form['cd']['toggle_open_area'] = array('#type' => 'markup', '#markup' => '<div class="area-toggle-cd" style="margin-top:10px;display:none;">'); $form['cd']['custom'] = array('#type' => 'textarea', '#name' => $name . '[custom]', '#title' => __('Customize conditions', 'wpcf'), '#id' => md5($data['id']) . '_cd_summary', '#after' => '<br /><a href="javascript:void(0);" onclick="wpcfCdCreateSummary(\'' . md5($data['id']) . '_cd_summary\');">' . __('Re-read structure', 'wpcf') . '</a><br />', '#inline' => true, '#value' => isset($data['data']['conditional_display']['custom']) ? $data['data']['conditional_display']['custom'] : ''); $form['cd']['custom_use'] = array('#type' => 'checkbox', '#name' => $name . '[custom_use]', '#title' => __('Use customized conditions', 'wpcf'), '#inline' => true, '#default_value' => isset($data['data']['conditional_display']['custom_use']), '#after' => ''); $form['cd']['date_notice'] = array('#type' => 'markup', '#markup' => '<div style="display:none; margin-top:15px;" class="wpcf-cd-notice-date">' . sprintf(__('%sDates can be entered using the date filters »%s', 'wpcf'), '<a href="http://wp-types.com/documentation/user-guides/date-filters/" target="_blank">', '</a>') . '</div>'); $form['cd']['apply_display_logic_link'] = array('#type' => 'markup', '#markup' => '<br /><br /><a href="javascript:void(0);" class="button-primary" onclick="window.wpcfCdState_' . md5($data['id']) . ' = jQuery(\'#' . md5($data['id']) . '_cd_summary\').parent().slideUp().prev().hide().prev().show();">' . __('Apply', 'wpcf') . '</a>  '); $form['cd']['cancel_display_logic_link'] = array('#type' => 'markup', '#markup' => '<a href="javascript:void(0);" class="button-primary" onclick="jQuery(\'#' . md5($data['id']) . '_cd_summary\').val(window.wpcfCdState_' . md5($data['id']) . ').parent().slideUp().prev().hide().prev().show();">' . __('Cancel', 'wpcf') . '</a>'); $form['cd']['toggle_close'] = array('#type' => 'markup', '#markup' => '</div>'); $form['cd']['toggle_close_area'] = array('#type' => 'markup', '#markup' => '</div>'); $form['cd']['count'] = array('#type' => 'hidden', '#name' => '_wpcf_cd_count_' . $data['id'], '#value' => $count); if ($group) { $form['cd']['wrap_close'] = array('#type' => 'markup', '#markup' => '<br /><a class="button-primary" onclick="jQuery(this).parent().slideUp().prev().css(\'visibility\',\'visible\');" style="line-height: 30px;" href="javascript:void(0);">' . __('OK', 'wpcf') . '</a></div>'); } return $group ? $form['cd'] : $form; }
/** * Summary. * * Description. * * @since x.x.x * @access (for functions: only use if private) * * @see Function/method/class relied on * @link URL * @global type $varname Description. * @global type $varname Description. * * @param type $var Description. * @param type $var Optional. Description. * @return type Description. */ public function field_get_row() { /** * check nonce */ if (0 || !isset($_REQUEST['_wpnonce']) || !isset($_REQUEST['id']) || !isset($_REQUEST['meta_type']) || !wp_verify_nonce($_REQUEST['_wpnonce'], $this->get_nonce(__CLASS__, $_REQUEST['id'], $_REQUEST['meta_type']))) { $this->verification_failed_and_die(); } $field = wpcf_admin_fields_get_field(sanitize_text_field($_REQUEST['id']), false, true); require_once WPCF_ABSPATH . '/includes/conditional-display.php'; $is_group = $_REQUEST['meta_type'] == 'custom-fields-group' ? true : false; echo wpcf_form_simple(wpcf_cd_admin_form_single_filter($field, array(), null, $is_group)); die; }
/** * All AJAX calls go here. * * @global object $wpdb * */ function wpcf_ajax() { if (!current_user_can('manage_options') || (!isset($_REQUEST['_wpnonce']) || !wp_verify_nonce($_REQUEST['_wpnonce'], $_REQUEST['wpcf_action']))) { die; } switch ($_REQUEST['wpcf_action']) { /* User meta actions*/ case 'user_fields_control_bulk': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-control.php'; require_once WPCF_INC_ABSPATH . '/usermeta-control.php'; wpcf_admin_user_fields_control_bulk_ajax(); break; case 'usermeta_delete': case 'delete_usermeta': require_once WPCF_INC_ABSPATH . '/fields.php'; if (isset($_GET['field_id'])) { $field_id = sanitize_text_field($_GET['field_id']); wpcf_admin_fields_delete_field($field_id, 'wp-types-user-group', 'wpcf-usermeta'); } if (isset($_GET['field'])) { $field = sanitize_text_field($_GET['field']); wpcf_admin_fields_delete_field($field, 'wp-types-user-group', 'wpcf-usermeta'); } echo json_encode(array('output' => '')); break; case 'remove_from_history2': require_once WPCF_INC_ABSPATH . '/fields.php'; $fields = wpcf_admin_fields_get_fields(true, true, false, 'wpcf-usermeta'); if (isset($_GET['field_id']) && isset($fields[$_GET['field_id']])) { $fields[$_GET['field_id']]['data']['removed_from_history'] = 1; wpcf_admin_fields_save_fields($fields, true, 'wpcf-usermeta'); } echo json_encode(array('output' => '')); break; case 'deactivate_user_group': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/usermeta.php'; $success = wpcf_admin_fields_deactivate_group(intval($_GET['group_id']), 'wp-types-user-group'); if ($success) { echo json_encode(array('output' => __('Group deactivated', 'wpcf'), 'execute' => 'location.reload();')); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'activate_user_group': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/usermeta.php'; $success = wpcf_admin_fields_activate_group(intval($_GET['group_id']), 'wp-types-user-group'); if ($success) { echo json_encode(array('output' => __('Group activated', 'wpcf'), 'execute' => 'location.reload();')); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'delete_usermeta_group': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/usermeta.php'; wpcf_admin_fields_delete_group(intval($_GET['group_id']), 'wp-types-user-group'); echo json_encode(array('output' => '', 'execute' => 'location.reload();')); break; case 'usermeta_insert_existing': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-form.php'; require_once WPCF_INC_ABSPATH . '/usermeta-form.php'; wpcf_usermeta_insert_existing_ajax(); wpcf_form_render_js_validation(); break; /* End Usertmeta actions*/ /* End Usertmeta actions*/ case 'fields_insert': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-form.php'; wpcf_fields_insert_ajax(); wpcf_form_render_js_validation(); break; case 'fields_insert_existing': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-form.php'; wpcf_fields_insert_existing_ajax(); wpcf_form_render_js_validation(); break; case 'remove_field_from_group': require_once WPCF_INC_ABSPATH . '/fields.php'; if (isset($_GET['group_id']) && isset($_GET['field_id'])) { wpcf_admin_fields_remove_field_from_group(intval($_GET['group_id']), sanitize_text_field($_GET['field_id'])); } break; case 'deactivate_group': require_once WPCF_INC_ABSPATH . '/fields.php'; $success = wpcf_admin_fields_deactivate_group(intval($_GET['group_id'])); if ($success) { echo json_encode(array('output' => __('Group deactivated', 'wpcf'), 'execute' => 'location.reload();')); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'activate_group': require_once WPCF_INC_ABSPATH . '/fields.php'; $success = wpcf_admin_fields_activate_group(intval($_GET['group_id'])); if ($success) { echo json_encode(array('output' => __('Group activated', 'wpcf'), 'execute' => 'location.reload();')); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'delete_group': require_once WPCF_INC_ABSPATH . '/fields.php'; wpcf_admin_fields_delete_group(intval($_GET['group_id'])); echo json_encode(array('output' => '', 'execute' => 'location.reload();')); break; case 'deactivate_post_type': if (!isset($_GET['wpcf-post-type'])) { die; } require_once WPCF_INC_ABSPATH . '/custom-types.php'; $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array()); if (isset($custom_types[$_GET['wpcf-post-type']])) { $custom_types[$_GET['wpcf-post-type']]['disabled'] = 1; $custom_types[$_GET['wpcf-post-type']][TOOLSET_EDIT_LAST] = time(); update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $custom_types); echo json_encode(array('output' => __('Post type deactivated', 'wpcf'), 'execute' => 'location.reload();')); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'activate_post_type': if (!isset($_GET['wpcf-post-type'])) { die; } require_once WPCF_INC_ABSPATH . '/custom-types.php'; $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array()); if (isset($custom_types[$_GET['wpcf-post-type']])) { unset($custom_types[$_GET['wpcf-post-type']]['disabled']); $custom_types[$_GET['wpcf-post-type']][TOOLSET_EDIT_LAST] = time(); update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $custom_types); echo json_encode(array('output' => __('Post type activated', 'wpcf'), 'execute' => 'location.reload();')); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'delete_post_type': if (!isset($_GET['wpcf-post-type'])) { die; } $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array()); $custom_type = strval($_GET['wpcf-post-type']); /** * Delete relation between custom posts types * * Filter allow to delete all custom fields used to make * a relation between posts. * * @since 1.6.4 * * @param bool $delete True or false flag to delete relationships. * @param string $var Currently deleted custom post type. */ if (apply_filters('wpcf_delete_relation_meta', false, $custom_type)) { global $wpdb; $wpdb->delete($wpdb->postmeta, array('meta_key' => sprintf('_wpcf_belongs_%s_id', $custom_type)), array('%s')); } unset($custom_types[$custom_type]); /** * remove post relation */ foreach (array_keys($custom_types) as $post_type) { if (array_key_exists('post_relationship', $custom_types[$post_type])) { /** * remove "has" relation */ if (array_key_exists('has', $custom_types[$post_type]['post_relationship']) && array_key_exists($custom_type, $custom_types[$post_type]['post_relationship']['has'])) { unset($custom_types[$post_type]['post_relationship']['has'][$custom_type]); $custom_types[$post_type][TOOLSET_EDIT_LAST] = time(); } /** * remove "belongs" relation */ if (array_key_exists('belongs', $custom_types[$post_type]['post_relationship']) && array_key_exists($custom_type, $custom_types[$post_type]['post_relationship']['belongs'])) { unset($custom_types[$post_type]['post_relationship']['belongs'][$custom_type]); $custom_types[$post_type][TOOLSET_EDIT_LAST] = time(); } } } update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $custom_types); wpcf_admin_deactivate_content('post_type', $custom_type); echo json_encode(array('output' => '', 'execute' => 'location.reload();')); break; case 'duplicate_post_type': if (!isset($_GET['wpcf-post-type'])) { die; } $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array()); $custom_type = esc_html(strval($_GET['wpcf-post-type'])); if (isset($custom_types[$custom_type])) { $i = 0; $key = false; do { $key = sprintf($custom_type . '-%d', ++$i); } while (isset($custom_types[$key])); if ($key) { /** * duplicate custom post type */ $custom_types[$key] = $custom_types[$custom_type]; /** * update some options */ $custom_types[$key]['labels']['name'] .= sprintf(' (%d)', $i); $custom_types[$key]['labels']['singular_name'] .= sprintf(' (%d)', $i); $custom_types[$key]['slug'] = $key; $custom_types[$key]['__types_id'] = $key; /** * update custom post types */ update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $custom_types); /** * update custom taxonomies too */ $custom_taxonomies = get_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array()); foreach ($custom_taxonomies as $taxonomy_key => $taxonomy_data) { if (isset($taxonomy_data['supports']) && isset($taxonomy_data['supports'][$custom_type])) { $custom_taxonomies[$taxonomy_key]['supports'][$key] = 1; } } update_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, $custom_taxonomies); echo json_encode(array('execute' => 'location.reload();')); } } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'taxonomy_duplicate': if (!isset($_GET['wpcf-tax'])) { die; } $custom_taxonomy = esc_html(strval($_GET['wpcf-tax'])); require_once WPCF_INC_ABSPATH . '/custom-taxonomies.php'; $custom_taxonomies = get_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array()); if (isset($custom_taxonomies[$custom_taxonomy])) { $i = 0; $key = false; do { $key = sprintf($custom_taxonomy . '-%d', ++$i); } while (isset($custom_taxonomies[$key])); if ($key) { /** * duplicate custom taxonomies */ $custom_taxonomies[$key] = $custom_taxonomies[$custom_taxonomy]; /** * update some options */ $custom_taxonomies[$key]['labels']['name'] .= sprintf(' (%d)', $i); $custom_taxonomies[$key]['labels']['singular_name'] .= sprintf(' (%d)', $i); $custom_taxonomies[$key]['slug'] = $key; $custom_taxonomies[$key]['id'] = $key; $custom_taxonomies[$key]['__types_id'] = $key; /** * update custom taxonomies */ update_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, $custom_taxonomies); /** * update post types */ if (isset($custom_taxonomies[$key]['supports']) && is_array($custom_taxonomies[$key]['supports']) && !empty($custom_taxonomies[$key]['supports'])) { $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array()); foreach (array_keys($custom_taxonomies[$key]['supports']) as $custom_type) { /** * avoid to create fake CPT from old data */ if (!isset($custom_types[$custom_type])) { continue; } if (!isset($custom_types[$custom_type]['taxonomies'])) { $custom_types[$custom_type]['taxonomies'] = array(); } $custom_types[$custom_type]['taxonomies'][$key] = 1; } /** * update custom post types */ update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $custom_types); } echo json_encode(array('execute' => 'location.reload();')); } } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'deactivate_taxonomy': if (!isset($_GET['wpcf-tax'])) { die; } require_once WPCF_INC_ABSPATH . '/custom-taxonomies.php'; $custom_taxonomies = get_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array()); if (isset($custom_taxonomies[$_GET['wpcf-tax']])) { $custom_taxonomies[$_GET['wpcf-tax']]['disabled'] = 1; $custom_taxonomies[$_GET['wpcf-tax']][TOOLSET_EDIT_LAST] = time(); update_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, $custom_taxonomies); echo json_encode(array('output' => __('Taxonomy deactivated', 'wpcf'), 'execute' => 'location.reload();')); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'activate_taxonomy': if (!isset($_GET['wpcf-tax'])) { die; } require_once WPCF_INC_ABSPATH . '/custom-taxonomies.php'; $custom_taxonomies = get_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array()); if (isset($custom_taxonomies[$_GET['wpcf-tax']])) { $custom_taxonomies[$_GET['wpcf-tax']]['disabled'] = 0; $custom_taxonomies[$_GET['wpcf-tax']][TOOLSET_EDIT_LAST] = time(); update_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, $custom_taxonomies); echo json_encode(array('output' => __('Taxonomy activated', 'wpcf'), 'execute' => 'location.reload();')); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'delete_taxonomy': if (!isset($_GET['wpcf-tax'])) { die; } $custom_taxonomies = get_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array()); $custom_taxonomy = strval($_GET['wpcf-tax']); unset($custom_taxonomies[$custom_taxonomy]); update_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, $custom_taxonomies); wpcf_admin_deactivate_content('taxonomy', $custom_taxonomy); echo json_encode(array('output' => '', 'execute' => 'location.reload();')); break; case 'add_radio_option': require_once WPCF_INC_ABSPATH . '/fields/radio.php'; $element = wpcf_fields_radio_get_option(urldecode($_GET['parent_name'])); $id = array_shift($element); $element_txt = wpcf_fields_radio_get_option_alt_text($id, urldecode($_GET['parent_name'])); echo json_encode(array('output' => wpcf_form_simple($element), 'execute' => 'jQuery("#wpcf-form-groups-radio-ajax-response-' . urldecode($_GET['wpcf_ajax_update_add']) . '").append(\'' . trim(str_replace("\r\n", '', wpcf_form_simple($element_txt))) . '\');', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'add_select_option': require_once WPCF_INC_ABSPATH . '/fields/select.php'; $element = wpcf_fields_select_get_option(urldecode($_GET['parent_name'])); echo json_encode(array('output' => wpcf_form_simple($element))); break; case 'add_checkboxes_option': require_once WPCF_INC_ABSPATH . '/fields/checkboxes.php'; $element = wpcf_fields_checkboxes_get_option(urldecode($_GET['parent_name'])); $id = array_shift($element); $element_txt = wpcf_fields_checkboxes_get_option_alt_text($id, urldecode($_GET['parent_name'])); echo json_encode(array('output' => wpcf_form_simple($element), 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'group_form_collapsed': require_once WPCF_INC_ABSPATH . '/fields-form.php'; $group_id = sanitize_text_field($_GET['group_id']); $action = sanitize_text_field($_GET['toggle']); $fieldset = sanitize_text_field($_GET['id']); wpcf_admin_fields_form_save_open_fieldset($action, $fieldset, $group_id); break; case 'form_fieldset_toggle': $action = sanitize_text_field($_GET['toggle']); $fieldset = sanitize_text_field($_GET['id']); wpcf_admin_form_fieldset_save_toggle($action, $fieldset); break; case 'group_update_post_types': require_once WPCF_INC_ABSPATH . '/fields.php'; // @todo Sanitize this $post_types $post_types = empty($_GET['wpcf']['group']['supports']) ? array() : $_GET['wpcf']['group']['supports']; if (!empty($_GET['group_id'])) { wpcf_admin_fields_save_group_post_types(sanitize_text_field($_GET['group_id']), $post_types); $output = array(); foreach ($post_types as $post_type) { $post_type = get_post_type_object($post_type); if (!empty($post_type->label)) { $output[] = $post_type->label; } } if (empty($post_types)) { $output[] = __('No post types associated', 'wpcf'); } $output = implode(', ', $output); } else { $output = __('No post types associated', 'wpcf'); } echo json_encode(array('output' => $output)); break; case 'group_update_taxonomies': require_once WPCF_INC_ABSPATH . '/fields.php'; $taxonomies_post = empty($_GET['wpcf']['group']['taxonomies']) ? array() : $_GET['wpcf']['group']['taxonomies']; $terms = array(); foreach ($taxonomies_post as $taxonomy) { foreach ($taxonomy as $tax => $term) { $terms[] = $term; } } if (!empty($_GET['group_id'])) { wpcf_admin_fields_save_group_terms(sanitize_text_field($_GET['group_id']), $terms); $output = array(); foreach ($taxonomies_post as $taxonomy => $terms) { $taxonomy = get_taxonomy($taxonomy); if (!empty($taxonomy)) { $title = $taxonomy->label . ': '; foreach ($terms as $term_id) { $term = get_term($term_id, $taxonomy->name); $output[] = $title . $term->name; $title = ''; } } } if (empty($output)) { $output[] = __('No taxonomies associated', 'wpcf'); } $output = implode(', ', $output); } else { $output = __('No taxonomies associated', 'wpcf'); } echo json_encode(array('output' => $output)); break; case 'custom_fields_control_bulk': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-control.php'; wpcf_admin_custom_fields_control_bulk_ajax(); break; case 'fields_delete': case 'delete_field': require_once WPCF_INC_ABSPATH . '/fields.php'; if (isset($_GET['field_id'])) { wpcf_admin_fields_delete_field(sanitize_text_field($_GET['field_id'])); } if (isset($_GET['field'])) { wpcf_admin_fields_delete_field(sanitize_text_field($_GET['field'])); } echo json_encode(array('output' => '')); break; case 'remove_from_history': require_once WPCF_INC_ABSPATH . '/fields.php'; $fields = wpcf_admin_fields_get_fields(); if (isset($_GET['field_id']) && isset($fields[$_GET['field_id']])) { $fields[$_GET['field_id']]['data']['removed_from_history'] = 1; wpcf_admin_fields_save_fields($fields, true); } echo json_encode(array('output' => '')); break; case 'add_condition': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_ABSPATH . '/includes/conditional-display.php'; if (!empty($_GET['field']) || !empty($_GET['group'])) { $data = array(); if (isset($_GET['group'])) { $output = wpcf_form_simple(wpcf_cd_admin_form_single_filter(array(), array(), null, true)); echo json_encode(array('output' => $output)); } else { $data['id'] = str_replace('_conditional_display', '', sanitize_text_field($_GET['field'])); $output = wpcf_form_simple(wpcf_cd_admin_form_single_filter($data, array(), null, false)); if (!empty($data['id'])) { echo json_encode(array('output' => $output)); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } } } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'pt_edit_fields': if (!empty($_GET['parent']) && !empty($_GET['child'])) { require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/post-relationship.php'; wpcf_pr_admin_edit_fields(sanitize_text_field($_GET['parent']), sanitize_text_field($_GET['child'])); } break; case 'toggle': $option = get_option('wpcf_toggle', array()); $hidden = isset($_GET['hidden']) ? (bool) $_GET['hidden'] : 1; $_GET['div'] = strval($_GET['div']); if (!$hidden) { unset($option[$_GET['div']]); } else { $option[$_GET['div']] = 1; } update_option('wpcf_toggle', $option); break; case 'cb_save_empty_migrate': $output = sprintf('<span style="color:red;">%s</div>', __('Migration process is not yet finished - please save group first, then change settings of this field.', 'wpcf')); if (isset($_GET['field']) && isset($_GET['subaction'])) { require_once WPCF_INC_ABSPATH . '/fields.php'; $option = $_GET['meta_type'] == 'usermeta' ? 'wpcf-usermeta' : 'wpcf-fields'; $meta_type = sanitize_text_field($_GET['meta_type']); $field = wpcf_admin_fields_get_field(sanitize_text_field($_GET['field']), false, false, false, $option); $_txt_updates = $meta_type == 'usermeta' ? __('%d users require update', 'wpcf') : __('%d posts require update', 'wpcf'); $_txt_no_updates = $meta_type == 'usermeta' ? __('No users require update', 'wpcf') : __('No posts require update', 'wpcf'); $_txt_updated = $meta_type == 'usermeta' ? __('Users updated', 'wpcf') : __('Posts updated', 'wpcf'); if (!empty($field)) { if ($_GET['subaction'] == 'save_check' || $_GET['subaction'] == 'do_not_save_check') { if ($field['type'] == 'checkbox') { $posts = wpcf_admin_fields_checkbox_migrate_empty_check($field, $_GET['subaction']); } else { if ($field['type'] == 'checkboxes') { $posts = wpcf_admin_fields_checkboxes_migrate_empty_check($field, $_GET['subaction']); } } if (!empty($posts)) { $output = '<div class="message updated"><p>' . sprintf($_txt_updates, count($posts)) . ' ' . '<a href="javascript:void(0);" class="button-primary" onclick="' . 'wpcfCbSaveEmptyMigrate(jQuery(this).parent().parent().parent(), \'' . sanitize_text_field($_GET['field']) . '\', ' . count($posts) . ', \'' . wp_create_nonce('cb_save_empty_migrate') . '\', \''; $output .= $_GET['subaction'] == 'save_check' ? 'save' : 'do_not_save'; $output .= '\', \'' . $meta_type . '\');' . '">' . __('Update') . '</a>' . '</p></div>'; } else { $output = '<div class="message updated"><p><em>' . $_txt_no_updates . '</em></p></div>'; } } else { if ($_GET['subaction'] == 'save' || $_GET['subaction'] == 'do_not_save') { if ($field['type'] == 'checkbox') { $posts = wpcf_admin_fields_checkbox_migrate_empty($field, $_GET['subaction']); } else { if ($field['type'] == 'checkboxes') { $posts = wpcf_admin_fields_checkboxes_migrate_empty($field, $_GET['subaction']); } } if (isset($posts['offset'])) { if (!isset($_GET['total'])) { $output = '<span style="color:red;">' . __('Error occured', 'wpcf') . '</div>'; } else { $output = '<script type="text/javascript">wpcfCbMigrateStep(' . intval($_GET['total']) . ',' . $posts['offset'] . ',' . '\'' . sanitize_text_field($_GET['field']) . '\',' . '\'' . wp_create_nonce('cb_save_empty_migrate') . '\', \'' . $meta_type . '\');</script>' . number_format($posts['offset']) . '/' . number_format(intval($_GET['total'])) . '<div class="wpcf-ajax-loading-small"></div>'; } } else { $output = '<div class="message updated"><p>' . $_txt_updated . '</p></div>'; } } } } } echo json_encode(array('output' => $output)); break; default: break; } die; }
/** * Conditional display form. * * @param type $data * @param type $group * @return type */ function wpcf_cd_admin_form_filter($data, $group = false) { global $wpcf_button_style30; if ($group) { $name = 'wpcf[group][conditional_display]'; } else { $name = 'wpcf[fields][' . $data['id'] . '][conditional_display]'; } $form = array(); // Count if (!empty($data['data']['conditional_display']['conditions'])) { $conditions = $data['data']['conditional_display']['conditions']; $count = count($conditions); $_count_txt = $count; } else { $_count_txt = ''; $count = 1; } /** * state of conditional display custom use */ $use_custom_logic = 0; if (1 && array_key_exists('data', $data) && is_array($data['data']) && array_key_exists('conditional_display', $data['data']) && is_array($data['data']['conditional_display']) && array_key_exists('custom_use', $data['data']['conditional_display']) && !empty($data['data']['conditional_display']['custom_use'])) { $use_custom_logic = 1; } if (!$group) { $form['cd'] = array('#type' => 'fieldset', '#title' => __('Conditional display', 'wpcf'), '#collapsed' => true, '#id' => $data['id'] . '_conditional_display', '#attributes' => array('class' => 'wpcf-cd-fieldset')); } else { $count_text = sprintf('<span class="count" data-wpcf-custom-logic="%s">(%s)</span>', esc_attr__('custom logic', 'wpcf'), $use_custom_logic ? __('custom logic', 'wpcf') : $_count_txt); $form['cd']['wrap'] = array('#type' => 'markup', '#markup' => '<strong>' . sprintf(__('Data-dependent display filters %s', 'wpcf'), $count_text) . '</strong><br />' . __("Specify additional filters that control this group's display, based on values of custom fields.", 'wpcf') . '<br /><a class="button-secondary" onclick="jQuery(this).css(\'display\',\'none\').next().slideToggle();" ' . $wpcf_button_style30 . ' href="javascript:void(0);">' . __('Edit', 'wpcf') . '</a><div id="wpcf-cd-group" class="wpcf-cd-fieldset" style="display:none;">'); } $form['cd']['custom_use'] = array('#type' => 'hidden', '#name' => $name . '[custom_use]', '#default_value' => isset($data['data']['conditional_display']['custom_use']), '#attributes' => array('class' => 'conditional-display-custom-use'), '#value' => $use_custom_logic); // Stop for Usermeta Group edit screen if (isset($_GET['page']) && $_GET['page'] == 'wpcf-edit-usermeta') { $form['cd']['message'] = array('#type' => 'markup', '#markup' => '<p>' . __('Conditional display is not supported yet for Usermeta fields.', 'wpcf') . '</p>'); return $form; } $add = $group ? 'true' : 'false'; // Set button ID $_add_id = 'wpcf_conditional_add_condition_'; $_add_id .= $group ? 'group' : 'field_' . $data['id']; // Set link param $_temp_group_id = isset($_GET['group_id']) ? '&group_id=' . $_GET['group_id'] : ''; $_url = admin_url('admin-ajax.php?action=wpcf_ajax&wpcf_action=add_condition' . $_temp_group_id . '&_wpnonce=' . wp_create_nonce('add_condition')); $form['cd']['add'] = array('#type' => 'markup', '#markup' => '<br /><a id="' . $_add_id . '" class="button-secondary simple-logic"' . ' onclick="wpcfCdAddCondition(jQuery(this),' . $add . '); return false;"' . ' href="' . $_url . '">' . __('Add condition', 'wpcf') . '</a>' . '<div class="wpcf-cd-entries simple-logic">'); /* * Sanitize conditions */ if (!empty($data['data']['conditional_display'])) { // There may be some unserilized leftovers from previoius versions $_conditions = maybe_unserialize($data['data']['conditional_display']); if (!empty($_conditions['conditions']) && is_array($_conditions['conditions'])) { foreach ($_conditions['conditions'] as $key => $condition) { $form['cd'] += wpcf_cd_admin_form_single_filter($data, $condition, $key, $group); } } } $form['cd']['add_close'] = array('#type' => 'markup', '#markup' => '</div>'); $form['cd']['relation'] = array('#type' => 'radios', '#name' => $name . '[relation]', '#options' => array('AND' => array('#title' => 'AND', '#attributes' => array('onclick' => 'wpcfCdCreateSummary(\'' . md5($data['id']) . '_cd_summary\')'), '#inline' => true, '#value' => 'AND', '#after' => '<br />'), 'OR' => array('#title' => 'OR', '#attributes' => array('onclick' => 'wpcfCdCreateSummary(\'' . md5($data['id']) . '_cd_summary\')'), '#inline' => true, '#value' => 'OR')), '#default_value' => isset($data['data']['conditional_display']['relation']) ? $data['data']['conditional_display']['relation'] : 'AND', '#inline' => true, '#before' => '<div class="wpcf-cd-relation simple-logic" style="display:none;">', '#after' => '</div>'); /** * logic form */ $form['cd']['toggle_open'] = array('#type' => 'markup', '#markup' => '<div class="toggle-cd">'); $form['cd']['display_logic_button'] = array('#name' => $name . '[display-logic-button]', '#type' => 'button', '#value' => '', '#patern' => '<ELEMENT>', '#attributes' => array('data-wpcf-custom-logic-simple' => esc_attr__('Go back to simple logic', 'wpcf'), 'data-wpcf-custom-logic-customize' => esc_attr__('Customize the display logic', 'wpcf'), 'data-wpcf-custom-logic' => '', 'data-wpcf-custom-logic-change' => !$use_custom_logic, 'data-wpcf-custom-summary' => md5($data['id']) . '_cd_summary', 'class' => 'wpcf-cd-display-logic-button')); $form['cd']['toggle_open_area'] = array('#type' => 'markup', '#markup' => '<div class="area-toggle-cd" style="margin-top:10px;display:none;">'); $form['cd']['custom'] = array('#type' => 'textarea', '#name' => $name . '[custom]', '#title' => __('Customize conditions', 'wpcf'), '#id' => md5($data['id']) . '_cd_summary', '#inline' => true, '#value' => isset($data['data']['conditional_display']['custom']) ? $data['data']['conditional_display']['custom'] : ''); $form['cd']['date_notice'] = array('#type' => 'markup', '#markup' => '<div style="display:none; margin-top:15px;" class="wpcf-cd-notice-date">' . sprintf(__('%sDates can be entered using the date filters »%s', 'wpcf'), '<a href="http://wp-types.com/documentation/user-guides/date-filters/" target="_blank">', '</a>') . '</div>'); $form['cd']['toggle_close'] = array('#type' => 'markup', '#markup' => '</div>'); $form['cd']['toggle_close_area'] = array('#type' => 'markup', '#markup' => '</div>'); $form['cd']['count'] = array('#type' => 'hidden', '#name' => '_wpcf_cd_count_' . $data['id'], '#value' => $count, '#attributes' => array('class' => 'wpcf-cd-count')); if ($group) { $form['cd']['wrap_close'] = array('#type' => 'markup', '#markup' => '<br /><a class="button-primary" onclick="jQuery(this).parent().slideUp().prev().css(\'display\',\'static\');" ' . $wpcf_button_style30 . ' href="javascript:void(0);">' . __('OK', 'wpcf') . '</a></div>'); } return $group ? $form['cd'] : $form; }
/** * All AJAX calls go here. * * @global object $wpdb * */ function wpcf_ajax() { /** * check nounce */ if (!(isset($_REQUEST['_wpnonce']) && wp_verify_nonce($_REQUEST['_wpnonce'], $_REQUEST['wpcf_action']))) { die; } require_once WPCF_INC_ABSPATH . '/classes/class.wpcf.roles.php'; /** * check permissions */ switch ($_REQUEST['wpcf_action']) { case 'deactivate_post_type': case 'activate_post_type': case 'delete_post_type': case 'duplicate_post_type': $post_type = wpcf_ajax_helper_get_post_type(); if (empty($post_type)) { wpcf_ajax_helper_print_error_and_die(); } if (!WPCF_Roles::user_can_edit_custom_post_by_slug($post_type)) { wpcf_ajax_helper_verification_failed_and_die(); } break; case 'taxonomy_duplicate': case 'deactivate_taxonomy': case 'activate_taxonomy': case 'delete_taxonomy': $custom_taxonomy = wpcf_ajax_helper_get_taxonomy(); if (empty($custom_taxonomy)) { wpcf_ajax_helper_print_error_and_die(); } if (!WPCF_Roles::user_can_edit_custom_taxonomy_by_slug($custom_taxonomy)) { wpcf_ajax_helper_verification_failed_and_die(); } break; case 'deactivate_group': case 'activate_group': case 'delete_group': if (!isset($_GET['group_id']) || empty($_GET['group_id'])) { wpcf_ajax_helper_print_error_and_die(); } if (!WPCF_Roles::user_can_edit_custom_field_group_by_id($_GET['group_id'])) { wpcf_ajax_helper_verification_failed_and_die(); } break; case 'deactivate_user_group': case 'activate_user_group': case 'delete_usermeta_group': if (!isset($_GET['group_id']) || empty($_GET['group_id'])) { wpcf_ajax_helper_print_error_and_die(); } if (!WPCF_Roles::user_can_edit_usermeta_field_group_by_id($_GET['group_id'])) { wpcf_ajax_helper_verification_failed_and_die(); } break; case 'deactivate_term_group': case 'activate_term_group': case 'delete_term_group': if (!isset($_GET['group_id']) || empty($_GET['group_id'])) { wpcf_ajax_helper_print_error_and_die(); } if (!WPCF_Roles::user_can_edit_term_field_group_by_id($_GET['group_id'])) { wpcf_ajax_helper_verification_failed_and_die(); } break; case 'usermeta_delete': case 'delete_usermeta': case 'remove_from_history2': case 'usermeta_insert_existing': case 'fields_insert': case 'fields_insert_existing': case 'remove_field_from_group': case 'add_radio_option': case 'add_select_option': case 'add_checkboxes_option': case 'group_form_collapsed': case 'form_fieldset_toggle': case 'fields_delete': case 'delete_field': case 'remove_from_history': case 'add_condition': case 'pt_edit_fields': case 'toggle': case 'cb_save_empty_migrate': if (!current_user_can('manage_options')) { wpcf_ajax_helper_verification_failed_and_die(); } /** * do not check actions from other places */ break; default: return; } /** * do actions */ switch ($_REQUEST['wpcf_action']) { /* User meta actions*/ case 'usermeta_delete': case 'delete_usermeta': require_once WPCF_INC_ABSPATH . '/fields.php'; if (isset($_GET['field_id'])) { $field_id = sanitize_text_field($_GET['field_id']); wpcf_admin_fields_delete_field($field_id, TYPES_USER_META_FIELD_GROUP_CPT_NAME, 'wpcf-usermeta'); } if (isset($_GET['field'])) { $field = sanitize_text_field($_GET['field']); wpcf_admin_fields_delete_field($field, TYPES_USER_META_FIELD_GROUP_CPT_NAME, 'wpcf-usermeta'); } echo json_encode(array('output' => '')); break; case 'remove_from_history2': require_once WPCF_INC_ABSPATH . '/fields.php'; $fields = wpcf_admin_fields_get_fields(true, true, false, 'wpcf-usermeta'); if (isset($_GET['field_id']) && isset($fields[$_GET['field_id']])) { $fields[$_GET['field_id']]['data']['removed_from_history'] = 1; wpcf_admin_fields_save_fields($fields, true, 'wpcf-usermeta'); } echo json_encode(array('output' => '')); break; case 'deactivate_user_group': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/usermeta.php'; $success = wpcf_admin_fields_deactivate_group(intval($_GET['group_id']), TYPES_USER_META_FIELD_GROUP_CPT_NAME); if ($success) { echo json_encode(array('output' => __('Group deactivated', 'wpcf'), 'execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { wpcf_ajax_helper_print_error_and_die(); die; } break; case 'activate_user_group': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/usermeta.php'; $success = wpcf_admin_fields_activate_group(intval($_GET['group_id']), TYPES_USER_META_FIELD_GROUP_CPT_NAME); if ($success) { echo json_encode(array('output' => __('Group activated', 'wpcf'), 'execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { wpcf_ajax_helper_print_error_and_die(); die; } break; case 'delete_usermeta_group': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/usermeta.php'; $redirect = wpcf_ajax_group_delete_redirect(); wpcf_admin_fields_delete_group(intval($_GET['group_id']), TYPES_USER_META_FIELD_GROUP_CPT_NAME); echo json_encode($redirect); break; case 'usermeta_insert_existing': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-form.php'; require_once WPCF_INC_ABSPATH . '/usermeta-form.php'; wpcf_usermeta_insert_existing_ajax(); wpcf_form_render_js_validation(); break; /* End Usertmeta actions*/ /* End Usertmeta actions*/ case 'fields_insert': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-form.php'; wpcf_fields_insert_ajax(); wpcf_form_render_js_validation(); break; case 'fields_insert_existing': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-form.php'; wpcf_fields_insert_existing_ajax(); wpcf_form_render_js_validation(); break; case 'remove_field_from_group': require_once WPCF_INC_ABSPATH . '/fields.php'; if (isset($_GET['group_id']) && isset($_GET['field_id'])) { wpcf_admin_fields_remove_field_from_group(intval($_GET['group_id']), sanitize_text_field($_GET['field_id'])); } break; case 'deactivate_group': require_once WPCF_INC_ABSPATH . '/fields.php'; $success = wpcf_admin_fields_deactivate_group(intval($_GET['group_id'])); if ($success) { echo json_encode(array('output' => __('Group deactivated', 'wpcf'), 'execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { wpcf_ajax_helper_print_error_and_die(); } break; case 'activate_group': require_once WPCF_INC_ABSPATH . '/fields.php'; $success = wpcf_admin_fields_activate_group(intval($_GET['group_id'])); if ($success) { echo json_encode(array('output' => __('Group activated', 'wpcf'), 'execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { wpcf_ajax_helper_print_error_and_die(); } break; case 'delete_group': require_once WPCF_INC_ABSPATH . '/fields.php'; $redirect = wpcf_ajax_group_delete_redirect(); wpcf_admin_fields_delete_group(intval($_GET['group_id'])); echo json_encode($redirect); break; case 'deactivate_term_group': require_once WPCF_INC_ABSPATH . '/fields.php'; $success = wpcf_admin_fields_deactivate_group(intval($_GET['group_id']), Types_Field_Group_Term::POST_TYPE); if ($success) { echo json_encode(array('output' => __('Group deactivated', 'wpcf'), 'execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { wpcf_ajax_helper_print_error_and_die(); } break; case 'activate_term_group': require_once WPCF_INC_ABSPATH . '/fields.php'; $success = wpcf_admin_fields_activate_group(intval($_GET['group_id']), Types_Field_Group_Term::POST_TYPE); if ($success) { echo json_encode(array('output' => __('Group activated', 'wpcf'), 'execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { wpcf_ajax_helper_print_error_and_die(); } break; case 'delete_term_group': require_once WPCF_INC_ABSPATH . '/fields.php'; $redirect = wpcf_ajax_group_delete_redirect(); wpcf_admin_fields_delete_group(intval($_GET['group_id']), Types_Field_Group_Term::POST_TYPE); echo json_encode($redirect); break; case 'deactivate_post_type': $post_type = wpcf_ajax_helper_get_post_type(); if (empty($post_type)) { wpcf_ajax_helper_print_error_and_die(); } $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array()); $custom_types[$post_type]['disabled'] = 1; $custom_types[$post_type][TOOLSET_EDIT_LAST] = time(); update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $custom_types); echo json_encode(array('output' => __('Post Type deactivated', 'wpcf'), 'execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'activate_post_type': $post_type = wpcf_ajax_helper_get_post_type(); if (empty($post_type)) { wpcf_ajax_helper_print_error_and_die(); } $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array()); unset($custom_types[$post_type]['disabled']); $custom_types[$post_type][TOOLSET_EDIT_LAST] = time(); update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $custom_types); echo json_encode(array('output' => __('Post Type activated', 'wpcf'), 'execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'delete_post_type': $post_type = wpcf_ajax_helper_get_post_type(); if (empty($post_type)) { wpcf_ajax_helper_print_error_and_die(); } $post_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array()); /** * Delete relation between custom posts types * * Filter allow to delete all custom fields used to make * a relation between posts. * * @since 1.6.4 * * @param bool $delete True or false flag to delete relationships. * @param string $var Currently deleted post type. */ if (apply_filters('wpcf_delete_relation_meta', false, $post_type)) { global $wpdb; $wpdb->delete($wpdb->postmeta, array('meta_key' => sprintf('_wpcf_belongs_%s_id', $post_type)), array('%s')); } unset($post_types[$post_type]); /** * remove post relation */ foreach (array_keys($post_types) as $post_type) { if (array_key_exists('post_relationship', $post_types[$post_type])) { /** * remove "has" relation */ if (array_key_exists('has', $post_types[$post_type]['post_relationship']) && array_key_exists($post_type, $post_types[$post_type]['post_relationship']['has'])) { unset($post_types[$post_type]['post_relationship']['has'][$post_type]); $post_types[$post_type][TOOLSET_EDIT_LAST] = time(); } /** * remove "belongs" relation */ if (array_key_exists('belongs', $post_types[$post_type]['post_relationship']) && array_key_exists($post_type, $post_types[$post_type]['post_relationship']['belongs'])) { unset($post_types[$post_type]['post_relationship']['belongs'][$post_type]); $post_types[$post_type][TOOLSET_EDIT_LAST] = time(); } } } update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $post_types); wpcf_admin_deactivate_content('post_type', $post_type); echo json_encode(array('output' => '', 'execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'duplicate_post_type': $post_type = wpcf_ajax_helper_get_post_type(); if (empty($post_type)) { wpcf_ajax_helper_print_error_and_die(); } $post_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array()); $i = 0; $key = false; do { $key = sprintf($post_type . '-%d', ++$i); } while (isset($post_types[$key])); if ($key) { /** * duplicate post type */ $post_types[$key] = $post_types[$post_type]; /** * update some options */ $post_types[$key]['labels']['name'] .= sprintf(' (%d)', $i); $post_types[$key]['labels']['singular_name'] .= sprintf(' (%d)', $i); $post_types[$key]['slug'] = $key; $post_types[$key]['__types_id'] = $key; /** * update post types */ update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $post_types); /** * update custom taxonomies too */ $custom_taxonomies = get_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array()); foreach ($custom_taxonomies as $taxonomy_key => $taxonomy_data) { if (isset($taxonomy_data['supports']) && isset($taxonomy_data['supports'][$post_type])) { $custom_taxonomies[$taxonomy_key]['supports'][$key] = 1; } } update_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, $custom_taxonomies); echo json_encode(array('execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } break; case 'taxonomy_duplicate': $custom_taxonomy = wpcf_ajax_helper_get_taxonomy(); if (empty($custom_taxonomy)) { wpcf_ajax_helper_print_error_and_die(); } $custom_taxonomies = get_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array()); $i = 0; $key = false; do { $key = sprintf($custom_taxonomy . '-%d', ++$i); } while (isset($custom_taxonomies[$key])); if ($key) { /** * duplicate custom taxonomies */ $custom_taxonomies[$key] = $custom_taxonomies[$custom_taxonomy]; /** * update some options */ $custom_taxonomies[$key]['labels']['name'] .= sprintf(' (%d)', $i); $custom_taxonomies[$key]['labels']['singular_name'] .= sprintf(' (%d)', $i); $custom_taxonomies[$key]['slug'] = $key; $custom_taxonomies[$key]['id'] = $key; $custom_taxonomies[$key]['__types_id'] = $key; /** * update custom taxonomies */ update_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, $custom_taxonomies); /** * update post types */ if (isset($custom_taxonomies[$key]['supports']) && is_array($custom_taxonomies[$key]['supports']) && !empty($custom_taxonomies[$key]['supports'])) { $custom_types = get_option(WPCF_OPTION_NAME_CUSTOM_TYPES, array()); foreach (array_keys($custom_taxonomies[$key]['supports']) as $custom_type) { /** * avoid to create fake CPT from old data */ if (!isset($custom_types[$custom_type])) { continue; } if (!isset($custom_types[$custom_type]['taxonomies'])) { $custom_types[$custom_type]['taxonomies'] = array(); } $custom_types[$custom_type]['taxonomies'][$key] = 1; } /** * update post types */ update_option(WPCF_OPTION_NAME_CUSTOM_TYPES, $custom_types); } echo json_encode(array('execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } break; case 'deactivate_taxonomy': $custom_taxonomy = wpcf_ajax_helper_get_taxonomy(); if (empty($custom_taxonomy)) { wpcf_ajax_helper_print_error_and_die(); } $custom_taxonomies = get_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array()); if (!isset($custom_taxonomies[$custom_taxonomy]) || !isset($custom_taxonomies[$custom_taxonomy]['supports'])) { $taxonomy = get_taxonomy($custom_taxonomy); $supports = array(); if (is_object($taxonomy)) { if (!empty($taxonomy->object_type)) { foreach ($taxonomy->object_type as $support_post) { $supports[$support_post] = 1; } } $custom_taxonomies[$custom_taxonomy] = array('slug' => $taxonomy->name, 'labels' => array('singular_name' => $taxonomy->labels->singular_name, 'name' => $taxonomy->labels->name), 'supports' => $supports, 'type' => '_builtin', '_builtin' => true); } else { wpcf_ajax_helper_print_error_and_die(); } } if (wpcf_is_builtin_taxonomy($custom_taxonomy)) { $custom_taxonomies[$custom_taxonomy]['type'] = '_builtin'; $custom_taxonomies[$custom_taxonomy]['_builtin'] = true; } $custom_taxonomies[$custom_taxonomy]['disabled'] = 1; $custom_taxonomies[$custom_taxonomy][TOOLSET_EDIT_LAST] = time(); update_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, $custom_taxonomies); echo json_encode(array('output' => __('Taxonomy deactivated', 'wpcf'), 'execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'activate_taxonomy': $custom_taxonomy = wpcf_ajax_helper_get_taxonomy(); if (empty($custom_taxonomy)) { wpcf_ajax_helper_print_error_and_die(); } $custom_taxonomies = get_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array()); if (!isset($custom_taxonomies[$custom_taxonomy])) { $taxonomy = get_taxonomy($custom_taxonomy); if (is_object($taxonomy)) { $custom_taxonomies[$custom_taxonomy] = array('slug' => $taxonomy->name, 'labels' => array('singular_name' => $taxonomy->labels->singular_name), 'type' => '_builtin', '_builtin' => true); } else { wpcf_ajax_helper_print_error_and_die(); } } if (wpcf_is_builtin_taxonomy($custom_taxonomy)) { $custom_taxonomies[$custom_taxonomy]['type'] = '_builtin'; $custom_taxonomies[$custom_taxonomy]['_builtin'] = true; } $custom_taxonomies[$custom_taxonomy]['disabled'] = 0; $custom_taxonomies[$custom_taxonomy][TOOLSET_EDIT_LAST] = time(); update_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, $custom_taxonomies); echo json_encode(array('output' => __('Taxonomy activated', 'wpcf'), 'execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'delete_taxonomy': $custom_taxonomy = wpcf_ajax_helper_get_taxonomy(); if (empty($custom_taxonomy)) { wpcf_ajax_helper_print_error_and_die(); } $custom_taxonomies = get_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array()); unset($custom_taxonomies[$custom_taxonomy]); update_option(WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, $custom_taxonomies); wpcf_admin_deactivate_content('taxonomy', $custom_taxonomy); // on group edit page if (isset($_GET['wpcf_ref'])) { $redirect = $_GET['wpcf_ref'] == 'dashboard' ? admin_url('admin.php?page=toolset-dashboard') : admin_url('admin.php?page=wpcf-ctt'); echo json_encode(array('output' => '', 'execute' => 'redirect', 'wpcf_redirect' => $redirect, 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); // on listing page } else { echo json_encode(array('output' => '', 'execute' => 'reload', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } break; case 'add_radio_option': /** * check required data */ if (!isset($_GET['parent_name']) || !isset($_GET['wpcf_ajax_update_add'])) { wpcf_ajax_helper_print_error_and_die(); } require_once WPCF_INC_ABSPATH . '/fields/radio.php'; $value = esc_html(urldecode($_GET['parent_name'])); $element = wpcf_fields_radio_get_option($value); $id = array_shift($element); $element_txt = wpcf_fields_radio_get_option_alt_text($id, $value); echo json_encode(array('output' => wpcf_form_simple($element), 'execute' => 'append', 'append_target' => '#wpcf-form-groups-radio-ajax-response-' . esc_html(urldecode($_GET['wpcf_ajax_update_add'])), 'append_value' => trim(preg_replace('/[\\r\\n]+/', '', wpcf_form_simple($element_txt))), 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'add_select_option': /** * check required data */ if (!isset($_GET['parent_name'])) { wpcf_ajax_helper_print_error_and_die(); } require_once WPCF_INC_ABSPATH . '/fields/select.php'; $element = wpcf_fields_select_get_option(esc_html(urldecode($_GET['parent_name']))); echo json_encode(array('output' => wpcf_form_simple($element))); break; case 'add_checkboxes_option': /** * check required data */ if (!isset($_GET['parent_name'])) { wpcf_ajax_helper_print_error_and_die(); } require_once WPCF_INC_ABSPATH . '/fields/checkboxes.php'; $value = esc_html(urldecode($_GET['parent_name'])); $element = wpcf_fields_checkboxes_get_option($value); $id = array_shift($element); $element_txt = wpcf_fields_checkboxes_get_option_alt_text($id, $value); echo json_encode(array('output' => wpcf_form_simple($element), 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'group_form_collapsed': require_once WPCF_INC_ABSPATH . '/fields-form.php'; $group_id = sanitize_text_field($_GET['group_id']); $action = sanitize_text_field($_GET['toggle']); $fieldset = sanitize_text_field($_GET['id']); wpcf_admin_fields_form_save_open_fieldset($action, $fieldset, $group_id); break; case 'form_fieldset_toggle': $action = sanitize_text_field($_GET['toggle']); $fieldset = sanitize_text_field($_GET['id']); wpcf_admin_form_fieldset_save_toggle($action, $fieldset); break; case 'fields_delete': case 'delete_field': require_once WPCF_INC_ABSPATH . '/fields.php'; if (isset($_GET['field_id'])) { wpcf_admin_fields_delete_field(sanitize_text_field($_GET['field_id'])); } if (isset($_GET['field'])) { wpcf_admin_fields_delete_field(sanitize_text_field($_GET['field'])); } echo json_encode(array('output' => '')); break; case 'remove_from_history': require_once WPCF_INC_ABSPATH . '/fields.php'; $fields = wpcf_admin_fields_get_fields(); if (isset($_GET['field_id']) && isset($fields[$_GET['field_id']])) { $fields[$_GET['field_id']]['data']['removed_from_history'] = 1; wpcf_admin_fields_save_fields($fields, true); } echo json_encode(array('output' => '')); break; case 'add_condition': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_ABSPATH . '/includes/conditional-display.php'; if (!empty($_GET['field']) || !empty($_GET['group'])) { $data = array(); if (isset($_GET['group'])) { $output = wpcf_form_simple(wpcf_cd_admin_form_single_filter(array(), array(), null, true)); echo json_encode(array('output' => $output)); } else { $data['id'] = str_replace('_conditional_display', '', sanitize_text_field($_GET['field'])); $output = wpcf_form_simple(wpcf_cd_admin_form_single_filter($data, array(), null, false)); if (!empty($data['id'])) { echo json_encode(array('output' => $output)); } else { wpcf_ajax_helper_print_error_and_die(); } } } else { wpcf_ajax_helper_print_error_and_die(); } break; case 'pt_edit_fields': if (!empty($_GET['parent']) && !empty($_GET['child'])) { require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/post-relationship.php'; wpcf_pr_admin_edit_fields(sanitize_text_field($_GET['parent']), sanitize_text_field($_GET['child'])); } break; case 'toggle': $option = get_option('wpcf_toggle', array()); $hidden = isset($_GET['hidden']) ? (bool) $_GET['hidden'] : 1; $div = esc_html(strval($_GET['div'])); if (!$hidden) { unset($option[$div]); } else { $option[$div] = 1; } update_option('wpcf_toggle', $option); break; case 'cb_save_empty_migrate': $output = sprintf('<span style="color:red;">%s</div>', __('Migration process is not yet finished - please save group first, then change settings of this field.', 'wpcf')); if (isset($_GET['field']) && isset($_GET['subaction'])) { require_once WPCF_INC_ABSPATH . '/fields.php'; $option = $_GET['meta_type'] == 'usermeta' ? 'wpcf-usermeta' : 'wpcf-fields'; $meta_type = sanitize_text_field($_GET['meta_type']); $field = wpcf_admin_fields_get_field(sanitize_text_field($_GET['field']), false, false, false, $option); $_txt_updates = $meta_type == 'usermeta' ? __('%d users require update', 'wpcf') : __('%d posts require update', 'wpcf'); $_txt_no_updates = $meta_type == 'usermeta' ? __('No users require update', 'wpcf') : __('No posts require update', 'wpcf'); $_txt_updated = $meta_type == 'usermeta' ? __('Users updated', 'wpcf') : __('Posts updated', 'wpcf'); if (!empty($field)) { if ($_GET['subaction'] == 'save_check' || $_GET['subaction'] == 'do_not_save_check') { if ($field['type'] == 'checkbox') { $posts = wpcf_admin_fields_checkbox_migrate_empty_check($field, $_GET['subaction']); } else { if ($field['type'] == 'checkboxes') { $posts = wpcf_admin_fields_checkboxes_migrate_empty_check($field, $_GET['subaction']); } } if (!empty($posts)) { $output = '<div class="message updated"><p>' . sprintf($_txt_updates, count($posts)) . ' ' . '<a href="javascript:void(0);" class="button-primary" onclick="' . 'wpcfCbSaveEmptyMigrate(jQuery(this).parent().parent().parent(), \'' . sanitize_text_field($_GET['field']) . '\', ' . count($posts) . ', \'' . wp_create_nonce('cb_save_empty_migrate') . '\', \''; $output .= $_GET['subaction'] == 'save_check' ? 'save' : 'do_not_save'; $output .= '\', \'' . $meta_type . '\');' . '">' . __('Update', 'wpcf') . '</a>' . '</p></div>'; } else { $output = '<div class="message updated"><p><em>' . $_txt_no_updates . '</em></p></div>'; } } else { if ($_GET['subaction'] == 'save' || $_GET['subaction'] == 'do_not_save') { if ($field['type'] == 'checkbox') { $posts = wpcf_admin_fields_checkbox_migrate_empty($field, $_GET['subaction']); } else { if ($field['type'] == 'checkboxes') { $posts = wpcf_admin_fields_checkboxes_migrate_empty($field, $_GET['subaction']); } } if (isset($posts['offset'])) { if (!isset($_GET['total'])) { $output = '<span style="color:red;">' . __('Error occured', 'wpcf') . '</div>'; } else { $output = '<script type="text/javascript">wpcfCbMigrateStep(' . intval($_GET['total']) . ',' . $posts['offset'] . ',' . '\'' . sanitize_text_field($_GET['field']) . '\',' . '\'' . wp_create_nonce('cb_save_empty_migrate') . '\', \'' . $meta_type . '\');</script>' . number_format($posts['offset']) . '/' . number_format(intval($_GET['total'])) . '<div class="wpcf-ajax-loading-small"></div>'; } } else { $output = sprintf('<div class="message updated"><p>%s</p></div>', $_txt_updated); } } } } } echo json_encode(array('output' => $output)); break; default: break; } die; }
/** * All AJAX calls go here. */ function wpcf_ajax() { if (!current_user_can('manage_options') || (!isset($_REQUEST['_wpnonce']) || !wp_verify_nonce($_REQUEST['_wpnonce'], $_REQUEST['wpcf_action']))) { die; } switch ($_REQUEST['wpcf_action']) { /* User meta actions*/ case 'user_fields_control_bulk': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-control.php'; require_once WPCF_INC_ABSPATH . '/usermeta-control.php'; wpcf_admin_user_fields_control_bulk_ajax(); break; case 'usermeta_delete': case 'delete_usermeta': require_once WPCF_INC_ABSPATH . '/fields.php'; if (isset($_GET['field_id'])) { wpcf_admin_fields_delete_field($_GET['field_id'], 'wp-types-user-group', 'wpcf-usermeta'); } if (isset($_GET['field'])) { wpcf_admin_fields_delete_field($_GET['field'], 'wp-types-user-group', 'wpcf-usermeta'); } echo json_encode(array('output' => '')); break; case 'remove_from_history2': require_once WPCF_INC_ABSPATH . '/fields.php'; $fields = wpcf_admin_fields_get_fields(true, true, false, 'wpcf-usermeta'); if (isset($_GET['field_id']) && isset($fields[$_GET['field_id']])) { $fields[$_GET['field_id']]['data']['removed_from_history'] = 1; wpcf_admin_fields_save_fields($fields, true, 'wpcf-usermeta'); } echo json_encode(array('output' => '')); break; case 'deactivate_user_group': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/usermeta.php'; $success = wpcf_admin_fields_deactivate_group(intval($_GET['group_id']), 'wp-types-user-group'); if ($success) { echo json_encode(array('output' => __('Group deactivated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . intval($_GET['group_id']) . '").replaceWith(\'' . wpcf_admin_usermeta_get_ajax_activation_link(intval($_GET['group_id'])) . '\');jQuery(".wpcf-table-column-active-' . intval($_GET['group_id']) . '").html("' . __('No', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'activate_user_group': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/usermeta.php'; $success = wpcf_admin_fields_activate_group(intval($_GET['group_id']), 'wp-types-user-group'); if ($success) { echo json_encode(array('output' => __('Group activated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . intval($_GET['group_id']) . '").replaceWith(\'' . wpcf_admin_usermeta_get_ajax_deactivation_link(intval($_GET['group_id'])) . '\');jQuery(".wpcf-table-column-active-' . intval($_GET['group_id']) . '").html("' . __('Yes', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'delete_usermeta_group': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/usermeta.php'; wpcf_admin_fields_delete_group(intval($_GET['group_id']), 'wp-types-user-group'); echo json_encode(array('output' => '', 'execute' => 'jQuery("#wpcf-list-activate-' . intval($_GET['group_id']) . '").parents("tr").css("background-color", "#FF0000").fadeOut();', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'usermeta_insert_existing': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-form.php'; require_once WPCF_INC_ABSPATH . '/usermeta-form.php'; wpcf_usermeta_insert_existing_ajax(); wpcf_form_render_js_validation(); break; /* End Usertmeta actions*/ /* End Usertmeta actions*/ case 'fields_insert': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-form.php'; wpcf_fields_insert_ajax(); wpcf_form_render_js_validation(); break; case 'fields_insert_existing': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-form.php'; wpcf_fields_insert_existing_ajax(); wpcf_form_render_js_validation(); break; case 'remove_field_from_group': require_once WPCF_INC_ABSPATH . '/fields.php'; if (isset($_GET['group_id']) && isset($_GET['field_id'])) { wpcf_admin_fields_remove_field_from_group($_GET['group_id'], $_GET['field_id']); } break; case 'deactivate_group': require_once WPCF_INC_ABSPATH . '/fields.php'; $success = wpcf_admin_fields_deactivate_group(intval($_GET['group_id'])); if ($success) { echo json_encode(array('output' => __('Group deactivated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . intval($_GET['group_id']) . '").replaceWith(\'' . wpcf_admin_fields_get_ajax_activation_link(intval($_GET['group_id'])) . '\');jQuery(".wpcf-table-column-active-' . intval($_GET['group_id']) . '").html("' . __('No', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'activate_group': require_once WPCF_INC_ABSPATH . '/fields.php'; $success = wpcf_admin_fields_activate_group(intval($_GET['group_id'])); if ($success) { echo json_encode(array('output' => __('Group activated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . intval($_GET['group_id']) . '").replaceWith(\'' . wpcf_admin_fields_get_ajax_deactivation_link(intval($_GET['group_id'])) . '\');jQuery(".wpcf-table-column-active-' . intval($_GET['group_id']) . '").html("' . __('Yes', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'delete_group': require_once WPCF_INC_ABSPATH . '/fields.php'; wpcf_admin_fields_delete_group(intval($_GET['group_id'])); echo json_encode(array('output' => '', 'execute' => 'jQuery("#wpcf-list-activate-' . intval($_GET['group_id']) . '").parents("tr").css("background-color", "#FF0000").fadeOut();', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'deactivate_post_type': if (!isset($_GET['wpcf-post-type'])) { die; } require_once WPCF_INC_ABSPATH . '/custom-types.php'; $custom_types = get_option('wpcf-custom-types', array()); if (isset($custom_types[$_GET['wpcf-post-type']])) { $custom_types[$_GET['wpcf-post-type']]['disabled'] = 1; update_option('wpcf-custom-types', $custom_types); echo json_encode(array('output' => __('Post type deactivated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . $_GET['wpcf-post-type'] . '").replaceWith(\'' . wpcf_admin_custom_types_get_ajax_activation_link(esc_attr($_GET['wpcf-post-type'])) . '\');jQuery(".wpcf-table-column-active-' . $_GET['wpcf-post-type'] . '").html("' . __('No', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'activate_post_type': if (!isset($_GET['wpcf-post-type'])) { die; } require_once WPCF_INC_ABSPATH . '/custom-types.php'; $custom_types = get_option('wpcf-custom-types', array()); if (isset($custom_types[$_GET['wpcf-post-type']])) { $custom_types[$_GET['wpcf-post-type']]['disabled'] = 0; update_option('wpcf-custom-types', $custom_types); echo json_encode(array('output' => __('Post type activated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . $_GET['wpcf-post-type'] . '").replaceWith(\'' . wpcf_admin_custom_types_get_ajax_deactivation_link($_GET['wpcf-post-type']) . '\');jQuery(".wpcf-table-column-active-' . $_GET['wpcf-post-type'] . '").html("' . __('Yes', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'delete_post_type': if (!isset($_GET['wpcf-post-type'])) { die; } $custom_types = get_option('wpcf-custom-types', array()); $custom_type = strval($_GET['wpcf-post-type']); unset($custom_types[$custom_type]); /** * remove post relation */ foreach (array_keys($custom_types) as $post_type) { if (array_key_exists('post_relationship', $custom_types[$post_type])) { /** * remove "has" relation */ if (array_key_exists('has', $custom_types[$post_type]['post_relationship']) && array_key_exists($custom_type, $custom_types[$post_type]['post_relationship']['has'])) { unset($custom_types[$post_type]['post_relationship']['has'][$custom_type]); } /** * remove "belongs" relation */ if (array_key_exists('belongs', $custom_types[$post_type]['post_relationship']) && array_key_exists($custom_type, $custom_types[$post_type]['post_relationship']['belongs'])) { unset($custom_types[$post_type]['post_relationship']['belongs'][$custom_type]); } } } update_option('wpcf-custom-types', $custom_types); wpcf_admin_deactivate_content('post_type', $custom_type); echo json_encode(array('output' => '', 'execute' => 'jQuery("#wpcf-list-activate-' . $_GET['wpcf-post-type'] . '").parents("tr").css("background-color", "#FF0000").fadeOut();', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'deactivate_taxonomy': if (!isset($_GET['wpcf-tax'])) { die; } require_once WPCF_INC_ABSPATH . '/custom-taxonomies.php'; $custom_taxonomies = get_option('wpcf-custom-taxonomies', array()); if (isset($custom_taxonomies[$_GET['wpcf-tax']])) { $custom_taxonomies[$_GET['wpcf-tax']]['disabled'] = 1; update_option('wpcf-custom-taxonomies', $custom_taxonomies); echo json_encode(array('output' => __('Taxonomy deactivated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . $_GET['wpcf-tax'] . '").replaceWith(\'' . wpcf_admin_custom_taxonomies_get_ajax_activation_link($_GET['wpcf-tax']) . '\');jQuery(".wpcf-table-column-active-' . $_GET['wpcf-tax'] . '").html("' . __('No', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'activate_taxonomy': if (!isset($_GET['wpcf-tax'])) { die; } require_once WPCF_INC_ABSPATH . '/custom-taxonomies.php'; $custom_taxonomies = get_option('wpcf-custom-taxonomies', array()); if (isset($custom_taxonomies[$_GET['wpcf-tax']])) { $custom_taxonomies[$_GET['wpcf-tax']]['disabled'] = 0; update_option('wpcf-custom-taxonomies', $custom_taxonomies); echo json_encode(array('output' => __('Taxonomy activated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . $_GET['wpcf-tax'] . '").replaceWith(\'' . wpcf_admin_custom_taxonomies_get_ajax_deactivation_link($_GET['wpcf-tax']) . '\');jQuery(".wpcf-table-column-active-' . $_GET['wpcf-tax'] . '").html("' . __('Yes', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'delete_taxonomy': if (!isset($_GET['wpcf-tax'])) { die; } $custom_taxonomies = get_option('wpcf-custom-taxonomies', array()); $custom_taxonomy = strval($_GET['wpcf-tax']); unset($custom_taxonomies[$custom_taxonomy]); update_option('wpcf-custom-taxonomies', $custom_taxonomies); wpcf_admin_deactivate_content('taxonomy', $custom_taxonomy); echo json_encode(array('output' => '', 'execute' => 'jQuery("#wpcf-list-activate-' . $_GET['wpcf-tax'] . '").parents("tr").css("background-color", "#FF0000").fadeOut();', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'add_radio_option': require_once WPCF_INC_ABSPATH . '/fields/radio.php'; $element = wpcf_fields_radio_get_option(urldecode($_GET['parent_name'])); $id = array_shift($element); $element_txt = wpcf_fields_radio_get_option_alt_text($id, urldecode($_GET['parent_name'])); echo json_encode(array('output' => wpcf_form_simple($element), 'execute' => 'jQuery("#wpcf-form-groups-radio-ajax-response-' . urldecode($_GET['wpcf_ajax_update_add']) . '").append(\'' . trim(str_replace("\r\n", '', wpcf_form_simple($element_txt))) . '\');', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'add_select_option': require_once WPCF_INC_ABSPATH . '/fields/select.php'; $element = wpcf_fields_select_get_option(urldecode($_GET['parent_name'])); echo json_encode(array('output' => wpcf_form_simple($element))); break; case 'add_checkboxes_option': require_once WPCF_INC_ABSPATH . '/fields/checkboxes.php'; $element = wpcf_fields_checkboxes_get_option(urldecode($_GET['parent_name'])); $id = array_shift($element); $element_txt = wpcf_fields_checkboxes_get_option_alt_text($id, urldecode($_GET['parent_name'])); echo json_encode(array('output' => wpcf_form_simple($element), 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'group_form_collapsed': require_once WPCF_INC_ABSPATH . '/fields-form.php'; $group_id = $_GET['group_id']; $action = $_GET['toggle']; $fieldset = $_GET['id']; wpcf_admin_fields_form_save_open_fieldset($action, $fieldset, $group_id); break; case 'form_fieldset_toggle': $action = $_GET['toggle']; $fieldset = $_GET['id']; wpcf_admin_form_fieldset_save_toggle($action, $fieldset); break; case 'group_update_post_types': require_once WPCF_INC_ABSPATH . '/fields.php'; $post_types = empty($_GET['wpcf']['group']['supports']) ? array() : $_GET['wpcf']['group']['supports']; if (!empty($_GET['group_id'])) { wpcf_admin_fields_save_group_post_types($_GET['group_id'], $post_types); $output = array(); foreach ($post_types as $post_type) { $post_type = get_post_type_object($post_type); if (!empty($post_type->label)) { $output[] = $post_type->label; } } if (empty($post_types)) { $output[] = __('No post types associated', 'wpcf'); } $output = implode(', ', $output); } else { $output = __('No post types associated', 'wpcf'); } echo json_encode(array('output' => $output)); break; case 'group_update_taxonomies': require_once WPCF_INC_ABSPATH . '/fields.php'; $taxonomies_post = empty($_GET['wpcf']['group']['taxonomies']) ? array() : $_GET['wpcf']['group']['taxonomies']; $terms = array(); foreach ($taxonomies_post as $taxonomy) { foreach ($taxonomy as $tax => $term) { $terms[] = $term; } } if (!empty($_GET['group_id'])) { wpcf_admin_fields_save_group_terms($_GET['group_id'], $terms); $output = array(); foreach ($taxonomies_post as $taxonomy => $terms) { $taxonomy = get_taxonomy($taxonomy); if (!empty($taxonomy)) { $title = $taxonomy->label . ': '; foreach ($terms as $term_id) { $term = get_term($term_id, $taxonomy->name); $output[] = $title . $term->name; $title = ''; } } } if (empty($output)) { $output[] = __('No taxonomies associated', 'wpcf'); } $output = implode(', ', $output); } else { $output = __('No taxonomies associated', 'wpcf'); } echo json_encode(array('output' => $output)); break; case 'custom_fields_control_bulk': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-control.php'; wpcf_admin_custom_fields_control_bulk_ajax(); break; case 'fields_delete': case 'delete_field': require_once WPCF_INC_ABSPATH . '/fields.php'; if (isset($_GET['field_id'])) { wpcf_admin_fields_delete_field($_GET['field_id']); } if (isset($_GET['field'])) { wpcf_admin_fields_delete_field($_GET['field']); } echo json_encode(array('output' => '')); break; case 'remove_from_history': require_once WPCF_INC_ABSPATH . '/fields.php'; $fields = wpcf_admin_fields_get_fields(); if (isset($_GET['field_id']) && isset($fields[$_GET['field_id']])) { $fields[$_GET['field_id']]['data']['removed_from_history'] = 1; wpcf_admin_fields_save_fields($fields, true); } echo json_encode(array('output' => '')); break; case 'add_condition': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_ABSPATH . '/includes/conditional-display.php'; if (!empty($_GET['field']) || !empty($_GET['group'])) { $data = array(); if (isset($_GET['group'])) { $output = wpcf_form_simple(wpcf_cd_admin_form_single_filter(array(), array(), null, true)); echo json_encode(array('output' => $output)); } else { $data['id'] = str_replace('_conditional_display', '', $_GET['field']); $output = wpcf_form_simple(wpcf_cd_admin_form_single_filter($data, array(), null, false)); if (!empty($data['id'])) { echo json_encode(array('output' => $output)); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } } } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'pt_edit_fields': if (!empty($_GET['parent']) && !empty($_GET['child'])) { require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/post-relationship.php'; wpcf_pr_admin_edit_fields($_GET['parent'], $_GET['child']); } break; case 'toggle': $option = get_option('wpcf_toggle', array()); $hidden = isset($_GET['hidden']) ? (bool) $_GET['hidden'] : 1; $_GET['div'] = strval($_GET['div']); if (!$hidden) { unset($option[$_GET['div']]); } else { $option[$_GET['div']] = 1; } update_option('wpcf_toggle', $option); break; case 'cb_save_empty_migrate': $output = '<span style="color:red;">' . __('Wrong field specified', 'wpcf') . '</div>'; if (isset($_GET['field']) && isset($_GET['subaction'])) { require_once WPCF_INC_ABSPATH . '/fields.php'; $option = $_GET['meta_type'] == 'usermeta' ? 'wpcf-usermeta' : 'wpcf-fields'; $meta_type = $_GET['meta_type']; $field = wpcf_admin_fields_get_field($_GET['field'], false, false, false, $option); $_txt_updates = $meta_type == 'usermeta' ? __('%d users require update', 'wpcf') : __('%d posts require update', 'wpcf'); $_txt_no_updates = $meta_type == 'usermeta' ? __('No users require update', 'wpcf') : __('No posts require update', 'wpcf'); $_txt_updated = $meta_type == 'usermeta' ? __('Users updated', 'wpcf') : __('Posts updated', 'wpcf'); if (!empty($field)) { if ($_GET['subaction'] == 'save_check' || $_GET['subaction'] == 'do_not_save_check') { if ($field['type'] == 'checkbox') { $posts = wpcf_admin_fields_checkbox_migrate_empty_check($field, $_GET['subaction']); } else { if ($field['type'] == 'checkboxes') { $posts = wpcf_admin_fields_checkboxes_migrate_empty_check($field, $_GET['subaction']); } } if (!empty($posts)) { $output = '<div class="message updated"><p>' . sprintf($_txt_updates, count($posts)) . ' ' . '<a href="javascript:void(0);" class="button-primary" onclick="' . 'wpcfCbSaveEmptyMigrate(jQuery(this).parent().parent().parent(), \'' . $_GET['field'] . '\', ' . count($posts) . ', \'' . wp_create_nonce('cb_save_empty_migrate') . '\', \''; $output .= $_GET['subaction'] == 'save_check' ? 'save' : 'do_not_save'; $output .= '\', \'' . $meta_type . '\');' . '">' . __('Update') . '</a>' . '</p></div>'; } else { $output = '<div class="message updated"><p><em>' . $_txt_no_updates . '</em></p></div>'; } } else { if ($_GET['subaction'] == 'save' || $_GET['subaction'] == 'do_not_save') { if ($field['type'] == 'checkbox') { $posts = wpcf_admin_fields_checkbox_migrate_empty($field, $_GET['subaction']); } else { if ($field['type'] == 'checkboxes') { $posts = wpcf_admin_fields_checkboxes_migrate_empty($field, $_GET['subaction']); } } if (isset($posts['offset'])) { if (!isset($_GET['total'])) { $output = '<span style="color:red;">' . __('Error occured', 'wpcf') . '</div>'; } else { $output = '<script type="text/javascript">wpcfCbMigrateStep(' . intval($_GET['total']) . ',' . $posts['offset'] . ',' . '\'' . $_GET['field'] . '\',' . '\'' . wp_create_nonce('cb_save_empty_migrate') . '\', \'' . $meta_type . '\');</script>' . number_format($posts['offset']) . '/' . number_format(intval($_GET['total'])) . '<div class="wpcf-ajax-loading-small"></div>'; } } else { $output = '<div class="message updated"><p>' . $_txt_updated . '</p></div>'; } } } } } echo json_encode(array('output' => $output)); break; default: break; } die; }
/** * All AJAX calls go here. */ function wpcf_ajax() { if (!current_user_can('manage_options') || (!isset($_REQUEST['_wpnonce']) || !wp_verify_nonce($_REQUEST['_wpnonce'], $_REQUEST['wpcf_action']))) { die; } switch ($_REQUEST['wpcf_action']) { case 'fields_insert': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-form.php'; wpcf_fields_insert_ajax(); wpcf_form_render_js_validation(); break; case 'fields_insert_existing': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-form.php'; wpcf_fields_insert_existing_ajax(); wpcf_form_render_js_validation(); break; case 'remove_field_from_group': require_once WPCF_INC_ABSPATH . '/fields.php'; if (isset($_GET['group_id']) && isset($_GET['field_id'])) { wpcf_admin_fields_remove_field_from_group($_GET['group_id'], $_GET['field_id']); } break; case 'deactivate_group': require_once WPCF_INC_ABSPATH . '/fields.php'; $success = wpcf_admin_fields_deactivate_group(intval($_GET['group_id'])); if ($success) { echo json_encode(array('output' => __('Group deactivated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . intval($_GET['group_id']) . '").replaceWith(\'' . wpcf_admin_fields_get_ajax_activation_link(intval($_GET['group_id'])) . '\');jQuery(".wpcf-table-column-active-' . intval($_GET['group_id']) . '").html("' . __('No', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'activate_group': require_once WPCF_INC_ABSPATH . '/fields.php'; $success = wpcf_admin_fields_activate_group(intval($_GET['group_id'])); if ($success) { echo json_encode(array('output' => __('Group activated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . intval($_GET['group_id']) . '").replaceWith(\'' . wpcf_admin_fields_get_ajax_deactivation_link(intval($_GET['group_id'])) . '\');jQuery(".wpcf-table-column-active-' . intval($_GET['group_id']) . '").html("' . __('Yes', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'delete_group': require_once WPCF_INC_ABSPATH . '/fields.php'; wpcf_admin_fields_delete_group(intval($_GET['group_id'])); echo json_encode(array('output' => '', 'execute' => 'jQuery("#wpcf-list-activate-' . intval($_GET['group_id']) . '").parents("tr").css("background-color", "#FF0000").fadeOut();', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'deactivate_post_type': if (!isset($_GET['wpcf-post-type'])) { die; } require_once WPCF_INC_ABSPATH . '/custom-types.php'; $custom_types = get_option('wpcf-custom-types', array()); if (isset($custom_types[$_GET['wpcf-post-type']])) { $custom_types[$_GET['wpcf-post-type']]['disabled'] = 1; update_option('wpcf-custom-types', $custom_types); echo json_encode(array('output' => __('Post type deactivated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . $_GET['wpcf-post-type'] . '").replaceWith(\'' . wpcf_admin_custom_types_get_ajax_activation_link(esc_attr($_GET['wpcf-post-type'])) . '\');jQuery(".wpcf-table-column-active-' . $_GET['wpcf-post-type'] . '").html("' . __('No', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'activate_post_type': if (!isset($_GET['wpcf-post-type'])) { die; } require_once WPCF_INC_ABSPATH . '/custom-types.php'; $custom_types = get_option('wpcf-custom-types', array()); if (isset($custom_types[$_GET['wpcf-post-type']])) { $custom_types[$_GET['wpcf-post-type']]['disabled'] = 0; update_option('wpcf-custom-types', $custom_types); echo json_encode(array('output' => __('Post type activated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . $_GET['wpcf-post-type'] . '").replaceWith(\'' . wpcf_admin_custom_types_get_ajax_deactivation_link($_GET['wpcf-post-type']) . '\');jQuery(".wpcf-table-column-active-' . $_GET['wpcf-post-type'] . '").html("' . __('Yes', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'delete_post_type': if (!isset($_GET['wpcf-post-type'])) { die; } $custom_types = get_option('wpcf-custom-types', array()); $custom_type = strval($_GET['wpcf-post-type']); unset($custom_types[$custom_type]); update_option('wpcf-custom-types', $custom_types); wpcf_admin_deactivate_content('post_type', $custom_type); echo json_encode(array('output' => '', 'execute' => 'jQuery("#wpcf-list-activate-' . $_GET['wpcf-post-type'] . '").parents("tr").css("background-color", "#FF0000").fadeOut();', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'deactivate_taxonomy': if (!isset($_GET['wpcf-tax'])) { die; } require_once WPCF_INC_ABSPATH . '/custom-taxonomies.php'; $custom_taxonomies = get_option('wpcf-custom-taxonomies', array()); if (isset($custom_taxonomies[$_GET['wpcf-tax']])) { $custom_taxonomies[$_GET['wpcf-tax']]['disabled'] = 1; update_option('wpcf-custom-taxonomies', $custom_taxonomies); echo json_encode(array('output' => __('Taxonomy deactivated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . $_GET['wpcf-tax'] . '").replaceWith(\'' . wpcf_admin_custom_taxonomies_get_ajax_activation_link($_GET['wpcf-tax']) . '\');jQuery(".wpcf-table-column-active-' . $_GET['wpcf-tax'] . '").html("' . __('No', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'activate_taxonomy': if (!isset($_GET['wpcf-tax'])) { die; } require_once WPCF_INC_ABSPATH . '/custom-taxonomies.php'; $custom_taxonomies = get_option('wpcf-custom-taxonomies', array()); if (isset($custom_taxonomies[$_GET['wpcf-tax']])) { $custom_taxonomies[$_GET['wpcf-tax']]['disabled'] = 0; update_option('wpcf-custom-taxonomies', $custom_taxonomies); echo json_encode(array('output' => __('Taxonomy activated', 'wpcf'), 'execute' => 'jQuery("#wpcf-list-activate-' . $_GET['wpcf-tax'] . '").replaceWith(\'' . wpcf_admin_custom_taxonomies_get_ajax_deactivation_link($_GET['wpcf-tax']) . '\');jQuery(".wpcf-table-column-active-' . $_GET['wpcf-tax'] . '").html("' . __('Yes', 'wpcf') . '");', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); } else { echo json_encode(array('output' => __('Error occured', 'wpcf'))); } break; case 'delete_taxonomy': if (!isset($_GET['wpcf-tax'])) { die; } $custom_taxonomies = get_option('wpcf-custom-taxonomies', array()); $custom_taxonomy = strval($_GET['wpcf-tax']); unset($custom_taxonomies[$custom_taxonomy]); update_option('wpcf-custom-taxonomies', $custom_taxonomies); wpcf_admin_deactivate_content('taxonomy', $custom_taxonomy); echo json_encode(array('output' => '', 'execute' => 'jQuery("#wpcf-list-activate-' . $_GET['wpcf-tax'] . '").parents("tr").css("background-color", "#FF0000").fadeOut();', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'add_radio_option': require_once WPCF_INC_ABSPATH . '/fields/radio.php'; $element = wpcf_fields_radio_get_option(urldecode($_GET['parent_name'])); $id = array_shift($element); $element_txt = wpcf_fields_radio_get_option_alt_text($id, urldecode($_GET['parent_name'])); echo json_encode(array('output' => wpcf_form_simple($element), 'execute' => 'jQuery("#wpcf-form-groups-radio-ajax-response-' . urldecode($_GET['wpcf_ajax_update_add']) . '").append(\'' . trim(str_replace("\r\n", '', wpcf_form_simple($element_txt))) . '\');', 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'add_select_option': require_once WPCF_INC_ABSPATH . '/fields/select.php'; $element = wpcf_fields_select_get_option(urldecode($_GET['parent_name'])); echo json_encode(array('output' => wpcf_form_simple($element))); break; case 'add_checkboxes_option': require_once WPCF_INC_ABSPATH . '/fields/checkboxes.php'; $element = wpcf_fields_checkboxes_get_option(urldecode($_GET['parent_name'])); $id = array_shift($element); $element_txt = wpcf_fields_checkboxes_get_option_alt_text($id, urldecode($_GET['parent_name'])); echo json_encode(array('output' => wpcf_form_simple($element), 'wpcf_nonce_ajax_callback' => wp_create_nonce('execute'))); break; case 'group_form_collapsed': require_once WPCF_INC_ABSPATH . '/fields-form.php'; $group_id = $_GET['group_id']; $action = $_GET['toggle']; $fieldset = $_GET['id']; wpcf_admin_fields_form_save_open_fieldset($action, $fieldset, $group_id); break; case 'form_fieldset_toggle': $action = $_GET['toggle']; $fieldset = $_GET['id']; wpcf_admin_form_fieldset_save_toggle($action, $fieldset); break; case 'group_update_post_types': require_once WPCF_INC_ABSPATH . '/fields.php'; $post_types = empty($_GET['wpcf']['group']['supports']) ? array() : $_GET['wpcf']['group']['supports']; if (!empty($_GET['group_id'])) { wpcf_admin_fields_save_group_post_types($_GET['group_id'], $post_types); $output = array(); foreach ($post_types as $post_type) { $post_type = get_post_type_object($post_type); if (!empty($post_type->label)) { $output[] = $post_type->label; } } if (empty($post_types)) { $output[] = __('No post types associated', 'wpcf'); } $output = implode(', ', $output); } else { $output = __('No post types associated', 'wpcf'); } echo json_encode(array('output' => $output)); break; case 'group_update_taxonomies': require_once WPCF_INC_ABSPATH . '/fields.php'; $taxonomies_post = empty($_GET['wpcf']['group']['taxonomies']) ? array() : $_GET['wpcf']['group']['taxonomies']; $terms = array(); foreach ($taxonomies_post as $taxonomy) { foreach ($taxonomy as $tax => $term) { $terms[] = $term; } } if (!empty($_GET['group_id'])) { wpcf_admin_fields_save_group_terms($_GET['group_id'], $terms); $output = array(); foreach ($taxonomies_post as $taxonomy => $terms) { $taxonomy = get_taxonomy($taxonomy); if (!empty($taxonomy)) { $title = $taxonomy->label . ': '; foreach ($terms as $term_id) { $term = get_term($term_id, $taxonomy->name); $output[] = $title . $term->name; $title = ''; } } } if (empty($output)) { $output[] = __('No taxonomies associated', 'wpcf'); } $output = implode(', ', $output); } else { $output = __('No taxonomies associated', 'wpcf'); } echo json_encode(array('output' => $output)); break; case 'custom_fields_control_bulk': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/fields-control.php'; wpcf_admin_custom_fields_control_bulk_ajax(); break; case 'fields_delete': case 'delete_field': require_once WPCF_INC_ABSPATH . '/fields.php'; if (isset($_GET['field_id'])) { wpcf_admin_fields_delete_field($_GET['field_id']); } if (isset($_GET['field'])) { wpcf_admin_fields_delete_field($_GET['field']); } echo json_encode(array('output' => '')); break; case 'remove_from_history': require_once WPCF_INC_ABSPATH . '/fields.php'; $fields = wpcf_admin_fields_get_fields(); if (isset($_GET['field_id']) && isset($fields[$_GET['field_id']])) { $fields[$_GET['field_id']]['data']['removed_from_history'] = 1; wpcf_admin_fields_save_fields($fields, true); } echo json_encode(array('output' => '')); break; case 'add_condition': require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_ABSPATH . '/includes/conditional-display.php'; if (!empty($_GET['field']) || !empty($_GET['group'])) { $data = array(); if (isset($_GET['group'])) { $output = wpcf_form_simple(wpcf_cd_admin_form_single_filter(array(), array(), null, true)); echo json_encode(array('output' => $output)); } else { $data['id'] = str_replace('_conditional_display', '', $_GET['field']); $output = wpcf_form_simple(wpcf_cd_admin_form_single_filter($data, array(), null, false)); if (!empty($data['id'])) { echo json_encode(array('output' => $output)); } else { echo json_encode(array('output' => __('Error occured'))); } } } else { echo json_encode(array('output' => __('Error occured'))); } break; case 'pt_edit_fields': if (!empty($_GET['parent']) && !empty($_GET['child'])) { require_once WPCF_INC_ABSPATH . '/fields.php'; require_once WPCF_INC_ABSPATH . '/post-relationship.php'; wpcf_pr_admin_edit_fields($_GET['parent'], $_GET['child']); } break; case 'toggle': $option = get_option('wpcf_toggle', array()); $hidden = isset($_GET['hidden']) ? (bool) $_GET['hidden'] : 1; $_GET['div'] = strval($_GET['div']); if (!$hidden) { unset($option[$_GET['div']]); } else { $option[$_GET['div']] = 1; } update_option('wpcf_toggle', $option); break; case 'footer_credits': require_once WPCF_EMBEDDED_INC_ABSPATH . '/footer-credit.php'; wpcf_footer_credit_settings(); break; default: break; } die; }