The Gitlab instance will be restarted on Monday April 28th at 2AM. There will be a short interruption of service.

Skip to content
Snippets Groups Projects
Commit dfdd93bd authored by Demian Katz's avatar Demian Katz
Browse files

Do not create services in Bootstrapper.

parent b1a1f51e
No related merge requests found
......@@ -126,30 +126,53 @@ $config = array(
'allow_override' => true,
'factories' => array(
'VuFind\AuthManager' => 'VuFind\Auth\Factory::getManager',
'VuFind\AuthPluginManager' => 'VuFind\Service\Factory::getAuthPluginManager',
'VuFind\AutocompletePluginManager' => 'VuFind\Service\Factory::getAutocompletePluginManager',
'VuFind\CacheManager' => 'VuFind\Service\Factory::getCacheManager',
'VuFind\Cart' => 'VuFind\Service\Factory::getCart',
'VuFind\Config' => 'VuFind\Service\Factory::getConfig',
'VuFind\ContentPluginManager' => 'VuFind\Service\Factory::getContentPluginManager',
'VuFind\ContentAuthorNotesPluginManager' => 'VuFind\Service\Factory::getContentAuthorNotesPluginManager',
'VuFind\ContentCoversPluginManager' => 'VuFind\Service\Factory::getContentCoversPluginManager',
'VuFind\ContentExcerptsPluginManager' => 'VuFind\Service\Factory::getContentExcerptsPluginManager',
'VuFind\ContentReviewsPluginManager' => 'VuFind\Service\Factory::getContentReviewsPluginManager',
'VuFind\DateConverter' => 'VuFind\Service\Factory::getDateConverter',
'VuFind\DbAdapter' => 'VuFind\Service\Factory::getDbAdapter',
'VuFind\DbAdapterFactory' => 'VuFind\Service\Factory::getDbAdapterFactory',
'VuFind\DbTablePluginManager' => 'VuFind\Service\Factory::getDbTablePluginManager',
'VuFind\Export' => 'VuFind\Service\Factory::getExport',
'VuFind\HierarchyDriverPluginManager' => 'VuFind\Service\Factory::getHierarchyDriverPluginManager',
'VuFind\HierarchyTreeDataSourcePluginManager' => 'VuFind\Service\Factory::getHierarchyTreeDataSourcePluginManager',
'VuFind\HierarchyTreeRendererPluginManager' => 'VuFind\Service\Factory::getHierarchyTreeRendererPluginManager',
'VuFind\Http' => 'VuFind\Service\Factory::getHttp',
'VuFind\HMAC' => 'VuFind\Service\Factory::getHMAC',
'VuFind\ILSAuthenticator' => 'VuFind\Auth\Factory::getILSAuthenticator',
'VuFind\ILSConnection' => 'VuFind\Service\Factory::getILSConnection',
'VuFind\ILSDriverPluginManager' => 'VuFind\Service\Factory::getILSDriverPluginManager',
'VuFind\ILSHoldLogic' => 'VuFind\Service\Factory::getILSHoldLogic',
'VuFind\ILSHoldSettings' => 'VuFind\Service\Factory::getILSHoldSettings',
'VuFind\ILSTitleHoldLogic' => 'VuFind\Service\Factory::getILSTitleHoldLogic',
'VuFind\Logger' => 'VuFind\Service\Factory::getLogger',
'VuFind\Mailer' => 'VuFind\Mailer\Factory',
'VuFind\Recaptcha' => 'VuFind\Service\Factory::getRecaptcha',
'VuFind\RecommendPluginManager' => 'VuFind\Service\Factory::getRecommendPluginManager',
'VuFind\RecordDriverPluginManager' => 'VuFind\Service\Factory::getRecordDriverPluginManager',
'VuFind\RecordLoader' => 'VuFind\Service\Factory::getRecordLoader',
'VuFind\RecordRouter' => 'VuFind\Service\Factory::getRecordRouter',
'VuFind\RecordStats' => 'VuFind\Service\Factory::getRecordStats',
'VuFind\RecordTabPluginManager' => 'VuFind\Service\Factory::getRecordTabPluginManager',
'VuFind\RelatedPluginManager' => 'VuFind\Service\Factory::getRelatedPluginManager',
'VuFind\ResolverDriverPluginManager' => 'VuFind\Service\Factory::getResolverDriverPluginManager',
'VuFind\Search\BackendManager' => 'VuFind\Service\Factory::getSearchBackendManager',
'VuFind\SearchOptionsPluginManager' => 'VuFind\Service\Factory::getSearchOptionsPluginManager',
'VuFind\SearchParamsPluginManager' => 'VuFind\Service\Factory::getSearchParamsPluginManager',
'VuFind\SearchResultsPluginManager' => 'VuFind\Service\Factory::getSearchResultsPluginManager',
'VuFind\SearchSpecsReader' => 'VuFind\Service\Factory::getSearchSpecsReader',
'VuFind\SearchStats' => 'VuFind\Service\Factory::getSearchStats',
'VuFind\SessionPluginManager' => 'VuFind\Service\Factory::getSessionPluginManager',
'VuFind\SMS' => 'VuFind\SMS\Factory',
'VuFind\Solr\Writer' => 'VuFind\Service\Factory::getSolrWriter',
'VuFind\StatisticsDriverPluginManager' => 'VuFind\Service\Factory::getStatisticsDriverPluginManager',
'VuFind\Tags' => 'VuFind\Service\Factory::getTags',
'VuFind\Translator' => 'VuFind\Service\Factory::getTranslator',
'VuFind\WorldCatUtils' => 'VuFind\Service\Factory::getWorldCatUtils',
......
......@@ -97,51 +97,9 @@ class Bootstrapper
// Create the configuration manager:
$app = $this->event->getApplication();
$serviceManager = $app->getServiceManager();
$config = $app->getConfig();
$cfg = new \Zend\ServiceManager\Config($config['vufind']['config_reader']);
$serviceManager->setService(
'VuFind\Config', new \VuFind\Config\PluginManager($cfg)
);
// Use the manager to load the configuration used in subsequent init methods:
$this->config = $serviceManager->get('VuFind\Config')->get('config');
}
/**
* Set up plugin managers.
*
* @return void
*/
protected function initPluginManagers()
{
$app = $this->event->getApplication();
$serviceManager = $app->getServiceManager();
$config = $app->getConfig();
// Use naming conventions to set up a bunch of services based on namespace:
$namespaces = array(
'Auth', 'Autocomplete', 'Content', 'Content\AuthorNotes',
'Content\Covers', 'Content\Excerpts', 'Content\Reviews', 'Db\Table',
'Hierarchy\Driver', 'Hierarchy\TreeDataSource', 'Hierarchy\TreeRenderer',
'ILS\Driver', 'Recommend', 'RecordDriver', 'RecordTab', 'Related',
'Resolver\Driver', 'Search\Options', 'Search\Params', 'Search\Results',
'Session', 'Statistics\Driver'
);
foreach ($namespaces as $ns) {
$serviceName = 'VuFind\\' . str_replace('\\', '', $ns) . 'PluginManager';
$factory = function () use ($config, $ns) {
$className = 'VuFind\\' . $ns . '\PluginManager';
$configKey = strtolower(str_replace('\\', '_', $ns));
return new $className(
new \Zend\ServiceManager\Config(
$config['vufind']['plugin_managers'][$configKey]
)
);
};
$serviceManager->setFactory($serviceName, $factory);
}
}
/**
* Set up the session. This should be done early since other startup routines
* may rely on session access.
......
......@@ -40,6 +40,30 @@ use Zend\ServiceManager\ServiceManager;
*/
class Factory
{
/**
* Construct the Auth Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Auth\PluginManager
*/
public static function getAuthPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Auth');
}
/**
* Construct the Autocomplete Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Autocomplete\PluginManager
*/
public static function getAutocompletePluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Autocomplete');
}
/**
* Construct the cache manager.
*
......@@ -74,6 +98,79 @@ class Factory
);
}
/**
* Construct the config manager.
*
* @return \VuFind\Config\PluginManager
*/
public static function getConfig(ServiceManager $sm)
{
$config = $sm->get('Config');
return new \VuFind\Config\PluginManager(
new \Zend\ServiceManager\Config($config['vufind']['config_reader'])
);
}
/**
* Construct the Content Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Content\PluginManager
*/
public static function getContentPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Content');
}
/**
* Construct the Content\AuthorNotes Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Content\AuthorNotes\PluginManager
*/
public static function getContentAuthorNotesPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Content\AuthorNotes');
}
/**
* Construct the Content\Covers Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Content\Covers\PluginManager
*/
public static function getContentCoversPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Content\Covers');
}
/**
* Construct the Content\Excerpts Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Content\Excerpts\PluginManager
*/
public static function getContentExcerptsPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Content\Excerpts');
}
/**
* Construct the Content\Reviews Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Content\Reviews\PluginManager
*/
public static function getContentReviewsPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Content\Reviews');
}
/**
* Construct the date converter.
*
......@@ -114,6 +211,18 @@ class Factory
);
}
/**
* Construct the Db\Table Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Db\Table\PluginManager
*/
public static function getDbTablePluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Db\Table');
}
/**
* Construct the export helper.
*
......@@ -129,6 +238,62 @@ class Factory
);
}
/**
* Generic plugin manager factory (support method).
*
* @param ServiceManager $sm Service manager.
* @param string $ns VuFind namespace containing plugin manager
*
* @return object
*/
public static function getGenericPluginManager(ServiceManager $sm, $ns)
{
$className = 'VuFind\\' . $ns . '\PluginManager';
$configKey = strtolower(str_replace('\\', '_', $ns));
$config = $sm->get('Config');
return new $className(
new \Zend\ServiceManager\Config(
$config['vufind']['plugin_managers'][$configKey]
)
);
}
/**
* Construct the Hierarchy\Driver Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Hierarchy\Driver\PluginManager
*/
public static function getHierarchyDriverPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Hierarchy\Driver');
}
/**
* Construct the Hierarchy\TreeDataSource Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Hierarchy\TreeDataSource\PluginManager
*/
public static function getHierarchyTreeDataSourcePluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Hierarchy\TreeDataSource');
}
/**
* Construct the Hierarchy\TreeRenderer Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Hierarchy\TreeRenderer\PluginManager
*/
public static function getHierarchyTreeRendererPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Hierarchy\TreeRenderer');
}
/**
* Construct the HTTP service.
*
......@@ -182,6 +347,18 @@ class Factory
return $catalog->setHoldConfig($sm->get('VuFind\ILSHoldSettings'));
}
/**
* Construct the ILS\Driver Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\ILS\Driver\PluginManager
*/
public static function getILSDriverPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'ILS\Driver');
}
/**
* Construct the ILS hold logic.
*
......@@ -290,6 +467,30 @@ class Factory
return $recaptcha;
}
/**
* Construct the Recommend Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Recommend\PluginManager
*/
public static function getRecommendPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Recommend');
}
/**
* Construct the RecordDriver Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\RecordDriver\PluginManager
*/
public static function getRecordDriverPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'RecordDriver');
}
/**
* Construct the record loader.
*
......@@ -336,6 +537,42 @@ class Factory
);
}
/**
* Construct the RecordTab Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\RecordTab\PluginManager
*/
public static function getRecordTabPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'RecordTab');
}
/**
* Construct the Related Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Related\PluginManager
*/
public static function getRelatedPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Related');
}
/**
* Construct the Resolver\Driver Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Resolver\Driver\PluginManager
*/
public static function getResolverDriverPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Resolver\Driver');
}
/**
* Construct the search backend manager.
*
......@@ -356,6 +593,42 @@ class Factory
return $manager;
}
/**
* Construct the Search\Options Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Search\Options\PluginManager
*/
public static function getSearchOptionsPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Search\Options');
}
/**
* Construct the Search\Params Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Search\Params\PluginManager
*/
public static function getSearchParamsPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Search\Params');
}
/**
* Construct the Search\Results Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Search\Results\PluginManager
*/
public static function getSearchResultsPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Search\Results');
}
/**
* Construct the search specs reader.
*
......@@ -386,6 +659,18 @@ class Factory
);
}
/**
* Construct the Session Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Session\PluginManager
*/
public static function getSessionPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Session');
}
/**
* Construct the Solr writer.
*
......@@ -401,6 +686,18 @@ class Factory
);
}
/**
* Construct the Statistics\Driver Plugin Manager.
*
* @param ServiceManager $sm Service manager.
*
* @return \VuFind\Statistics\Driver\PluginManager
*/
public static function getStatisticsDriverPluginManager(ServiceManager $sm)
{
return static::getGenericPluginManager($sm, 'Statistics\Driver');
}
/**
* Construct the tag helper.
*
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment