You are here

function wysiwyg_get_libraries in Wysiwyg 6.2

Same name and namespace in other branches
  1. 5.2 wysiwyg.module \wysiwyg_get_libraries()
  2. 7.2 wysiwyg.module \wysiwyg_get_libraries()

Return 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.

Related topics

1 call to wysiwyg_get_libraries()
wysiwyg_get_path in ./wysiwyg.module
Helper function to build paths to libraries.

File

./wysiwyg.module, line 1165
Integrates client-side editors with Drupal.

Code

function wysiwyg_get_libraries() {
  if (function_exists('libraries_get_libraries')) {
    $directories = libraries_get_libraries();
  }
  else {
    global $profile;

    // When this function is called during Drupal's initial installation process,
    // the name of the profile that is about to be installed is stored in the
    // global $profile variable. At all other times, the regular system variable
    // contains the name of the current profile, and we can call variable_get()
    // to determine the profile.
    if (!isset($profile)) {
      $profile = variable_get('install_profile', 'default');
    }
    $directory = 'libraries';
    $searchdir = array();
    $config = conf_path();

    // The 'profiles' directory contains pristine collections of modules and
    // themes as organized by a distribution.  It is pristine in the same way
    // that /modules is pristine for core; users should avoid changing anything
    // there in favor of sites/all or sites/<domain> directories.
    if (file_exists("profiles/{$profile}/{$directory}")) {
      $searchdir[] = "profiles/{$profile}/{$directory}";
    }

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

    // Also search sites/<domain>/*.
    if (file_exists("{$config}/{$directory}")) {
      $searchdir[] = "{$config}/{$directory}";
    }

    // Retrieve list of directories.
    // @todo Core: Allow to scan for 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;
}