You are here

function og_node_type_form_submit in Organic groups 5.7

Same name and namespace in other branches
  1. 5.8 og.module \og_node_type_form_submit()
  2. 5 og.module \og_node_type_form_submit()
  3. 5.3 og.module \og_node_type_form_submit()
  4. 6.2 og.module \og_node_type_form_submit()
  5. 6 og.module \og_node_type_form_submit()

File

./og.module, line 1562

Code

function og_node_type_form_submit($form_id, $form_values) {
  $type = $form_values['type'];
  $var = 'og_content_type_usage';
  $new = $form_values[$var];
  $old = $form_values['old_' . $var];
  if ($new != $old) {

    /**
     * Rebuild the node access database *for a single content type*.
     * TODO: older versions of mySQL can't do subselect.
     */
    db_query("DELETE FROM {node_access} WHERE nid IN (SELECT nid FROM {node} WHERE type = '%s')", $type);

    // If not in 'safe mode', increase the maximum execution time:
    if (!ini_get('safe_mode')) {
      set_time_limit(240);
    }
    $result = db_query("SELECT nid FROM {node} WHERE type = '%s'", $type);
    while ($node = db_fetch_object($result)) {
      $loaded_node = node_load($node->nid, NULL, TRUE);

      // To preserve database integrity, only aquire grants if the node
      // loads successfully.
      if (!empty($loaded_node)) {
        node_access_acquire_grants($loaded_node);
      }
    }
    cache_clear_all();
    drupal_set_message(t('The node access table was rebuilt for %type posts.', array(
      '%type' => node_get_types('name', $type),
    )));
  }
}