meilisearch/ext_localconf.php
2021-04-17 00:26:33 +02:00

257 lines
11 KiB
PHP

<?php
defined('TYPO3_MODE') || die();
# ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- #
// Windows compatibility
if (!function_exists('strptime')) {
require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('meilisearch') . 'Resources/Private/Php/strptime/strptime.php');
}
(function () {
# ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- #
// registering Index Queue page indexer helpers
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['meilisearch']['Indexer']['indexPageSubstitutePageDocument'][\WapplerSystems\Meilisearch\AdditionalFieldsIndexer::class] = \WapplerSystems\Meilisearch\AdditionalFieldsIndexer::class;
\WapplerSystems\Meilisearch\IndexQueue\FrontendHelper\Manager::registerFrontendHelper(
'findUserGroups',
\WapplerSystems\Meilisearch\IndexQueue\FrontendHelper\UserGroupDetector::class
);
\WapplerSystems\Meilisearch\IndexQueue\FrontendHelper\Manager::registerFrontendHelper(
'indexPage',
\WapplerSystems\Meilisearch\IndexQueue\FrontendHelper\PageIndexer::class
);
# ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- #
// page module plugin settings summary
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['list_type_Info']['meilisearch_pi_results']['meilisearch'] = \WapplerSystems\Meilisearch\Controller\Backend\PageModuleSummary::class . '->getSummary';
# ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- #
// register search components
\WapplerSystems\Meilisearch\Search\SearchComponentManager::registerSearchComponent(
'access',
\WapplerSystems\Meilisearch\Search\AccessComponent::class
);
\WapplerSystems\Meilisearch\Search\SearchComponentManager::registerSearchComponent(
'relevance',
\WapplerSystems\Meilisearch\Search\RelevanceComponent::class
);
\WapplerSystems\Meilisearch\Search\SearchComponentManager::registerSearchComponent(
'sorting',
\WapplerSystems\Meilisearch\Search\SortingComponent::class
);
\WapplerSystems\Meilisearch\Search\SearchComponentManager::registerSearchComponent(
'debug',
\WapplerSystems\Meilisearch\Search\DebugComponent::class
);
\WapplerSystems\Meilisearch\Search\SearchComponentManager::registerSearchComponent(
'analysis',
\WapplerSystems\Meilisearch\Search\AnalysisComponent::class
);
\WapplerSystems\Meilisearch\Search\SearchComponentManager::registerSearchComponent(
'highlighting',
\WapplerSystems\Meilisearch\Search\HighlightingComponent::class
);
\WapplerSystems\Meilisearch\Search\SearchComponentManager::registerSearchComponent(
'spellchecking',
\WapplerSystems\Meilisearch\Search\SpellcheckingComponent::class
);
\WapplerSystems\Meilisearch\Search\SearchComponentManager::registerSearchComponent(
'faceting',
\WapplerSystems\Meilisearch\Search\FacetingComponent::class
);
\WapplerSystems\Meilisearch\Search\SearchComponentManager::registerSearchComponent(
'statistics',
\WapplerSystems\Meilisearch\Search\StatisticsComponent::class
);
\WapplerSystems\Meilisearch\Search\SearchComponentManager::registerSearchComponent(
'lastSearches',
\WapplerSystems\Meilisearch\Search\LastSearchesComponent::class
);
\WapplerSystems\Meilisearch\Search\SearchComponentManager::registerSearchComponent(
'elevation',
\WapplerSystems\Meilisearch\Search\ElevationComponent::class
);
# ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- #
// adding scheduler tasks
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][\WapplerSystems\Meilisearch\Task\ReIndexTask::class] = [
'extension' => 'meilisearch',
'title' => 'LLL:EXT:meilisearch/Resources/Private/Language/locallang.xlf:reindex_title',
'description' => 'LLL:EXT:meilisearch/Resources/Private/Language/locallang.xlf:reindex_description',
'additionalFields' => \WapplerSystems\Meilisearch\Task\ReIndexTaskAdditionalFieldProvider::class
];
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][\WapplerSystems\Meilisearch\Task\IndexQueueWorkerTask::class] = [
'extension' => 'meilisearch',
'title' => 'LLL:EXT:meilisearch/Resources/Private/Language/locallang.xlf:indexqueueworker_title',
'description' => 'LLL:EXT:meilisearch/Resources/Private/Language/locallang.xlf:indexqueueworker_description',
'additionalFields' => \WapplerSystems\Meilisearch\Task\IndexQueueWorkerTaskAdditionalFieldProvider::class
];
if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][\TYPO3\CMS\Scheduler\Task\TableGarbageCollectionTask::class]['options']['tables']['tx_meilisearch_statistics'])) {
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][\TYPO3\CMS\Scheduler\Task\TableGarbageCollectionTask::class]['options']['tables']['tx_meilisearch_statistics'] = [
'dateField' => 'tstamp',
'expirePeriod' => 180
];
}
# ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- #
// registering the eID scripts
// TODO move to suggest form modifier
$GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include']['tx_meilisearch_api'] = 'EXT:meilisearch/Classes/Eid/Api.php';
# ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- #
// add custom meilisearch content objects
$GLOBALS['TYPO3_CONF_VARS']['FE']['ContentObjects'][\WapplerSystems\Meilisearch\ContentObject\Multivalue::CONTENT_OBJECT_NAME]
= \WapplerSystems\Meilisearch\ContentObject\Multivalue::class;
$GLOBALS['TYPO3_CONF_VARS']['FE']['ContentObjects'][\WapplerSystems\Meilisearch\ContentObject\Content::CONTENT_OBJECT_NAME]
= \WapplerSystems\Meilisearch\ContentObject\Content::class;
$GLOBALS['TYPO3_CONF_VARS']['FE']['ContentObjects'][\WapplerSystems\Meilisearch\ContentObject\Relation::CONTENT_OBJECT_NAME]
= \WapplerSystems\Meilisearch\ContentObject\Relation::class;
$GLOBALS['TYPO3_CONF_VARS']['FE']['ContentObjects'][\WapplerSystems\Meilisearch\ContentObject\Classification::CONTENT_OBJECT_NAME]
= \WapplerSystems\Meilisearch\ContentObject\Classification::class;
# ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- #
// Register cache for frequent searches
if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['tx_meilisearch'])) {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['tx_meilisearch'] = [];
}
// Caching framework meilisearch
if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['tx_meilisearch_configuration'])) {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['tx_meilisearch_configuration'] = [];
}
if (!isset($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['tx_meilisearch_configuration']['backend'])) {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['tx_meilisearch_configuration']['backend'] = \TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend::class;
}
if (!isset($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['tx_meilisearch_configuration']['options'])) {
// default life time one day
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['tx_meilisearch_configuration']['options'] = ['defaultLifetime' => 60 * 60 * 24];
}
if (!isset($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['tx_meilisearch_configuration']['groups'])) {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['tx_meilisearch_configuration']['groups'] = ['all'];
}
# ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- #
/* @var \WapplerSystems\Meilisearch\System\Configuration\ExtensionConfiguration $extensionConfiguration */
$extensionConfiguration = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
\WapplerSystems\Meilisearch\System\Configuration\ExtensionConfiguration::class
);
# ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- #
if (!isset($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['meilisearch']['searchResultClassName '])) {
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['meilisearch']['searchResultClassName '] = \WapplerSystems\Meilisearch\Domain\Search\ResultSet\Result\SearchResult::class;
}
if (!isset($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['meilisearch']['searchResultSetClassName '])) {
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['meilisearch']['searchResultSetClassName '] = \WapplerSystems\Meilisearch\Domain\Search\ResultSet\SearchResultSet::class;
}
if (!isset($GLOBALS['TYPO3_CONF_VARS']['LOG']['WapplerSystems']['Meilisearch']['writerConfiguration'])) {
$context = \TYPO3\CMS\Core\Utility\GeneralUtility::getApplicationContext();
if ($context->isProduction()) {
$logLevel = \TYPO3\CMS\Core\Log\LogLevel::ERROR;
} elseif ($context->isDevelopment()) {
$logLevel = \TYPO3\CMS\Core\Log\LogLevel::DEBUG;
} else {
$logLevel = \TYPO3\CMS\Core\Log\LogLevel::INFO;
}
$GLOBALS['TYPO3_CONF_VARS']['LOG']['WapplerSystems']['Meilisearch']['writerConfiguration'] = [
$logLevel => [
\TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
'logFileInfix' => 'meilisearch'
]
],
];
}
# ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- # ----- #
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'WapplerSystems.meilisearch',
'pi_results',
[
'Search' => 'results,form,detail'
],
[
'Search' => 'results'
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'WapplerSystems.meilisearch',
'pi_search',
[
'Search' => 'form'
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'WapplerSystems.meilisearch',
'pi_frequentlySearched',
[
'Search' => 'frequentlySearched'
],
[
'Search' => 'frequentlySearched'
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'WapplerSystems.meilisearch',
'pi_suggest',
[
'Suggest' => 'suggest'
],
[
'Suggest' => 'suggest'
]
);
// add tsconfig
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('@import \'EXT:meilisearch/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.tsconfig\'');
// register the Fluid namespace 'meilisearch' globally
$GLOBALS['TYPO3_CONF_VARS']['SYS']['fluid']['namespaces']['meilisearch'] = ['WapplerSystems\\Meilisearch\\ViewHelpers'];
})();
$isComposerMode = defined('TYPO3_COMPOSER_MODE') && TYPO3_COMPOSER_MODE;
if (!$isComposerMode) {
// we load the autoloader for our libraries
$dir = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('meilisearch');
require $dir . '/Resources/Private/Php/ComposerLibraries/vendor/autoload.php';
}