You are here

function track_da_files_table_build_file_report in Track da files 8

Same name and namespace in other branches
  1. 7 includes/track_da_files.admin.inc \track_da_files_table_build_file_report()

Build variables used to create file report.

1 call to track_da_files_table_build_file_report()
track_da_files_table in includes/track_da_files.admin.inc
Builds a table which shows number of displays by file.

File

includes/track_da_files.admin.inc, line 411
Administrative page callbacks for Track da files module.

Code

function track_da_files_table_build_file_report($fid, $pid) {
  $track_da_files_single_file_report_datas = variable_get('track_da_files_single_file_report_datas', array(
    'id',
    'referer',
    'browser',
    'browser_version',
    'browser_platform',
    'ip',
    'uid',
  ));
  $track_da_files_user_report_enabled = variable_get('track_da_files_user_report_enabled', 1);

  // We prepare table header for file specific report.
  $header = array(
    array(
      'data' => t('Time'),
    ),
  );

  // Header datas.
  foreach ($track_da_files_single_file_report_datas as $data => $value) {
    if (!empty($value)) {
      if ($value == 'uid') {
        $header[] = array(
          'data' => t('Username'),
          'field' => $value,
          'sort' => 'DESC',
        );
      }
      elseif ($value == 'id') {
        $header[] = array(
          'data' => t('Related content'),
          'field' => $value,
          'sort' => 'DESC',
        );
      }
      elseif ($value == 'referer') {
        $header[] = array(
          'data' => t('Displayed from'),
          'field' => $value,
          'sort' => 'DESC',
        );
      }
      elseif ($value == 'browser') {
        $header[] = array(
          'data' => t('Browser'),
          'field' => $value,
          'sort' => 'DESC',
        );
      }
      elseif ($value == 'browser_version') {
        $header[] = array(
          'data' => t('Browser version'),
          'field' => $value,
          'sort' => 'DESC',
        );
      }
      elseif ($value == 'browser_platform') {
        $header[] = array(
          'data' => t('Platform'),
          'field' => $value,
          'sort' => 'DESC',
        );
      }
      elseif ($value == 'ip') {
        $header[] = array(
          'data' => t('Ip'),
          'field' => $value,
          'sort' => 'DESC',
        );
      }
      elseif ($value == 'uid') {
        $header[] = array(
          'data' => t('User name'),
          'field' => $value,
          'sort' => 'DESC',
        );
      }
    }
  }

  // We build an array with header values to make some verifications.
  foreach ($header as $key => $value) {
    foreach ($value as $value2) {
      $header_values[] = $value2;
    }
  }
  if ($track_da_files_user_report_enabled) {
    $header[] = array(
      'data' => t('User datas'),
    );
  }

  // We prepare fields.
  $fields = array(
    'time',
  );
  if (isset($track_da_files_single_file_report_datas['id']) && $track_da_files_single_file_report_datas['id'] == '0') {
    unset($track_da_files_single_file_report_datas['id']);
  }
  foreach ($track_da_files_single_file_report_datas as $key => $value) {
    if (!empty($value)) {
      if ($value == 'id') {
        $fields[] = 'id';
        $fields[] = 'type';
      }
      else {
        $fields[] = $value;
      }
    }
  }
  if ($track_da_files_user_report_enabled && !in_array('uid', $header_values)) {
    $fields[] = 'uid';
  }
  $query = db_select('track_da_files', 't');
  $query
    ->extend('PagerDefault')
    ->limit(20)
    ->extend('TableSort')
    ->orderByHeader($header)
    ->fields('t', $fields)
    ->condition('pid', $pid);
  $results = $query
    ->execute();
  $rows = array();

  // We loop into the results to build table rows for file report table.
  foreach ($results as $key => $record) {
    foreach ($record as $key2 => $row) {
      if ($key2 == 'time') {
        $rows[$key][$key2] = format_date($row, 'short');
      }
      elseif ($key2 == 'id') {
        if ($record->type == 'node') {
          $node = node_load($row);
          $rows[$key][$key2] = l($node->title, $record->type . '/' . $row) . '<br />(' . t('content') . ')';
        }
        elseif ($record->type == 'comment') {
          $comment = comment_load($row);
          $rows[$key][$key2] = l($comment->subject, $record->type . '/' . $row, array(
            'fragment' => 'comment-' . $row,
          )) . '<br />(' . t('comment') . ')';
        }
        else {
          $rows[$key][$key2] = '&nbsp;';
        }
      }
      elseif ($key2 == 'type') {
        unset($rows[$key][$key2]);
      }
      elseif ($key2 == 'uid') {
        $uid = $row;
        $user = user_load($uid);
        if ($track_da_files_user_report_enabled) {
          if (in_array('uid', $header_values)) {
            if (!empty($user->name)) {
              $rows[$key][$key2] = theme('username', array(
                'account' => $user,
              ));
            }
            else {
              $rows[$key][$key2] = t('Anonymous user');
            }
          }
          $rows[$key]['view_more'] = l(t('View more'), 'admin/reports/track_da_files/user_report/' . $uid);
        }
        else {
          $rows[$key][$key2] = theme('username', array(
            'account' => $user,
          ));
        }
      }
      else {
        $rows[$key][$key2] = $row;
      }
    }
  }
  $variables = array(
    'header' => $header,
    'rows' => $rows,
  );
  return $variables;
}