Skip to content
Snippets Groups Projects
Commit 2accb02b authored by Patrick Barroca's avatar Patrick Barroca :grin:
Browse files

dev #74753 upgrade digital_ressources migration to handle records view settings

parent 801098e9
Branches
Tags
2 merge requests!2817Dev#74753 dev maj connecteur 1dtouch,!2797Dev#74753 dev maj connecteur 1dtouch
Pipeline #4803 failed with stage
in 40 minutes and 5 seconds
......@@ -29,7 +29,6 @@ abstract class Class_Migration_DigitalResource_Abstract {
public function run() {
$this
->renameAdminVars()
->renameMenusKeys()
->upgradePermissions()
->renameBatches()
->upgradeAlbums()
......@@ -101,27 +100,11 @@ abstract class Class_Migration_DigitalResource_Abstract {
}
protected function renameMenusKeys() {
foreach(Class_Profil::findTopProfils() as $profil)
$this->searchAndRename($profil);
$this->_cleanMemory();
return $this;
}
protected function searchAndRename($profil) {
if (null === ($_old_menu_name = $this->_getOldMenuName()))
return $profil;
protected function searchAndRename($replace, $by, $profil, $data, $update_callback) {
$this->_found_in_profil = false;
$cfg_menu = $profil->getCfgMenusAsArray();
$cfg_menu = $this->recursiveSearchAndRename($_old_menu_name, $this->_getConfig()->getName(), $cfg_menu);
$data = $this->recursiveSearchAndRename($replace, $by, $data);
if($this->_found_in_profil)
$profil
->setCfgMenus($cfg_menu)
->save();
$update_callback($profil, $data);
return $profil;
}
......@@ -129,6 +112,12 @@ abstract class Class_Migration_DigitalResource_Abstract {
protected function recursiveSearchAndRename($search, $replace, $subject){
foreach($subject as $key => $value) {
if($search === $key){
$this->_found_in_profil = true;
unset($subject[$key]);
$subject[$replace] = $value;
return $subject;
}
if($search === $value){
$this->_found_in_profil = true;
$subject[$key] = $replace;
......@@ -190,16 +179,56 @@ abstract class Class_Migration_DigitalResource_Abstract {
protected function upgradeProfiles() {
$this->_replaceInModels(Class_Profil::findTopProfils(),
(string) $this->_getOldDocTypeId(),
$this->_getConfig()->getDocType(),
['sel_type_doc']);
$top_profiles = Class_Profil::findTopProfils();
if (null !== ($_old_menu_name = $this->_getOldMenuName()))
$this->_renameMenusKeys($_old_menu_name, $top_profiles);
if (null != ($doc_type = (string) $this->_getOldDocTypeId())) {
$this->_renameRecordsView($doc_type, $top_profiles);
$this->_replaceInModels($top_profiles,
$doc_type,
$this->_getConfig()->getDocType(),
['sel_type_doc']);
}
$this->_cleanMemory();
return $this;
}
protected function _renameRecordsView($old_doc_type, $profiles) {
foreach($profiles as $profile)
$this->searchAndRename('viewnotice' . $old_doc_type,
'viewnotice' . $this->_getConfig()->getName(),
$profile,
$profile->getCfgModulesAsArray(),
function($profile, $data)
{
return $profile
->setCfgModules($data)
->save();
});
return $this;
}
protected function _renameMenusKeys($old_menu_name, $profiles) {
foreach($profiles as $profile)
$this->searchAndRename($old_menu_name,
$this->_getConfig()->getName(),
$profile,
$profile->getCfgMenusAsArray(),
function($profile, $data)
{
return $profile
->setCfgMenus($data)
->save();
});
return $this;
}
protected function upgradeArticles() {
if (!$old_sso = $this->_getOldSsoAction())
return $this;
......
......@@ -37,10 +37,16 @@ class Class_Migration_DigitialResource_1DTouchTest extends ModelTestCase {
$profil_adulte = $this->fixture('Class_Profil',
['id' => 22,
'parent_id' => null])
->setBrowser('opac')
->setLibelle('Profil Adulte')
->setSelTypeDoc('1;2;114');
'parent_id' => null,
'browser' => 'opac',
'libelle' => 'Profil Adulte',
'sel_type_doc' => '1;2;114']);
$profil_adulte
->setCfgModules(['recherche' =>
['viewnotice114' =>
['champs_codes' => 'W;P;S;N;G;M;L']]])
->assertSave();
Class_Profil::setCurrentProfil($profil_adulte);
......@@ -182,6 +188,15 @@ class Class_Migration_DigitialResource_1DTouchTest extends ModelTestCase {
}
/** @test */
public function profileDiMusicViewRecordFieldsToShowShouldBeWPSNGML() {
$this->assertEquals(['recherche' =>
['viewnoticeDiMusic' =>
['champs_codes' => 'W;P;S;N;G;M;L']]],
Class_Profil::find(22)->getCfgModulesAsArray());
}
/** @test */
public function domainTypeDocShouldContains1dtouch() {
$this->assertEquals('1;2;DiMusic', Class_Catalogue::find(22)->getTypeDoc());
......
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