/**
 * 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;
}
Example #2
0
 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); */
 }