class views_plugin_style_summary_taxonomy in Views Hacks 7
Same name and namespace in other branches
- 6 views_summary_taxonomy/views_plugin_style_summary_taxonomy.inc \views_plugin_style_summary_taxonomy
Hierarchy
- class \views_object
- class \views_plugin
- class \views_plugin_style
- class \views_plugin
Expanded class hierarchy of views_plugin_style_summary_taxonomy
1 string reference to 'views_plugin_style_summary_taxonomy'
- views_summary_taxonomy_views_plugins in views_summary_taxonomy/
views_summary_taxonomy.views.inc - Implementation of hook_views_plugins().
File
- views_summary_taxonomy/
views_plugin_style_summary_taxonomy.inc, line 3
View source
class views_plugin_style_summary_taxonomy extends views_plugin_style_summary {
function option_definition() {
$options = parent::option_definition();
$options['taxonomy'] = array(
'default' => 0,
);
$options['hide_zero'] = array(
'default' => TRUE,
);
return $options;
}
function options_form(&$form, &$form_state) {
parent::options_form($form, $form_state);
foreach (taxonomy_get_vocabularies() as $vid => $vocabulary) {
$options[$vid] = $vocabulary->name;
}
$form['taxonomy'] = array(
'#type' => 'select',
'#default_value' => $this->options['taxonomy'],
'#title' => t('Taxonomy'),
'#options' => $options,
);
$form['hide_zero'] = array(
'#type' => 'checkbox',
'#default_value' => $this->options['hide_zero'],
'#title' => t('Hide terms with zero entries'),
);
}
function render() {
$argument = $this->view->argument[$this->view->build_info['summary_level']];
$this->terms = array();
foreach ($this->view->result as $row) {
$this->terms[$row->{$argument->base_alias}] = $row;
}
// Get the taxonomy tree. We're going to heavily modify it...
$tree = taxonomy_get_tree($this->options['taxonomy']);
// Reverse sort it: children at the front.
usort($tree, array(
$this,
'term_depth_compare',
));
// Add the tid as key.
$tree = array_combine(array_map(array(
$this,
'term_tid',
), $tree), $tree);
// Initialize counts as copied from view results.
array_walk($tree, array(
$this,
'term_count',
), $argument);
// Accumulate children counts.
// This works without recursion because the array is sorted in reverse.
foreach ($tree as $tid => $term) {
foreach ($term->parents as $pid) {
if (!$pid) {
continue;
}
// parent tid = 0 means no parent
$tree[$pid]->aggregate_count += $term->aggregate_count;
}
}
// Now we're ready to render it!
$url_options = array();
if (!empty($this->view->exposed_raw_input)) {
$url_options['query'] = $this->view->exposed_raw_input;
}
$item_list = array();
$children = array();
foreach ($tree as $tid => $term) {
if (!$term->aggregate_count && $this->options['hide_zero']) {
continue;
}
$args = $this->view->args;
$args[$argument->position] = $argument
->summary_argument($this->terms[$tid]);
$item = array();
$item['data'] = l($term->name, $this->view
->get_url($args), $url_options);
if (!empty($this->options['count'])) {
$item['data'] .= ' (' . (@$argument->definition['accept depth modifier'] ? $term->aggregate_count : $term->count) . ')';
}
$item['weight'] = $term->weight;
if (isset($children[$tid])) {
usort($children[$tid], array(
$this,
'item_weight_compare',
));
$item['children'] = $children[$tid];
}
foreach ($term->parents as $pid) {
if (!$pid) {
$item_list[] = $item;
}
else {
$children[$pid][] = $item;
}
}
}
usort($item_list, array(
$this,
'item_weight_compare',
));
return theme('item_list', $item_list);
}
static function item_weight_compare($item1, $item2) {
if ($item1['weight'] == $item2['weight']) {
return 0;
}
return $item1['weight'] > $item2['weight'] ? 1 : -1;
}
static function term_depth_compare($term1, $term2) {
if ($term1->depth == $term2->depth) {
return 0;
}
return $term1->depth > $term2->depth ? -1 : 1;
// reverse sort
}
static function term_tid($term) {
return $term->tid;
}
function term_count(&$term, $tid, $argument) {
if (isset($this->terms[$tid])) {
$term->count = $term->aggregate_count = $this->terms[$tid]->{$argument->count_alias};
}
else {
$term->count = $term->aggregate_count = 0;
// Create an entry for this term.
$this->terms[$tid] = (object) array(
$argument->base_alias => $tid,
$argument->count_alias => 0,
);
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
views_object:: |
public | property | Handler's definition. | |
views_object:: |
public | property | Except for displays, options for the object will be held here. | 1 |
views_object:: |
function | Collect this handler's option definition and alter them, ready for use. | ||
views_object:: |
public | function | Views handlers use a special construct function. | 4 |
views_object:: |
public | function | 1 | |
views_object:: |
public | function | ||
views_object:: |
public | function | Always exports the option, regardless of the default value. | |
views_object:: |
public | function | Set default options on this object. | 1 |
views_object:: |
public | function | Set default options. | |
views_object:: |
public | function | Let the handler know what its full definition is. | |
views_object:: |
public | function | Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away. | |
views_object:: |
public | function | Unpack a single option definition. | |
views_object:: |
public | function | Unpacks each handler to store translatable texts. | |
views_object:: |
public | function | ||
views_plugin:: |
public | property | The current used views display. | |
views_plugin:: |
public | property | The plugin name of this plugin, for example table or full. | |
views_plugin:: |
public | property | The plugin type of this plugin, for example style or query. | |
views_plugin:: |
public | property |
The top object of a view. Overrides views_object:: |
1 |
views_plugin:: |
public | function | Provide a list of additional theme functions for the theme info page. | |
views_plugin:: |
public | function | Handle any special handling on the validate form. | 9 |
views_plugin:: |
public | function | Return the human readable name of the display. | |
views_plugin:: |
public | function | Returns the summary of the settings in the display. | 8 |
views_plugin:: |
public | function | Provide a full list of possible theme templates used by this style. | |
views_plugin_style:: |
public | property | The row plugin, if it's initialized and the style itself supports it. | |
views_plugin_style:: |
public | property | Store all available tokens row rows. | |
views_plugin_style:: |
public | function | Called by the view builder to see if this style handler wants to interfere with the sorts. If so it should build; if it returns any non-TRUE value, normal sorting will NOT be added to the query. | 1 |
views_plugin_style:: |
public | function | Called by the view builder to let the style build a second set of sorts that will come after any other sorts in the view. | 1 |
views_plugin_style:: |
public | function |
Destructor. Overrides views_object:: |
|
views_plugin_style:: |
public | function | Should the output of the style plugin be rendered even if it's empty. | 1 |
views_plugin_style:: |
public | function | Get a rendered field. | |
views_plugin_style:: |
public | function | Get the raw field value. | |
views_plugin_style:: |
public | function | Return the token replaced row class for the specified row. | |
views_plugin_style:: |
public | function | Initialize a style plugin. | |
views_plugin_style:: |
public | function |
Validate the options form. Overrides views_plugin:: |
|
views_plugin_style:: |
public | function | Allow the style to do stuff before each row is rendered. | |
views_plugin_style:: |
public | function | Render all of the fields for a given style and store them on the object. | |
views_plugin_style:: |
public | function | Group records as needed for rendering. | |
views_plugin_style:: |
public | function | Render the grouping sets. | |
views_plugin_style:: |
public | function | Take a value and apply token replacement logic to it. | |
views_plugin_style:: |
public | function | Return TRUE if this style also uses fields. | |
views_plugin_style:: |
public | function | Return TRUE if this style also uses a row plugin. | |
views_plugin_style:: |
public | function | Return TRUE if this style also uses a row plugin. | |
views_plugin_style:: |
public | function | Return TRUE if this style uses tokens. | |
views_plugin_style:: |
public | function |
Validate that the plugin is correct and can be saved. Overrides views_plugin:: |
|
views_plugin_style_summary:: |
public | function |
Add anything to the query that we might need to. Overrides views_plugin_style:: |
|
views_plugin_style_summary_taxonomy:: |
static | function | ||
views_plugin_style_summary_taxonomy:: |
function |
Provide a form to edit options for this plugin. Overrides views_plugin_style_summary:: |
||
views_plugin_style_summary_taxonomy:: |
function |
Information about options for all kinds of purposes will be held here. Overrides views_plugin_style_summary:: |
||
views_plugin_style_summary_taxonomy:: |
function |
Render the display in this style. Overrides views_plugin_style_summary:: |
||
views_plugin_style_summary_taxonomy:: |
function | |||
views_plugin_style_summary_taxonomy:: |
static | function | ||
views_plugin_style_summary_taxonomy:: |
static | function |