12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031 |
- <?php
- function file_field_info() {
- return array(
- 'file' => array(
- 'label' => t('File'),
- 'description' => t('This field stores the ID of a file as an integer value.'),
- 'settings' => array(
- 'display_field' => 0,
- 'display_default' => 0,
- 'uri_scheme' => variable_get('file_default_scheme', 'public'),
- ),
- 'instance_settings' => array(
- 'file_extensions' => 'txt',
- 'file_directory' => '',
- 'max_filesize' => '',
- 'description_field' => 0,
- ),
- 'default_widget' => 'file_generic',
- 'default_formatter' => 'file_default',
- ),
- );
- }
- function file_field_settings_form($field, $instance, $has_data) {
- $defaults = field_info_field_settings($field['type']);
- $settings = array_merge($defaults, $field['settings']);
- $form['#attached']['js'][] = drupal_get_path('module', 'file') . '/file.js';
- $form['display_field'] = array(
- '#type' => 'checkbox',
- '#title' => t('Enable <em>Display</em> field'),
- '#default_value' => $settings['display_field'],
- '#description' => t('The display option allows users to choose if a file should be shown when viewing the content.'),
- );
- $form['display_default'] = array(
- '#type' => 'checkbox',
- '#title' => t('Files displayed by default'),
- '#default_value' => $settings['display_default'],
- '#description' => t('This setting only has an effect if the display option is enabled.'),
- );
- $scheme_options = array();
- foreach (file_get_stream_wrappers(STREAM_WRAPPERS_WRITE_VISIBLE) as $scheme => $stream_wrapper) {
- $scheme_options[$scheme] = $stream_wrapper['name'];
- }
- $form['uri_scheme'] = array(
- '#type' => 'radios',
- '#title' => t('Upload destination'),
- '#options' => $scheme_options,
- '#default_value' => $settings['uri_scheme'],
- '#description' => t('Select where the final files should be stored. Private file storage has significantly more overhead than public files, but allows restricted access to files within this field.'),
- '#disabled' => $has_data,
- );
- return $form;
- }
- function file_field_instance_settings_form($field, $instance) {
- $settings = $instance['settings'];
- $form['file_directory'] = array(
- '#type' => 'textfield',
- '#title' => t('File directory'),
- '#default_value' => $settings['file_directory'],
- '#description' => t('Optional subdirectory within the upload destination where files will be stored. Do not include preceding or trailing slashes.'),
- '#element_validate' => array('_file_generic_settings_file_directory_validate'),
- '#weight' => 3,
- );
-
- $extensions = str_replace(' ', ', ', $settings['file_extensions']);
- $form['file_extensions'] = array(
- '#type' => 'textfield',
- '#title' => t('Allowed file extensions'),
- '#default_value' => $extensions,
- '#description' => t('Separate extensions with a space or comma and do not include the leading dot.'),
- '#element_validate' => array('_file_generic_settings_extensions'),
- '#weight' => 1,
- '#maxlength' => 256,
-
-
- '#required' => TRUE,
- );
- $form['max_filesize'] = array(
- '#type' => 'textfield',
- '#title' => t('Maximum upload size'),
- '#default_value' => $settings['max_filesize'],
- '#description' => t('Enter a value like "512" (bytes), "80 KB" (kilobytes) or "50 MB" (megabytes) in order to restrict the allowed file size. If left empty the file sizes will be limited only by PHP\'s maximum post and file upload sizes (current limit <strong>%limit</strong>).', array('%limit' => format_size(file_upload_max_size()))),
- '#size' => 10,
- '#element_validate' => array('_file_generic_settings_max_filesize'),
- '#weight' => 5,
- );
- $form['description_field'] = array(
- '#type' => 'checkbox',
- '#title' => t('Enable <em>Description</em> field'),
- '#default_value' => isset($settings['description_field']) ? $settings['description_field'] : '',
- '#description' => t('The description field allows users to enter a description about the uploaded file.'),
- '#parents' => array('instance', 'settings', 'description_field'),
- '#weight' => 11,
- );
- return $form;
- }
- function _file_generic_settings_max_filesize($element, &$form_state) {
- if (!empty($element['#value']) && !is_numeric(parse_size($element['#value']))) {
- form_error($element, t('The "!name" option must contain a valid value. You may either leave the text field empty or enter a string like "512" (bytes), "80 KB" (kilobytes) or "50 MB" (megabytes).', array('!name' => t($element['title']))));
- }
- }
- function _file_generic_settings_extensions($element, &$form_state) {
- if (!empty($element['#value'])) {
- $extensions = preg_replace('/([, ]+\.?)/', ' ', trim(strtolower($element['#value'])));
- $extensions = array_filter(explode(' ', $extensions));
- $extensions = implode(' ', array_unique($extensions));
- if (!preg_match('/^([a-z0-9]+([.][a-z0-9])* ?)+$/', $extensions)) {
- form_error($element, t('The list of allowed extensions is not valid, be sure to exclude leading dots and to separate extensions with a comma or space.'));
- }
- else {
- form_set_value($element, $extensions, $form_state);
- }
- }
- }
- function _file_generic_settings_file_directory_validate($element, &$form_state) {
-
- $value = trim($element['#value'], '\\/');
- form_set_value($element, $value, $form_state);
- }
- function file_field_load($entity_type, $entities, $field, $instances, $langcode, &$items, $age) {
- $fids = array();
- foreach ($entities as $id => $entity) {
-
- foreach ($items[$id] as $delta => $item) {
- if (!empty($item['fid'])) {
- $fids[] = $item['fid'];
- }
- }
- }
- $files = file_load_multiple($fids);
- foreach ($entities as $id => $entity) {
- foreach ($items[$id] as $delta => $item) {
-
- if (empty($item['fid']) || !isset($files[$item['fid']])) {
- $items[$id][$delta] = NULL;
- }
- else {
- $items[$id][$delta] = array_merge((array) $files[$item['fid']], $item);
- }
- }
- }
- }
- function file_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, &$items) {
-
- foreach ($entities as $id => $entity) {
- foreach ($items[$id] as $delta => $item) {
- if (!file_field_displayed($item, $field)) {
- unset($items[$id][$delta]);
- }
- }
-
- $items[$id] = array_values($items[$id]);
- }
- }
- function file_field_presave($entity_type, $entity, $field, $instance, $langcode, &$items) {
-
-
-
- foreach ($items as $delta => $item) {
- if (empty($item['fid'])) {
- unset($items[$delta]);
- continue;
- }
- $file = file_load($item['fid']);
- if (empty($file)) {
- unset($items[$delta]);
- continue;
- }
- if (!$file->status) {
- $file->status = FILE_STATUS_PERMANENT;
- file_save($file);
- }
- }
- }
- function file_field_insert($entity_type, $entity, $field, $instance, $langcode, &$items) {
- list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
-
- foreach ($items as $item) {
- $file = (object) $item;
- file_usage_add($file, 'file', $entity_type, $id);
- }
- }
- function file_field_update($entity_type, $entity, $field, $instance, $langcode, &$items) {
-
- if (!isset($entity->{$field['field_name']})) {
-
- return;
- }
- list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
-
-
- if (!empty($entity->revision)) {
- foreach ($items as $item) {
- $file = (object) $item;
- file_usage_add($file, 'file', $entity_type, $id);
- }
- return;
- }
-
- $current_fids = array();
- foreach ($items as $item) {
- $current_fids[] = $item['fid'];
- }
-
-
-
- if (isset($entity->original)) {
- $original = $entity->original;
- }
- else {
- $original = entity_create_stub_entity($entity_type, array($id, $vid, $bundle));
- field_attach_load($entity_type, array($id => $original), FIELD_LOAD_CURRENT, array('field_id' => $field['id']));
- }
- $original_fids = array();
- if (!empty($original->{$field['field_name']}[$langcode])) {
- foreach ($original->{$field['field_name']}[$langcode] as $original_item) {
- $original_fids[] = $original_item['fid'];
- if (isset($original_item['fid']) && !in_array($original_item['fid'], $current_fids)) {
-
- file_field_delete_file($original_item, $field, $entity_type, $id);
- }
- }
- }
-
- foreach ($items as $item) {
- if (!in_array($item['fid'], $original_fids)) {
- $file = (object) $item;
- file_usage_add($file, 'file', $entity_type, $id);
- }
- }
- }
- function file_field_delete($entity_type, $entity, $field, $instance, $langcode, &$items) {
- list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
-
- foreach ($items as $delta => $item) {
- file_field_delete_file($item, $field, $entity_type, $id, 0);
- }
- }
- function file_field_delete_revision($entity_type, $entity, $field, $instance, $langcode, &$items) {
- list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
- foreach ($items as $delta => $item) {
-
- if (file_field_delete_file($item, $field, $entity_type, $id)) {
- $items[$delta] = NULL;
- }
- }
- }
- function file_field_delete_file($item, $field, $entity_type, $id, $count = 1) {
-
-
-
- $file = (object) $item;
- $file_usage = file_usage_list($file);
- if ($file->status == 0 || !empty($file_usage['file'])) {
- file_usage_delete($file, 'file', $entity_type, $id, $count);
- return file_delete($file);
- }
-
-
- return TRUE;
- }
- function file_field_is_empty($item, $field) {
- return empty($item['fid']);
- }
- function file_field_displayed($item, $field) {
- if (!empty($field['settings']['display_field'])) {
- return (bool) $item['display'];
- }
- return TRUE;
- }
- function file_field_formatter_info() {
- return array(
- 'file_default' => array(
- 'label' => t('Generic file'),
- 'field types' => array('file'),
- ),
- 'file_table' => array(
- 'label' => t('Table of files'),
- 'field types' => array('file'),
- ),
- 'file_url_plain' => array(
- 'label' => t('URL to file'),
- 'field types' => array('file'),
- ),
- );
- }
- function file_field_widget_info() {
- return array(
- 'file_generic' => array(
- 'label' => t('File'),
- 'field types' => array('file'),
- 'settings' => array(
- 'progress_indicator' => 'throbber',
- ),
- 'behaviors' => array(
- 'multiple values' => FIELD_BEHAVIOR_CUSTOM,
- 'default value' => FIELD_BEHAVIOR_NONE,
- ),
- ),
- );
- }
- function file_field_widget_settings_form($field, $instance) {
- $widget = $instance['widget'];
- $settings = $widget['settings'];
- $form['progress_indicator'] = array(
- '#type' => 'radios',
- '#title' => t('Progress indicator'),
- '#options' => array(
- 'throbber' => t('Throbber'),
- 'bar' => t('Bar with progress meter'),
- ),
- '#default_value' => $settings['progress_indicator'],
- '#description' => t('The throbber display does not show the status of uploads but takes up less space. The progress bar is helpful for monitoring progress on large uploads.'),
- '#weight' => 16,
- '#access' => file_progress_implementation(),
- );
- return $form;
- }
- function file_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
- $defaults = array(
- 'fid' => 0,
- 'display' => !empty($field['settings']['display_default']),
- 'description' => '',
- );
-
-
-
- $field_state = field_form_get_state($element['#field_parents'], $field['field_name'], $langcode, $form_state);
- if (isset($field_state['items'])) {
- $items = $field_state['items'];
- }
-
- $element_info = element_info('managed_file');
- $element += array(
- '#type' => 'managed_file',
- '#upload_location' => file_field_widget_uri($field, $instance),
- '#upload_validators' => file_field_widget_upload_validators($field, $instance),
- '#value_callback' => 'file_field_widget_value',
- '#process' => array_merge($element_info['#process'], array('file_field_widget_process')),
- '#progress_indicator' => $instance['widget']['settings']['progress_indicator'],
-
- '#extended' => TRUE,
- );
- if ($field['cardinality'] == 1) {
-
- $element['#default_value'] = !empty($items) ? $items[0] : $defaults;
-
- if (empty($element['#default_value']['fid'])) {
- $element['#description'] = theme('file_upload_help', array('description' => $element['#description'], 'upload_validators' => $element['#upload_validators']));
- }
- $elements = array($element);
- }
- else {
-
- foreach ($items as $item) {
- $elements[$delta] = $element;
- $elements[$delta]['#default_value'] = $item;
- $elements[$delta]['#weight'] = $delta;
- $delta++;
- }
-
-
- if (($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED || $delta < $field['cardinality']) && empty($form_state['programmed'])) {
- $elements[$delta] = $element;
- $elements[$delta]['#default_value'] = $defaults;
- $elements[$delta]['#weight'] = $delta;
- $elements[$delta]['#required'] = ($element['#required'] && $delta == 0);
- }
-
-
- $elements['#file_upload_delta'] = $delta;
- $elements['#theme'] = 'file_widget_multiple';
- $elements['#theme_wrappers'] = array('fieldset');
- $elements['#process'] = array('file_field_widget_process_multiple');
- $elements['#title'] = $element['#title'];
- $elements['#description'] = $element['#description'];
- $elements['#field_name'] = $element['#field_name'];
- $elements['#language'] = $element['#language'];
- $elements['#display_field'] = $field['settings']['display_field'];
-
-
-
- $elements['#file_upload_title'] = t('Add a new file');
- $elements['#file_upload_description'] = theme('file_upload_help', array('description' => '', 'upload_validators' => $elements[0]['#upload_validators']));
- }
- return $elements;
- }
- function file_field_widget_upload_validators($field, $instance) {
-
- $max_filesize = parse_size(file_upload_max_size());
- if (!empty($instance['settings']['max_filesize']) && parse_size($instance['settings']['max_filesize']) < $max_filesize) {
- $max_filesize = parse_size($instance['settings']['max_filesize']);
- }
- $validators = array();
-
- $validators['file_validate_size'] = array($max_filesize);
-
- if (!empty($instance['settings']['file_extensions'])) {
- $validators['file_validate_extensions'] = array($instance['settings']['file_extensions']);
- }
- return $validators;
- }
- function file_field_widget_uri($field, $instance, $data = array()) {
- $destination = trim($instance['settings']['file_directory'], '/');
-
- $destination = token_replace($destination, $data);
- return $field['settings']['uri_scheme'] . '://' . $destination;
- }
- function file_field_widget_value($element, $input = FALSE, $form_state) {
- if ($input) {
-
-
- $field = field_widget_field($element, $form_state);
- if (empty($input['display'])) {
- $input['display'] = $field['settings']['display_field'] ? 0 : 1;
- }
- }
-
- $return = file_managed_file_value($element, $input, $form_state);
-
- $return += array(
- 'fid' => 0,
- 'display' => 1,
- 'description' => '',
- );
- return $return;
- }
- function file_field_widget_process($element, &$form_state, $form) {
- $item = $element['#value'];
- $item['fid'] = $element['fid']['#value'];
- $field = field_widget_field($element, $form_state);
- $instance = field_widget_instance($element, $form_state);
- $settings = $instance['widget']['settings'];
- $element['#theme'] = 'file_widget';
-
- if (!empty($field['settings']['display_field']) && $item['fid']) {
- $element['display'] = array(
- '#type' => empty($item['fid']) ? 'hidden' : 'checkbox',
- '#title' => t('Include file in display'),
- '#value' => isset($item['display']) ? $item['display'] : $field['settings']['display_default'],
- '#attributes' => array('class' => array('file-display')),
- );
- }
- else {
- $element['display'] = array(
- '#type' => 'hidden',
- '#value' => '1',
- );
- }
-
- if (!empty($instance['settings']['description_field']) && $item['fid']) {
- $element['description'] = array(
- '#type' => variable_get('file_description_type', 'textfield'),
- '#title' => t('Description'),
- '#value' => isset($item['description']) ? $item['description'] : '',
- '#maxlength' => variable_get('file_description_length', 128),
- '#description' => t('The description may be used as the label of the link to the file.'),
- );
- }
-
-
- if ($field['cardinality'] != 1) {
- $parents = array_slice($element['#array_parents'], 0, -1);
- $new_path = 'file/ajax/' . implode('/', $parents) . '/' . $form['form_build_id']['#value'];
- $field_element = drupal_array_get_nested_value($form, $parents);
- $new_wrapper = $field_element['#id'] . '-ajax-wrapper';
- foreach (element_children($element) as $key) {
- if (isset($element[$key]['#ajax'])) {
- $element[$key]['#ajax']['path'] = $new_path;
- $element[$key]['#ajax']['wrapper'] = $new_wrapper;
- }
- }
- unset($element['#prefix'], $element['#suffix']);
- }
-
-
-
-
- foreach (array('upload_button', 'remove_button') as $key) {
- $element[$key]['#submit'][] = 'file_field_widget_submit';
- $element[$key]['#limit_validation_errors'] = array(array_slice($element['#parents'], 0, -1));
- }
- return $element;
- }
- function file_field_widget_process_multiple($element, &$form_state, $form) {
- $element_children = element_children($element, TRUE);
- $count = count($element_children);
- foreach ($element_children as $delta => $key) {
- if ($key != $element['#file_upload_delta']) {
- $description = _file_field_get_description_from_element($element[$key]);
- $element[$key]['_weight'] = array(
- '#type' => 'weight',
- '#title' => $description ? t('Weight for @title', array('@title' => $description)) : t('Weight for new file'),
- '#title_display' => 'invisible',
- '#delta' => $count,
- '#default_value' => $delta,
- );
- }
- else {
-
-
- $element[$key]['#title'] = $element['#title'];
- $element[$key]['_weight'] = array(
- '#type' => 'hidden',
- '#default_value' => $delta,
- );
- }
- }
-
- $element['#prefix'] = '<div id="' . $element['#id'] . '-ajax-wrapper">';
- $element['#suffix'] = '</div>';
- return $element;
- }
- function _file_field_get_description_from_element($element) {
-
- if (!empty($element['#default_value']['description'])) {
- return $element['#default_value']['description'];
- }
-
- if (!empty($element['#default_value']['filename'])) {
- return $element['#default_value']['filename'];
- }
-
- return FALSE;
- }
- function file_field_widget_submit($form, &$form_state) {
-
-
-
-
-
- $parents = array_slice($form_state['triggering_element']['#parents'], 0, -2);
- drupal_array_set_nested_value($form_state['input'], $parents, NULL);
- $button = $form_state['triggering_element'];
-
- $element = drupal_array_get_nested_value($form, array_slice($button['#array_parents'], 0, -1));
- $field_name = $element['#field_name'];
- $langcode = $element['#language'];
- $parents = $element['#field_parents'];
- $submitted_values = drupal_array_get_nested_value($form_state['values'], array_slice($button['#parents'], 0, -2));
- foreach ($submitted_values as $delta => $submitted_value) {
- if (!$submitted_value['fid']) {
- unset($submitted_values[$delta]);
- }
- }
-
- $submitted_values = array_values($submitted_values);
-
- drupal_array_set_nested_value($form_state['values'], array_slice($button['#parents'], 0, -2), $submitted_values);
-
- $field_state = field_form_get_state($parents, $field_name, $langcode, $form_state);
- $field_state['items'] = $submitted_values;
- field_form_set_state($parents, $field_name, $langcode, $form_state, $field_state);
- }
- function theme_file_widget($variables) {
- $element = $variables['element'];
- $output = '';
-
- $output .= '<div class="file-widget form-managed-file clearfix">';
- if ($element['fid']['#value'] != 0) {
-
- $element['filename']['#markup'] .= ' <span class="file-size">(' . format_size($element['#file']->filesize) . ')</span> ';
- }
- $output .= drupal_render_children($element);
- $output .= '</div>';
- return $output;
- }
- function theme_file_widget_multiple($variables) {
- $element = $variables['element'];
-
- $weight_class = $element['#id'] . '-weight';
- $table_id = $element['#id'] . '-table';
-
- $headers = array();
- $headers[] = t('File information');
- if ($element['#display_field']) {
- $headers[] = array(
- 'data' => t('Display'),
- 'class' => array('checkbox'),
- );
- }
- $headers[] = t('Weight');
- $headers[] = t('Operations');
-
-
- $widgets = array();
- foreach (element_children($element) as $key) {
- $widgets[] = &$element[$key];
- }
- usort($widgets, '_field_sort_items_value_helper');
- $rows = array();
- foreach ($widgets as $key => &$widget) {
-
- if ($widget['#file'] == FALSE) {
- $widget['#title'] = $element['#file_upload_title'];
- $widget['#description'] = $element['#file_upload_description'];
- continue;
- }
-
-
- $operations_elements = array();
- foreach (element_children($widget) as $sub_key) {
- if (isset($widget[$sub_key]['#type']) && $widget[$sub_key]['#type'] == 'submit') {
- hide($widget[$sub_key]);
- $operations_elements[] = &$widget[$sub_key];
- }
- }
-
-
- if ($element['#display_field']) {
- hide($widget['display']);
- }
- hide($widget['_weight']);
-
- $widget['#theme_wrappers'] = array();
- $information = drupal_render($widget);
-
-
- $operations = '';
- foreach ($operations_elements as $operation_element) {
- $operations .= render($operation_element);
- }
- $display = '';
- if ($element['#display_field']) {
- unset($widget['display']['#title']);
- $display = array(
- 'data' => render($widget['display']),
- 'class' => array('checkbox'),
- );
- }
- $widget['_weight']['#attributes']['class'] = array($weight_class);
- $weight = render($widget['_weight']);
-
- $row = array();
- $row[] = $information;
- if ($element['#display_field']) {
- $row[] = $display;
- }
- $row[] = $weight;
- $row[] = $operations;
- $rows[] = array(
- 'data' => $row,
- 'class' => isset($widget['#attributes']['class']) ? array_merge($widget['#attributes']['class'], array('draggable')) : array('draggable'),
- );
- }
- drupal_add_tabledrag($table_id, 'order', 'sibling', $weight_class);
- $output = '';
- $output = empty($rows) ? '' : theme('table', array('header' => $headers, 'rows' => $rows, 'attributes' => array('id' => $table_id)));
- $output .= drupal_render_children($element);
- return $output;
- }
- function theme_file_upload_help($variables) {
- $description = $variables['description'];
- $upload_validators = $variables['upload_validators'];
- $descriptions = array();
- if (strlen($description)) {
- $descriptions[] = $description;
- }
- if (isset($upload_validators['file_validate_size'])) {
- $descriptions[] = t('Files must be less than !size.', array('!size' => '<strong>' . format_size($upload_validators['file_validate_size'][0]) . '</strong>'));
- }
- if (isset($upload_validators['file_validate_extensions'])) {
- $descriptions[] = t('Allowed file types: !extensions.', array('!extensions' => '<strong>' . check_plain($upload_validators['file_validate_extensions'][0]) . '</strong>'));
- }
- if (isset($upload_validators['file_validate_image_resolution'])) {
- $max = $upload_validators['file_validate_image_resolution'][0];
- $min = $upload_validators['file_validate_image_resolution'][1];
- if ($min && $max && $min == $max) {
- $descriptions[] = t('Images must be exactly !size pixels.', array('!size' => '<strong>' . $max . '</strong>'));
- }
- elseif ($min && $max) {
- $descriptions[] = t('Images must be between !min and !max pixels.', array('!min' => '<strong>' . $min . '</strong>', '!max' => '<strong>' . $max . '</strong>'));
- }
- elseif ($min) {
- $descriptions[] = t('Images must be larger than !min pixels.', array('!min' => '<strong>' . $min . '</strong>'));
- }
- elseif ($max) {
- $descriptions[] = t('Images must be smaller than !max pixels.', array('!max' => '<strong>' . $max . '</strong>'));
- }
- }
- return implode('<br />', $descriptions);
- }
- function file_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
- $element = array();
- switch ($display['type']) {
- case 'file_default':
- foreach ($items as $delta => $item) {
- $element[$delta] = array(
- '#theme' => 'file_link',
- '#file' => (object) $item,
- );
- }
- break;
- case 'file_url_plain':
- foreach ($items as $delta => $item) {
- $element[$delta] = array('#markup' => empty($item['uri']) ? '' : file_create_url($item['uri']));
- }
- break;
- case 'file_table':
- if (!empty($items)) {
-
- $element[0] = array(
- '#theme' => 'file_formatter_table',
- '#items' => $items,
- );
- }
- break;
- }
- return $element;
- }
- function theme_file_formatter_table($variables) {
- $header = array(t('Attachment'), t('Size'));
- $rows = array();
- foreach ($variables['items'] as $delta => $item) {
- $rows[] = array(
- theme('file_link', array('file' => (object) $item)),
- format_size($item['filesize']),
- );
- }
- return empty($rows) ? '' : theme('table', array('header' => $header, 'rows' => $rows));
- }
|