private function wf_crm_admin_form::addConditionalRule in Webform CiviCRM Integration 7.4
Same name and namespace in other branches
- 7.5 includes/wf_crm_admin_form.inc \wf_crm_admin_form::addConditionalRule()
Create a conditional rule if the source and target fields both exist. TODO: This is fairly minimal. It doesn't check if the rule already exists, and doesn't work if both fields haven't been created yet.
Parameters
array $field:
array $enabled:
1 call to wf_crm_admin_form::addConditionalRule()
- wf_crm_admin_form::postProcess in includes/
wf_crm_admin_form.inc - Submission handler, saves CiviCRM options for a Webform node
File
- includes/
wf_crm_admin_form.inc, line 1756 - Webform CiviCRM module's admin form.
Class
- wf_crm_admin_form
- @file Webform CiviCRM module's admin form.
Code
private function addConditionalRule($field, $enabled) {
list(, $c, $ent, $n, $table, $name) = explode('_', $field['form_key'], 6);
$rgid = $weight = -1;
foreach ($this->node->webform['conditionals'] as $rgid => $existing) {
$weight = $existing['weight'];
}
$rgid++;
$rule_group = $field['civicrm_condition'] + array(
'nid' => $this->node->nid,
'rgid' => $rgid,
'weight' => $weight,
'actions' => array(
array(
'target' => $enabled[$field['form_key']],
'target_type' => 'component',
'action' => $field['civicrm_condition']['action'],
),
),
);
$rule_group['rules'] = array();
foreach ($field['civicrm_condition']['rules'] as $source => $condition) {
$source_key = "civicrm_{$c}_{$ent}_{$n}_{$source}";
$source_id = wf_crm_aval($enabled, $source_key);
if ($source_id) {
$options = wf_crm_field_options(array(
'form_key' => $source_key,
), '', $this->settings['data']);
foreach ((array) $condition['values'] as $value) {
if (isset($options[$value])) {
$rule_group['rules'][] = array(
'source_type' => 'component',
'source' => $source_id,
'operator' => wf_crm_aval($condition, 'operator', 'equal'),
'value' => $value,
);
}
}
}
}
if ($rule_group['rules']) {
$this->node->webform['conditionals'][] = $rule_group;
module_load_include('inc', 'webform', 'includes/webform.conditionals');
webform_conditional_insert($rule_group);
}
}