'attachment', 'join' => array( 'left' => array( 'table' => 'node', 'field' => 'nid', ), 'right' => array( 'field' => 'nid', ), ), 'fields' => array( 'fid' => array( 'name' => t('Attachment: Id'), 'sortable' => true, 'help' => t('Attachment Id which represents the file.'), ), ), 'sorts' => array( 'fid' => array( 'name' => t('Sort by Attachment Id'), ), ), 'filters' => array( 'fid' => array( 'name' => t('Attachment: Has file downloads'), 'operator' => array('=' => t('Exists')), 'list' => 'views_handler_operator_yesno', 'list-type' => 'select', 'handler' => 'views_handler_attachment_filter_fid_exist', 'help' => t('Filter whether the node has files for download'), ), 'list' => array( 'name' => t('Attachment: Listed in file downloads'), 'operator' => array('=' => t('Equals')), 'list' => 'views_handler_operator_yesno', 'list-type' => 'select', 'help' => t('Filter whether the file is listed in downloads'), ), ), ); $tables['file'] = array( 'name' => 'file', 'join' => array( 'left' => array( 'table' => 'attachment', 'field' => 'fid', ), 'right' => array( 'field' => 'fid' ), ), 'fields' => array( 'filename' => array( 'name' => t('Attachment: Name'), 'handler' => array( 'views_handler_attachment_filename' => t('Plain'), 'views_handler_attachment_filename_download' => t('With download link'), ), 'sortable' => true, 'option' => 'string', 'help' => t('Display file name'), ), 'mimetype' => array( 'name' => t('Attachment: Mime type'), 'sortable' => true, 'help' => t('This filter allows nodes to be filtered by mime type.'), ), 'size' => array( 'name' => t('Attachment: Size'), 'handler' => 'views_handler_attachment_size', 'sortable' => true, 'help' => t('Display the size of the associated file.'), ), ), 'filters' => array( 'filename' => array( 'name' => t('Attachment: Filename'), 'operator' => 'views_handler_operator_like', 'handler' => 'views_handler_filter_like', 'help' => t('This filter allows nodes to be filtered by the name of attached files.'), ), 'mimetype' => array( 'name' => t('Attachment: Mime type'), 'operator' => 'views_handler_operator_like', 'handler' => 'views_handler_filter_like', 'help' => t('This filter allows nodes to be filtered by mime type.'), ), 'size' => array( 'name' => t('Attachment: Size'), 'operator' => 'views_handler_operator_gtlt', 'help' => t('This filter allows nodes to be filtered by file size.'), ), ), 'sorts' => array( 'filename' => array( 'name' => t('File: Sort by Filename'), 'help' => t('Sort by file name'), ), 'mimetype' => array( 'name' => t('Attachment: Mime type'), 'help' => t('Sort by mime type.'), ), 'size' => array( 'name' => t('Attachment: File size'), 'help' => t('Sort by file size.'), ), ), ); return $tables; } function views_handler_attachment_filename($fieldinfo, $fielddata, $value, $data) { return $value; } function views_handler_attachment_size($fieldinfo, $fielddata, $value, $data) { return format_size($value); } function views_handler_attachment_filename_download($fieldinfo, $fielddata, $value, $data) { $link_text = $fielddata['options'] ? $fielddata['options'] : $value; return $value ? l($link_text, check_url(file_create_url($data->files_filepath))) : ''; } function views_handler_attachment_filter_fid_exist($op, $filter, $filterdata, &$query) { switch ($op) { case 'handler': $query->ensure_table('attachment'); if ($filter['value']) { $query->add_where('attachment.fid'); } else { $query->add_where('ISNULL(attachment.fid)'); } } }