Index: C:/dev/utdanning-deplay-dev/apps/drupal/sites/all/modules/similar/similar.module =================================================================== --- C:/dev/utdanning-deplay-dev/apps/drupal/sites/all/modules/similar/similar.module (revision 6383) +++ C:/dev/utdanning-deplay-dev/apps/drupal/sites/all/modules/similar/similar.module (revision 10022) @@ -215,7 +215,17 @@ '#default_value' => variable_get('similar_taxonomy_tids', array_keys($names)), '#description' => t('Hold the CTRL key to (de)select multiple options.'), '#options' => $names, '#multiple' => true - ); + ); + $vocs = _similar_taxonomy_get_vocabularies(); + $form['similar_taxonomy']['similar_taxonomy_exclude'] = array( + '#type' => 'select', + '#multiple' => true, + '#title' => t('Exclude vocabularies'), + '#default_value' => variable_get('similar_taxonomy_exclude', ''), + '#options' => $vocs + ); + + } } return $form; @@ -228,7 +238,8 @@ variable_set('similar_node_types', $edit['similar_node_types']); if (module_exists('taxonomy')) { variable_set('similar_taxonomy_filter', $edit['similar_taxonomy_filter']); - variable_set('similar_taxonomy_tids', $edit['similar_taxonomy_tids']); + variable_set('similar_taxonomy_tids', $edit['similar_taxonomy_tids']); + variable_set('similar_taxonomy_exclude', $edit['similar_taxonomy_exclude']); } } return; @@ -292,7 +303,8 @@ } return $types; } - + + /** * Query for taxonomy names * @@ -314,12 +326,23 @@ * @see http://drupal.org/node/51041 * @return array */ -function _similar_taxonomy_membership($nid) { +function _similar_taxonomy_membership($nid) { + $tidsExclude = array(); + $vid = variable_get('similar_taxonomy_exclude', ''); + if (count($vid) > 0) { + $result = db_query('SELECT t.tid FROM {term_data} t WHERE t.vid IN ('.implode(",", $vid) .')'); + while($data = db_fetch_object($result)) { + $tidsExclude[$data->tid] = $data->tid; + } + } + $tids = array(); $result = db_query('SELECT t.tid FROM {term_node} t WHERE t.nid = %d', $nid); - while($data = db_fetch_object($result)) { - $tids[$data->tid] = $data->tid; - } + while($data = db_fetch_object($result)) { + if (!in_array($data->tid, $tidsExclude)) { + $tids[$data->tid] = $data->tid; + } + } return $tids; } @@ -399,3 +422,18 @@ return sizeof($items) > 0 ? theme('item_list', $items) : ''; } + +/** + * Get all vocabularies + * + * @return array + */ +function _similar_taxonomy_get_vocabularies() { + $v = array(); + $vocs = taxonomy_get_vocabularies(); + $result = db_query('SELECT DISTINCT(n.type) FROM {node} n WHERE n.status <> 0 ORDER BY n.type ASC'); + foreach ($vocs as $voc) { + $v[$voc->vid] = $voc->name;; + } + return $v; +} \ No newline at end of file