Mercurial > hg > rr-repo
view sites/all/modules/libraries/libraries.module @ 3:b28be78d8160
alpha1.0 version
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Thu, 19 Sep 2013 10:33:07 +0100 |
parents | b74b41bb73f0 |
children |
line wrap: on
line source
<?php // $Id: libraries.module,v 1.19.2.1 2011/01/27 02:31:41 sun Exp $ /** * @file * External library handling for Drupal modules. */ /** * Gets the path of a library. * * @param $name * The machine name of a library to return the path for. * @param $base_path * Whether to prefix the resulting path with base_path(). * * @return * The path to the specified library. * * @ingroup libraries */ function libraries_get_path($name, $base_path = FALSE) { $libraries = &drupal_static(__FUNCTION__); if (!isset($libraries)) { $libraries = libraries_get_libraries(); } $path = ($base_path ? base_path() : ''); if (!isset($libraries[$name])) { // Most often, external libraries can be shared across multiple sites, so // we return sites/all/libraries as the default path. $path .= 'sites/all/libraries/' . $name; } else { $path .= $libraries[$name]; } return $path; } /** * 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 * A list of library directories. * * @ingroup libraries */ function libraries_get_libraries() { $directory = 'libraries'; $searchdir = array(); $profile = drupal_get_profile(); $config = conf_path(); // 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[] = $directory; // 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; }