You are here

function advagg_create_aggregate_files in Advanced CSS/JS Aggregation 7.2

Create the aggregate if it does not exist; using HTTPRL if possible.

Parameters

array $plans: An array of aggregate file names.

string $type: String; css or js.

Return value

array An array of what was done when generating the file.

1 call to advagg_create_aggregate_files()
advagg_build_aggregate_plans in ./advagg.inc
Replacement for drupal_build_css_cache() and drupal_build_js_cache().

File

./advagg.inc, line 1563
Advanced CSS/JS aggregation module.

Code

function advagg_create_aggregate_files(array $plans, $type) {
  $filenames = array();
  $return = array();
  foreach ($plans as $plan) {
    $filenames[] = $plan['filename'];
  }

  // If the httprl module exists and we want to use it.
  if (module_exists('httprl') && variable_get('advagg_use_httprl', ADVAGG_USE_HTTPRL) && (is_callable('httprl_is_background_callback_capable') && httprl_is_background_callback_capable() || !is_callable('httprl_is_background_callback_capable'))) {
    if (variable_get('advagg_fast_filesystem', ADVAGG_FAST_FILESYSTEM)) {
      list($css_path, $js_path) = advagg_get_root_files_dir();
      foreach ($filenames as $key => $filename) {
        if ($type === 'css') {
          $uri = $css_path[0] . '/' . $filename;
        }
        elseif ($type === 'js') {
          $uri = $js_path[0] . '/' . $filename;
        }
        if (file_exists($uri)) {
          unset($filenames[$key]);
        }
      }
    }
    if (!empty($filenames)) {

      // Setup callback options array; call function in the background.
      $callback_options = array(
        array(
          'function' => 'advagg_build_aggregates',
        ),
        $filenames,
        $type,
      );

      // Queue up the request.
      httprl_queue_background_callback($callback_options);

      // Execute request.
      $return = httprl_send_request();
    }
  }
  else {
    $return = advagg_build_aggregates($filenames, $type);
  }
  return $return;
}