An error occurred while loading the file. Please try again.
-
Demian Katz authored80995c60
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
module.config.php 31.24 KiB
<?php
namespace VuFind\Module\Config;
$config = array(
'router' => array(
'routes' => array(
'default' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => 'index',
'action' => 'Home',
),
),
),
// TODO: can we address all three default route situations (install, install/, install/home) with
// a single route definition? Currently, we need this case to address trailing slash + missing action.
'default-without-action' => array(
'type' => 'Zend\Mvc\Router\Http\Regex',
'options' => array(
'regex' => '/(?<controller>[a-zA-Z][a-zA-Z0-9_-]*)(/?)',
'defaults' => array(
'controller' => 'index',
'action' => 'Home',
),
'spec' => '/%controller%',
),
),
'legacy-alphabrowse-results' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/AlphaBrowse/Results',
'defaults' => array(
'controller' => 'Alphabrowse',
'action' => 'Home',
)
)
),
'legacy-bookcover' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/bookcover.php',
'defaults' => array(
'controller' => 'cover',
'action' => 'Show',
)
)
),
'legacy-summonrecord' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/Summon/Record',
'defaults' => array(
'controller' => 'SummonRecord',
'action' => 'Home',
)
)
),
'legacy-worldcatrecord' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/WorldCat/Record',
'defaults' => array(
'controller' => 'WorldcatRecord',
'action' => 'Home',
)
)
)
),
),
'controllers' => array(
'invokables' => array(
'admin' => 'VuFind\Controller\AdminController',
'ajax' => 'VuFind\Controller\AjaxController',
'alphabrowse' => 'VuFind\Controller\AlphabrowseController',
'author' => 'VuFind\Controller\AuthorController',
'authority' => 'VuFind\Controller\AuthorityController',
'browse' => 'VuFind\Controller\BrowseController',
'cart' => 'VuFind\Controller\CartController',
'collection' => 'VuFind\Controller\CollectionController',
'collections' => 'VuFind\Controller\CollectionsController',
'cover' => 'VuFind\Controller\CoverController',
'error' => 'VuFind\Controller\ErrorController',
'help' => 'VuFind\Controller\HelpController',
'hierarchy' => 'VuFind\Controller\HierarchyController',
'index' => 'VuFind\Controller\IndexController',
'install' => 'VuFind\Controller\InstallController',
'missingrecord' => 'VuFind\Controller\MissingrecordController',
'my-research' => 'VuFind\Controller\MyResearchController',
'oai' => 'VuFind\Controller\OaiController',
'record' => 'VuFind\Controller\RecordController',
'records' => 'VuFind\Controller\RecordsController',
'search' => 'VuFind\Controller\SearchController',
'summon' => 'VuFind\Controller\SummonController',
'summonrecord' => 'VuFind\Controller\SummonrecordController',
'tag' => 'VuFind\Controller\TagController',
'upgrade' => 'VuFind\Controller\UpgradeController',
'vudl' => 'VuFind\Controller\VudlController',
'worldcat' => 'VuFind\Controller\WorldcatController',
'worldcatrecord' => 'VuFind\Controller\WorldcatrecordController',
),
),
'controller_plugins' => array(
'invokables' => array(
'db-upgrade' => 'VuFind\Controller\Plugin\DbUpgrade',
'favorites' => 'VuFind\Controller\Plugin\Favorites',
'followup' => 'VuFind\Controller\Plugin\Followup',
'holds' => 'VuFind\Controller\Plugin\Holds',
'renewals' => 'VuFind\Controller\Plugin\Renewals',
'reserves' => 'VuFind\Controller\Plugin\Reserves',
'result-scroller' => 'VuFind\Controller\Plugin\ResultScroller',
)
),
'service_manager' => array(
'factories' => array(
'VuFind\Cart' => function ($sm) {
$config = \VuFind\Config\Reader::getConfig();
$active = isset($config->Site->showBookBag)
? (bool)$config->Site->showBookBag : false;
$size = isset($config->Site->bookBagMaxSize)
? $config->Site->bookBagMaxSize : 100;
return new \VuFind\Cart(
$sm->get('VuFind\RecordLoader'), $size, $active
);
},
'VuFind\DbAdapter' => function ($sm) {
return \VuFind\Db\AdapterFactory::getAdapter();
},
'VuFind\Http' => function ($sm) {
$config = \VuFind\Config\Reader::getConfig();
$options = array();
if (isset($config->Proxy->host)) {
$options['proxy_host'] = $config->Proxy->host;
if (isset($config->Proxy->port)) {
$options['proxy_port'] = $config->Proxy->port;
}
}
return new \VuFindHttp\HttpService($options);
},
'VuFind\ILSConnection' => function ($sm) {
$catalog = new \VuFind\ILS\Connection();
return $catalog
->setConfig(\VuFind\Config\Reader::getConfig()->Catalog)
->initWithDriverManager(
$sm->get('VuFind\ILSDriverPluginManager')
);
},
'VuFind\Logger' => function ($sm) {
$logger = new \VuFind\Log\Logger();
$logger->setServiceLocator($sm);
$logger->setConfig(\VuFind\Config\Reader::getConfig());
return $logger;
},
'VuFind\RecordRouter' => function ($sm) {
return new \VuFind\Record\Router($sm->get('VuFind\RecordLoader'));
},
'VuFind\SMS' => 'VuFind\SMS\Factory',
'VuFind\Translator' => function ($sm) {
$factory = new \Zend\I18n\Translator\TranslatorServiceFactory();
$translator = $factory->createService($sm);
// Set up the ExtendedIni plugin:
$translator->getPluginManager()->setService(
'extendedini', new \VuFind\I18n\Translator\Loader\ExtendedIni()
);
// Set up language caching for better performance:
try {
$translator->setCache(
$sm->get('VuFind\CacheManager')->getCache('language')
);
} catch (\Exception $e) {
// Don't let a cache failure kill the whole application, but make
// note of it:
$logger = $sm->get('VuFind\Logger');
$logger->debug(
'Problem loading cache: ' . get_class($e) . ' exception: '
. $e->getMessage()
);
}
return $translator;
},
'VuFind\WorldCatConnection' => function ($sm) {
return new \VuFind\Connection\WorldCat(
$sm->get('VuFind\Http')->createClient()
);
},
),
'invokables' => array(
'VuFind\AuthManager' => 'VuFind\Auth\Manager',
'VuFind\CacheManager' => 'VuFind\Cache\Manager',
'VuFind\Mailer' => 'VuFind\Mailer',
'VuFind\RecordLoader' => 'VuFind\Record\Loader',
'VuFind\SearchSpecsReader' => 'VuFind\Config\SearchSpecsReader',
'VuFind\SessionManager' => 'Zend\Session\SessionManager',
'VuFind\WorldCatUtils' => 'VuFind\Connection\WorldCatUtils',
),
'initializers' => array(
array('VuFind\ServiceManager\Initializer', 'initInstance'),
),
'aliases' => array(
'translator' => 'VuFind\Translator',
),
),
'translator' => array(),
'view_helpers' => array(
'initializers' => array(
array('VuFind\ServiceManager\Initializer', 'initZendPlugin'),
),
),
'view_manager' => array(
'display_not_found_reason' => APPLICATION_ENV == 'development',
'display_exceptions' => APPLICATION_ENV == 'development',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_path_stack' => array(),
),
// This section contains all VuFind-specific settings (i.e. configurations
// unrelated to specific Zend Framework 2 components).
'vufind' => array(
// This section contains service manager configurations for all VuFind
// pluggable components:
'plugin_managers' => array(
'auth' => array(
'abstract_factories' => array('VuFind\Auth\PluginFactory'),
'factories' => array(
'ils' => function ($sm) {
return new \VuFind\Auth\ILS(
$sm->getServiceLocator()->get('VuFind\ILSConnection')
);
},
),
'invokables' => array(
'database' => 'VuFind\Auth\Database',
'ldap' => 'VuFind\Auth\LDAP',
'multiauth' => 'VuFind\Auth\MultiAuth',
'shibboleth' => 'VuFind\Auth\Shibboleth',
'sip2' => 'VuFind\Auth\SIP2',
),
'aliases' => array(
// for legacy 1.x compatibility
'db' => 'Database',
'sip' => 'Sip2',
),
),
'autocomplete' => array(
'abstract_factories' => array('VuFind\Autocomplete\PluginFactory'),
'invokables' => array(
'none' => 'VuFind\Autocomplete\None',
'oclcidentities' => 'VuFind\Autocomplete\OCLCIdentities',
'solr' => 'VuFind\Autocomplete\Solr',
'solrauth' => 'VuFind\Autocomplete\SolrAuth',
'solrcn' => 'VuFind\Autocomplete\SolrCN',
'solrreserves' => 'VuFind\Autocomplete\SolrReserves',
'tag' => 'VuFind\Autocomplete\Tag',
),
'aliases' => array(
// for legacy 1.x compatibility
'noautocomplete' => 'None',
'oclcidentitiesautocomplete' => 'OCLCIdentities',
'solrautocomplete' => 'Solr',
'solrauthautocomplete' => 'SolrAuth',
'solrcnautocomplete' => 'SolrCN',
'solrreservesautocomplete' => 'SolrReserves',
'tagautocomplete' => 'Tag',
),
),
'db_table' => array(
'abstract_factories' => array('VuFind\Db\Table\PluginFactory'),
'invokables' => array(
'changetracker' => 'VuFind\Db\Table\ChangeTracker',
'comments' => 'VuFind\Db\Table\Comments',
'resource' => 'VuFind\Db\Table\Resource',
'resourcetags' => 'VuFind\Db\Table\ResourceTags',
'search' => 'VuFind\Db\Table\Search',
'session' => 'VuFind\Db\Table\Session',
'tags' => 'VuFind\Db\Table\Tags',
'user' => 'VuFind\Db\Table\User',
'userlist' => 'VuFind\Db\Table\UserList',
'userresource' => 'VuFind\Db\Table\UserResource',
'userstats' => 'VuFind\Db\Table\UserStats',
'userstatsfields' => 'VuFind\Db\Table\UserStatsFields',
),
),
'hierarchy_driver' => array(
'factories' => array(
'default' => function ($sm) {
return \VuFind\Hierarchy\Driver\Factory::get($sm->getServiceLocator(), 'HierarchyDefault');
},
'flat' => function ($sm) {
return \VuFind\Hierarchy\Driver\Factory::get($sm->getServiceLocator(), 'HierarchyFlat');
},
)
),
'hierarchy_treedatasource' => array(
'factories' => array(
'solr' => function ($sm) {
$cacheDir = $sm->getServiceLocator()->get('VuFind\CacheManager')->getCacheDir();
return new \VuFind\Hierarchy\TreeDataSource\Solr(
\VuFind\Connection\Manager::connectToIndex(),
$sm->getServiceLocator()->get('VuFind\RecordDriverPluginManager'),
rtrim($cacheDir, '/') . '/hierarchy'
);
},
),
'invokables' => array(
'xmlfile' => 'VuFind\Hierarchy\TreeDataSource\XMLFile',
),
),
'hierarchy_treerenderer' => array(
'invokables' => array(
'jstree' => 'VuFind\Hierarchy\TreeRenderer\JSTree',
)
),
'ils_driver' => array(
'abstract_factories' => array('VuFind\ILS\Driver\PluginFactory'),
'invokables' => array(
'aleph' => 'VuFind\ILS\Driver\Aleph',
'amicus' => 'VuFind\ILS\Driver\Amicus',
'daia' => 'VuFind\ILS\Driver\DAIA',
'demo' => 'VuFind\ILS\Driver\Demo',
'evergreen' => 'VuFind\ILS\Driver\Evergreen',
'horizon' => 'VuFind\ILS\Driver\Horizon',
'horizonxmlapi' => 'VuFind\ILS\Driver\HorizonXMLAPI',
'innovative' => 'VuFind\ILS\Driver\Innovative',
'koha' => 'VuFind\ILS\Driver\Koha',
'newgenlib' => 'VuFind\ILS\Driver\NewGenLib',
'noils' => 'VuFind\ILS\Driver\NoILS',
'pica' => 'VuFind\ILS\Driver\PICA',
'sample' => 'VuFind\ILS\Driver\Sample',
'symphony' => 'VuFind\ILS\Driver\Symphony',
'unicorn' => 'VuFind\ILS\Driver\Unicorn',
'virtua' => 'VuFind\ILS\Driver\Virtua',
'voyager' => 'VuFind\ILS\Driver\Voyager',
'voyagerrestful' => 'VuFind\ILS\Driver\VoyagerRestful',
'xcncip' => 'VuFind\ILS\Driver\XCNCIP',
'xcncip2' => 'VuFind\ILS\Driver\XCNCIP2',
),
),
'recommend' => array(
'abstract_factories' => array('VuFind\Recommend\PluginFactory'),
'factories' => array(
'authorinfo' => function ($sm) {
return new \VuFind\Recommend\AuthorInfo(
$sm->getServiceLocator()->get('SearchManager'),
$sm->getServiceLocator()->get('VuFind\Http')->createClient()
);
},
'worldcatidentities' => function ($sm) {
return new \VuFind\Recommend\WorldCatIdentities(
$sm->getServiceLocator()->get('VuFind\WorldCatUtils')
);
},
'worldcatterms' => function ($sm) {
return new \VuFind\Recommend\WorldCatTerms(
$sm->getServiceLocator()->get('VuFind\WorldCatUtils')
);
},
),
'invokables' => array(
'authorfacets' => 'VuFind\Recommend\AuthorFacets',
'authorityrecommend' => 'VuFind\Recommend\AuthorityRecommend',
'catalogresults' => 'VuFind\Recommend\CatalogResults',
'collectionsidefacets' => 'VuFind\Recommend\CollectionSideFacets',
'europeanaresults' => 'VuFind\Recommend\EuropeanaResults',
'europeanaresultsdeferred' => 'VuFind\Recommend\EuropeanaResultsDeferred',
'expandfacets' => 'VuFind\Recommend\ExpandFacets',
'facetcloud' => 'VuFind\Recommend\FacetCloud',
'favoritefacets' => 'VuFind\Recommend\FavoriteFacets',
'openlibrarysubjects' => 'VuFind\Recommend\OpenLibrarySubjects',
'openlibrarysubjectsdeferred' => 'VuFind\Recommend\OpenLibrarySubjectsDeferred',
'pubdatevisajax' => 'VuFind\Recommend\PubDateVisAjax',
'resultgooglemapajax' => 'VuFind\Recommend\ResultGoogleMapAjax',
'sidefacets' => 'VuFind\Recommend\SideFacets',
'summondatabases' => 'VuFind\Recommend\SummonDatabases',
'summonresults' => 'VuFind\Recommend\SummonResults',
'switchtype' => 'VuFind\Recommend\SwitchType',
'topfacets' => 'VuFind\Recommend\TopFacets',
),
),
'recorddriver' => array(
'abstract_factories' => array('VuFind\RecordDriver\PluginFactory'),
'invokables' => array(
'missing' => 'VuFind\RecordDriver\Missing',
'solrauth' => 'VuFind\RecordDriver\SolrAuth',
'solrdefault' => 'VuFind\RecordDriver\SolrDefault',
'solrmarc' => 'VuFind\RecordDriver\SolrMarc',
'solrreserves' => 'VuFind\RecordDriver\SolrReserves',
'solrvudl' => 'VuFind\RecordDriver\SolrVudl',
'summon' => 'VuFind\RecordDriver\Summon',
'worldcat' => 'VuFind\RecordDriver\WorldCat',
),
),
'recordtab' => array(
'abstract_factories' => array('VuFind\RecordTab\PluginFactory'),
'factories' => array(
'collectionhierarchytree' => function ($sm) {
return new \VuFind\RecordTab\CollectionHierarchyTree(
$sm->getServiceLocator()->get('VuFind\RecordLoader')
);
},
'collectionlist' => function ($sm) {
$searchManager = $sm->getServiceLocator()->get('SearchManager');
return new \VuFind\RecordTab\CollectionList(
$searchManager->setSearchClassId('SolrCollection')->getResults()
);
},
'holdingsils' => function ($sm) {
// If VuFind is configured to suppress the holdings tab when the
// ILS driver specifies no holdings, we need to pass in a connection
// object:
$config = \VuFind\Config\Reader::getConfig();
if (isset($config->Site->hideHoldingsTabWhenEmpty)
&& $config->Site->hideHoldingsTabWhenEmpty
) {
$catalog = $sm->getServiceLocator()->get('VuFind\ILSConnection');
} else {
$catalog = false;
}
return new \VuFind\RecordTab\HoldingsILS($catalog);
},
),
'invokables' => array(
'description' => 'VuFind\RecordTab\Description',
'excerpt' => 'VuFind\RecordTab\Excerpt',
'hierarchytree' => 'VuFind\RecordTab\HierarchyTree',
'holdingsworldcat' => 'VuFind\RecordTab\HoldingsWorldCat',
'map' => 'VuFind\RecordTab\Map',
'reviews' => 'VuFind\RecordTab\Reviews',
'staffviewarray' => 'VuFind\RecordTab\StaffViewArray',
'staffviewmarc' => 'VuFind\RecordTab\StaffViewMARC',
'toc' => 'VuFind\RecordTab\TOC',
'usercomments' => 'VuFind\RecordTab\UserComments',
),
),
'related' => array(
'abstract_factories' => array('VuFind\Related\PluginFactory'),
'invokables' => array(
'editions' => 'VuFind\Related\Editions',
'similar' => 'VuFind\Related\Similar',
'worldcateditions' => 'VuFind\Related\WorldCatEditions',
'worldcatsimilar' => 'VuFind\Related\WorldCatSimilar',
),
),
'resolver_driver' => array(
'abstract_factories' => array('VuFind\Resolver\Driver\PluginFactory'),
'invokables' => array(
'360link' => 'VuFind\Resolver\Driver\Threesixtylink',
'ezb' => 'VuFind\Resolver\Driver\Ezb',
'sfx' => 'VuFind\Resolver\Driver\Sfx',
),
'aliases' => array(
'threesixtylink' => '360link',
),
),
'session' => array(
'abstract_factories' => array('VuFind\Session\PluginFactory'),
'invokables' => array(
'database' => 'VuFind\Session\Database',
'file' => 'VuFind\Session\File',
'memcache' => 'VuFind\Session\Memcache',
),
'aliases' => array(
// for legacy 1.x compatibility
'filesession' => 'File',
'memcachesession' => 'Memcache',
'mysqlsession' => 'Database',
),
),
'statistics_driver' => array(
'abstract_factories' => array('VuFind\Statistics\Driver\PluginFactory'),
'invokables' => array(
'db' => 'VuFind\Statistics\Driver\Db',
'file' => 'VuFind\Statistics\Driver\File',
'solr' => 'VuFind\Statistics\Driver\Solr',
),
'aliases' => array(
'database' => 'db',
),
),
),
// This section controls which tabs are used for which record driver classes.
// Each sub-array is a map from a tab name (as used in a record URL) to a tab
// service (found in recordtab_plugin_manager, below). If a particular record
// driver is not defined here, it will inherit configuration from a configured
// parent class.
'recorddriver_tabs' => array(
'VuFind\RecordDriver\SolrAuth' => array(
'Details' => 'StaffViewMARC',
),
'VuFind\RecordDriver\SolrDefault' => array(
'Holdings' => 'HoldingsILS', 'Description' => 'Description',
'TOC' => 'TOC', 'UserComments' => 'UserComments',
'Reviews' => 'Reviews', 'Excerpt' => 'Excerpt',
'HierarchyTree' => 'HierarchyTree', 'Map' => 'Map',
'Details' => 'StaffViewArray',
),
'VuFind\RecordDriver\SolrMarc' => array(
'Holdings' => 'HoldingsILS', 'Description' => 'Description',
'TOC' => 'TOC', 'UserComments' => 'UserComments',
'Reviews' => 'Reviews', 'Excerpt' => 'Excerpt',
'HierarchyTree' => 'HierarchyTree', 'Map' => 'Map',
'Details' => 'StaffViewMARC',
),
'VuFind\RecordDriver\Summon' => array(
'Description' => 'Description',
'TOC' => 'TOC', 'UserComments' => 'UserComments',
'Reviews' => 'Reviews', 'Excerpt' => 'Excerpt',
'Details' => 'StaffViewArray',
),
'VuFind\RecordDriver\WorldCat' => array(
'Holdings' => 'HoldingsWorldCat', 'Description' => 'Description',
'TOC' => 'TOC', 'UserComments' => 'UserComments',
'Reviews' => 'Reviews', 'Excerpt' => 'Excerpt',
'Details' => 'StaffViewMARC',
),
),
// This section controls the SearchManager service:
'search_manager' => array(
'default_namespace' => 'VuFind\Search',
'namespaces_by_id' => array(
'EmptySet' => 'VuFind\Search\EmptySet',
'Favorites' => 'VuFind\Search\Favorites',
'MixedList' => 'VuFind\Search\MixedList',
'Solr' => 'VuFind\Search\Solr',
'SolrAuth' => 'VuFind\Search\SolrAuth',
'SolrAuthor' => 'VuFind\Search\SolrAuthor',
'SolrAuthorFacets' => 'VuFind\Search\SolrAuthorFacets',
'SolrReserves' => 'VuFind\Search\SolrReserves',
'Summon' => 'VuFind\Search\Summon',
'Tags' => 'VuFind\Search\Tags',
'WorldCat' => 'VuFind\Search\WorldCat',
),
'aliases' => array(
// Alias to account for "source" field in resource table,
// which uses "VuFind" for records from Solr index.
'VuFind' => 'Solr'
),
),
),
);
// Define record view routes -- route name => controller
$recordRoutes = array(
'record' => 'Record',
'collection' => 'Collection',
'missingrecord' => 'MissingRecord',
'solrauthrecord' => 'Authority',
'summonrecord' => 'SummonRecord',
'worldcatrecord' => 'WorldcatRecord'
);
$nonTabRecordActions = array(
'AddComment', 'DeleteComment', 'AddTag', 'Save', 'Email', 'SMS', 'Cite',
'Export', 'RDF', 'Hold', 'BlockedHold', 'Home'
);
// Define list-related routes -- route name => MyResearch action
$listRoutes = array('userList' => 'MyList', 'editList' => 'EditList');
// Define static routes -- Controller/Action strings
$staticRoutes = array(
'Admin/Config', 'Admin/DeleteExpiredSearches', 'Admin/EnableAutoConfig',
'Admin/Home', 'Admin/Maintenance', 'Admin/Statistics', 'Alphabrowse/Home',
'Author/Home', 'Author/Search',
'Authority/Home', 'Authority/Record', 'Authority/Search',
'Browse/Author', 'Browse/Dewey', 'Browse/Era', 'Browse/Genre', 'Browse/Home',
'Browse/LCC', 'Browse/Region', 'Browse/Tag', 'Browse/Topic',
'Cart/doExport', 'Cart/Email', 'Cart/Export', 'Cart/Home', 'Cart/MyResearchBulk',
'Cart/Save', 'Collections/ByTitle', 'Collections/Home',
'Cover/Show', 'Cover/Unavailable', 'Error/Unavailable', 'Help/Home',
'Install/Done', 'Install/FixBasicConfig', 'Install/FixCache',
'Install/FixDatabase', 'Install/FixDependencies', 'Install/FixILS',
'Install/FixSolr', 'Install/Home', 'Install/ShowSQL',
'MyResearch/Account', 'MyResearch/CheckedOut', 'MyResearch/Delete',
'MyResearch/DeleteList', 'MyResearch/Edit', 'MyResearch/Email',
'MyResearch/Export', 'MyResearch/Favorites', 'MyResearch/Fines',
'MyResearch/Holds', 'MyResearch/Home', 'MyResearch/Logout', 'MyResearch/Profile',
'MyResearch/SaveSearch',
'OAI/Server', 'Records/Home',
'Search/Advanced', 'Search/Email', 'Search/History', 'Search/Home',
'Search/NewItem', 'Search/OpenSearch', 'Search/Reserves', 'Search/Results',
'Search/Suggest',
'Summon/Advanced', 'Summon/Home', 'Summon/Search',
'Tag/Home',
'Upgrade/Home', 'Upgrade/FixAnonymousTags', 'Upgrade/FixConfig',
'Upgrade/FixDatabase', 'Upgrade/FixMetadata', 'Upgrade/GetDBCredentials',
'Upgrade/GetSourceDir', 'Upgrade/Reset', 'Upgrade/ShowSQL',
'VuDL/Browse', 'VuDL/DSRecord', 'VuDL/Record',
'Worldcat/Advanced', 'Worldcat/Home', 'Worldcat/Search'
);
// Build record routes
foreach ($recordRoutes as $routeBase => $controller) {
// catch-all "tab" route:
$config['router']['routes'][$routeBase] = array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/' . $controller . '/[:id[/:tab]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => $controller,
'action' => 'Home',
)
)
);
// special non-tab actions that each need their own route:
foreach ($nonTabRecordActions as $action) {
$config['router']['routes'][$routeBase . '-' . strtolower($action)] = array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/' . $controller . '/[:id]/' . $action,
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => $controller,
'action' => $action,
)
)
);
}
}
// Build list routes
foreach ($listRoutes as $routeName => $action) {
$config['router']['routes'][$routeName] = array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/MyResearch/' . $action . '/[:id]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => 'MyResearch',
'action' => $action,
)
)
);
}
// Build static routes
foreach ($staticRoutes as $route) {
list($controller, $action) = explode('/', $route);
$routeName = str_replace('/', '-', strtolower($route));
$config['router']['routes'][$routeName] = array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/' . $route,
'defaults' => array(
'controller' => $controller,
'action' => $action,
)
)
);
}
// Add the home route last
$config['router']['routes']['home'] = array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'index',
'action' => 'Home',
)
)
);
return $config;