You are here

function spaces_og_node_update in Spaces 7.3

Implements hook_node_update().

1 call to spaces_og_node_update()
spaces_og_node_insert in spaces_og/spaces_og.module
Implements hook_node_insert().

File

spaces_og/spaces_og.module, line 264

Code

function spaces_og_node_update($node, $op = 'update') {
  if (og_is_group_type('node', $node->type)) {
    $space = spaces_load('og', $node->nid, TRUE);
    if ($space) {

      // Save preset values.
      if (!empty($node->spaces_preset_og)) {
        $space->controllers->variable
          ->set('spaces_preset_og', $node->spaces_preset_og);
      }

      // Configure OG directly from space object as node_save() may be
      // called from outside of actual group space.
      $selective = $space->controllers->variable
        ->get('spaces_og_selective');
      $node->og_selective = $selective === NULL ? OG_OPEN : $selective;
      $register = $space->controllers->variable
        ->get('spaces_og_register');
      $node->og_register = $register === NULL ? TRUE : $register;
      $directory = $space->controllers->variable
        ->get('spaces_og_directory');
      $node->og_directory = $directory === NULL ? TRUE : $directory;
      $private = $space->controllers->variable
        ->get('spaces_og_private');
      $field_langauge = field_language('node', $node, 'group_access');
      if ($op == 'update' && $private != $node->group_access[$field_langauge][0]['value']) {

        // Privacy has changed, update og_public flags, and queue a rebuid.
        db_query("UPDATE {og_access_post} og_p\n          INNER JOIN {og_ancestry} og_a ON og_p.nid = og_a.nid\n          INNER JOIN {node} n ON og_p.nid = n.nid\n          SET og_public = %d WHERE og_a.group_nid = %d", !$private, $node->nid);
        node_access_needs_rebuild(TRUE);
      }
      $node->og_private = $private === NULL ? FALSE : $private;

      // TODO determine the D7 equivalent of og_update_group().
      // og_update_group($node);
    }

    // Save PURL modifier.
    $modifier = array(
      'provider' => 'spaces_og',
      'id' => $node->nid,
    );
    if (is_array($node->purl) && !empty($node->purl['value'])) {
      $modifier['value'] = $node->purl['value'];
      purl_save($modifier);
    }
    else {
      if (empty($node->purl)) {
        $modifier['value'] = "{$node->type}-{$node->nid}";
        purl_save($modifier);
      }
    }
  }
}