function _async_js_build_urls in Asynchronous JavaScript 8
Same name and namespace in other branches
- 7 async_js.module \_async_js_build_urls()
 
Prepares script data for actual requests.
Parameters
array $scripts: An array of scripts as returned by async_js_add_js().
See also
1 call to _async_js_build_urls()
- async_js_js_alter in ./
async_js.module  - Implements hook_js_alter().
 
File
- ./
async_js.module, line 127  - Queue JavaScript files to be loaded asynchronously.
 
Code
function _async_js_build_urls(array $scripts = array()) {
  // Initialize variables necessary for building the file url.
  $default_query_string = variable_get('css_js_query_string', '0');
  $js_version_string = variable_get('drupal_js_version_query_string', 'v=');
  // Keep track of any changes we make so we can reference them later when
  // dealing with dependencies and dependents.
  $changes = array();
  // Build the urls.
  foreach ($scripts as &$script) {
    if ($script['type'] != 'external') {
      $old_data = $script['data'];
      $query_string = empty($script['version']) ? $default_query_string : $js_version_string . $script['version'];
      $query_string_separator = strpos($script['data'], '?') !== FALSE ? '&' : '?';
      $script['data'] = file_create_url($script['data']) . $query_string_separator . ($script['cache'] ? $query_string : REQUEST_TIME);
      $changes[$old_data] = $script['data'];
    }
  }
  // Handle potential dependencies and dependents.
  foreach ($scripts as &$script) {
    // Handle potential dependencies.
    if (!empty($script['async_dependencies'])) {
      foreach ($script['async_dependencies'] as $key => $dependency) {
        if (!empty($changes[$dependency])) {
          $script['async_dependencies'][$key] = $changes[$dependency];
        }
      }
    }
    // Handle potential dependents.
    if (!empty($script['async_dependents'])) {
      foreach ($script['async_dependents'] as $key => $dependent) {
        if (!empty($changes[$dependent])) {
          $script['async_dependents'][$key] = $changes[$dependent];
        }
      }
    }
  }
  return $scripts;
}