From cd42452db84feea8946ea9adb0dbd476b4e4d4f1 Mon Sep 17 00:00:00 2001 From: aynsix Date: Tue, 10 Mar 2020 10:49:53 +0300 Subject: [PATCH] migration patch for facets --- lib/Alchemy/Phrasea/Core/Version.php | 2 +- lib/classes/patch/410alpha25a.php | 82 ++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 lib/classes/patch/410alpha25a.php diff --git a/lib/Alchemy/Phrasea/Core/Version.php b/lib/Alchemy/Phrasea/Core/Version.php index e397781f1d..a4971ffaf1 100644 --- a/lib/Alchemy/Phrasea/Core/Version.php +++ b/lib/Alchemy/Phrasea/Core/Version.php @@ -17,7 +17,7 @@ class Version * @var string */ - private $number = '4.1.0-alpha.24a'; + private $number = '4.1.0-alpha.25a'; /** * @var string diff --git a/lib/classes/patch/410alpha25a.php b/lib/classes/patch/410alpha25a.php new file mode 100644 index 0000000000..35b1c5a5d0 --- /dev/null +++ b/lib/classes/patch/410alpha25a.php @@ -0,0 +1,82 @@ +release; + } + /** + * {@inheritdoc} + */ + public function concern() + { + return $this->concern; + } + /** + * {@inheritdoc} + */ + public function require_all_upgrades() + { + return false; + } + /** + * {@inheritdoc} + */ + public function getDoctrineMigrations() + { + return []; + } + /** + * {@inheritdoc} + */ + public function apply(base $appbox, Application $app) + { + /** @var PropertyAccess $conf */ + $conf = $app['conf']; + $oldOptions = $conf->get(['main', 'search-engine', 'options'], []); + $newOptions = []; + $facets = []; + // preserve former settings from conf (tech facets) + foreach($oldOptions as $k=>$v) { + if(substr($k, -16) === '_aggregate_limit') { + // this option is moved under "facets" + $k = substr($k, 0, strlen($k)-16); // keep field name + $facets['_'.$k] = ['limit' => $v]; + } + else { + $newOptions[$k] = $v; + } + } + // add facets for fields + foreach($app->getDataboxes() as $databox) { + foreach($databox->get_meta_structure() as $field) { + $facets[$field->get_name()] = ['limit' => $field->getFacetValuesLimit()]; + } + } + // facets in the end of settings + $newOptions['facets'] = $facets; + $conf->set(['main', 'search-engine', 'options'], $newOptions); + + return true; + } +}