domain_content_update_nodes

Definition

domain_content_update_nodes($form_id, $form_values)
domain_content/domain_content.module, line 352

Description

FormAPI function that lets us update access rules.

Code

function domain_content_update_nodes($form_id, $form_values) {
  // If our operation is flagged, then we have to manually change the
  // {node_access} table.  The rest of the process will clear the cache,
  // so this should be a safe operation.
  if ($form_values['operation'] == 'domain') {
    if ($form_values['domain_site']) {
      $domain_site = TRUE;
    }
    $domains = array();
    foreach ($form_values['domains'] as $key => $value) {
      // Cannot pass zero in checkboxes, so these are converted from -1.
      if (abs($key) > 0 && $key == $value) {
        ($key == -1) ? $id = 0 : $id = $value;
        $domains[] = $id;
      }
    }
    $editor = variable_get('domain_editors', DOMAIN_EDITOR_RULE);
    if ($editor) {
      $editors = $domains;
    }
    foreach ($form_values['nodes'] as $nid) {
      if ($nid > 0) {
        // Delete anything not selected.
        // We have to update both the {node_access} and {domain_access} tables.
        db_query("DELETE FROM {node_access} WHERE nid = %d AND realm IN ('domain_id', 'domain_site', 'domain_editor')", $nid);
        db_query("DELETE FROM {domain_access} WHERE nid = %d", $nid);
        if ($domain_site) {
          db_query("INSERT INTO {node_access} VALUES (%d, 0, 'domain_site', 1, 0, 0)", $nid);
          db_query("INSERT INTO {domain_access} VALUES (%d, 0, 'domain_site')", $nid);
        }
        if (!empty($domains)) {
          foreach ($domains as $id) {
            db_query("INSERT INTO {node_access} VALUES (%d, %d, 'domain_id', 1, 0, 0)", $nid, $id);
            db_query("INSERT INTO {domain_access} VALUES (%d, %d, 'domain_id')", $nid, $id);
          }
          if ($editor) {
            db_query("INSERT INTO {node_access} VALUES (%d, %d, 'domain_editor', 0, 1, 1)", $nid, $id);
            db_query("INSERT INTO {domain_access} VALUES (%d, %d, 'domain_editor')", $nid, $id);
          }
        }
      }
    }
  }
}