<?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 $isCollection; 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('isMultiPartSet'); $this->isCollection = $this->driver->tryMethod('hasChildren'); $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_idsV3'))) { 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_idsV3'))) { return; } 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 ($this->isCollection) { return $this->translate('getit_text_11',['%%hierarchy_tree%%' => $this->translate('hierarchy_tree')]); } 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 ($this->isCollection) { return $this->translate('getit_text_11',['%%hierarchy_tree%%' => $this->translate('hierarchy_tree')]); } 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) && !$this->isCollection && !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) && !$this->isCollection && !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; } public function isEBCEBooks() { if (in_array('Online', $this->facetAvail) && in_array($this->sid, $this->_getSourceIds('source_idsV9')) && preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection) ) { return true; } return false; } }