public static function is_field_hidden($field, $values) { global $frm_field; $field->field_options = maybe_unserialize($field->field_options); if ($field->type == 'user_id' or $field->type == 'hidden') { return false; } if (!isset($field->field_options['hide_field']) or empty($field->field_options['hide_field'])) { return false; } //TODO: check if field is included in conditional heading $field->field_options['hide_field'] = (array) $field->field_options['hide_field']; if (!isset($field->field_options['hide_field_cond'])) { $field->field_options['hide_field_cond'] = array('=='); } $field->field_options['hide_field_cond'] = (array) $field->field_options['hide_field_cond']; $field->field_options['hide_opt'] = (array) $field->field_options['hide_opt']; if (!isset($field->field_options['show_hide'])) { $field->field_options['show_hide'] = 'show'; } if (!isset($field->field_options['any_all'])) { $field->field_options['any_all'] = 'any'; } $hidden = false; $hide = array(); foreach ($field->field_options['hide_field'] as $hide_key => $hide_field) { if ($hidden and $field->field_options['any_all'] == 'any' and $field->field_options['show_hide'] == 'hide') { continue; } $observed_value = isset($values['item_meta'][$hide_field]) ? $values['item_meta'][$hide_field] : ''; if ($field->type == 'data' and empty($field->field_options['hide_opt'][$hide_key]) and (is_numeric($observed_value) or is_array($observed_value))) { $observed_field = $frm_field->getOne($hide_field); if ($observed_field->type == 'data') { $field->field_options['hide_opt'][$hide_key] = $observed_value; } unset($observed_field); } $hidden = FrmProFieldsHelper::value_meets_condition($observed_value, $field->field_options['hide_field_cond'][$hide_key], $field->field_options['hide_opt'][$hide_key]); if ($field->field_options['show_hide'] == 'show') { $hidden = $hidden ? false : true; } $hide[$hidden] = $hidden; } if ($field->field_options['any_all'] == 'all' and !empty($hide) and isset($hide[0]) and isset($hide[1])) { $hidden = $field->field_options['show_hide'] == 'show' ? true : false; } else { if ($field->field_options['any_all'] == 'any' and $field->field_options['show_hide'] == 'show' and isset($hide[0])) { $hidden = false; } } return $hidden; }
private static function conditions_met($notification, $entry) { $stop = false; $met = array(); if (!isset($notification['conditions']) or empty($notification['conditions'])) { return $stop; } foreach ($notification['conditions'] as $k => $condition) { if (!is_numeric($k)) { continue; } if ($stop and $notification['conditions']['any_all'] == 'any' and $notification['conditions']['send_stop'] == 'stop') { continue; } if (is_array($condition['hide_opt'])) { $condition['hide_opt'] = reset($condition['hide_opt']); } $observed_value = isset($entry->metas[$condition['hide_field']]) ? $entry->metas[$condition['hide_field']] : ''; if ($condition['hide_opt'] == 'current_user') { $condition['hide_opt'] = get_current_user_id(); } $stop = FrmProFieldsHelper::value_meets_condition($observed_value, $condition['hide_field_cond'], $condition['hide_opt']); if ($notification['conditions']['send_stop'] == 'send') { $stop = $stop ? false : true; } $met[$stop] = $stop; } if ($notification['conditions']['any_all'] == 'all' && !empty($met) && isset($met[0]) && isset($met[1])) { $stop = $notification['conditions']['send_stop'] == 'send' ? true : false; } else { if ($notification['conditions']['any_all'] == 'any' && $notification['conditions']['send_stop'] == 'send' && isset($met[0])) { $stop = false; } } return $stop; }