/** * Filters groups on post edit page. * * @param type $groups * @param type $post * @return type */ function wpcf_cd_post_groups_filter($groups, $post, $context) { if ($context != 'group') { return $groups; } foreach ($groups as $key => &$group) { $conditions = null; if (array_key_exists('conditional_display', $group) && array_key_exists('conditions', $group['conditional_display'])) { $conditions = $group['conditional_display']; } else { $conditions = get_post_meta($group['id'], '_wpcf_conditional_display', true); } if (!empty($conditions['conditions'])) { $meta_box_id = "wpcf-group-{$group['slug']}"; $prefix = 'wpcf-'; $suffix = ''; $cond = array(); if (isset($post->ID)) { $cond_values = get_post_custom($post->ID); } else { $cond_values = array(); } $_cond_values = array(); foreach ($cond_values as $k => $v) { $v = maybe_unserialize($v[0]); $_cond_values[$k . $suffix] = is_array($v) ? strval(array_shift($v)) : $v; } unset($cond_values); $cond = array(); if (!empty($conditions['custom_use'])) { if (!empty($conditions['custom'])) { $custom = WPToolset_Types::getCustomConditional($conditions['custom']); $passed = WPToolset_Forms_Conditional::evaluateCustom($custom['custom'], $_cond_values); $cond = array('custom' => $custom['custom'], 'custom_use' => true); } } else { $cond = array('relation' => $conditions['relation'], 'conditions' => array(), 'values' => $_cond_values); foreach ($conditions['conditions'] as $d) { $c_field = types_get_field($d['field']); if (!empty($c_field)) { $_c = array('id' => wpcf_types_get_meta_prefix($c_field) . $d['field'] . $suffix, 'type' => $c_field['type'], 'operator' => $d['operation'], 'args' => array($d['value'])); $cond['conditions'][] = $_c; } } $passed = wptoolset_form_conditional_check(array('conditional' => $cond)); } $data = array('id' => $meta_box_id, 'conditional' => $cond); wptoolset_form_add_conditional('post', $data); if (!$passed) { $group['_conditional_display'] = 'failed'; } else { $group['_conditional_display'] = 'passed'; } } } return $groups; }
public function cred_conditional_shortcodes($atts, $content = '') { static $condition_id = 0; shortcode_atts(array('if' => '', 'mode' => 'fade-slide'), $atts); //); if (empty($atts['if']) || !isset($content) || empty($content)) { return ''; } // ignore if (defined('WPTOOLSET_FORMS_VERSION')) { $form =& $this->_formData; $shortcodeParser = $this->_shortcodeParser; ++$condition_id; require_once WPTOOLSET_FORMS_ABSPATH . '/classes/class.cred.php'; $conditional = WPToolset_Cred::filterConditional($atts['if'], $this->_post_ID); $id = $form->getForm()->ID . '_condition_' . $condition_id; $config = array('id' => $id, 'conditional' => $conditional); $passed = wptoolset_form_conditional_check($config); wptoolset_form_add_conditional($this->form_id, $config); $style = $passed ? "" : " style='display:none;'"; $effect = ''; if (isset($atts['mode'])) { $effect = " data-effectmode='" . esc_attr($atts['mode']) . "'"; } $html = "<div class='cred-group {$id}'{$style}{$effect}>"; $html .= $content; $html .= "</div>"; return $html; } return ''; /* $out_=&$this->out_; $zebraForm=$this->_zebraForm; // render conditional group $group=$this->add_conditional_group( $form->form->ID.'_condition_'.$condition_id ); // add child groups from prev level if ($shortcodeParser->depth>0 && isset($shortcodeParser->child_groups[$shortcodeParser->depth-1])) { foreach ($out_['child_groups'][$shortcodeParser->depth-1] as $child_group) $group->addControl($child_group); } // add this group to child groups for next level if (!isset($out_['child_groups'][$shortcodeParser->depth])) $out_['child_groups'][$shortcodeParser->depth]=array(); $out_['child_groups'][$shortcodeParser->depth][]=$group; // render conditional groups hierarchically if (null!==$out_['current_group']) $out_['current_group']->addControl($group); $prev_group=$out_['current_group']; $out_['current_group']=$group; $content=$shortcodeParser->do_shortcode($content); $out_['current_group']=$prev_group; // process this later, before render $condition=array( 'id'=>$group->attributes['id'], 'container_id'=>$group->attributes['id'], 'condition' => $atts['if'], 'replaced_condition'=>'', 'mode' => isset($atts['mode'])?$atts['mode']:'fade-slide', 'valid'=>false, 'var_field_map'=>array() ); $out_['conditionals'][$group->attributes['id']]=$condition; return $group->render($content); */ }