View source
<?php
namespace Drupal\xautoload\Tests\VirtualDrupal;
class LibrariesInfo {
private $drupalStatic;
private $hookSystem;
function __construct(DrupalStatic $drupalStatic, HookSystem $hookSystem) {
$this->drupalStatic = $drupalStatic;
$this->hookSystem = $hookSystem;
}
function &getLibrariesInfo($name = NULL) {
$libraries =& $this->drupalStatic
->get('libraries_info');
if (!isset($libraries)) {
$libraries = array();
foreach ($this->hookSystem
->moduleImplements('libraries_info') as $module) {
foreach (PureFunctions::moduleInvoke($module, 'libraries_info') as $machine_name => $properties) {
$properties['module'] = $module;
$libraries[$machine_name] = $properties;
}
}
foreach ($libraries as $machine_name => &$properties) {
$this
->librariesInfoDefaults($properties, $machine_name);
}
$this->hookSystem
->drupalAlter('libraries_info', $libraries);
}
if (isset($name)) {
if (!empty($libraries[$name])) {
return $libraries[$name];
}
else {
$false = FALSE;
return $false;
}
}
return $libraries;
}
private function librariesInfoDefaults(&$library, $name) {
$library += array(
'machine name' => $name,
'name' => $name,
'vendor url' => '',
'download url' => '',
'path' => '',
'library path' => NULL,
'version callback' => 'libraries_get_version',
'version arguments' => array(),
'files' => array(),
'dependencies' => array(),
'variants' => array(),
'versions' => array(),
'integration files' => array(),
'callbacks' => array(),
);
$library['callbacks'] += array(
'info' => array(),
'pre-detect' => array(),
'post-detect' => array(),
'pre-dependencies-load' => array(),
'pre-load' => array(),
'post-load' => array(),
);
array_unshift($library['callbacks']['info'], 'libraries_prepare_files');
array_unshift($library['callbacks']['post-detect'], 'libraries_detect_dependencies');
return $library;
}
public function librariesGetPath($name, $base_path = FALSE) {
$libraries =& $this->drupalStatic
->get('libraries_get_path');
if (!isset($libraries)) {
$libraries = $this
->librariesGetLibraries();
}
$path = $base_path ? base_path() : '';
if (!isset($libraries[$name])) {
return FALSE;
}
else {
$path .= $libraries[$name];
}
return $path;
}
private function librariesGetLibraries() {
$searchdir = array();
$searchdir[] = dirname(dirname(__DIR__)) . '/fixtures/.libraries';
$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;
}
public function resetLibrariesInfo() {
$this->drupalStatic
->resetKey('libraries_info');
}
}