You are here

function theme_cdn_page_stats in CDN 7.2

Same name and namespace in other branches
  1. 5 cdn.module \theme_cdn_page_stats()
  2. 6.2 theme.inc \theme_cdn_page_stats()
  3. 6 theme.inc \theme_cdn_page_stats()

Render the CDN integration page statistics.

Parameters

$variables: An associative array containing:

  • file_count: The number of files detected on this page.
  • cdn_file_count: The number of files on this page that are served from a CDN.
  • synced_files_per_server_count: The number of files synced to each server.
  • total_time: The total time it took to get all current CDN URLs.
  • synced_files: Array of synchronized files.
  • unsynced_files: Array of unsynchronized files.

Return value

The rendered HTML.

1 theme call to theme_cdn_page_stats()
cdn_exit in ./cdn.module
Implements hook_exit().

File

./theme.inc, line 24
Theme functions.

Code

function theme_cdn_page_stats($variables) {
  $file_count = $variables['file_count'];
  $cdn_file_count = $variables['cdn_file_count'];
  $synced_files_per_server_count = $variables['synced_files_per_server_count'];
  $total_time = $variables['total_time'];
  $synced_files = $variables['synced_files'];
  $unsynced_files = $variables['unsynced_files'];
  $output = '';
  $items = array();
  $mode = variable_get(CDN_MODE_VARIABLE, CDN_MODE_BASIC);
  $percentage = 100;
  if ($file_count > 0) {
    $percentage = number_format($cdn_file_count / $file_count * 100);
  }
  $avg_time = 0;
  if ($file_count > 0) {
    $avg_time = round($total_time * 1000 / $file_count, 3);
  }
  $output .= '<div id="cdn-integration-page-stats">';
  $items[] = t('Total number of files on this page: <strong>!file-count</strong>.', array(
    '!file-count' => $file_count,
  ));
  $items[] = t('Number of files served from CDNs: <strong>!cdn-file-count</strong>
    (!pct% coverage).', array(
    '!cdn-file-count' => $cdn_file_count,
    '!pct' => $percentage,
  ));
  $items[] = t('Total time altering file URLs: !total ms, or !avg ms per file.', array(
    '!total' => round($total_time * 1000, 3),
    '!avg' => $avg_time,
  ));

  // Nested list of unsynced files.
  if (count($unsynced_files)) {
    $unsynced_items = array();
    foreach ($unsynced_files as $file) {
      $unsynced_items[] = theme('cdn_page_stats_file_link', array(
        'file' => $file,
        'absolute_path' => file_create_url($file),
        'synced' => FALSE,
        'cdn_url' => $file,
        'server' => NULL,
      ));
    }
    $item = t('Files not served from the CDN:');
    $item .= theme('item_list', array(
      'items' => $unsynced_items,
      'attributes' => array(
        'class' => 'file-list',
      ),
    ));
    $items[] = $item;
  }

  // Nested list of synced files.
  if (count($synced_files)) {
    $synced_items = array();
    foreach ($synced_files as $synced_file) {
      $file = $synced_file['file'];
      $cdn_url = $synced_file['cdn_url'];
      $server = $synced_file['server'];
      if (!isset($synced_items[$server])) {
        $synced_items[$server] = array();
      }
      $synced_items[$server][] = theme('cdn_page_stats_file_link', array(
        'file' => $file,
        'absolute_path' => $synced_file['absolute path'],
        'synced' => TRUE,
        'cdn_url' => $cdn_url,
        'server' => $server,
      ));
    }
    $synced_by_server = array();
    foreach (array_keys($synced_items) as $server) {
      $c = $synced_files_per_server_count[$server];
      $item = t('<strong>!pct%</strong> of files served from %server (!count files):', array(
        '%server' => $server,
        '!count' => $c,
        '!pct' => number_format($c / $cdn_file_count * 100),
      ));
      $item .= theme('item_list', array(
        'items' => $synced_items[$server],
        'attributes' => array(
          'class' => 'file-list',
        ),
      ));
      $synced_by_server[] = $item;
    }
    $item = t('Files served from the CDN:');
    $item .= theme('item_list', array(
      'items' => $synced_by_server,
    ));
    $items[] = $item;
  }
  $title = t('CDN integration statistics for %drupal_path', array(
    '%drupal_path' => $_GET['q'],
  ));
  $output .= theme('item_list', array(
    'items' => $items,
    'title' => '<strong>' . $title . '</strong>',
  ));
  $output .= '</div>';
  return $output;
}