/** * 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_save() { /** * check nonce */ if (false || !isset($_REQUEST['_wpnonce']) || !isset($_REQUEST['id']) || !isset($_REQUEST['group_id']) || !isset($_REQUEST['meta_type']) || !isset($_REQUEST['conditions']) || !isset($_REQUEST['group_conditions']) || !wp_verify_nonce($_REQUEST['_wpnonce'], $this->get_nonce('wpcf-conditional-apply', $_REQUEST['group_id']))) { $this->verification_failed_and_die(); } $id = $_REQUEST['id']; $group_conditions = $_REQUEST['group_conditions'] == 1 ? true : false; $conditions_set = false; $conditions = array(); parse_str($_REQUEST['conditions'], $conditions); // group conditions if ($group_conditions) { $id = $_REQUEST['group_id']; if (isset($conditions['wpcf']['group']['conditional_display']['conditions'])) { $conditions_set = $conditions['wpcf']['group']['conditional_display']['conditions']; } // single field conditions } elseif (isset($conditions['wpcf']['fields'][$id]['conditional_display']['conditions'])) { $conditions_set = $conditions['wpcf']['fields'][$id]['conditional_display']['conditions']; } // update condtions if ($conditions_set) { // filter unfilled fields $conditions_to_save = array(); foreach ($conditions_set as $key => $one) { if (empty($one['field'])) { continue; } $conditions_to_save[$key] = $one; } $this->update_conditions($id, $_REQUEST['meta_type'], array('relation' => isset($conditions['relation']) ? $conditions['relation'] : 'AND', 'conditions' => $conditions_to_save, 'custom' => isset($conditions['custom']) ? $conditions['custom'] : '', 'custom_use' => isset($conditions['custom_use']) ? intval($conditions['custom_use']) : 0), $group_conditions); } else { $this->remove_conditions($id, $group_conditions); die(''); } $field = $group_conditions ? array('data' => array('conditional_display' => get_post_meta($id, '_wpcf_conditional_display', true))) : wpcf_admin_fields_get_field(sanitize_text_field($_REQUEST['id']), false, true); require_once WPCF_ABSPATH . '/includes/conditional-display.php'; echo wpcf_conditional_get_curent($field); die; }
/** * Conditional display form. * * @param array $form form data * @param array $data * @param bool|mixed $group * * @return array */ function wpcf_cd_admin_form_filter($form, $data, $group = false) { $meta_type = isset($data['meta_type']) ? $data['meta_type'] : 'postmeta'; if ($group) { $name = 'wpcf[group][conditional_display]'; } else { $name = 'wpcf[fields][' . $data['id'] . '][conditional_display]'; } // 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 = false; if (true && 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 = true; } if ($group) { $form['group-open'] = array('#type' => 'markup', '#markup' => '<div class="wpcf-filter-container js-wpcf-filter-container">'); } /** * custom use */ $form['cd-custom_use'] = array('#type' => 'hidden', '#name' => 'custom_use', '#default_value' => isset($data['data']['conditional_display']['custom_use']), '#attributes' => array('class' => 'conditional-display-custom-use', 'wpcf-field' => '#form', 'wpcf-field-name' => 'custom_use'), '#value' => $use_custom_logic); if ($group) { $form['cd-open'] = array('#type' => 'markup', '#markup' => sprintf('<h3>%s</h3>', __('Data-dependent display filters', 'wpcf'))); $form['cd-open-description'] = array('#type' => 'markup', '#markup' => sprintf('<p class="description">%s</p>', __('Specify additional filters that control this Field Group\'s display, based on values of Post Fields.', 'wpcf'))); } else { // We will display a message that this functionality is not supported. switch ($meta_type) { case 'usermeta': $message = __('Conditional display is not supported for User fields.', 'wpcf'); break; case 'termmeta': $message = __('Conditional display is not supported for Term fields.', 'wpcf'); break; default: $message = ''; break; } $form['cd-open'] = array('#type' => 'markup', '#title' => __('Conditional display', 'wpcf'), '#markup' => $message, '#inline' => true, '#pattern' => '<tr class="wpcf-border-top"><td><LABEL></td><td><ERROR><BEFORE><ELEMENT><AFTER>'); } $current = wpcf_conditional_get_curent($data); if (empty($current) && !isset($data['id'])) { $form['alert'] = array('#type' => 'notice', '#markup' => __('Please save first, before you can edit the conditional display.', 'wpcf')); } else { $add_edit_condition_button = false; $action = $nonce = ''; $classes = array('js-wpcf-condition-button-edit'); switch ($meta_type) { case 'postmeta': $action = 'wpcf_edit_field_condition_get'; $nonce = wp_create_nonce('wpcf-conditional-get-' . $data['id']); $add_edit_condition_button = true; break; case 'custom_fields_group': $action = 'wpcf_edit_custom_field_group_get'; $nonce = wp_create_nonce('wpcf-conditional-get-' . $data['group_id']); $add_edit_condition_button = true; $classes[] = 'alignright'; break; } if ($add_edit_condition_button) { $form['cd-button'] = array('#name' => 'cd-button', '#type' => 'button', '#before' => sprintf('<span class="js-wpcf-condition-preview">%s</span><span class="js-wpcf-condition-data"></span>', $current), '#value' => empty($current) ? __('Set condition(s)', 'wpcf') : __('Edit condition(s)', 'wpcf'), '#attributes' => array('class' => implode(' ', $classes), 'data-wpcf-meta-type' => $meta_type, 'data-wpcf-action' => $action, 'data-wpcf-id' => $data['id'], 'data-wpcf-group-id' => isset($data['group_id']) ? $data['group_id'] : 0, 'data-wpcf-group' => $group, 'data-wpcf-nonce' => $nonce, 'data-wpcf-buttons-apply-nonce' => wp_create_nonce('wpcf-conditional-apply-' . $data['group_id']), 'data-wpcf-buttons-apply' => esc_attr__('Apply', 'wpcf'), 'data-wpcf-buttons-cancel' => esc_attr__('Cancel', 'wpcf'), 'data-wpcf-dialog-title' => esc_attr__('Data-dependent display filters', 'wpcf'), 'data-wpcf-message-loading' => esc_attr__('Please Wait, Loading…', 'wpcf'), 'data-wpcf-label-set-conditions' => __('Set condition(s)', 'wpcf'), 'data-wpcf-label-edit-condition' => __('Edit condition(s)', 'wpcf'))); } } if ($group) { $form['cd-close'] = array('#type' => 'markup', '#markup' => '</div>'); } else { $form['cd-close'] = array('#type' => 'markup', '#markup' => '', '#inline' => true, '#pattern' => '</td></tr>'); } return $form; }