function content_handler_field_multiple::pre_render in Content Construction Kit (CCK) 6.3
Same name and namespace in other branches
- 6.2 includes/views/handlers/content_handler_field_multiple.inc \content_handler_field_multiple::pre_render()
File
- includes/views/handlers/content_handler_field_multiple.inc, line 129
- An extended subclass for field handling that adds multiple field grouping.
Class
- content_handler_field_multiple
- @file
An extended subclass for field handling that adds multiple field grouping.
Code
function pre_render($values) {
if (isset($this->view->build_info['summary']) || empty($values) || !$this->defer_query) {
return parent::pre_render($values);
}
$field = $this->content_field;
$db_info = content_database_info($field);
$options = $this->options;
$vids = array();
$this->field_values = array();
foreach ($values as $result) {
if (isset($result->{$this->field_alias})) {
$vids[] = $result->{$this->field_alias};
}
}
if (empty($vids)) {
return parent::pre_render($values);
}
$alias = content_views_tablename($field);
$query_columns = array(
'vid AS _vid',
"delta as _delta",
'nid AS _nid',
);
foreach ($db_info['columns'] as $column => $attributes) {
$query_columns[] = "{$attributes['column']} AS {$column}";
}
$query = 'SELECT ' . implode(', ', $query_columns) . ' FROM {' . $db_info['table'] . "}" . " WHERE vid IN (" . implode(',', $vids) . ')' . " ORDER BY _nid ASC, _delta " . ($options['multiple']['multiple_reversed'] ? 'DESC' : 'ASC');
$result = db_query($query);
while ($item = db_fetch_array($result)) {
$vid = $item['_vid'];
unset($item['_vid']);
$delta = !empty($item['_delta']) ? $item['_delta'] : 0;
$item['#delta'] = $item['_delta'];
unset($item['_delta']);
$this->field_values[$vid][$delta] = $item;
}
}