49 lines
1.5 KiB
PHP
49 lines
1.5 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace oat\tao\migrations;
|
||
|
|
||
|
use Doctrine\DBAL\Schema\Schema;
|
||
|
use oat\tao\model\search\SearchProxy;
|
||
|
use oat\tao\model\search\Search;
|
||
|
use oat\tao\model\search\strategy\GenerisSearch;
|
||
|
use oat\tao\scripts\tools\migrations\AbstractMigration;
|
||
|
|
||
|
final class Version202106010945122237_tao extends AbstractMigration
|
||
|
{
|
||
|
public function getDescription(): string
|
||
|
{
|
||
|
return 'Register ' . SearchProxy::class;
|
||
|
}
|
||
|
|
||
|
public function up(Schema $schema): void
|
||
|
{
|
||
|
/** @var Search $currentSearch */
|
||
|
$currentSearch = $this->getServiceManager()->get(Search::SERVICE_ID);
|
||
|
$isGenerisSearch = $currentSearch instanceof GenerisSearch;
|
||
|
$defaultSearch = $isGenerisSearch ? $currentSearch : new GenerisSearch();
|
||
|
|
||
|
$searchProxy = new SearchProxy();
|
||
|
$searchProxy->withDefaultSearch($defaultSearch);
|
||
|
|
||
|
if (!$isGenerisSearch) {
|
||
|
$searchProxy->withAdvancedSearch($currentSearch);
|
||
|
}
|
||
|
|
||
|
$this->getServiceManager()->register(SearchProxy::SERVICE_ID, $searchProxy);
|
||
|
}
|
||
|
|
||
|
public function down(Schema $schema): void
|
||
|
{
|
||
|
/** @var SearchProxy $searchProxy */
|
||
|
$searchProxy = $this->getServiceManager()->get(SearchProxy::SERVICE_ID);
|
||
|
|
||
|
/** @var Search $legacySearch */
|
||
|
$legacySearch = $searchProxy->getAdvancedSearch() ?? $searchProxy->getDefaultSearch();
|
||
|
|
||
|
$this->getServiceManager()->unregister(SearchProxy::SERVICE_ID);
|
||
|
$this->getServiceManager()->register(Search::SERVICE_ID, $legacySearch);
|
||
|
}
|
||
|
}
|