You are here

function _webform_conditional_find_start in Webform 7.4

Helper. Find the matching start or end of a given subconditional.

See also

_webform_conditional_find_end()

1 call to _webform_conditional_find_start()
webform_conditional_element_add in includes/webform.conditionals.inc
Submit handler for webform_conditional elements to add a new rule or action.

File

includes/webform.conditionals.inc, line 707
Form elements and menu callbacks to provide conditional handling in Webform.

Code

function _webform_conditional_find_start($rules, $origin_rid, $target_delta_level = 0) {
  $rids = array_keys($rules);
  $offset = array_search($origin_rid, $rids);
  $delta_level = 0;
  foreach (array_reverse(array_slice($rules, 0, $offset + 1, TRUE), TRUE) as $rid => $conditional) {
    switch ($conditional['source_type']) {
      case 'conditional_end':
        $delta_level++;
        break;
      case 'conditional_start':
        $delta_level--;
        break;
    }
    if ($delta_level == $target_delta_level) {
      return $rid;
    }
  }

  // Mis-matched conditional_start / _end. Return -1.
  return -1;
}