You are here

function libraries_get_libraries in Libraries API 7.3

Same name and namespace in other branches
  1. 8.3 libraries.module \libraries_get_libraries()
  2. 6 libraries.module \libraries_get_libraries()
  3. 7 libraries.module \libraries_get_libraries()
  4. 7.2 libraries.module \libraries_get_libraries()

Returns an array of library directories.

Returns an array of library directories from the all-sites directory (i.e. sites/all/libraries/), the profiles directory, and site-specific directory (i.e. sites/somesite/libraries/). The returned array will be keyed by the library name. Site-specific libraries are prioritized over libraries in the default directories. That is, if a library with the same name appears in both the site-wide directory and site-specific directory, only the site-specific version will be listed.

Return value

A list of library directories.

1 call to libraries_get_libraries()
libraries_get_path in ./libraries.module
Gets the path of a library.

File

./libraries.module, line 121
External library handling for Drupal modules.

Code

function libraries_get_libraries() {
  $searchdir = array();
  $profile = drupal_get_path('profile', drupal_get_profile());
  $config = conf_path();

  // $config and $profile should never be empty in a proper Drupal setup.
  // However, we should never search into the root filesystem under any
  // circumstances, so just bail out in that case.
  if (!$profile && !$config) {
    return array();
  }

  // Similar to 'modules' and 'themes' directories in the root directory,
  // certain distributions may want to place libraries into a 'libraries'
  // directory in Drupal's root directory.
  $searchdir[] = 'libraries';

  // Similar to 'modules' and 'themes' directories inside an installation
  // profile, installation profiles may want to place libraries into a
  // 'libraries' directory.
  $searchdir[] = "{$profile}/libraries";

  // Always search sites/all/libraries.
  $searchdir[] = 'sites/all/libraries';

  // Also search sites/<domain>/*.
  $searchdir[] = "{$config}/libraries";

  // Retrieve list of directories.
  $directories = array();
  $nomask = array(
    'CVS',
  );
  foreach ($searchdir as $dir) {
    if (is_dir($dir) && ($handle = opendir($dir))) {
      while (FALSE !== ($file = readdir($handle))) {
        if (!in_array($file, $nomask) && $file[0] != '.') {
          if (is_dir("{$dir}/{$file}")) {
            $directories[$file] = "{$dir}/{$file}";
          }
        }
      }
      closedir($handle);
    }
  }
  return $directories;
}