summaryrefslogtreecommitdiff
path: root/modules/taxonomy/taxonomy.pages.inc
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2009-07-08 07:18:08 +0000
committerDries Buytaert <dries@buytaert.net>2009-07-08 07:18:08 +0000
commit5f36b11d082c331693bef9d5eed8e6e03ddd027b (patch)
treeb415f08012ae90e4afbb127717cd28633e5d29e1 /modules/taxonomy/taxonomy.pages.inc
parent01f3bc9f4d0c8fce26cf2dce78fdb6e2e9f74f04 (diff)
downloadbrdo-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.inc156
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);
}
/**