Skip to content
Snippets Groups Projects
Commit 2060a7fc authored by Arthur Suzuki's avatar Arthur Suzuki
Browse files

hotline#176160 : fix FRBR module to use any type of records URL.

parent 95d4f8dd
Branches
Tags
1 merge request!4763[RTfixed] hotline#176160 : fix FRBR module to use any type of records URL.
Pipeline #23991 passed with stage
in 38 minutes and 34 seconds
- correctif #176160 : Module FRBR : Il est dorénavant possible de renseigner une notice via plusieurs schémas d'URL (url pérenne via l'id_sigb ou via la clef alpha de manière indifferente).
\ No newline at end of file
......@@ -200,17 +200,19 @@ class Class_FRBR_Link extends Storm_Model_Abstract {
return;
if ('opac' == $request->getModuleName()
&& 'recherche' == $request->getControllerName()
&& 'viewnotice' == $request->getActionName()) {
$callback(self::TYPE_NOTICE, $request->getParam('clef'));
;
&& 'bib-numerique' == $request->getControllerName()
&& 'notice' == $request->getActionName()) {
$callback(self::TYPE_ALBUM, $request->getParam('id'));
return;
}
$clef = $this->_detectRecordKeyFromUrl($request);
if ('opac' == $request->getModuleName()
&& 'bib-numerique' == $request->getControllerName()
&& 'notice' == $request->getActionName()) {
$callback(self::TYPE_ALBUM, $request->getParam('id'));
&& 'recherche' == $request->getControllerName()
&& 'viewnotice' == $request->getActionName()) {
$callback(self::TYPE_NOTICE, $this->_detectRecordKeyFromUrl($request));
;
return;
}
......@@ -218,6 +220,21 @@ class Class_FRBR_Link extends Storm_Model_Abstract {
}
protected function _detectRecordKeyFromUrl($request) : string {
if ($clef = $request->getParam('clef'))
return $clef;
$id = $request->getParam('id') ?? Class_MoteurRecherche_RecordRequest::answer($request)
->recordId();
return ($notice = Class_Notice::find($id))
? $notice->getClefAlpha()
: '';
return '';
}
protected function _detectSourceType() {
$this->_detectEntityTypeFromUrl(
$this->getSource(),
......
<?php
require(__DIR__.'/../console.php');
foreach(Class_FRBR_Link::findAll() as $link) $link->save();
......@@ -247,4 +247,52 @@ class Admin_FrbrLinkControllerEditSuiteValidWithLocalUrlsPostTest extends Admin_
$this->assertEquals(Class_FRBR_Link::TYPE_NOTICE,
$this->_link->getTargetType());
}
}
\ No newline at end of file
}
class Admin_FrbrLinkControllerIndexWithIdSigbUrlsTest extends Admin_FrbrLinkControllerTestCase {
protected $_link;
public function setUp() {
parent::setUp();
$this->fixture(Class_Exemplaire::class,
['id' => 1,
'id_notice' => 33,
'id_origine' => 1,
'id_bib' => 1,
'id_int_bib' => 1,
'type' => 1]);
$this->fixture(Class_Exemplaire::class,
['id' => 2,
'id_notice' => 34,
'id_origine' => 2,
'id_bib' => 1,
'id_int_bib' => 1,
'type' => 1]);
$this->_link = Class_FRBR_Link::find(2);
$this->_link->setSource(Class_Url::absolute('/recherche/viewnotice/id_site/*/id_sigb/1'))
->setTarget(Class_Url::absolute('/recherche/viewnotice/id_site/*/id_sigb/2'))
->save();
$this->dispatch('/admin/frbr-link');
}
/** @test */
public function sourceKeyShouldBeLESGRANDSTEXTES_1() {
$this->assertEquals('LESGRANDSTEXTESDEDROITINTERNATIONALPUBLIC--DUPUYP--DALLOZ-2010-1',
$this->_link->getSourceKey());
}
/** @test */
public function sourceKeyShouldBeLESGRANDSTEXTES_2() {
$this->assertEquals('LESGRANDSTEXTESDEDROITINTERNATIONALPUBLIC--DUPUYP--DALLOZ-2010-2',
$this->_link->getTargetKey());
}
}
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