Index: tac_lite.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/tac_lite/tac_lite.module,v retrieving revision 1.6.2.3 diff -u -F^f -r1.6.2.3 tac_lite.module --- tac_lite.module 12 Dec 2007 13:42:00 -0000 1.6.2.3 +++ tac_lite.module 22 May 2008 20:56:29 -0000 @@ -250,35 +250,32 @@ function tac_lite_node_access_records($n function _tac_lite_get_terms(&$node) { $tids = array(); - // emulating code from taxonomy_node_save here. - // note that free tagging vocabs not currently supported if (count($node->taxonomy)) { - foreach ($node->taxonomy as $term) { - if (is_array($term)) { - foreach ($term as $tid) { - if (is_numeric($tid)) { - $tids[$tid] = $tid; - } - else { - // non-numeric means free-tagging vocabulary. - // we do not support. Do nothing. - } - } - } - else if (is_object($term)) { - // in drupal 5 term is an object. Is this right? - $tids[$term->tid] = $term->tid; - } - else if (is_numeric($term)) { - // $term is a tid. - $tids[$term] = $term; - } - else if ($term) { - drupal_set_message(t('Unexpected term value "%term" in tac_lite.', - array('%term' => $term)), - 'error'); + foreach ($node->taxonomy as $key => $term) { + // if the key is "tags", it's a freetagging vocabulary, which isn't supported + if ($key != 'tags') { + if (is_array($term)) { + // multi-select vocab during node edit + foreach ($term as $tid) { + $tids[$tid] = $tid; + } + } + else if (is_numeric($term)) { + // single-select vocab during node edit + $tids[$term] = $term; + } + else if (is_object($term)) { + // not during node edit, such as when rebuilding permissions + $tids[$term->tid] = $term->tid; + } + else if ($term) { + drupal_set_message( + t('Unexpected term value "%term" in tac_lite.', array('%term' => $term)), + 'error' + ); + } } - } + } } return $tids;