You are here

function nodeaccess_userreference_field_update_instance in Node access user reference 7.3

Implements hook_field_update_instance().

File

./nodeaccess_userreference.module, line 245
The Node access user reference module.

Code

function nodeaccess_userreference_field_update_instance($instance, $prior_instance) {
  $field_info = field_info_field($instance['field_name']);
  if (($field_info['type'] == 'entityreference' && $field_info['settings']['target_type'] == 'user' || $field_info['type'] == 'user_reference') && $instance['entity_type'] == 'node') {
    $old_settings = isset($prior_instance['settings']['nodeaccess_userreference']) ? nodeaccess_userreference_reduce_variable($prior_instance['settings']['nodeaccess_userreference']) : array();
    $new_settings = isset($instance['settings']['nodeaccess_userreference']) ? nodeaccess_userreference_reduce_variable($instance['settings']['nodeaccess_userreference']) : array();
    if ($old_settings != $new_settings) {
      nodeaccess_userreference_field_settings($instance['bundle'], $instance['field_name'], $new_settings);
      $nodes = db_query("SELECT 1 FROM {node} WHERE type = :type", array(
        ':type' => $instance['bundle'],
      ))
        ->fetchField();
      if ($nodes) {

        // Because the field settings have changed we should prompt for a full rebuild.
        node_access_needs_rebuild(TRUE);
      }
    }
  }
}