Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?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;
/**
* @var array list of available source ID definitions from config
*/
protected $sids = [
'source_idsV1',
'source_idsV3',
'source_idsV4',
'source_idsV5',
'source_idsV6',
'source_idsV7',
'source_idsV8',
'source_idsV9',
'source_idsV10',
'source_idsV11',
];
/**
* 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;
protected $accordeonColorDefault;
protected $accordeonColorAlternative;
protected $accordeonHeadlineDefault;
protected $accordeonHeadlineAlternative;
/**
* 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');
$this->accordeonColorDefault = 'azure';
$this->accordeonColorAlternative = 'amber';
$this->accordeonHeadlineDefault = $this->translate('getit_infos');
$this->accordeonHeadlineAlternative = $this->translate('getit_links');
* Retrieve SIDs from config (getit.ini)
*
* @param $value
*
* @return array
*/
private function _getSourceIds($value)
{
$sids = $this->config->SourceIds;
return isset($sids->$value) ? explode(',', $sids->$value) : [];
}
/**
* Retrieve NonSIDs from config (getit.ini)
*
* @param $value
*
* @return string
*/
private function _getNonSourceIds($value)
{
$sids = $this->config->NonSourceIds;
return isset($sids->$value) ? $sids->$value : '';
}
/**
* Read specific config of given record
* Set default Values of getit box
* @return array config of given record
public function getConfig()
{
//set default values
$accordeonColor = $this->accordeonColorDefault;
$accordeonHeadline = $this->accordeonHeadlineDefault;
$boxHeadline = $this->translate('Get it');
$notice = $this->translate('getit_text_default');
$showLinks = true;
$showOrderButton = false;
$showPartCopyButton = false;
$bossData = false;
$isEBCEBooks = false;
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
$isAiSidRecord = false;
// let specific functions override defaults where necessary
foreach ($this->sids as $sid_config) {
if (in_array($this->sid, $sid = $this->_getSourceIds($sid_config)))
{
$foo = 'get_config_'.$sid_config;
$this->$foo(
$accordeonColor,
$accordeonHeadline,
$boxHeadline,
$notice,
$showLinks,
$showOrderButton,
$showPartCopyButton,
$bossData,
$isEBCEBooks,
$hideNotice,
$isAiSidRecord
);
if ($this->sid !== '0')
{
//special case for source ID 0
// this is th only SID that is contained in multiple configs (V8 + V9)
break;
}
}
}
return compact(
'accordeonColor',
'accordeonHeadline',
'boxHeadline',
'notice',
'showLinks',
'showOrderButton',
'showPartCopyButton',
'bossData',
'isEBCEBooks',
'hideNotice',
'isAiSidRecord'
);
}
/**
* Configuration of SIDs 13,22,26,28,30,34,53,80,84,87,88,99,101,150,153,170
*
* @param $accordeonColor string accordeon color
* @param $accordeonHeadline string accordeon headline
* @param $boxHeadline string headline text get it box
* @param $notice string text of box version
* @param $showLinks boolean display links
* @param $showOrderButton boolean display order button
* @param $showPartCopyButton boolean display part copy button
* @param $bossData boolean display data of BOSS webservice
* @param $isEBCEBooks boolean is given record UBL-FID-EBC
* @param $hideNotice boolean hide notice
* @param $isAiSidRecord boolean is given record an ai record
*/
public function get_config_source_idsV1(
&$accordeonColor,
&$accordeonHeadline,
&$boxHeadline,
&$notice,
&$showLinks,
&$showOrderButton,
&$showPartCopyButton,
&$bossData,
&$isEBCEBooks,
&$hideNotice,
&$isAiSidRecord
)
{
$accordeonColor = $this->accordeonColorAlternative;
$accordeonHeadline = $this->accordeonHeadlineAlternative;
$notice = $this->translate('getit_text_1');
}
/**
* Configuration of SID 49,55,68,105
*
* @param $accordeonColor string accordeon color
* @param $accordeonHeadline string accordeon headline
* @param $boxHeadline string headline text get it box
* @param $notice string text of box version
* @param $showLinks boolean display links
* @param $showOrderButton boolean display order button
* @param $showPartCopyButton boolean display part copy button
* @param $bossData boolean display data of BOSS webservice
* @param $isEBCEBooks boolean is given record UBL-FID-EBC
* @param $hideNotice boolean hide notice
* @param $isAiSidRecord boolean is given record an ai record
*/
public function get_config_source_idsV3(
&$accordeonColor,
&$accordeonHeadline,
&$boxHeadline,
&$notice,
&$showLinks,
&$showOrderButton,
&$showPartCopyButton,
&$bossData,
&$isEBCEBooks,
&$hideNotice,
&$isAiSidRecord
)
{
$accordeonColor = $this->accordeonColorAlternative;
$accordeonHeadline = $this->accordeonHeadlineAlternative;
$boxHeadline = $this->fidClient->isLoggedOn() ? $this->translate('Get it') : $this->translate('getit_logged_not');
$notice = '';
$isAiSidRecord = true;
}
/**
* Configuration of SID 51
*
* @param $accordeonColor string accordeon color
* @param $accordeonHeadline string accordeon headline
* @param $boxHeadline string headline text get it box
* @param $notice string text of box version
* @param $showLinks boolean display links
* @param $showOrderButton boolean display order button
* @param $showPartCopyButton boolean display part copy button
* @param $bossData boolean display data of BOSS webservice
* @param $isEBCEBooks boolean is given record UBL-FID-EBC
* @param $hideNotice boolean hide notice
* @param $isAiSidRecord boolean is given record an ai record
*/
public function get_config_source_idsV4(
&$accordeonColor,
&$accordeonHeadline,
&$boxHeadline,
&$notice,
&$showLinks,
&$showOrderButton,
&$showPartCopyButton,
&$bossData,
&$isEBCEBooks,
&$hideNotice,
&$isAiSidRecord
)
{
$boxHeadline = $this->fidClient->isLoggedOn() ? $this->translate('Get it') : $this->translate('getit_logged_not');
$notice = $this->fidClient->isLoggedOn() ? $this->translate('getit_text_12') : $this->translate('getit_text_2');
}
/**
* Configuration of SID 76
*
* @param $accordeonColor string accordeon color
* @param $accordeonHeadline string accordeon headline
* @param $boxHeadline string headline text get it box
* @param $notice string text of box version
* @param $showLinks boolean display links
* @param $showOrderButton boolean display order button
* @param $showPartCopyButton boolean display part copy button
* @param $bossData boolean display data of BOSS webservice
* @param $isEBCEBooks boolean is given record UBL-FID-EBC
* @param $hideNotice boolean hide notice
* @param $isAiSidRecord boolean is given record an ai record
*/
public function get_config_source_idsV5(
&$accordeonColor,
&$accordeonHeadline,
&$boxHeadline,
&$notice,
&$showLinks,
&$showOrderButton,
&$showPartCopyButton,
&$bossData,
&$isEBCEBooks,
&$hideNotice,
&$isAiSidRecord
)
{
$accordeonColor = $this->accordeonColorAlternative;
$accordeonHeadline = $this->accordeonHeadlineAlternative;
$notice = !$this->fidClient->isLoggedOn() ? $this->translate('getit_text_3_1') : $this->translate('getit_text_13');
$boxHeadline = $this->fidClient->isLoggedOn() ? $this->translate('Get it') : $this->translate('getit_logged_not');
$showLinks = $this->fidClient->isLoggedOn();
}
/**
* Configuration of SID 78
*
* @param $accordeonColor string accordeon color
* @param $accordeonHeadline string accordeon headline
* @param $boxHeadline string headline text get it box
* @param $notice string text of box version
* @param $showLinks boolean display links
* @param $showOrderButton boolean display order button
* @param $showPartCopyButton boolean display part copy button
* @param $bossData boolean display data of BOSS webservice
* @param $isEBCEBooks boolean is given record UBL-FID-EBC
* @param $hideNotice boolean hide notice
* @param $isAiSidRecord boolean is given record an ai record
*/
public function get_config_source_idsV6(
&$accordeonColor,
&$accordeonHeadline,
&$boxHeadline,
&$notice,
&$showLinks,
&$showOrderButton,
&$showPartCopyButton,
&$bossData,
&$isEBCEBooks,
&$hideNotice,
&$isAiSidRecord
)
{
$notice = $this->translate('getit_text_4');
}
/**
* Configuration of SID 103
*
* @param $accordeonColor string accordeon color
* @param $accordeonHeadline string accordeon headline
* @param $boxHeadline string headline text get it box
* @param $notice string text of box version
* @param $showLinks boolean display links
* @param $showOrderButton boolean display order button
* @param $showPartCopyButton boolean display part copy button
* @param $bossData boolean display data of BOSS webservice
* @param $isEBCEBooks boolean is given record UBL-FID-EBC
* @param $hideNotice boolean hide notice
* @param $isAiSidRecord boolean is given record an ai record
*/
public function get_config_source_idsV7(
&$accordeonColor,
&$accordeonHeadline,
&$boxHeadline,
&$notice,
&$showLinks,
&$showOrderButton,
&$showPartCopyButton,
&$bossData,
&$isEBCEBooks,
&$hideNotice,
&$isAiSidRecord
)
{
$accordeonColor = $this->accordeonColorAlternative;
$accordeonHeadline = $this->accordeonHeadlineAlternative;
$notice = $this->translate('getit_text_5');
}
/**
* Configuration of SID 0,109,117,119,127,142,148,151,155
*
* @param $accordeonColor string accordeon color
* @param $accordeonHeadline string accordeon headline
* @param $boxHeadline string headline text get it box
* @param $notice string text of box version
* @param $showLinks boolean display links
* @param $showOrderButton boolean display order button
* @param $showPartCopyButton boolean display part copy button
* @param $bossData boolean display data of BOSS webservice
* @param $isEBCEBooks boolean is given record UBL-FID-EBC
* @param $hideNotice boolean hide notice
* @param $isAiSidRecord boolean is given record an ai record
*/
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
public function get_config_source_idsV8(
&$accordeonColor,
&$accordeonHeadline,
&$boxHeadline,
&$notice,
&$showLinks,
&$showOrderButton,
&$showPartCopyButton,
&$bossData,
&$isEBCEBooks,
&$hideNotice,
&$isAiSidRecord
)
{
//accordeon
if (in_array('Free', $this->facetAvail)) {
$accordeonHeadline = $this->accordeonHeadlineAlternative;
$accordeonColor = $this->accordeonColorAlternative;
} 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))
) {
$accordeonHeadline = $this->accordeonHeadlineAlternative;
$accordeonColor = $this->accordeonColorAlternative;
}
//END accordeon
//box headline
$isLogin = false;
if (in_array($this->sid, $this->_getSourceIds('source_idsV9'))
&& preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->format)
) {
$isLogin = true;
}
elseif (in_array('Local', $this->facetAvail)
&& ((preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
&& !in_array($this->_getNonSourceIds('source_idsV8_9'), $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 ($isLogin && !$this->fidClient->isLoggedOn()) {
$boxHeadline = $this->translate('getit_logged_not');
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
}
//END boxheadline
//notice
if (in_array($this->sid, $this->_getSourceIds('source_idsV9'))) {
if (preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection)) {
if (!$this->fidClient->isLoggedOn()) {
$notice = $this->translate('getit_text_3_1');
} else {
$notice = $this->translate('getit_text_13');
}
}
elseif ($this->isCollection) {
$notice = $this->translate('getit_text_11',['%%hierarchy_tree%%' => $this->translate('hierarchy_tree')]);
}
elseif (preg_grep($this->_getNonSourceIds('source_idsV8_7'), $this->megacollection)
) {
$notice = $this->translate('getit_text_1');
}
elseif (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()) {
$notice = $this->translate('getit_text_10');
} elseif (preg_grep($this->_getNonSourceIds('source_idsV8_3'), $this->format)) {
$notice = $this->translate('getit_text_14');
} else {
$notice = '';
}
}
elseif (in_array('Local', $this->facetAvail)
&& preg_grep($this->_getNonSourceIds('source_idsV8_2'), $this->format)
) {
$notice = $this->translate('getit_text_8');
}
elseif (in_array('Free', $this->facetAvail)) {
$notice = $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))
) {
$notice = $this->translate('getit_text_9');
} elseif (in_array('Online', $this->facetAvail)
&& preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
) {
if (!$this->fidClient->isLoggedOn()) {
$notice = $this->translate('getit_text_10');
} else {
$notice = $this->translate('getit_text_15');
}
}
} elseif ($this->isCollection) {
$notice = $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)
) {
$notice = $this->translate('getit_text_8');
} elseif (in_array('Local', $this->facetAvail)) {
if (!$this->fidClient->isLoggedOn()) {
$notice = $this->translate('getit_text_10');
} elseif (preg_grep($this->_getNonSourceIds('source_idsV8_3'), $this->format)) {
$notice = $this->translate('getit_text_14');
} elseif (!preg_grep($this->_getNonSourceIds('source_idsV8_10'), $this->format)) {
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
$notice = '';
}
} elseif (in_array('Free', $this->facetAvail)) {
$notice = $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))
) {
$notice = $this->translate('getit_text_9');
} elseif (in_array('Online', $this->facetAvail)
&& preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
) {
if (!$this->fidClient->isLoggedOn()) {
$notice = $this->translate('getit_text_10');
} else {
$notice = $this->translate('getit_text_15');
}
}
//END notice
//bossData
if (!in_array('Free', $this->facetAvail)
//&& (!empty($this->isbn) || !empty($this->issn))
&& !preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection)
) {
if (preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
) {
$bossData = true;
if (!$this->isCollection) {
$showPartCopyButton = true;
}
} elseif (in_array('Local', $this->facetAvail)
&& preg_grep($this->_getNonSourceIds('source_idsV8_3'), $this->format)
) {
$bossData = true;
}
}
//END bossData
//hideNotice
if ($this->fidClient->isLoggedOn()) {
if (in_array('Local', $this->facetAvail))
{
if (preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
&& empty($this->isbn)
&& !preg_grep($this->_getNonSourceIds('source_idsV8_9'), $this->institution)
&& !preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection)
) {
$hideNotice = true;
}
if ($this->isCollection) {
$hideNotice = false;
}
}
}
//END hideNotice
}
/**
* Configuration of SID 0 (special cases)
*
* @param $accordeonColor string accordeon color
* @param $accordeonHeadline string accordeon headline
* @param $boxHeadline string headline text get it box
* @param $notice string text of box version
* @param $showLinks boolean display links
* @param $showOrderButton boolean display order button
* @param $showPartCopyButton boolean display part copy button
* @param $bossData boolean display data of BOSS webservice
* @param $isEBCEBooks boolean is given record UBL-FID-EBC
* @param $hideNotice boolean hide notice
* @param $isAiSidRecord boolean is given record an ai record
*/
public function get_config_source_idsV9(
&$accordeonColor,
&$accordeonHeadline,
&$boxHeadline,
&$notice,
&$showLinks,
&$showOrderButton,
&$showPartCopyButton,
&$bossData,
&$isEBCEBooks,
&$hideNotice,
&$isAiSidRecord
)
{
//accordeon
if (preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection)
|| preg_grep($this->_getNonSourceIds('source_idsV8_7'), $this->megacollection)
) {
$accordeonHeadline = $this->accordeonHeadlineAlternative;
$accordeonColor = $this->accordeonColorAlternative;
}
//END accordeon
//showLinks
if (
preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection)
) {
if (!$this->fidClient->isLoggedOn()) {
$showLinks = false;
}
}
//END showLinks
//orderButton
if (preg_grep($this->_getNonSourceIds('source_idsV8_1'), $this->format)
&& !preg_grep($this->_getNonSourceIds('source_idsV8_9'), $this->institution)
&& !$this->isCollection
&& !preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection)
) {
$showOrderButton = true;
}
//END orderButton
//EBCEbooks
if (in_array('Online', $this->facetAvail)
&& preg_grep($this->_getNonSourceIds('source_idsV8_8'), $this->collection)
) {
$isEBCEBooks = true;
}
//END EBCEbooks
}
/**
* Configuration of SID 169
*
* @param $accordeonColor string accordeon color
* @param $accordeonHeadline string accordeon headline
* @param $boxHeadline string headline text get it box
* @param $notice string text of box version
* @param $showLinks boolean display links
* @param $showOrderButton boolean display order button
* @param $showPartCopyButton boolean display part copy button
* @param $bossData boolean display data of BOSS webservice
* @param $isEBCEBooks boolean is given record UBL-FID-EBC
* @param $hideNotice boolean hide notice
* @param $isAiSidRecord boolean is given record an ai record
*/
public function get_config_source_idsV10(
&$accordeonColor,
&$accordeonHeadline,
&$boxHeadline,
&$notice,
&$showLinks,
&$showOrderButton,
&$showPartCopyButton,
&$bossData,
&$isEBCEBooks,
&$hideNotice,
&$isAiSidRecord
)
{
$accordeonColor = $this->accordeonColorAlternative;
$accordeonHeadline = $this->accordeonHeadlineAlternative;
$notice = $this->translate('getit_text_6');
}
/**
* Configuration of SID 126
*
* @param $accordeonColor string accordeon color
* @param $accordeonHeadline string accordeon headline
* @param $boxHeadline string headline text get it box
* @param $notice string text of box version
* @param $showLinks boolean display links
* @param $showOrderButton boolean display order button
* @param $showPartCopyButton boolean display part copy button
* @param $bossData boolean display data of BOSS webservice
* @param $isEBCEBooks boolean is given record UBL-FID-EBC
* @param $hideNotice boolean hide notice
* @param $isAiSidRecord boolean is given record an ai record
*/
public function get_config_source_idsV11(
&$accordeonColor,
&$accordeonHeadline,
&$boxHeadline,
&$notice,
&$showLinks,
&$showOrderButton,
&$showPartCopyButton,
&$bossData,
&$isEBCEBooks,
&$hideNotice,
&$isAiSidRecord
)
{
$notice = $this->translate('getit_text_7');
}