You are here

file_entity_link.module in File Entity Link 7

File

file_entity_link.module
View source
<?php

define('FILE_ENTITY_LINK_SETTINGS_VAR', 'file_entity_link_settings');

/**
 * Implements hook_theme
 * Enter description here ...
 */
function file_entity_link_theme() {
  return array(
    'file_entity_link_add_link' => array(
      'render element' => 'element',
    ),
  );
}

/**
 * Theme function
 * Enter description here ...
 * @param unknown_type $vars
 */
function theme_file_entity_link_add_link($vars) {
  $element = $vars['element'];
  $children = drupal_render($element['#contents']);
  $element['#uri']['options']['html'] = TRUE;
  return l($children, $element['#uri']['path'], $element['#uri']['options']);
}

/**
 * Implements hook_file_view
 * Enter description here ...
 * @param unknown_type $file
 * @param unknown_type $view_mode
 * @param unknown_type $langcode
 */
function file_entity_link_file_view($file, $view_mode, $langcode) {
  $settings = variable_get(FILE_ENTITY_LINK_SETTINGS_VAR, array());
  if (isset($settings[$file->type][$view_mode]) && $settings[$file->type][$view_mode] && !empty($file->referencing_entity)) {
    $entity_type = '';
    $referencing_entity = $file->referencing_entity;

    // If we are on a Field Collection Item
    if ($referencing_entity instanceof FieldCollectionItemEntity) {
      $entity_type = $referencing_entity
        ->hostEntityType();
      $referencing_entity = $referencing_entity
        ->hostEntity();
    }
    else {
      if (isset($referencing_entity->nid)) {
        $entity_type = 'node';
      }
      elseif (isset($referencing_entity->tid)) {
        $entity_type = 'taxonomy_term';
      }
    }
    if (!empty($entity_type)) {
      switch ($entity_type) {
        default:
          $uri = entity_uri('node', $referencing_entity);
      }
    }
    if (!empty($uri)) {
      $file->content['file'] = array(
        '#contents' => $file->content['file'],
        '#uri' => $uri,
        '#theme' => 'file_entity_link_add_link',
      );
    }
  }
}

/**
 * Implements hook_form_alter
 * Enter description here ...
 * @param unknown_type $form
 * @param unknown_type $form_state
 * @param unknown_type $form_id
 */
function file_entity_link_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'file_entity_file_display_form') {
    $settings = variable_get(FILE_ENTITY_LINK_SETTINGS_VAR, array());
    $form['link'] = array(
      '#type' => 'item',
      '#title' => 'Link options',
      'link_file' => array(
        '#type' => 'checkbox',
        '#title' => 'Link file to referencing entity',
        '#default_value' => isset($settings[$form['#file_type']][$form['#view_mode']]) ? $settings[$form['#file_type']][$form['#view_mode']] : FALSE,
      ),
    );
    $form['#submit'][] = 'file_entity_link_display_form_submit';
  }
}

/**
 * Submit handler for file display form
 * Enter description here ...
 * @param unknown_type $form
 * @param unknown_type $form_state
 */
function file_entity_link_display_form_submit($form, &$form_state) {
  $settings = variable_get(FILE_ENTITY_LINK_SETTINGS_VAR, array());
  if (!isset($settings[$form['#file_type']])) {
    $settings[$form['#file_type']] = array();
  }
  $settings[$form['#file_type']][$form['#view_mode']] = $form_state['values']['link']['link_file'];
  variable_set(FILE_ENTITY_LINK_SETTINGS_VAR, $settings);
}

Functions

Namesort descending Description
file_entity_link_display_form_submit Submit handler for file display form Enter description here ...
file_entity_link_file_view Implements hook_file_view Enter description here ...
file_entity_link_form_alter Implements hook_form_alter Enter description here ...
file_entity_link_theme Implements hook_theme Enter description here ...
theme_file_entity_link_add_link Theme function Enter description here ...

Constants