You are here

function advagg_mod_libraries_info in Advanced CSS/JS Aggregation 7.2

Implements hook_libraries_info().

Related topics

File

advagg_mod/advagg_mod.module, line 1176
Advanced aggregation modifier module.

Code

function advagg_mod_libraries_info() {
  $libraries['loadCSS'] = array(
    'name' => 'loadCSS',
    'vendor url' => 'https://github.com/filamentgroup/loadCSS',
    'download url' => 'https://github.com/filamentgroup/loadCSS/archive/master.zip',
    'version arguments' => array(
      'file' => 'package.json',
      'pattern' => '/"version":\\s+"([0-9\\.]+)"/',
      'lines' => 100,
    ),
    // Called before the library is loaded.
    'callbacks' => array(
      'pre-load' => array(
        'advagg_mod_libraries_preload_callback',
      ),
    ),
    'local version' => '2.0.1',
    'remote' => array(
      'callback' => 'advagg_get_github_version_json',
      'url' => 'https://cdn.jsdelivr.net/gh/filamentgroup/loadCSS@master/package.json',
    ),
    'files' => array(
      'js' => array(
        'src/loadCSS.js' => array(
          'type' => 'file',
          'async' => TRUE,
        ),
      ),
    ),
  );

  // Get the latest tagged version for external file loading.
  $version = advagg_get_remote_libraries_version('loadCSS', $libraries['loadCSS']);

  // Get the advagg_mod path for local loading.
  $advagg_mod_path = drupal_get_path('module', 'advagg_mod');
  $libraries['loadCSS'] += array(
    'variants' => array(
      'normal-preload' => array(
        'files' => array(
          'js' => array(
            'src/cssrelpreload.js' => array(
              'type' => 'file',
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'normal-onload' => array(
        'files' => array(
          'js' => array(
            'src/loadCSS.js' => array(
              'type' => 'file',
              'async' => TRUE,
            ),
            'src/onloadCSS.js' => array(
              'type' => 'file',
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'minified' => array(
        'files' => array(
          'js' => array(
            'src/loadCSS.min.js' => array(
              'type' => 'file',
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'minified-preload' => array(
        'files' => array(
          'js' => array(
            'src/cssrelpreload.min.js' => array(
              'type' => 'file',
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'minified-onload' => array(
        'files' => array(
          'js' => array(
            'src/loadCSS.min.js' => array(
              'type' => 'file',
              'async' => TRUE,
            ),
            'src/onloadCSS.min.js' => array(
              'type' => 'file',
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'external' => array(
        'files' => array(
          'js' => array(
            "//cdn.jsdelivr.net/gh/filamentgroup/loadCSS@v{$version}/src/loadCSS.js" => array(
              'type' => 'external',
              'data' => "//cdn.jsdelivr.net/gh/filamentgroup/loadCSS@v{$version}/src/loadCSS.js",
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'external-preload' => array(
        'files' => array(
          'js' => array(
            "//cdn.jsdelivr.net/gh/filamentgroup/loadCSS@v{$version}/src/cssrelpreload.js" => array(
              'type' => 'external',
              'data' => "//cdn.jsdelivr.net/gh/filamentgroup/loadCSS@v{$version}/src/cssrelpreload.js",
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'external-onload' => array(
        'files' => array(
          'js' => array(
            "//cdn.jsdelivr.net/gh/filamentgroup/loadCSS@v{$version}/src/loadCSS.js" => array(
              'type' => 'external',
              'data' => "//cdn.jsdelivr.net/gh/filamentgroup/loadCSS@v{$version}/src/loadCSS.js",
              'async' => TRUE,
            ),
            "//cdn.jsdelivr.net/gh/filamentgroup/loadCSS@v{$version}/src/onloadCSS.js" => array(
              'type' => 'external',
              'data' => "//cdn.jsdelivr.net/gh/filamentgroup/loadCSS@v{$version}/src/onloadCSS.js",
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'local' => array(
        'version' => '1.3.1',
        'files' => array(
          'js' => array(
            "{$advagg_mod_path}/loadCSS.js" => array(
              'type' => 'file',
              'data' => "{$advagg_mod_path}/loadCSS.js",
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'local-preload' => array(
        'version' => '1.3.1',
        'files' => array(
          'js' => array(
            "{$advagg_mod_path}/cssrelpreload.js" => array(
              'type' => 'file',
              'data' => "{$advagg_mod_path}/cssrelpreload.js",
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'local-onload' => array(
        'version' => '1.3.1',
        'files' => array(
          'js' => array(
            "{$advagg_mod_path}/loadCSS.js" => array(
              'type' => 'file',
              'data' => "{$advagg_mod_path}/loadCSS.js",
              'async' => TRUE,
            ),
            "{$advagg_mod_path}/onloadCSS.js" => array(
              'type' => 'file',
              'data' => "{$advagg_mod_path}/onloadCSS.js",
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'local-minified' => array(
        'version' => '1.3.1',
        'files' => array(
          'js' => array(
            "{$advagg_mod_path}/loadCSS.min.js" => array(
              'type' => 'file',
              'data' => "{$advagg_mod_path}/loadCSS.min.js",
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'local-minified-preload' => array(
        'version' => '1.3.1',
        'files' => array(
          'js' => array(
            "{$advagg_mod_path}/cssrelpreload.min.js" => array(
              'type' => 'file',
              'data' => "{$advagg_mod_path}/cssrelpreload.min.js",
              'async' => TRUE,
            ),
          ),
        ),
      ),
      'local-minified-onload' => array(
        'version' => '1.3.1',
        'files' => array(
          'js' => array(
            "{$advagg_mod_path}/loadCSS.min.js" => array(
              'type' => 'file',
              'data' => "{$advagg_mod_path}/loadCSS.min.js",
              'async' => TRUE,
            ),
            "{$advagg_mod_path}/onloadCSS.min.js" => array(
              'type' => 'file',
              'data' => "{$advagg_mod_path}/onloadCSS.min.js",
              'async' => TRUE,
            ),
          ),
        ),
      ),
    ),
  );

  // Add inline data.
  $loadcss_loc = "{$advagg_mod_path}/loadCSS.min.js";
  $cssrelpreload_loc = "{$advagg_mod_path}/cssrelpreload.min.js";
  $onloadcss_loc = "{$advagg_mod_path}/onloadCSS.min.js";

  // Use given library if there.
  $libraries_paths = array();
  if (is_callable('libraries_get_libraries')) {
    $libraries_paths = libraries_get_libraries();
  }
  if (isset($libraries_paths['loadCSS'])) {

    // Get location of loadCSS.
    if (is_readable($libraries_paths['loadCSS'] . '/src/loadCSS.min.js')) {
      $loadcss_loc = $libraries_paths['loadCSS'] . '/src/loadCSS.min.js';
      $libraries['loadCSS']['variants']['minified']['#files_exists'] = TRUE;
    }
    elseif (is_readable($libraries_paths['loadCSS'] . '/src/loadCSS.js')) {
      $loadcss_loc = $libraries_paths['loadCSS'] . '/src/loadCSS.js';
    }

    // Get location of cssrelpreload.
    if (is_readable($libraries_paths['loadCSS'] . '/src/cssrelpreload.min.js')) {
      $cssrelpreload_loc = $libraries_paths['loadCSS'] . '/src/cssrelpreload.min.js';
      if ($libraries['loadCSS']['variants']['minified']['#files_exists']) {
        $libraries['loadCSS']['variants']['minified-preload']['#files_exists'] = TRUE;
      }
    }
    elseif (is_readable($libraries_paths['loadCSS'] . '/src/cssrelpreload.js')) {
      $cssrelpreload_loc = $libraries_paths['loadCSS'] . '/src/cssrelpreload.js';
    }

    // Get location of onloadCSS.
    if (is_readable($libraries_paths['loadCSS'] . '/src/onloadCSS.min.js')) {
      $onloadcss_loc = $libraries_paths['loadCSS'] . '/src/onloadCSS.min.js';
      if ($libraries['loadCSS']['variants']['minified']['#files_exists']) {
        $libraries['loadCSS']['variants']['minified-preload']['#files_exists'] = TRUE;
      }
    }
    elseif (is_readable($libraries_paths['loadCSS'] . '/src/onloadCSS.js')) {
      $onloadcss_loc = $libraries_paths['loadCSS'] . '/src/onloadCSS.js';
    }
  }

  // Add inline scripts.
  $libraries['loadCSS']['variants'] += array(
    'inline' => array(
      'files' => array(
        'js' => array(
          'loadCSS_inline' => array(
            'type' => 'inline',
            'data' => (string) @advagg_file_get_contents($loadcss_loc),
            'no_defer' => TRUE,
          ),
        ),
      ),
    ),
    'inline-preload' => array(
      'files' => array(
        'js' => array(
          'cssrelpreload_inline' => array(
            'type' => 'inline',
            'data' => (string) @advagg_file_get_contents($cssrelpreload_loc),
            'no_defer' => TRUE,
          ),
        ),
      ),
    ),
    'inline-onload' => array(
      'files' => array(
        'js' => array(
          'loadCSS_inline' => array(
            'type' => 'inline',
            'data' => (string) @advagg_file_get_contents($loadcss_loc),
            'no_defer' => TRUE,
          ),
          'onloadCSS_inline' => array(
            'type' => 'inline',
            'data' => (string) @advagg_file_get_contents($onloadcss_loc),
            'no_defer' => TRUE,
          ),
        ),
      ),
    ),
  );
  if (!is_callable('libraries_detect')) {

    // Set defaults.
    $default_options = advagg_mod_loadcss_js_defaults();
    foreach ($libraries['loadCSS']['files']['js'] as &$value) {
      $value += $default_options;
    }
    foreach ($libraries['loadCSS']['variants'] as &$values) {
      foreach ($values['files']['js'] as &$value) {
        $value += $default_options;
      }
    }
  }
  return $libraries;
}