space_taxonomy.inc in Spaces 7.3
File
spaces_taxonomy/plugins/space_taxonomy.inc
View source
<?php
class space_taxonomy extends space_type_purl {
var $term = NULL;
function title() {
return $this->term->name;
}
function load() {
if ($this->id === 0) {
return TRUE;
}
else {
if ($this->term = taxonomy_term_load($this->id)) {
return TRUE;
}
}
return FALSE;
}
function router($op, $object = NULL) {
switch ($op) {
case 'init':
if (implode('/', array(
arg(0),
arg(1),
)) === 'taxonomy/term' && arg(2)) {
$tid = arg(2);
if ($term = taxonomy_term_load($tid)) {
$this
->router_term($term);
}
}
break;
case 'node':
if ($term = spaces_taxonomy_get_term($object)) {
$this
->router_term($term);
}
break;
}
return;
}
protected function router_term($term) {
if ($term->vocabulary_machine_name == variable_get('spaces_taxonomy_machine_name', 0)) {
$space = spaces_load('taxonomy', $term->tid);
if ($space && (!$this->active || $this->id != $space->id)) {
$space
->activate();
}
}
}
function views_filter(&$query, $base_table = '', $relationship = '') {
switch ($base_table) {
case 'node':
$table = $query
->ensure_table('taxonomy_index', $relationship);
$query
->add_where(0, "{$table}.tid", $this->id);
break;
}
}
}