Skip to content
Snippets Groups Projects
Commit efa9301a authored by Dorian Merz's avatar Dorian Merz
Browse files

Merge branch 'instance/fid' into instance/fid_adlr

parents 31193b54 48fbe40f
No related merge requests found
......@@ -27,6 +27,7 @@
*/
namespace fid\View\Helper\Root;
use fid\Service\Client;
use Interop\Container\ContainerInterface;
/**
......@@ -55,4 +56,19 @@ class Factory
$container->get('VuFind\Config')->get('fid')
);
}
/**
* Construct the Record helper.
*
* @param ContainerInterface $container Service manager.
*
* @return GetIt
*/
public static function getGetIt(ContainerInterface $container)
{
return new GetIt(
$container->get('VuFind\Config')->get('getit'),
$container->get(Client::class)
);
}
}
<?php
/**
* Get It box view helper
*
* PHP version 7
*
* Copyright (C) Leipzig University Library 2019.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category VuFind
* @package View_Helpers
* @author Gregor Gawol <gawol@ub.uni-leipzig.de>
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
* @link https://vufind.org/wiki/development Wiki
*/
namespace fid\View\Helper\Root;
use VuFind\I18n\Translator\TranslatorAwareTrait;
use VuFind\RecordDriver\AbstractBase;
use VuFind\View\Helper\Root\Config;
use Zend\View\Helper\AbstractHelper;
/**
* Get It box view helper
*
* @category VuFind
* @package View_Helpers
* @author Gregor Gawol <gawol@ub.uni-leipzig.de>
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
* @link https://vufind.org/wiki/development Wiki
*/
class GetIt extends AbstractHelper
{
use TranslatorAwareTrait;
/**
* @var \Zend\Config\Config
*/
protected $config;
/**
* @var AbstractBase
*/
protected $driver;
/**
* FID API Client
*
* @var \fid\Service\Client
*/
protected $fidClient;
protected $sid;
protected $format;
protected $facetAvail;
protected $multipart;
protected $institution;
protected $megacollection;
protected $collection;
protected $isbn;
protected $issn;
/**
* GetIt constructor.
*
* @param Config $getItConfig Get It box Configuration
*/
public function __construct($getItConfig, $fidClient)
{
$this->config = $getItConfig;
$this->fidClient = $fidClient;
}
/**
* @param $driver
*/
public function __invoke($driver)
{
$this->driver = $driver;
$this->sid = $this->driver->tryMethod('getSourceID');
$this->format = $this->driver->tryMethod('getFormats');
$this->facetAvail = $this->driver->tryMethod('getFacetAvail');
$this->multipart = $this->driver->tryMethod('getMultiPart');
$this->institution = $this->driver->tryMethod('getInstitutions');
$this->megacollection = $this->driver->tryMethod('getMegaCollection');
$this->collection = $this->driver->tryMethod('getCollection');
$this->isbn = $this->driver->tryMethod('getISBNs');
$this->issn = $this->driver->tryMethod('getISSNs');
return $this;
}
/**
* @param $value
*
* @return array
*/
private function _getSourceIds($value)
{
$sids = $this->config->SourceIds;
return isset($sids->$value) ? explode(',', $sids->$value) : [];
}
/**
* @param $value
*
* @return string
*/
private function _getNonSourceIds($value)
{
$sids = $this->config->NonSourceIds;
return isset($sids->$value) ? $sids->$value : '';
}
/**
* @param $defaultval
* @param $additionalval
*
* @return mixed
*/
private function _accordeon($defaultval, $additionalval)
{
if (in_array($this->sid, $this->_getSourceIds('source_idsV1'))) {
return $additionalval;
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV5'))) {
return $additionalval;
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV7'))) {
return $additionalval;
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV8'))) {
if (in_array('Free', $this->facetAvail)) {
return $additionalval;
} elseif (in_array('Online', $this->facetAvail)
&& (preg_grep($this->_getNonSourceIds('source_idsV8_5'), $this->format)
|| preg_grep($this->_getNonSourceIds('source_idsV8_6'), $this->format)
|| preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format))
) {
return $additionalval;
}
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV10'))) {
return $additionalval;
}
return $defaultval;
}
/**
* @return string
*/
public function getAccordeonColor()
{
return $this->_accordeon('azure', 'amber');
}
/**
* @return mixed
*/
public function getAccordeonHeadline()
{
$links = $this->translate('getit_links');
$infos = $this->translate('getit_infos');
return $this->_accordeon($infos, $links);
}
/**
* @return string
*/
public function getBoxHeadline()
{
if (in_array($this->sid, $this->_getSourceIds('source_idsV3'))) {
if (!$this->fidClient->isLoggedOn()) {
return $this->translate('getit_logged_not');
}
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV4'))) {
if (!$this->fidClient->isLoggedOn()) {
return $this->translate('getit_logged_not');
}
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV5'))) {
if (!$this->fidClient->isLoggedOn()) {
return $this->translate('getit_logged_not');
}
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV8'))) {
$isLogin = false;
if (in_array('Local', $this->facetAvail)
&& ((preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
&& !in_array($this->_getNonSourceIds('source_idsV8_1'), $this->institution))
|| preg_grep($this->_getNonSourceIds('source_idsV8_3'), $this->format)
)
) {
$isLogin = true;
} elseif (in_array('Online', $this->facetAvail)
&& !in_array('Free', $this->facetAvail)
&& (preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format))
) {
$isLogin = true;
}
if (in_array($this->sid, $this->_getSourceIds('source_idsV9'))
&& preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->format)
) {
$isLogin = true;
}
if ($isLogin && !$this->fidClient->isLoggedOn()) {
return $this->translate('getit_logged_not');
}
}
return $this->translate('Get it');
}
/**
* @return string
*/
public function getNotices()
{
if (in_array($this->sid, $this->_getSourceIds('source_idsV1'))) {
return $this->translate('getit_text_1');
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV4'))) {
if (!$this->fidClient->isLoggedOn()) {
return $this->translate('getit_text_2');
} else {
return $this->translate('getit_text_12');
}
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV5'))) {
if (!$this->fidClient->isLoggedOn()) {
return $this->translate('getit_text_3_1');
} else {
return $this->translate('getit_text_13');
}
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV6'))) {
return $this->translate('getit_text_4');
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV7'))) {
return $this->translate('getit_text_5');
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV10'))) {
return $this->translate('getit_text_6');
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV11'))) {
return $this->translate('getit_text_7');
} elseif (in_array($this->sid, $this->_getSourceIds('source_idsV8'))) {
if (in_array($this->sid, $this->_getSourceIds('source_idsV9'))) {
if (preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection)) {
if (!$this->fidClient->isLoggedOn()) {
return $this->translate('getit_text_3_1');
} else {
return $this->translate('getit_text_13');
}
}
if (preg_grep($this->_getNonSourceIds('source_idsV8_4'), [$this->multipart])) {
return $this->translate('getit_text_11');
}
if (preg_grep($this->_getNonSourceIds('source_idsV8_7'), $this->megacollection)
) {
return $this->translate('getit_text_1');
}
if (in_array('Local', $this->facetAvail)
&& (preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
|| preg_grep($this->_getNonSourceIds('source_idsV8_3'), $this->format))
) {
if (!$this->fidClient->isLoggedOn()) {
return $this->translate('getit_text_10');
} elseif (preg_grep($this->_getNonSourceIds('source_idsV8_3'), $this->format)) {
return $this->translate('getit_text_14');
} else {
return '';
}
}
if (in_array('Local', $this->facetAvail)
&& preg_grep($this->_getNonSourceIds('source_idsV8_2'), $this->format)
) {
return $this->translate('getit_text_8');
}
if (in_array('Free', $this->facetAvail)) {
return $this->translate('getit_text_1');
}
if (in_array('Online', $this->facetAvail)
&& (preg_grep($this->_getNonSourceIds('source_idsV8_5'), $this->format)
|| preg_grep($this->_getNonSourceIds('source_idsV8_6'), $this->format))
) {
return $this->translate('getit_text_9');
} elseif (in_array('Online', $this->facetAvail)
&& preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
) {
if (!$this->fidClient->isLoggedOn()) {
return $this->translate('getit_text_10');
} else {
return $this->translate('getit_text_15');
}
}
} elseif (preg_grep($this->_getNonSourceIds('source_idsV8_4'), [$this->multipart])) {
return $this->translate('getit_text_11');
} elseif (in_array('Local', $this->facetAvail)
&& preg_grep($this->_getNonSourceIds('source_idsV8_2'), $this->format)
) {
return $this->translate('getit_text_8');
} elseif (in_array('Local', $this->facetAvail)) {
if (!$this->fidClient->isLoggedOn()) {
return $this->translate('getit_text_10');
} elseif (preg_grep($this->_getNonSourceIds('source_idsV8_3'), $this->format)) {
return $this->translate('getit_text_14');
}
} elseif (in_array('Free', $this->facetAvail)) {
return $this->translate('getit_text_1');
} elseif (in_array('Online', $this->facetAvail)
&& (preg_grep($this->_getNonSourceIds('source_idsV8_5'), $this->format)
|| preg_grep($this->_getNonSourceIds('source_idsV8_6'), $this->format))
) {
return $this->translate('getit_text_9');
} elseif (in_array('Online', $this->facetAvail)
&& preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
) {
if (!$this->fidClient->isLoggedOn()) {
return $this->translate('getit_text_10');
} else {
return $this->translate('getit_text_15');
}
}
}
return $this->translate('getit_text_default');
}
/**
* @return bool
*/
public function showLinks()
{
if (in_array($this->sid, $this->_getSourceIds('source_idsV5'))
|| (in_array($this->sid, $this->_getSourceIds('source_idsV9'))
&& preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection))
) {
if (!$this->fidClient->isLoggedOn()) {
return false;
}
}
return true;
}
/**
* @return bool
*/
public function showOrderButton()
{
if (in_array($this->sid, $this->_getSourceIds('source_idsV9'))
&& preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
&& !in_array($this->_getNonSourceIds('source_idsV8_9'), $this->institution)
&& !preg_grep($this->_getNonSourceIds('source_idsV8_4'), [$this->multipart])
&& !preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection)
) {
return true;
}
return false;
}
/**
* @return bool
*/
public function showPartCopyButton()
{
if (!in_array('Free', $this->facetAvail)
&& in_array($this->sid, $this->_getSourceIds('source_idsV9'))
&& preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
&& !preg_grep($this->_getNonSourceIds('source_idsV8_4'), [$this->multipart])
&& !preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection)
) {
return true;
}
return false;
}
/**
* @return bool
*/
public function showBOSSData()
{
if (!in_array('Free', $this->facetAvail)
&& in_array($this->sid, $this->_getSourceIds('source_idsV8'))
&& (!empty($this->isbn) || !empty($this->issn))
&& !preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection)
) {
if (in_array($this->sid, $this->_getSourceIds('source_idsV9'))
&& preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
) {
return true;
} elseif (in_array('Local', $this->facetAvail)
&& preg_grep($this->_getNonSourceIds('source_idsV8_3'), $this->format)
) {
return true;
} elseif (in_array('Online', $this->facetAvail)
&& preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
) {
return true;
}
}
return false;
}
}
......@@ -449,6 +449,17 @@ trait SolrDefaultFincTrait
return isset($this->fields['mega_collection']) ? $this->fields['mega_collection'] : [];
}
/**
* Get an array of all collections in the record.
*
* @return array
* @access public
*/
public function getCollection()
{
return isset($this->fields['collection']) ? $this->fields['collection'] : [];
}
/**
* Get the content of field multipart_set.
*
......
......@@ -2274,4 +2274,27 @@ trait SolrMarcFincTrait
return $retval;
}
/**
* Get the delivery status of the record.
*
* @return string
* @access public
*/
public function getDeliveryStatus()
{
$retVal = [];
$statuses = $this->getMarcRecord()->getFields('366');
if(!is_null($statuses)) {
foreach ($statuses as $status) {
$value = $status->getSubfield('e');
if($value) {
// is subfield u exists
$retVal[] = $value->getData();
}
}
}
return implode(', ', array_unique($retVal));
}
}
......@@ -16,6 +16,8 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* @author Sebastian Kehr <kehr@ub.uni-leipzig.de>
* @author Dorian Merz <merz@ub.uni-leipzig.de>
* @author Gregor Gawol <gawol@ub.uni-leipzig.de>
* @license http://opensource.org/licenses/gpl-2.0.php GNU GPLv2
*/
......@@ -25,11 +27,15 @@ return [
'factories' => array(
'fid\View\Helper\Root\UserGroups' =>
'fid\View\Helper\Root\Factory::getUserGroups',
'fid\View\Helper\Root\GetIt' =>
'fid\View\Helper\Root\Factory::getGetIt',
'fid\Helper\SearchTabs' => 'VuFind\View\Helper\Root\SearchTabsFactory',
),
'aliases' => array(
'usergroups' => 'UserGroups',
'UserGroups' => 'fid\View\Helper\Root\UserGroups',
'getit' => 'fid\View\Helper\Root\GetIt',
'GetIt' => 'fid\View\Helper\Root\GetIt',
'searchTabs' => 'fid\Helper\SearchTabs',
)
),
......
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