function radioactivity_field_formatter_view in Radioactivity 7.2
Same name and namespace in other branches
- 7 radioactivity.field.inc \radioactivity_field_formatter_view()
Implements hook_field_formatter_view()
File
- ./
radioactivity.field.inc, line 160
Code
function radioactivity_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
switch ($display['type']) {
case RADIOACTIVITY_COMBO_FORMATTER:
$entity_id = 0;
$info = entity_get_info($entity_type);
$id = $info['entity keys']['id'];
$entity_id = $entity->{$id};
$language = LANGUAGE_NONE;
if ($field['translatable']) {
$language = field_language($entity_type, $entity, $field['field_name']);
}
if ($entity_id > 0) {
$settings = $display['settings'];
if ($settings['energy'] != 0) {
$profile = radioactivity_get_field_profile($entity_type, $instance['bundle'], $field['field_name']);
if ($profile && $profile->storageObject) {
_radioactivity_register_emitter($profile->storage, $entity_type, $instance['bundle'], $field['field_name'], $language, $entity_id, $settings);
}
else {
watchdog("radioactivity", "Storage for field @field not found for @bundle. Please change it in the field configuration.", array(
"@field" => $field['field_name'],
"@bundle" => $instance['bundle'],
), WATCHDOG_ERROR);
}
}
}
drupal_add_css(drupal_get_path('module', 'radioactivity') . '/css/radioactivity.css');
if (isset($settings['type'])) {
switch ($settings['type']) {
case 'none':
break;
case 'energy':
foreach ($items as $delta => $item) {
$element[$delta] = array(
'#markup' => $item[RADIOACTIVITY_FIELD_ENERGY],
);
}
break;
case 'popularity':
$maximum = ceil(_radioactivity_get_field_maximum($field['id'], $entity_type));
$maximum = $maximum == 0 ? 1 : $maximum;
foreach ($items as $delta => $item) {
$energy = $item[RADIOACTIVITY_FIELD_ENERGY];
$element[$delta] = array(
'#markup' => round($energy / $maximum * 100),
);
}
break;
case 'gauge':
$maximum = ceil(_radioactivity_get_field_maximum($field['id'], $entity_type));
$maximum = $maximum == 0 ? 1 : $maximum;
foreach ($items as $delta => $item) {
$energy = $item[RADIOACTIVITY_FIELD_ENERGY];
$element[$delta] = array(
'#theme' => 'radioactivity_gauge',
'#maximum' => $maximum,
'#energy' => $energy,
);
}
break;
case 'history':
$data = _radioactivity_get_history_for_field_and_entity($instance['id'], $entity_id);
foreach ($items as $delta => $item) {
$energy = $item[RADIOACTIVITY_FIELD_ENERGY];
$element[$delta] = array(
'#theme' => 'radioactivity_history',
'#dataset' => $data,
);
}
break;
}
}
break;
}
return $element;
}