function scheduled_publish_views_data_alter in Scheduled Publish 8.3
Implements hook_views_data_alter().
File
- ./
scheduled_publish.module, line 80 - Contains scheduled_publish.module.
Code
function scheduled_publish_views_data_alter(array &$data) {
// Create a dynamic data entry for Views based on the
// first available scheduled publishing field.
$fields = scheduled_publish_get_node_fields();
if ($fields && isset($data['node__' . $fields[0]])) {
$field = array_shift($fields);
$field_table = 'node__' . $field;
$state_field = $field . '_moderation_state';
$value_field = $field . '_value';
// Results from the base table.
$db_connection = Database::getConnection();
$query = $db_connection
->select($field_table, 'ft');
$query
->fields('ft');
// Add results from other field tables via union.
foreach ($fields as $key => $f_name) {
$union = $db_connection
->select('node__' . $f_name, 'ft' . $key);
$union
->fields('ft' . $key);
$query
->union($union);
}
// Change values to make this have a static configuration
// and titles different from the base entry.
$data['scheduled_publish_dynamic']['table'] = $data[$field_table]['table'];
unset($data['scheduled_publish_dynamic']['table']['join']['node_field_data']['table']);
$data['scheduled_publish_dynamic']['table']['join']['node_field_data']['table formula'] = $query;
$data['scheduled_publish_dynamic']['sp_dynamic'] = $data[$field_table][$field];
$data['scheduled_publish_dynamic']['sp_dynamic']['title'] = 'Scheduled publish dynamic';
$data['scheduled_publish_dynamic']['sp_dynamic']['title short'] = 'SP dynamic';
$data['scheduled_publish_dynamic']['sp_dynamic_moderation_state'] = $data[$field_table][$state_field];
$data['scheduled_publish_dynamic']['sp_dynamic_moderation_state']['title'] = 'Scheduled publish dynamic (moderation state)';
$data['scheduled_publish_dynamic']['sp_dynamic_moderation_state']['title short'] = 'SP dynamic (moderation state)';
if (isset($data[$field_table]['delta'])) {
$data['scheduled_publish_dynamic']['delta'] = $data[$field_table]['delta'];
$data['scheduled_publish_dynamic']['delta']['title'] = 'Scheduled publish dynamic (delta)';
$data['scheduled_publish_dynamic']['delta']['title short'] = 'SP dynamic (delta)';
}
$data['scheduled_publish_dynamic']['sp_dynamic_value'] = $data[$field_table][$value_field];
$data['scheduled_publish_dynamic']['sp_dynamic_value']['title'] = 'Scheduled publish dynamic (value)';
$data['scheduled_publish_dynamic']['sp_dynamic_value']['title short'] = 'SP dynamic (value)';
}
}