You are here

function conditional_fields_save_field in Conditional Fields 6

Same name and namespace in other branches
  1. 6.2 conditional_fields.module \conditional_fields_save_field()

Handle saving of individual controlled field settings $controlling_fields is a keyed array of controlling fields names and trigger values

Use this function with caution, as it doesn't check if the content type and the fields actually exist.

2 calls to conditional_fields_save_field()
conditional_fields_content_fieldapi in ./conditional_fields.module
Implementation of hook_content_fieldapi().
conditional_fields_forms_submit in ./conditional_fields.module
Handle saving of conditional field settings. The controlled field can be either a field or a group

File

./conditional_fields.module, line 1039
Content fields and groups visibility based on the values of user defined 'trigger' fields.

Code

function conditional_fields_save_field($type_name, $controlled_field, $controlling_fields) {
  foreach ($controlling_fields as $controlling_field => $trigger_values) {

    // If the row already exists
    if (db_result(db_query("SELECT COUNT(*) FROM {conditional_fields} WHERE control_field_name = '%s' AND field_name = '%s' AND type = '%s'", $controlling_field, $controlled_field, $type_name))) {

      // If no value is set, delete the entry, else update it
      if (empty($trigger_values) || $trigger_values['conditional_field_no_value']) {
        conditional_fields_delete_field($type_name, $controlled_field, $controlling_field);
      }
      else {
        conditional_fields_update_field($type_name, $controlled_field, $controlling_field, $trigger_values);
      }
    }
    else {

      // If values are set, create new entry
      if (!empty($trigger_values) && !$trigger_values['conditional_field_no_value']) {
        conditional_fields_insert_field($type_name, $controlled_field, $controlling_field, $trigger_values);
      }
    }
  }
}