You are here

function performance_view_details in Performance Logging and Monitoring 7.2

Same name and namespace in other branches
  1. 5 performance.module \performance_view_details()
  2. 6.2 includes/performance.details.inc \performance_view_details()
  3. 6 performance.module \performance_view_details()
  4. 7 performance.module \performance_view_details()

Detail page callback.

Return value

array Drupal render array.

1 string reference to 'performance_view_details'
performance_menu in ./performance.module
Implements hook_menu().

File

includes/performance.details.inc, line 45
Performance module detail logging related functions. Can be overridden by adding $conf['performance_detail_logging'] = 'path/to/your/file' in settings.php.

Code

function performance_view_details() {
  drupal_set_title(t('Performance logs: Details'));
  $header = array(
    array(
      'data' => t('#'),
      'field' => 'pid',
      'sort' => 'desc',
    ),
    array(
      'data' => t('Path'),
      'field' => 'path',
    ),
    array(
      'data' => t('Date'),
      'field' => 'timestamp',
    ),
    array(
      'data' => t('Memory (MB)'),
      'field' => 'bytes',
    ),
    array(
      'data' => t('ms (Total)'),
      'field' => 'ms',
    ),
    array(
      'data' => t('Language'),
      'field' => 'language',
    ),
    array(
      'data' => t('Anonymous?'),
      'field' => 'anon',
    ),
  );
  if (variable_get(PERFORMANCE_QUERY_VAR, 0)) {
    $header[] = array(
      'data' => t('# Queries'),
      'field' => 'query_count',
    );
    $header[] = array(
      'data' => t('Query ms'),
      'field' => 'query_timer',
    );
  }
  $pager_height = 50;
  $result = db_select('performance_detail', 'p')
    ->fields('p')
    ->extend('PagerDefault')
    ->limit($pager_height)
    ->extend('TableSort')
    ->orderByHeader($header)
    ->execute();
  $rows = array();
  foreach ($result as $data) {
    $row_data = array();
    $row_data[] = $data->pid;
    $row_data[] = l($data->path, $data->path);
    $row_data[] = format_date($data->timestamp, 'small');
    $row_data[] = number_format($data->bytes / 1024 / 1024, 2);
    $row_data[] = $data->ms;
    $row_data[] = $data->language;
    $row_data[] = $data->anon ? t('Yes') : t('No');
    if (variable_get(PERFORMANCE_QUERY_VAR, 0)) {
      $row_data[] = $data->query_count;
      $row_data[] = $data->query_timer;
    }
    $rows[] = array(
      'data' => $row_data,
    );
  }
  if (empty($rows) && !variable_get('performance_detail', 0)) {
    return array(
      'content' => array(
        '#markup' => t('Detail performance log is not enabled. Go to the !link to enable it.', array(
          '!link' => l(t('settings page'), PERFORMANCE_SETTINGS, array(
            'query' => drupal_get_destination(),
          )),
        )),
      ),
    );
  }
  elseif (!variable_get('performance_detail', 0)) {
    drupal_set_message(t('Detail performance log is not enabled! Showing stored logs.'), 'warning');
  }

  // Return a renderable array.
  return array(
    'query_data_detail' => array(
      '#theme' => 'table',
      '#header' => $header,
      '#rows' => $rows,
      '#sticky' => TRUE,
      '#empty' => t('No log messages available.'),
    ),
    'clear' => array(
      '#markup' => l(t('Clear logs'), 'admin/reports/performance-logging/clear/details'),
    ),
    'pager' => array(
      '#theme' => 'pager',
      '#quantity' => $pager_height,
    ),
  );
}