You are here

function _responsive_preview_libraries_get_version in Responsive Theme Preview 7

Determines the version of a responsive preview library.

This is used in case different variants of the library are shipped separately and, thus, different variants can contain different versions.

Parameters

array $library: An associative array containing all information about the library. The library is assumed to have the following non-standard keys:

  • variant order: An array of variant names, ordered from the most preferred variant to the least preferred.

array $options: An associative array with the following keys:

1 string reference to '_responsive_preview_libraries_get_version'
responsive_preview_libraries_info in ./responsive_preview.module
Implements hook_libraries_info().

File

./responsive_preview.module, line 468
Provides a component that previews the a page in various device dimensions.

Code

function _responsive_preview_libraries_get_version(&$library, $options = array()) {
  $versions = array();
  foreach ($library['variant order'] as $variant_name) {
    $variant = $library['version arguments']['variants'][$variant_name];

    // Use the libraries get version function to determine the version string.
    $versions[$variant_name] = libraries_get_version($library, $variant);
  }

  // If no versions could be found for any of the variant, there is no version
  // to return. If different versions have been found, there is no way to
  // determine the correct one. We cannot use the information on the preferred
  // variants because we cannot guarantee that a less preferred variant will not
  // be loaded. Null values are fine. Either that variant file doesn't exist
  // or id doesn't contain version information. As long as the there is no
  // conflicting version information, the check should pass.
  $versions = array_filter($versions, '_responsive_preview_libraries_filter_null_values');
  $version = array_unique($versions);
  $vcount = count($version);
  if ($vcount == 1) {

    // A version number exists, so suppress any errors that any individual
    // variant might have raised.
    unset($library['error']);
    unset($library['error message']);
    return array_shift($version);
  }
  elseif ($vcount > 1) {
    $output = array();
    foreach ($versions as $name => $v) {
      $output[] = t('@name (@v)', array(
        '@name' => $name,
        '@v' => $v,
      ));
    }
    $library['error'] = 'inconsistent versions';
    $library['error message'] = t('The library\'s variants returned inconsistent versions: @variant_info', array(
      '@variant_info' => implode(', ', $output),
    ));
  }

  // If the version count is zero, then let the error from libraries_get_version
  // propagate through.
}