257 lines
11 KiB
PHP
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';
|
||
|
}
|