'default_value',
);
/**
* Provides the field's setting form.
*
* This function corresponds to the hook_field_formatter_settings_form()
* function of the Drupal Field API.
*
* The settings form appears on the 'Manage Display' page of the content
* type administration page. This function provides the form that will
* appear on that page.
*
* To add a validate function, please create a static function in the
* implementing class, and indicate that this function should be used
* in the form array that is returned by this function.
*
* This form will not be displayed if the formatter_settings_summary()
* function does not return anything.
*
* param $field
* The field structure being configured.
* param $instance
* The instance structure being configured.
* param $view_mode
* The view mode being configured.
* param $form
* The (entire) configuration form array, which will usually have no use
* here. Typically for reference only.
* param $form_state
* The form state of the (entire) configuration form.
*
* @return
* A Drupal Form array containing the settings form for this field.
*/
public function settingsForm($view_mode, $form, &$form_state) {
}
/**
* Provides the display for a field
*
* This function corresponds to the hook_field_formatter_view()
* function of the Drupal Field API.
*
* This function provides the display for a field when it is viewed on
* the web page. The content returned by the formatter should only include
* what is present in the $items[$delta]['values] array. This way, the
* contents that are displayed on the page, via webservices and downloaded
* into a CSV file will always be identical. The view need not show all
* of the data in the 'values' array.
*
* @param $element
* @param $entity_type
* @param $entity
* @param $langcode
* @param $items
* @param $display
*
* @return
* An element array compatible with that returned by the
* hook_field_formatter_view() function.
*/
public function view(&$element, $entity_type, $entity, $langcode, $items, $display) {
// Get the settings
$settings = $display['settings'];
$field_name = $this->field['field_name'];
// Get any subfields and the header label. Shift the array because the
// results should already be the value of the fisrt entry.
$rd_field_name = $this->instance['settings']['data_info']['rd_field_name'];
$subfields = explode(',', $rd_field_name);
$header_label = $this->getHeaderLabel($subfields);
array_shift($subfields);
// Get the site logo if one is provided
$site_logo = $this->instance['settings']['data_info']['site_logo'];
if ($site_logo) {
$site_logo = file_load($site_logo);
}
// Get the site name where the data came from.
$site_id_ws = $this->instance['settings']['data_info']['remote_site'];
$site = db_select('tripal_sites', 'ts')
->fields('ts', array('name', 'url'))
->condition('ts.id', $site_id_ws)
->execute()
->fetchObject();
$content = '';
if (array_key_exists('label', $items[0]['remote_entity'])) {
$remote_entity_label = $items[0]['remote_entity']['label'];
$remote_entity_page = $items[0]['remote_entity']['ItemPage'];
$content = t('This content provided by !site.',
array('!site' => l($site->name, $site->url, array('attributes' => array("target" => '_blank')))));
if ($site_logo) {
$content .= '';
}
$content .= '
' . t('View !data on %site',
array('!data' => l('this content', $remote_entity_page, array('attributes' => array('target' => '_blank'))),
'%site' => $site->name));
}
else {
$content = t('There is no data about this record from the !site database.',
array('!site' => l($site->name, $site->uri)));
}
$rows = array();
foreach ($items as $index => $item) {
$value = $item['value'];
if (!$value) {
continue;
}
if (is_array($value)) {
$headers = array('');
// If this is a collection then handle it as a list of members.
if (array_key_exists('members', $value)) {
foreach ($value['members'] as $subvalue) {
$subvalue = $this->refineSubValue($subvalue, $subfields, $header_label);
$rows[]= array($subvalue);
}
}
else {
$subvalue = $this->refineSubValue($value, $subfields, $header_label);
$rows[]= array($subvalue);
}
}
else {
$rows[] = array($value);
}
}
$has_sub_tables = FALSE;
for ($i = 0; $i < count($rows); $i++) {
if (is_array($rows[$i][0])) {
$rows[$i][0] = $this->createTable($rows[$i]);
$has_sub_tables = TRUE;
}
}
// If we don't have tables for each row then we'll put everything into
// a table.
if (!$has_sub_tables) {
$headers = array($header_label . '(s)');
$content .= theme_table(array(
'header' => $headers,
'rows' => $rows,
'attributes' => array(
'class' => 'tripal-remote--data-field-table',
),
'sticky' => FALSE,
'caption' => "",
'colgroups' => array(),
'empty' => 'There are no results.',
));
}
else {
for ($i = 0; $i < count($rows); $i++) {
if (count($rows) > 1) {
$content .= '
' . $header_label . ' ' . ($i + 1) . '
'; } $content .= $rows[$i][0]; } } // Return the content for this field. $element[0] = array( '#type' => 'markup', '#markup' => '