mirror of
https://github.com/atlanticbiomedical/portal-legacy.git
synced 2025-07-02 01:47:28 -04:00
initial commit
This commit is contained in:
373
lib/symfony/config/sfLoader.class.php
Executable file
373
lib/symfony/config/sfLoader.class.php
Executable file
@ -0,0 +1,373 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the symfony package.
|
||||
* (c) 2004-2006 Fabien Potencier <fabien.potencier@symfony-project.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
/**
|
||||
* sfLoader is a class which contains the logic to look for files/classes in symfony.
|
||||
*
|
||||
* @package symfony
|
||||
* @subpackage util
|
||||
* @author Fabien Potencier <fabien.potencier@symfony-project.com>
|
||||
* @version SVN: $Id: sfLoader.class.php 4277 2007-06-20 10:12:35Z fabien $
|
||||
*/
|
||||
class sfLoader
|
||||
{
|
||||
/**
|
||||
* Gets directories where model classes are stored.
|
||||
*
|
||||
* @return array An array of directories
|
||||
*/
|
||||
static public function getModelDirs()
|
||||
{
|
||||
$dirs = array(sfConfig::get('sf_lib_dir').'/model' ? sfConfig::get('sf_lib_dir').'/model' : 'lib/model'); // project
|
||||
if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/lib/model'))
|
||||
{
|
||||
$dirs = array_merge($dirs, $pluginDirs); // plugins
|
||||
}
|
||||
|
||||
return $dirs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets directories where controller classes are stored for a given module.
|
||||
*
|
||||
* @param string The module name
|
||||
*
|
||||
* @return array An array of directories
|
||||
*/
|
||||
static public function getControllerDirs($moduleName)
|
||||
{
|
||||
$suffix = $moduleName.'/'.sfConfig::get('sf_app_module_action_dir_name');
|
||||
|
||||
$dirs = array();
|
||||
foreach (sfConfig::get('sf_module_dirs', array()) as $key => $value)
|
||||
{
|
||||
$dirs[$key.'/'.$suffix] = $value;
|
||||
}
|
||||
|
||||
$dirs[sfConfig::get('sf_app_module_dir').'/'.$suffix] = false; // application
|
||||
|
||||
if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/modules/'.$suffix))
|
||||
{
|
||||
$dirs = array_merge($dirs, array_combine($pluginDirs, array_fill(0, count($pluginDirs), true))); // plugins
|
||||
}
|
||||
|
||||
$dirs[sfConfig::get('sf_symfony_data_dir').'/modules/'.$suffix] = true; // core modules
|
||||
|
||||
return $dirs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets directories where template files are stored for a given module.
|
||||
*
|
||||
* @param string The module name
|
||||
*
|
||||
* @return array An array of directories
|
||||
*/
|
||||
static public function getTemplateDirs($moduleName)
|
||||
{
|
||||
$suffix = $moduleName.'/'.sfConfig::get('sf_app_module_template_dir_name');
|
||||
|
||||
$dirs = array();
|
||||
foreach (sfConfig::get('sf_module_dirs', array()) as $key => $value)
|
||||
{
|
||||
$dirs[] = $key.'/'.$suffix;
|
||||
}
|
||||
|
||||
$dirs[] = sfConfig::get('sf_app_module_dir').'/'.$suffix; // application
|
||||
|
||||
if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/modules/'.$suffix))
|
||||
{
|
||||
$dirs = array_merge($dirs, $pluginDirs); // plugins
|
||||
}
|
||||
|
||||
$dirs[] = sfConfig::get('sf_symfony_data_dir').'/modules/'.$suffix; // core modules
|
||||
$dirs[] = sfConfig::get('sf_module_cache_dir').'/auto'.ucfirst($suffix); // generated templates in cache
|
||||
|
||||
return $dirs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the template directory to use for a given module and template file.
|
||||
*
|
||||
* @param string The module name
|
||||
* @param string The template file
|
||||
*
|
||||
* @return string A template directory
|
||||
*/
|
||||
static public function getTemplateDir($moduleName, $templateFile)
|
||||
{
|
||||
$dirs = self::getTemplateDirs($moduleName);
|
||||
foreach ($dirs as $dir)
|
||||
{
|
||||
if (is_readable($dir.'/'.$templateFile))
|
||||
{
|
||||
return $dir;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the template to use for a given module and template file.
|
||||
*
|
||||
* @param string The module name
|
||||
* @param string The template file
|
||||
*
|
||||
* @return string A template path
|
||||
*/
|
||||
static public function getTemplatePath($moduleName, $templateFile)
|
||||
{
|
||||
$dir = self::getTemplateDir($moduleName, $templateFile);
|
||||
|
||||
return $dir ? $dir.'/'.$templateFile : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the i18n directory to use for a given module.
|
||||
*
|
||||
* @param string The module name
|
||||
*
|
||||
* @return string An i18n directory
|
||||
*/
|
||||
static public function getI18NDir($moduleName)
|
||||
{
|
||||
$suffix = $moduleName.'/'.sfConfig::get('sf_app_module_i18n_dir_name');
|
||||
|
||||
// application
|
||||
$dir = sfConfig::get('sf_app_module_dir').'/'.$suffix;
|
||||
if (is_dir($dir))
|
||||
{
|
||||
return $dir;
|
||||
}
|
||||
|
||||
// plugins
|
||||
$dirs = glob(sfConfig::get('sf_plugins_dir').'/*/modules/'.$suffix);
|
||||
if (isset($dirs[0]))
|
||||
{
|
||||
return $dirs[0];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets directories where template files are stored for a generator class and a specific theme.
|
||||
*
|
||||
* @param string The generator class name
|
||||
* @param string The theme name
|
||||
*
|
||||
* @return array An array of directories
|
||||
*/
|
||||
static public function getGeneratorTemplateDirs($class, $theme)
|
||||
{
|
||||
$dirs = array(sfConfig::get('sf_data_dir').'/generator/'.$class.'/'.$theme.'/template'); // project
|
||||
|
||||
if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/data/generator/'.$class.'/'.$theme.'/template'))
|
||||
{
|
||||
$dirs = array_merge($dirs, $pluginDirs); // plugin
|
||||
}
|
||||
|
||||
$dirs[] = sfConfig::get('sf_symfony_data_dir').'/generator/'.$class.'/default/template'; // default theme
|
||||
|
||||
return $dirs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets directories where the skeleton is stored for a generator class and a specific theme.
|
||||
*
|
||||
* @param string The generator class name
|
||||
* @param string The theme name
|
||||
*
|
||||
* @return array An array of directories
|
||||
*/
|
||||
static public function getGeneratorSkeletonDirs($class, $theme)
|
||||
{
|
||||
$dirs = array(sfConfig::get('sf_data_dir').'/generator/'.$class.'/'.$theme.'/skeleton'); // project
|
||||
|
||||
if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/data/generator/'.$class.'/'.$theme.'/skeleton'))
|
||||
{
|
||||
$dirs = array_merge($dirs, $pluginDirs); // plugin
|
||||
}
|
||||
|
||||
$dirs[] = sfConfig::get('sf_symfony_data_dir').'/generator/'.$class.'/default/skeleton'; // default theme
|
||||
|
||||
return $dirs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the template to use for a generator class.
|
||||
*
|
||||
* @param string The generator class name
|
||||
* @param string The theme name
|
||||
* @param string The template path
|
||||
*
|
||||
* @return string A template path
|
||||
*
|
||||
* @throws sfException
|
||||
*/
|
||||
static public function getGeneratorTemplate($class, $theme, $path)
|
||||
{
|
||||
$dirs = self::getGeneratorTemplateDirs($class, $theme);
|
||||
foreach ($dirs as $dir)
|
||||
{
|
||||
if (is_readable($dir.'/'.$path))
|
||||
{
|
||||
return $dir.'/'.$path;
|
||||
}
|
||||
}
|
||||
|
||||
throw new sfException(sprintf('Unable to load "%s" generator template in: %s', $path, implode(', ', $dirs)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the configuration file paths for a given relative configuration path.
|
||||
*
|
||||
* @param string The configuration path
|
||||
*
|
||||
* @return array An array of paths
|
||||
*/
|
||||
static public function getConfigPaths($configPath)
|
||||
{
|
||||
$globalConfigPath = basename(dirname($configPath)).'/'.basename($configPath);
|
||||
|
||||
$files = array(
|
||||
sfConfig::get('sf_symfony_data_dir').'/'.$globalConfigPath, // symfony
|
||||
sfConfig::get('sf_symfony_data_dir').'/'.$configPath, // core modules
|
||||
);
|
||||
|
||||
if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/'.$globalConfigPath))
|
||||
{
|
||||
$files = array_merge($files, $pluginDirs); // plugins
|
||||
}
|
||||
|
||||
$files = array_merge($files, array(
|
||||
sfConfig::get('sf_root_dir').'/'.$globalConfigPath, // project
|
||||
sfConfig::get('sf_root_dir').'/'.$configPath, // project
|
||||
sfConfig::get('sf_app_dir').'/'.$globalConfigPath, // application
|
||||
sfConfig::get('sf_cache_dir').'/'.$configPath, // generated modules
|
||||
));
|
||||
|
||||
if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/'.$configPath))
|
||||
{
|
||||
$files = array_merge($files, $pluginDirs); // plugins
|
||||
}
|
||||
|
||||
$files[] = sfConfig::get('sf_app_dir').'/'.$configPath; // module
|
||||
|
||||
$configs = array();
|
||||
foreach (array_unique($files) as $file)
|
||||
{
|
||||
if (is_readable($file))
|
||||
{
|
||||
$configs[] = $file;
|
||||
}
|
||||
}
|
||||
|
||||
return $configs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the helper directories for a given module name.
|
||||
*
|
||||
* @param string The module name
|
||||
*
|
||||
* @return array An array of directories
|
||||
*/
|
||||
static public function getHelperDirs($moduleName = '')
|
||||
{
|
||||
$dirs = array();
|
||||
|
||||
if ($moduleName)
|
||||
{
|
||||
$dirs[] = sfConfig::get('sf_app_module_dir').'/'.$moduleName.'/'.sfConfig::get('sf_app_module_lib_dir_name').'/helper'; // module
|
||||
|
||||
if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/modules/'.$moduleName.'/lib/helper'))
|
||||
{
|
||||
$dirs = array_merge($dirs, $pluginDirs); // module plugins
|
||||
}
|
||||
}
|
||||
|
||||
$dirs[] = sfConfig::get('sf_app_lib_dir').'/helper'; // application
|
||||
|
||||
$dirs[] = sfConfig::get('sf_lib_dir').'/helper'; // project
|
||||
|
||||
if ($pluginDirs = glob(sfConfig::get('sf_plugins_dir').'/*/lib/helper'))
|
||||
{
|
||||
$dirs = array_merge($dirs, $pluginDirs); // plugins
|
||||
}
|
||||
|
||||
$dirs[] = sfConfig::get('sf_symfony_lib_dir').'/helper'; // global
|
||||
|
||||
return $dirs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads helpers.
|
||||
*
|
||||
* @param array An array of helpers to load
|
||||
* @param string A module name (optional)
|
||||
*
|
||||
* @throws sfViewException
|
||||
*/
|
||||
static public function loadHelpers($helpers, $moduleName = '')
|
||||
{
|
||||
static $loaded = array();
|
||||
|
||||
$dirs = self::getHelperDirs($moduleName);
|
||||
foreach ((array) $helpers as $helperName)
|
||||
{
|
||||
if (isset($loaded[$helperName]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$fileName = $helperName.'Helper.php';
|
||||
foreach ($dirs as $dir)
|
||||
{
|
||||
$included = false;
|
||||
if (is_readable($dir.'/'.$fileName))
|
||||
{
|
||||
include($dir.'/'.$fileName);
|
||||
$included = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$included)
|
||||
{
|
||||
// search in the include path
|
||||
if ((@include('helper/'.$fileName)) != 1)
|
||||
{
|
||||
$dirs = array_merge($dirs, explode(PATH_SEPARATOR, get_include_path()));
|
||||
|
||||
// remove sf_root_dir from dirs
|
||||
foreach ($dirs as &$dir)
|
||||
{
|
||||
$dir = str_replace('%SF_ROOT_DIR%', sfConfig::get('sf_root_dir'), $dir);
|
||||
}
|
||||
|
||||
throw new sfViewException(sprintf('Unable to load "%sHelper.php" helper in: %s', $helperName, implode(', ', $dirs)));
|
||||
}
|
||||
}
|
||||
|
||||
$loaded[$helperName] = true;
|
||||
}
|
||||
}
|
||||
|
||||
static public function loadPluginConfig()
|
||||
{
|
||||
if ($pluginConfigs = glob(sfConfig::get('sf_plugins_dir').'/*/config/config.php'))
|
||||
{
|
||||
foreach ($pluginConfigs as $config)
|
||||
{
|
||||
include($config);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user