81 lines
3 KiB
PHP
81 lines
3 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Field conversion for fields handled by this module.
|
|
*/
|
|
|
|
/**
|
|
* Implementation of hook_views_convert().
|
|
*/
|
|
function filefield_views_convert($display, $type, &$view, $field, $id = NULL) {
|
|
static $filefield_fields;
|
|
static $filefield_filters;
|
|
static $filefield_arguments;
|
|
if (!isset($filefield_fields)) {
|
|
$filefield_fields = $filefield_filters = $filefield_arguments = array();
|
|
foreach (content_fields() as $content_field) {
|
|
if ($content_field['module'] == 'filefield') {
|
|
$result = module_invoke('filefield', 'field_settings', 'views data', $content_field);
|
|
if (!empty($result)) {
|
|
foreach ($result as $table => $fields) {
|
|
unset($fields['table']);
|
|
foreach ($fields as $filefield_field => $definition) {
|
|
switch ($filefield_field) {
|
|
case $content_field['field_name'] .'_fid':
|
|
$filefield_fields[$filefield_field] = array(
|
|
'table' => $table,
|
|
'field' => $filefield_field,
|
|
);
|
|
$filefield_arguments['content: '. $content_field['field_name']] = &$filefield_fields[$filefield_field];
|
|
break;
|
|
case $content_field['field_name'] .'_list':
|
|
$filefield_filters[$content_field['field_name'] .'_fid_not null'] = array(
|
|
'table' => $table,
|
|
'field' => $filefield_field,
|
|
);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
switch ($type) {
|
|
case 'field':
|
|
if (isset($filefield_fields[$field['field']])) {
|
|
$multiple = array();
|
|
switch ($field['handler']) {
|
|
case 'content_views_field_handler_ungroup':
|
|
$view->set_item_option($display, 'field', $id, 'multiple', array('group' => FALSE));
|
|
break;
|
|
case 'content_views_field_handler_last':
|
|
$multiple['multiple_reversed'] = TRUE;
|
|
case 'content_views_field_handler_first':
|
|
$multiple['multiple_number'] = 1;
|
|
$view->set_item_option($display, 'field', $id, 'multiple', $multiple);
|
|
break;
|
|
}
|
|
$view->set_item_option($display, 'field', $id, 'format', $field['options']);
|
|
}
|
|
break;
|
|
case 'filter':
|
|
if (isset($filefield_filters[$field['field']])) {
|
|
$filter = $filefield_filters[$field['field']];
|
|
$item = $view->get_item($display, 'filter', $id);
|
|
$item['value'] = $field['value'];
|
|
$item['table'] = $filter['table'];
|
|
$item['field'] = $filter['field'];
|
|
$view->set_item($display, 'filter', $id, $item);
|
|
}
|
|
break;
|
|
case 'argument':
|
|
if (isset($filefield_arguments[$field['type']])) {
|
|
$argument = $filefield_arguments[$field['type']];
|
|
$options = $field['argoptions'];
|
|
$view->add_item($display, 'argument', $argument['table'], $argument['field'], $options, $field['id']);
|
|
}
|
|
break;
|
|
}
|
|
}
|