--- og_vocab.module.orig 2006-12-27 05:24:56.000000000 +0200 +++ og_vocab.module 2007-06-27 16:31:48.000000000 +0300 @@ -169,18 +169,20 @@ break; case (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id): if (isset($form['taxonomy'])) { + $edit = $_POST['edit']; + $ogs = (is_array($edit['og_groups'])) ? $edit['og_groups'] : array(); // remove from node form those vocabs that belong to groups other than us (if we even have a group) - $groupnode = og_get_group_context(); - $where = "(v.module = 'og_vocab' AND ov.nid != %d)"; - $sql = "SELECT v.vid, v.tags FROM {vocabulary} v LEFT JOIN {og_vocab} ov ON v.vid = ov.vid WHERE $where"; - $result = db_query($sql, $groupnode->nid); + $sql = "SELECT v.vid, v.tags, ov.nid FROM {vocabulary} v LEFT JOIN {og_vocab} ov ON v.vid = ov.vid WHERE v.module = 'og_vocab'"; + $result = db_query($sql); while ($row = db_fetch_object($result)) { - if ($row->tags) { - unset($form['taxonomy']['tags'][$row->vid]); - } - else { - unset($form['taxonomy'][$row->vid]); - } + if(!array_key_exists($row->nid, $ogs)) { + if ($row->tags) { + unset($form['taxonomy']['tags'][$row->vid]); + } + else { + unset($form['taxonomy'][$row->vid]); + } + } } // remove categories fieldset if no vocabularies remain @@ -297,4 +299,4 @@ default: break; } -} \ No newline at end of file +}