annotate sites/all/modules/libraries/libraries.module @ 9:830c812b520f

added smtp module
author root <root@paio.local>
date Mon, 28 Oct 2013 15:34:27 +0000
parents b28be78d8160
children
rev   line source
danielebarchiesi@2 1 <?php
danielebarchiesi@3 2 // $Id: libraries.module,v 1.19.2.1 2011/01/27 02:31:41 sun Exp $
danielebarchiesi@2 3
danielebarchiesi@2 4 /**
danielebarchiesi@2 5 * @file
danielebarchiesi@2 6 * External library handling for Drupal modules.
danielebarchiesi@2 7 */
danielebarchiesi@2 8
danielebarchiesi@2 9 /**
danielebarchiesi@2 10 * Gets the path of a library.
danielebarchiesi@2 11 *
danielebarchiesi@2 12 * @param $name
danielebarchiesi@2 13 * The machine name of a library to return the path for.
danielebarchiesi@2 14 * @param $base_path
danielebarchiesi@2 15 * Whether to prefix the resulting path with base_path().
danielebarchiesi@2 16 *
danielebarchiesi@2 17 * @return
danielebarchiesi@3 18 * The path to the specified library.
danielebarchiesi@2 19 *
danielebarchiesi@2 20 * @ingroup libraries
danielebarchiesi@2 21 */
danielebarchiesi@2 22 function libraries_get_path($name, $base_path = FALSE) {
danielebarchiesi@2 23 $libraries = &drupal_static(__FUNCTION__);
danielebarchiesi@2 24
danielebarchiesi@2 25 if (!isset($libraries)) {
danielebarchiesi@2 26 $libraries = libraries_get_libraries();
danielebarchiesi@2 27 }
danielebarchiesi@2 28
danielebarchiesi@2 29 $path = ($base_path ? base_path() : '');
danielebarchiesi@2 30 if (!isset($libraries[$name])) {
danielebarchiesi@3 31 // Most often, external libraries can be shared across multiple sites, so
danielebarchiesi@3 32 // we return sites/all/libraries as the default path.
danielebarchiesi@3 33 $path .= 'sites/all/libraries/' . $name;
danielebarchiesi@2 34 }
danielebarchiesi@2 35 else {
danielebarchiesi@2 36 $path .= $libraries[$name];
danielebarchiesi@2 37 }
danielebarchiesi@2 38
danielebarchiesi@2 39 return $path;
danielebarchiesi@2 40 }
danielebarchiesi@2 41
danielebarchiesi@2 42 /**
danielebarchiesi@2 43 * Returns an array of library directories.
danielebarchiesi@2 44 *
danielebarchiesi@2 45 * Returns an array of library directories from the all-sites directory
danielebarchiesi@2 46 * (i.e. sites/all/libraries/), the profiles directory, and site-specific
danielebarchiesi@2 47 * directory (i.e. sites/somesite/libraries/). The returned array will be keyed
danielebarchiesi@2 48 * by the library name. Site-specific libraries are prioritized over libraries
danielebarchiesi@2 49 * in the default directories. That is, if a library with the same name appears
danielebarchiesi@2 50 * in both the site-wide directory and site-specific directory, only the
danielebarchiesi@2 51 * site-specific version will be listed.
danielebarchiesi@2 52 *
danielebarchiesi@2 53 * @return
danielebarchiesi@2 54 * A list of library directories.
danielebarchiesi@2 55 *
danielebarchiesi@2 56 * @ingroup libraries
danielebarchiesi@2 57 */
danielebarchiesi@2 58 function libraries_get_libraries() {
danielebarchiesi@3 59 $directory = 'libraries';
danielebarchiesi@2 60 $searchdir = array();
danielebarchiesi@3 61 $profile = drupal_get_profile();
danielebarchiesi@2 62 $config = conf_path();
danielebarchiesi@2 63
danielebarchiesi@2 64 // Similar to 'modules' and 'themes' directories in the root directory,
danielebarchiesi@2 65 // certain distributions may want to place libraries into a 'libraries'
danielebarchiesi@2 66 // directory in Drupal's root directory.
danielebarchiesi@3 67 $searchdir[] = $directory;
danielebarchiesi@2 68
danielebarchiesi@3 69 // The 'profiles' directory contains pristine collections of modules and
danielebarchiesi@3 70 // themes as organized by a distribution. It is pristine in the same way
danielebarchiesi@3 71 // that /modules is pristine for core; users should avoid changing anything
danielebarchiesi@3 72 // there in favor of sites/all or sites/<domain> directories.
danielebarchiesi@3 73 if (file_exists("profiles/$profile/$directory")) {
danielebarchiesi@3 74 $searchdir[] = "profiles/$profile/$directory";
danielebarchiesi@3 75 }
danielebarchiesi@2 76
danielebarchiesi@3 77 // Always search sites/all/*.
danielebarchiesi@3 78 $searchdir[] = 'sites/all/' . $directory;
danielebarchiesi@2 79
danielebarchiesi@2 80 // Also search sites/<domain>/*.
danielebarchiesi@3 81 if (file_exists("$config/$directory")) {
danielebarchiesi@3 82 $searchdir[] = "$config/$directory";
danielebarchiesi@3 83 }
danielebarchiesi@2 84
danielebarchiesi@2 85 // Retrieve list of directories.
danielebarchiesi@3 86 // @todo Core: Allow to scan for directories.
danielebarchiesi@2 87 $directories = array();
danielebarchiesi@2 88 $nomask = array('CVS');
danielebarchiesi@2 89 foreach ($searchdir as $dir) {
danielebarchiesi@2 90 if (is_dir($dir) && $handle = opendir($dir)) {
danielebarchiesi@2 91 while (FALSE !== ($file = readdir($handle))) {
danielebarchiesi@2 92 if (!in_array($file, $nomask) && $file[0] != '.') {
danielebarchiesi@2 93 if (is_dir("$dir/$file")) {
danielebarchiesi@2 94 $directories[$file] = "$dir/$file";
danielebarchiesi@2 95 }
danielebarchiesi@2 96 }
danielebarchiesi@2 97 }
danielebarchiesi@2 98 closedir($handle);
danielebarchiesi@2 99 }
danielebarchiesi@2 100 }
danielebarchiesi@2 101
danielebarchiesi@2 102 return $directories;
danielebarchiesi@2 103 }
danielebarchiesi@2 104