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']); }
/** * 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 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; }
public function conditional($config, $values = array()) { require_once WPTOOLSET_FORMS_ABSPATH . '/classes/class.conditional.php'; return WPToolset_Forms_Conditional::evaluate($config, $values); }