You are here

function track_da_files_field_formatter_view in Track da files 7

Implements hook_field_formatter_view().

File

./track_da_files.module, line 211
This file contains Track da files main functions.

Code

function track_da_files_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $element = array();
  $separator = variable_get('clean_url', FALSE) ? '?' : '&';
  $track_da_files_file_field_links_show_enabled = variable_get('track_da_files_file_field_links_show_enabled', 1);
  $track_da_files_colorbox_enabled = variable_get('track_da_files_colorbox_enabled', 0);
  switch ($display['type']) {
    case 'track_da_files_file_default':
      foreach ($items as $delta => $item) {
        $access = user_access('view tracked files displays datas');
        if ($access && (isset($track_da_files_file_field_links_show_enabled) && $track_da_files_file_field_links_show_enabled)) {
          $query = "SELECT t.pid FROM {track_da_files_paths} t " . "WHERE t.fid = :fid AND t.path = :uri ";
          $result = db_query($query, array(
            ':fid' => $item['fid'],
            ':uri' => $item['uri'],
          ))
            ->fetch();
          if (!empty($result)) {
            $pid = $result->pid;
            $query2 = "SELECT COUNT(t.recid) counter FROM {track_da_files} t " . "WHERE t.pid = :pid GROUP BY t.pid ";
            $result2 = db_query($query2, array(
              ':pid' => $pid,
            ))
              ->fetch();
            if (!empty($result2)) {
              $item['displays'] = $result2->counter;
            }
          }
        }

        // Register into file object entity id and type.
        if (isset($entity_type)) {
          $entity_info = entity_get_info($entity_type);
          $item['type'] = $entity_type;
          $item['id'] = $entity->{$entity_info['entity keys']['id']};
          if (isset($display['settings']['force_download'])) {
            $item['force_download'] = $display['settings']['force_download'];
          }
          if (isset($display['settings']['custom_link_text'])) {
            $item['custom_link_text'] = $display['settings']['custom_link_text'];
          }
        }
        $element[$delta] = array(
          '#theme' => 'track_da_files_file_link',
          '#file' => (object) $item,
        );
      }
      break;
    case 'track_da_files_url_plain':
      foreach ($items as $delta => $item) {

        // Register into file object entity id and type.
        if (isset($entity_type)) {
          $entity_info = entity_get_info($entity_type);
          $item['type'] = $entity_type;
          $item['id'] = $entity->{$entity_info['entity keys']['id']};
        }
        $element[$delta] = array(
          '#theme' => 'track_da_files_url_plain',
          '#file' => (object) $item,
        );
      }
      break;
    case 'track_da_files_file_table':
      if (!empty($items)) {

        // Display all values in a single element.
        $element[0] = array(
          '#theme' => 'track_da_files_file_formatter_table',
          '#items' => $items,
        );
        foreach ($items as $delta => $item) {

          // Register into file object entity id and type.
          if (isset($entity_type)) {
            $entity_info = entity_get_info($entity_type);
            $element[0]['#items'][$delta]['type'] = $entity_type;
            $element[0]['#items'][$delta]['id'] = $entity->{$entity_info['entity keys']['id']};
            if (isset($display['settings']['force_download'])) {
              $element[0]['#items'][$delta]['force_download'] = $display['settings']['force_download'];
            }
            if (isset($display['settings']['custom_link_text'])) {
              $element[0]['#items'][$delta]['custom_link_text'] = $display['settings']['custom_link_text'];
            }
          }
          $access = user_access('view tracked files displays datas');
          if ($access && (isset($track_da_files_file_field_links_show_enabled) && $track_da_files_file_field_links_show_enabled)) {
            $query = "SELECT t.pid FROM {track_da_files_paths} t " . "WHERE t.fid = :fid AND t.path = :uri ";
            $result = db_query($query, array(
              ':fid' => $item['fid'],
              ':uri' => $item['uri'],
            ))
              ->fetch();
            if (!empty($result)) {
              $pid = $result->pid;
              $query2 = "SELECT COUNT(t.recid) counter FROM {track_da_files} t " . "WHERE t.pid = :pid GROUP BY t.pid ";
              $result2 = db_query($query2, array(
                ':pid' => $pid,
              ))
                ->fetch();
              if (!empty($result2)) {
                $element[0]['#items'][$delta]['displays'] = $result2->counter;
              }
            }
          }
        }
      }
      break;
    case 'track_da_files_image':
    case 'track_da_files_colorbox_image':
      $element = array();
      foreach ($items as $delta => $item) {
        $field_count_show = $item['force_download'] = '';
        $access = user_access('view tracked files displays datas');
        if ($access && (isset($track_da_files_file_field_links_show_enabled) && $track_da_files_file_field_links_show_enabled)) {
          $query = "SELECT t.pid FROM {track_da_files_paths} t " . "WHERE t.fid = :fid AND t.path = :uri ";
          $result = db_query($query, array(
            ':fid' => $item['fid'],
            ':uri' => $item['uri'],
          ))
            ->fetch();
          if (!empty($result)) {
            $pid = $result->pid;
            $query2 = "SELECT COUNT(t.recid) counter FROM {track_da_files} t " . "WHERE t.pid = :pid GROUP BY t.pid ";
            $result2 = db_query($query2, array(
              ':pid' => $pid,
            ))
              ->fetch();
            if (!empty($result2)) {
              $item['displays'] = $result2->counter;
            }
          }
          if (isset($item['displays']) && $item['displays'] > 0) {
            $field_count_show = '<span class="file-displayed-counter">' . format_plural($item['displays'], 'displayed 1 time', 'displayed @count times') . '</span>';
          }
        }

        // Register into file object entity id and type.
        if (isset($entity_type)) {
          $entity_info = entity_get_info($entity_type);
          $item['type'] = $entity_type;
          $item['id'] = $entity->{$entity_info['entity keys']['id']};
          if (isset($display['settings']['force_download'])) {
            $item['force_download'] = $display['settings']['force_download'];
          }
        }
        if ($track_da_files_colorbox_enabled == 1 && $display['type'] == 'track_da_files_colorbox_image') {
          $uri = array(
            'path' => track_da_files_create_url($item['uri']),
            'options' => array(
              'query' => array(
                'file' => '1',
                'type' => $item['type'],
                'id' => $item['id'],
              ),
              'attributes' => array(
                'class' => array(
                  'colorbox',
                ),
              ),
            ),
          );
        }
        else {
          $uri = array(
            'path' => track_da_files_create_url($item['uri']),
            'options' => array(
              'query' => array(
                'file' => '1',
                'type' => $item['type'],
                'id' => $item['id'],
                'force' => $item['force_download'],
              ),
            ),
          );
        }
        $element[$delta] = array(
          '#theme' => 'image_formatter',
          '#item' => $item,
          '#image_style' => $display['settings']['image_style'],
          '#path' => isset($uri) ? $uri : '',
          '#suffix' => isset($field_count_show) ? $field_count_show : '',
        );
      }
      break;
  }
  return $element;
}