You are here

function nodeaccess_userreference_update_6301 in Node access user reference 7.3

Same name and namespace in other branches
  1. 6.3 nodeaccess_userreference.install \nodeaccess_userreference_update_6301()

Update settings storage.

File

./nodeaccess_userreference.install, line 66
Install, update and uninstall functions for the Node access user reference module.

Code

function nodeaccess_userreference_update_6301() {

  // Get all old settings and move them over to the new storage.
  $data = array();
  $result = db_query("SELECT * FROM {variable} WHERE name LIKE :naur", array(
    ':naur' => 'nodeaccess_userreference_%',
  ));
  foreach ($result as $row) {
    $name = str_replace('nodeaccess_userreference_', '', $row->name);
    $type_field = explode('_', $name);
    $type = $type_field[0];
    $field = $type_field[1];
    $old_data = unserialize($row->data);
    variable_del($row->name);
    nodeaccess_userreference_field_settings($type, $field, $old_data);
  }

  // Move settings over and set passive defaults for upgraders.
  $author_view = variable_get('nodeaccess_userreference_author_view', 0);
  $author_update = variable_get('nodeaccess_userreference_author_update', 0);
  $author_delete = variable_get('nodeaccess_userreference_author_delete', 0);
  $priority = variable_get('nodeaccess_userreference_priority', 0);
  $data = variable_get('nodeaccess_userreference', NULL);
  foreach ($data as $type => $type_data) {
    foreach ($type_data as $field => $field_data) {
      if ($author_view) {
        $data[$type][$field]['author']['view'] = 'view';
      }
      if ($author_update) {
        $data[$type][$field]['author']['update'] = 'update';
      }
      if ($author_delete) {
        $data[$type][$field]['author']['delete'] = 'delete';
      }
      $data[$type][$field]['priority'] = $priority;
      $view = $data[$type][$field]['view'];
      $update = $data[$type][$field]['update'];
      $delete = $data[$type][$field]['delete'];
      unset($data[$type][$field]['view']);
      unset($data[$type][$field]['update']);
      unset($data[$type][$field]['delete']);
      if ($view) {
        $data[$type][$field]['referenced']['view'] = 'view';
      }
      if ($update) {
        $data[$type][$field]['referenced']['update'] = 'update';
      }
      if ($delete) {
        $data[$type][$field]['referenced']['delete'] = 'delete';
      }
      $data[$type][$field]['all'] = array();
    }
  }
  variable_set('nodeaccess_userreference', $data);
  variable_del('nodeaccess_userreference_author_view');
  variable_del('nodeaccess_userreference_author_update');
  variable_del('nodeaccess_userreference_author_delete');
  variable_del('nodeaccess_userreference_priority');
  $ret[] = array(
    'success' => TRUE,
    'query' => 'Updating settings storage.',
  );
  return $ret;
}