diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-07-08 07:18:08 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-07-08 07:18:08 +0000 |
commit | 5f36b11d082c331693bef9d5eed8e6e03ddd027b (patch) | |
tree | b415f08012ae90e4afbb127717cd28633e5d29e1 /modules/taxonomy/taxonomy.pages.inc | |
parent | 01f3bc9f4d0c8fce26cf2dce78fdb6e2e9f74f04 (diff) | |
download | brdo-5f36b11d082c331693bef9d5eed8e6e03ddd027b.tar.gz brdo-5f36b11d082c331693bef9d5eed8e6e03ddd027b.tar.bz2 |
- Patch #503456 by catch: remove multiple tid and depth handling for core taxonomy paths. Snif. ;-)
Diffstat (limited to 'modules/taxonomy/taxonomy.pages.inc')
-rw-r--r-- | modules/taxonomy/taxonomy.pages.inc | 156 |
1 files changed, 62 insertions, 94 deletions
diff --git a/modules/taxonomy/taxonomy.pages.inc b/modules/taxonomy/taxonomy.pages.inc index e2cdf516e..983ea3ac9 100644 --- a/modules/taxonomy/taxonomy.pages.inc +++ b/modules/taxonomy/taxonomy.pages.inc @@ -8,104 +8,72 @@ /** * Menu callback; displays all nodes associated with a term. + * + * @param $term + * The taxonomy term. + * @return + * The page content. */ -function taxonomy_term_page($terms, $depth = 0, $op = 'page') { - if ($terms['operator'] != 'and' && $terms['operator'] != 'or') { - drupal_not_found(); +function taxonomy_term_page($term) { + // Build breadcrumb based on the hierarchy of the term. + $current = (object) array( + 'tid' => $term->tid, + ); + $breadcrumb = array(); + while ($parents = taxonomy_get_parents($current->tid)) { + $current = array_shift($parents); + $breadcrumb[] = l($current->name, taxonomy_term_path($current)); + } + $breadcrumb[] = l(t('Home'), NULL); + $breadcrumb = array_reverse($breadcrumb); + drupal_set_breadcrumb($breadcrumb); + drupal_add_feed(url('taxonomy/term/' . $term->tid . '/feed'), 'RSS - ' . $term->name); + drupal_add_css(drupal_get_path('module', 'taxonomy') . '/taxonomy.css'); + + $build = array(); + $build += field_attach_view('taxonomy_term', $term); + if (!empty($term->description)) { + $build['term_description'] = array( + '#markup' => filter_xss_admin($term->description), + '#weight' => -1, + '#prefix' => '<div class="taxonomy-term-description">', + '#suffix' => '</div>', + ); } - $str_tids = $terms['str_tids']; - - if ($terms['tids']) { - $query = db_select('taxonomy_term_data', 't'); - $query->addTag('term_access'); - - // Load array with all tid's the user has access to in the format tid => name. - $term_results = $query - ->fields('t', array('tid', 'name')) - ->condition('tid', $terms['tids'], 'IN') - ->execute() - ->fetchAllKeyed(); - $tids = array_keys($term_results); - $names = array_values($term_results); - - if ($names) { - $title = implode(', ', $names); - drupal_set_title($title); - - switch ($op) { - case 'page': - // Build breadcrumb based on first hierarchy of first term: - $current = (object) array( - 'tid' => $tids[0], - ); - $breadcrumb = array(); - while ($parents = taxonomy_get_parents($current->tid)) { - $current = array_shift($parents); - $breadcrumb[] = l($current->name, taxonomy_term_path($current)); - } - $breadcrumb[] = l(t('Home'), NULL); - $breadcrumb = array_reverse($breadcrumb); - drupal_set_breadcrumb($breadcrumb); - drupal_add_feed(url('taxonomy/term/' . $str_tids . '/' . $depth . '/feed'), 'RSS - ' . $title); - drupal_add_css(drupal_get_path('module', 'taxonomy') . '/taxonomy.css'); - - $build = array(); - // Only display fields if we have a single term, to avoid clutter and - // confusion. - if (count($tids) == 1) { - $term = taxonomy_term_load($tids[0]); - $build += field_attach_view('taxonomy_term', $term); - if (!empty($term->description)) { - $build['term_description'] = array( - '#markup' => filter_xss_admin($term->description), - '#weight' => -1, - '#prefix' => '<div class="taxonomy-term-description">', - '#suffix' => '</div>', - ); - } - } - - if ($nids = taxonomy_select_nodes($tids, $terms['operator'], $depth, TRUE)) { - $nodes = node_load_multiple($nids); - $build += node_build_multiple($nodes); - $build['pager'] = array( - '#markup' => theme('pager', NULL), - '#weight' => 5, - ); - } - else { - $build['no_content'] = array( - '#prefix' => '<p>', - '#markup' => t('There are currently no posts in this category.'), - '#suffix' => '</p>', - ); - } - - return $build; - - case 'feed': - $channel['link'] = url('taxonomy/term/' . $str_tids . '/' . $depth, array('absolute' => TRUE)); - $channel['title'] = variable_get('site_name', 'Drupal') . ' - ' . $title; - // Only display the description if we have a single term, to avoid clutter and confusion. - if (count($tids) == 1) { - $term = taxonomy_term_load($tids[0]); - // HTML will be removed from feed description, so no need to filter here. - $channel['description'] = $term->description; - } - - $nids = taxonomy_select_nodes($tids, $terms['operator'], $depth, FALSE); - - node_feed($nids, $channel); - break; - default: - drupal_not_found(); - } - } - else { - drupal_not_found(); - } + if ($nids = taxonomy_select_nodes(array($term->tid), NULL, TRUE)) { + $nodes = node_load_multiple($nids); + $build += node_build_multiple($nodes); + $build['pager'] = array( + '#markup' => theme('pager', NULL), + '#weight' => 5, + ); + } + else { + $build['no_content'] = array( + '#prefix' => '<p>', + '#markup' => t('There are currently no posts in this category.'), + '#suffix' => '</p>', + ); } + return $build; +} + +/** + * Generate the content feed for a taxonomy term. + * + * @param $term + * The taxonomy term. + */ +function taxonomy_term_feed($term) { + $channel['link'] = url('taxonomy/term/' . $term->tid, array('absolute' => TRUE)); + $channel['title'] = variable_get('site_name', 'Drupal') . ' - ' . $term->name; + // Only display the description if we have a single term, to avoid clutter and confusion. + // HTML will be removed from feed description, so no need to filter here. + $channel['description'] = $term->description; + $nids = taxonomy_select_nodes(array($term->tid, NULL, NULL, FALSE)); + + node_feed($nids, $channel); } /** |