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

Eliminated \VuFind\Record\Loader::getInstance() -- code now uses the service manager.

parent d2ee67cd
No related merge requests found
Showing
with 89 additions and 46 deletions
......@@ -114,9 +114,8 @@ class Bootstrap
$manager->setServiceLocator($serviceManager);
$serviceManager->setService('SearchManager', $manager);
// TODO: factor out static connection manager and record loader.
// TODO: factor out static connection manager.
\VuFind\Connection\Manager::setServiceLocator($serviceManager);
\VuFind\Record\Loader::getInstance()->setServiceLocator($serviceManager);
}
/**
......
......@@ -26,7 +26,9 @@
* @link http://vufind.org/wiki/system_classes Wiki
*/
namespace VuFind;
use VuFind\Config\Reader as ConfigReader, VuFind\Record\Loader as RecordLoader;
use VuFind\Config\Reader as ConfigReader,
Zend\ServiceManager\ServiceLocatorAwareInterface,
Zend\ServiceManager\ServiceLocatorInterface;
/**
* Cart Class
......@@ -39,12 +41,36 @@ use VuFind\Config\Reader as ConfigReader, VuFind\Record\Loader as RecordLoader;
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
* @link http://vufind.org/wiki/system_classes Wiki
*/
class Cart
class Cart implements ServiceLocatorAwareInterface
{
/**
* Cart contents.
*
* @var array
*/
protected $items;
/**
* Maximum number of items allowed in cart.
*
* @var int
*/
protected $maxSize = 100;
/**
* Is the cart currently activated?
*
* @var bool
*/
protected $active = false;
/**
* Service locator
*
* @var ServiceLocatorInterface
*/
protected $serviceLocator;
const CART_COOKIE = 'vufind_cart';
const CART_COOKIE_SOURCES = 'vufind_cart_src';
const CART_COOKIE_DELIM = "\t";
......@@ -267,6 +293,30 @@ class Cart
*/
public function getRecordDetails()
{
return RecordLoader::getInstance()->loadBatch($this->items);
return $this->getServiceLocator()
->get('RecordLoader')->loadBatch($this->items);
}
/**
* Set the service locator.
*
* @param ServiceLocatorInterface $serviceLocator Locator to register
*
* @return Manager
*/
public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
{
$this->serviceLocator = $serviceLocator;
return $this;
}
/**
* Get the service locator.
*
* @return \Zend\ServiceManager\ServiceLocatorInterface
*/
public function getServiceLocator()
{
return $this->serviceLocator;
}
}
......@@ -189,6 +189,16 @@ class AbstractBase extends AbstractActionController
return $patron;
}
/**
* Get the record loader
*
* @return \VuFind\Record\Loader
*/
protected function getRecordLoader()
{
return $this->getServiceLocator()->get('RecordLoader');
}
/**
* Get the search manager.
*
......
......@@ -29,8 +29,7 @@ namespace VuFind\Controller;
use VuFind\Config\Reader as ConfigReader,
VuFind\Connection\Manager as ConnectionManager,
VuFind\Exception\Auth as AuthException, VuFind\Export, VuFind\Mailer,
VuFind\Mailer\SMS, VuFind\Record\Loader as RecordLoader,
VuFind\Translator\Translator;
VuFind\Mailer\SMS, VuFind\Translator\Translator;
/**
* This controller handles global AJAX functionality
......@@ -606,7 +605,7 @@ class AjaxController extends AbstractBase
}
// empty tag
try {
$driver = RecordLoader::getInstance()->load(
$driver = $this->getRecordLoader()->load(
$this->params()->fromPost('id'),
$this->params()->fromPost('source', 'VuFind')
);
......@@ -829,7 +828,7 @@ class AjaxController extends AbstractBase
);
}
$driver = RecordLoader::getInstance()->load(
$driver = $this->getRecordLoader()->load(
$this->params()->fromPost('id'),
$this->params()->fromPost('source', 'VuFind')
);
......@@ -937,7 +936,7 @@ class AjaxController extends AbstractBase
{
// Attempt to send the email:
try {
$record = RecordLoader::getInstance()->load(
$record = $this->getRecordLoader()->load(
$this->params()->fromPost('id'),
$this->params()->fromPost('source', 'VuFind')
);
......@@ -966,7 +965,7 @@ class AjaxController extends AbstractBase
{
// Attempt to send the email:
try {
$record = RecordLoader::getInstance()->load(
$record = $this->getRecordLoader()->load(
$this->params()->fromPost('id'),
$this->params()->fromPost('source', 'VuFind')
);
......@@ -1126,7 +1125,7 @@ class AjaxController extends AbstractBase
*/
public function getRecordCommentsAsHTML()
{
$driver = RecordLoader::getInstance()->load(
$driver = $this->getRecordLoader()->load(
$this->params()->fromQuery('id'),
$this->params()->fromQuery('source', 'VuFind')
);
......
......@@ -27,7 +27,6 @@
*/
namespace VuFind\Controller;
use VuFind\Exception\Mail as MailException, VuFind\Export, VuFind\Mailer,
VuFind\Record\Loader as RecordLoader,
VuFind\Translator\Translator, Zend\Session\Container as SessionContainer;
/**
......@@ -174,7 +173,7 @@ class CartController extends AbstractBase
return $this->redirectToSource('error', 'bulk_noitems_advice');
}
$view = $this->createViewModel();
$view->records = RecordLoader::getInstance()->loadBatch($ids);
$view->records = $this->getRecordLoader()->loadBatch($ids);
// Process form submission:
if ($this->params()->fromPost('submit')) {
......@@ -258,7 +257,7 @@ class CartController extends AbstractBase
// Load the records:
$view = $this->createViewModel();
$view->records = RecordLoader::getInstance()->loadBatch($ids);
$view->records = $this->getRecordLoader()->loadBatch($ids);
// Assign the list of legal export options. We'll filter them down based
// on what the selected records actually support.
......@@ -305,7 +304,7 @@ class CartController extends AbstractBase
// Actually export the records
$records = RecordLoader::getInstance()->loadBatch($ids);
$records = $this->getRecordLoader()->loadBatch($ids);
$recordHelper = $this->getViewRenderer()->plugin('record');
$parts = array();
foreach ($records as $record) {
......@@ -356,7 +355,7 @@ class CartController extends AbstractBase
// Pass record and list information to view:
return $this->createViewModel(
array(
'records' => RecordLoader::getInstance()->loadBatch($ids),
'records' => $this->getRecordLoader()->loadBatch($ids),
'lists' => $user->getLists()
)
);
......
......@@ -32,8 +32,7 @@ use VuFind\Config\Reader as ConfigReader,
VuFind\Exception\Auth as AuthException,
VuFind\Exception\ListPermission as ListPermissionException,
VuFind\Exception\RecordMissing as RecordMissingException,
VuFind\Record\Loader as RecordLoader, VuFind\Record\Router as RecordRouter,
Zend\Stdlib\Parameters;
VuFind\Record\Router as RecordRouter, Zend\Stdlib\Parameters;
/**
* Controller for the user account area.
......@@ -321,7 +320,7 @@ class MyResearchController extends AbstractBase
return $this->createViewModel(
array(
'list' => $list, 'deleteIDS' => $ids,
'records' => RecordLoader::getInstance()->loadBatch($ids)
'records' => $this->getRecordLoader()->loadBatch($ids)
)
);
}
......@@ -424,7 +423,7 @@ class MyResearchController extends AbstractBase
$source = $this->params()->fromPost(
'source', $this->params()->fromQuery('source', 'VuFind')
);
$driver = RecordLoader::getInstance()->load($id, $source);
$driver = $this->getRecordLoader()->load($id, $source);
$listID = $this->params()->fromPost(
'list_id', $this->params()->fromQuery('list_id', null)
);
......
......@@ -30,7 +30,6 @@ use ArrayObject, VuFind\Cache\Manager as CacheManager,
VuFind\Config\Reader as ConfigReader, VuFind\Cookie\Container as CookieContainer,
VuFind\Db\AdapterFactory,
VuFind\Exception\RecordMissing as RecordMissingException,
VuFind\Record\Loader as RecordLoader,
Zend\Db\TableGateway\Feature\GlobalAdapterFeature as DbGlobalAdapter,
Zend\Session\Container as SessionContainer;
......@@ -411,7 +410,7 @@ class UpgradeController extends AbstractBase
if (strlen($this->params()->fromPost('submit', '')) > 0) {
foreach ($problems as $problem) {
try {
$driver = RecordLoader::getInstance()
$driver = $this->getRecordLoader()
->load($problem->record_id, $problem->source);
$problem->assignMetadata($driver)->save();
} catch (RecordMissingException $e) {
......
......@@ -26,7 +26,7 @@
* @link http://vufind.org Main Site
*/
namespace VuFind\Db\Table;
use VuFind\Record\Loader as RecordLoader, Zend\Db\Sql\Expression;
use Zend\Db\Sql\Expression;
/**
* Table Definition for resource
......@@ -79,7 +79,8 @@ class Resource extends Gateway
// Load record if it was not provided:
if (is_null($driver)) {
$driver = RecordLoader::getInstance()->load($id, $source);
$driver = $this->getServiceLocator()->getServiceLocator()
->get('RecordLoader')->load($id, $source);
}
// Load metadata into the database for sorting/failback purposes:
......
......@@ -47,21 +47,6 @@ class Loader implements ServiceLocatorAwareInterface
*/
protected $serviceLocator;
/**
* Temporary method to get instance of object -- TODO: eliminate in place of
* service manager after further refactoring.
*
* @return Loader
*/
static public function getInstance()
{
static $instance = false;
if (!$instance) {
$instance = new Loader();
}
return $instance;
}
/**
* Given a record source, return the search object that can load that type of
* record.
......
......@@ -27,7 +27,6 @@
*/
namespace VuFind\Search\Favorites;
use VuFind\Exception\ListPermission as ListPermissionException,
VuFind\Record\Loader as RecordLoader,
VuFind\Search\Base\Results as BaseResults,
VuFind\Translator\Translator;
......@@ -170,7 +169,8 @@ class Results extends BaseResults
)
);
}
$this->results = RecordLoader::getInstance()->loadBatch($recordsToRequest);
$this->results = $this->getServiceLocator()->get('RecordLoader')
->loadBatch($recordsToRequest);
}
/**
......
......@@ -26,7 +26,7 @@
* @link http://vufind.org Main Site
*/
namespace VuFind\Search\MixedList;
use VuFind\Record\Loader as RecordLoader, VuFind\Search\Base\Results as BaseResults;
use VuFind\Search\Base\Results as BaseResults;
/**
* Search Mixed List Results
......@@ -62,7 +62,8 @@ class Results extends BaseResults
protected function performSearch()
{
$recordsToRequest = $this->getParams()->getRecordsToRequest();
$this->results = RecordLoader::getInstance()->loadBatch($recordsToRequest);
$this->results = $this->getServiceLocator()->get('RecordLoader')
->loadBatch($recordsToRequest);
$this->resultTotal = count($this->results);
}
......
......@@ -26,7 +26,7 @@
* @link http://vufind.org Main Site
*/
namespace VuFind\Search\Tags;
use VuFind\Record\Loader as RecordLoader, VuFind\Search\Base\Results as BaseResults;
use VuFind\Search\Base\Results as BaseResults;
/**
* Search Tags Results
......@@ -73,7 +73,8 @@ class Results extends BaseResults
$recordsToRequest[]
= array('id' => $row->record_id, 'source' => $row->source);
}
$this->results = RecordLoader::getInstance()->loadBatch($recordsToRequest);
$this->results = $this->getServiceLocator()->get('RecordLoader')
->loadBatch($recordsToRequest);
}
/**
......
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