Exemplo n.º 1
0
 public function checkConditional($config)
 {
     if (empty($config['conditional'])) {
         return true;
     }
     require_once WPTOOLSET_FORMS_ABSPATH . '/classes/class.conditional.php';
     return WPToolset_Forms_Conditional::evaluate($config['conditional']);
 }
Exemplo n.º 2
0
/**
 * 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;
}
Exemplo n.º 3
0
 public static function getCustomConditional($custom, $suffix = '', $cond_values = array())
 {
     $c_fields = WPToolset_Forms_Conditional::extractFields($custom);
     $c_values = array();
     // Loop over extracted fields and adjust custom statement
     foreach ($c_fields as $c_field_id) {
         // Get field settings
         $c_field = self::getConfig($c_field_id);
         // If it's Types field
         if (!empty($c_field)) {
             // Adjust custom statement
             $custom = preg_replace('/\\$\\(' . $c_field_id . '\\)/', "\$({$c_field['meta_key']}{$suffix})", $custom);
             $custom = preg_replace('/\\$' . $c_field_id . '[\\s\\)]/', "\${$c_field['meta_key']}{$suffix} ", $custom);
             // Apply filters from field (that is why we set 'type' property)
             wptoolset_form_field_add_filters($c_field['type']);
             $c_key = $c_field['meta_key'];
             if (isset($cond_values[$c_key])) {
                 $c_values[$c_key . $suffix] = apply_filters('wptoolset_conditional_value_php', $cond_values[$c_key], $c_field['type']);
             }
             // Otherwise do nothing (leave statement as it is and just add [values])
             // That allows checking for non-Types field
         } elseif (isset($cond_values[$c_field_id])) {
             $c_values[$c_field_id . $suffix] = $cond_values[$c_field_id];
         }
     }
     // Set conditional setting
     $cond = array('custom' => $custom, 'values' => $c_values);
     return $cond;
 }
Exemplo n.º 4
0
 public function conditional($config, $values = array())
 {
     require_once WPTOOLSET_FORMS_ABSPATH . '/classes/class.conditional.php';
     return WPToolset_Forms_Conditional::evaluate($config, $values);
 }