Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUGFIX] Fix range string calculation in DateRange facet #4088

Closed
wants to merge 11 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem.

**Used versions (please complete the following information):**
- TYPO3 Version: [e.g. 12.4.11]
- TYPO3 Version: [e.g. 13.4.0]
- Browser: [e.g. chrome, safari]
- EXT:solr Version: [e.g. 12.0.2]
- EXT:solr Version: [e.g. 13.0.0]
- Used Apache Solr Version: [e.g. 9.6.0]
- PHP Version: [e.g. 8.2.0]
- MySQL Version: [e.g. 8.0.0]
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/ci-matrix.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"release-12.0.x": {
"PHP": [ "8.1", "8.2", "8.3" ],
"TYPO3": [ "12", "12.4.x-dev" ]
"main": {
"PHP": [ "8.2", "8.3" ],
"TYPO3": [ "dev-main" ]
}
}
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ name: build

on:
push:
branches: [ main, release-12.0.x ]
branches: [ main, release-13.0.x, release-12.0.x, release-11.6.x, release-11.5.x, task/*_compatibility ]
tags:
- "**"
pull_request:
branches: [ main, release-12.0.x ]
branches: [ main, release-13.0.x, release-12.0.x, release-11.6.x, release-11.5.x, task/*_compatibility ]

env:
CI_BUILD_DIRECTORY: '/home/runner/work/ext-solr/ext-solr/.Build'
Expand Down
4 changes: 2 additions & 2 deletions Build/Test/bootstrap.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash

DEFAULT_TYPO3_VERSION="12"
DEFAULT_TYPO3_VERSION="13"
DEFAULT_TYPO3_DATABASE_HOST="localhost"
DEFAULT_TYPO3_DATABASE_NAME="test"
DEFAULT_TYPO3_DATABASE_USERNAME="root"
Expand Down Expand Up @@ -42,7 +42,7 @@ if [[ $* == *--local* ]]; then
fi

if [ -z $TYPO3_VERSION ]; then
echo "Must set env var TYPO3_VERSION (e.g. dev-main or ^12.4)"
echo "Must set env var TYPO3_VERSION (e.g. dev-main or ^13)"
exit 1
fi

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,6 @@ protected function initializeView($view): void
parent::initializeView($view);

$this->generateCoreSelectorMenuUsingPageTree();
$coreOptimizationTabs = $this->moduleTemplate->getDynamicTabMenu([], 'coreOptimization');
$this->moduleTemplate->assign('tabs', $coreOptimizationTabs);
}

/**
Expand Down Expand Up @@ -295,7 +293,7 @@ public function saveStopWordsAction(string $stopWords, bool $replaceStopwords =
protected function exportFile(string $content, string $type = 'synonyms', string $fileExtension = 'txt'): ResponseInterface
{
$coreAdmin = $this->selectedSolrCoreConnection->getAdminService();
return $this->responseFactory->createResponse()
return $this->responseFactory->createResponse()
->withHeader('Content-Type', 'text/plain; charset=utf-8')
->withHeader('Cache-control', 'public')
->withHeader('Content-Description', 'File transfer')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

use ApacheSolrForTypo3\Solr\System\Records\AbstractRepository;
use Doctrine\DBAL\Exception as DBALException;
use PDO;
use Doctrine\DBAL\ParameterType;

/**
* Class IndexQueueIndexingPropertyRepository
Expand All @@ -40,11 +40,11 @@ public function removeByRootPidAndIndexQueueUid(int $rootPid, int $indexQueueUid
->where(
$queryBuilder->expr()->eq(
'root',
$queryBuilder->createNamedParameter($rootPid, PDO::PARAM_INT)
$queryBuilder->createNamedParameter($rootPid, ParameterType::INTEGER)
),
$queryBuilder->expr()->eq(
'item_id',
$queryBuilder->createNamedParameter($indexQueueUid, PDO::PARAM_INT)
$queryBuilder->createNamedParameter($indexQueueUid, ParameterType::INTEGER)
)
)->executeStatement();
}
Expand All @@ -71,7 +71,7 @@ public function findAllByIndexQueueUid(int $indexQueueUid): array
->where(
$queryBuilder->expr()->eq(
'item_id',
$queryBuilder->createNamedParameter($indexQueueUid, PDO::PARAM_INT)
$queryBuilder->createNamedParameter($indexQueueUid, ParameterType::INTEGER)
)
)->executeQuery()
->fetchAllAssociative();
Expand Down
17 changes: 8 additions & 9 deletions Classes/Domain/Index/Queue/QueueItemRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
use ApacheSolrForTypo3\Solr\System\Records\AbstractRepository;
use ApacheSolrForTypo3\Solr\System\Util\SiteUtility;
use Doctrine\DBAL\Exception as DBALException;
use PDO;
use Psr\EventDispatcher\EventDispatcherInterface;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Expression\CompositeExpression;
Expand Down Expand Up @@ -242,7 +241,7 @@ public function getPageItemChangedTimeByPageUid(int $pageUid): ?int
->getQueryBuilderForTable('tt_content');
$queryBuilder->getRestrictions()->removeAll();
$pageContentLastChangedTime = $queryBuilder
->add('select', $queryBuilder->expr()->max('tstamp', 'changed_time'))
->select($queryBuilder->expr()->max('tstamp', 'changed_time'))
->from('tt_content')
->where(
$queryBuilder->expr()->eq('pid', $pageUid)
Expand Down Expand Up @@ -270,7 +269,7 @@ public function getLocalizableItemChangedTime(string $itemType, int $itemUid): i
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($itemType);
$queryBuilder->getRestrictions()->removeAll();
$localizedChangedTime = $queryBuilder
->add('select', $queryBuilder->expr()->max($timeStampField, 'changed_time'))
->select($queryBuilder->expr()->max($timeStampField, 'changed_time'))
->from($itemType)
->orWhere(
$queryBuilder->expr()->eq('uid', $itemUid),
Expand Down Expand Up @@ -552,7 +551,7 @@ public function findItemsByItemTypeAndItemUid(string $itemType, int $itemUid): a
{
$queryBuilder = $this->getQueryBuilder();
$compositeExpression = $queryBuilder->expr()->and(
$queryBuilder->expr()->eq('item_type', $queryBuilder->getConnection()->quote($itemType, PDO::PARAM_STR)),
$queryBuilder->expr()->eq('item_type', $queryBuilder->getConnection()->quote($itemType)),
$queryBuilder->expr()->eq('item_uid', $itemUid)
);
return $this->getItemsByCompositeExpression($compositeExpression, $queryBuilder);
Expand Down Expand Up @@ -815,7 +814,7 @@ public function findPageIdsOfExistingMountPagesByMountIdentifier(string $mountPo
$queryBuilder = $this->getQueryBuilder();
$resultSet = $queryBuilder
->select('item_uid')
->add('select', $queryBuilder->expr()->count('*', 'queueItemCount'), true)
->select($queryBuilder->expr()->count('*', 'queueItemCount'), true)
->from($this->table)
->where(
$queryBuilder->expr()->eq('item_type', $queryBuilder->createNamedParameter('pages')),
Expand Down Expand Up @@ -849,10 +848,10 @@ public function findAllIndexQueueItemsByRootPidAndMountIdentifierAndMountedPids(
->select('*')
->from($this->table)
->where(
$queryBuilder->expr()->eq('root', $queryBuilder->createNamedParameter($rootPid, PDO::PARAM_INT)),
$queryBuilder->expr()->eq('root', $queryBuilder->createNamedParameter($rootPid, \Doctrine\DBAL\ParameterType::INTEGER)),
$queryBuilder->expr()->eq('item_type', $queryBuilder->createNamedParameter('pages')),
$queryBuilder->expr()->in('item_uid', $mountedPids),
$queryBuilder->expr()->eq('has_indexing_properties', $queryBuilder->createNamedParameter(1, PDO::PARAM_INT)),
$queryBuilder->expr()->eq('has_indexing_properties', $queryBuilder->createNamedParameter(1, \Doctrine\DBAL\ParameterType::INTEGER)),
$queryBuilder->expr()->eq('pages_mountidentifier', $queryBuilder->createNamedParameter($mountPointIdentifier))
)
->executeQuery()
Expand All @@ -868,11 +867,11 @@ public function updateHasIndexingPropertiesFlagByItemUid(int $itemUid, bool $has
return $queryBuilder
->update($this->table)
->where(
$queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($itemUid, PDO::PARAM_INT))
$queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($itemUid, \Doctrine\DBAL\ParameterType::INTEGER))
)
->set(
'has_indexing_properties',
$queryBuilder->createNamedParameter($hasIndexingPropertiesFlag, PDO::PARAM_INT),
$queryBuilder->createNamedParameter($hasIndexingPropertiesFlag, \Doctrine\DBAL\ParameterType::INTEGER),
false
)->executeStatement();
}
Expand Down
25 changes: 13 additions & 12 deletions Classes/Domain/Index/Queue/Statistic/QueueStatisticsRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

use ApacheSolrForTypo3\Solr\System\Records\AbstractRepository;
use Doctrine\DBAL\Exception as DBALException;
use PDO;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Persistence\Generic\Exception\UnsupportedMethodException;

Expand Down Expand Up @@ -47,19 +46,21 @@ public function findOneByRootPidAndOptionalIndexingConfigurationName(
): QueueStatistic {
$queryBuilder = $this->getQueryBuilder();
$queryBuilder
->add('select', vsprintf('(%s < %s) AS %s', [
$queryBuilder->quoteIdentifier($this->columnIndexed),
$queryBuilder->quoteIdentifier($this->columnChanged),
$queryBuilder->quoteIdentifier('pending'),
]), true)
->add('select', vsprintf('(%s) AS %s', [
$queryBuilder->expr()->notLike($this->columnErrors, $queryBuilder->createNamedParameter('')),
$queryBuilder->quoteIdentifier('failed'),
]), true)
->add('select', $queryBuilder->expr()->count('*', 'count'), true)
->select(
vsprintf('(%s < %s) AS %s', [
$queryBuilder->quoteIdentifier($this->columnIndexed),
$queryBuilder->quoteIdentifier($this->columnChanged),
$queryBuilder->quoteIdentifier('pending'),
]),
vsprintf('(%s) AS %s', [
$queryBuilder->expr()->notLike($this->columnErrors, $queryBuilder->createNamedParameter('')),
$queryBuilder->quoteIdentifier('failed'),
]),
$queryBuilder->expr()->count('*', 'count')
)
->from($this->table)
->where(
$queryBuilder->expr()->eq($this->columnRootpage, $queryBuilder->createNamedParameter($rootPid, PDO::PARAM_INT))
$queryBuilder->expr()->eq($this->columnRootpage, $queryBuilder->createNamedParameter($rootPid, \Doctrine\DBAL\ParameterType::INTEGER))
)->groupBy('pending', 'failed');

if (!empty($indexingConfigurationName)) {
Expand Down
5 changes: 2 additions & 3 deletions Classes/Domain/Index/Queue/UpdateHandler/GarbageHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
use ApacheSolrForTypo3\Solr\Domain\Index\Queue\GarbageRemover\StrategyFactory;
use ApacheSolrForTypo3\Solr\Domain\Site\Exception\UnexpectedTYPO3SiteInitializationException;
use Doctrine\DBAL\Exception as DBALException;
use PDO;
use Throwable;
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Context\Exception\AspectNotFoundException;
Expand Down Expand Up @@ -100,7 +99,7 @@ public function handlePageMovement(int $uid, ?int $previousParentId = null): voi
$subPageIds = $this->getSubPageIds($uid);
array_walk(
$subPageIds,
fn(int $subPageId) => $this->collectGarbage('pages', $subPageId)
fn (int $subPageId) => $this->collectGarbage('pages', $subPageId)
);
}
}
Expand Down Expand Up @@ -242,7 +241,7 @@ public function getRecordWithFieldRelevantForGarbageCollection(string $table, in
$row = $queryBuilder
->select(...GeneralUtility::trimExplode(',', $garbageCollectionRelevantFields, true))
->from($table)
->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, PDO::PARAM_INT)))
->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uid, \Doctrine\DBAL\ParameterType::INTEGER)))
->executeQuery()
->fetchAssociative();
} catch (Throwable) {
Expand Down
22 changes: 14 additions & 8 deletions Classes/Domain/Search/ApacheSolrDocument/Builder.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,11 @@
use ApacheSolrForTypo3\Solr\Typo3PageContentExtractor;
use ApacheSolrForTypo3\Solr\Util;
use Doctrine\DBAL\Exception as DBALException;
use TYPO3\CMS\Core\Routing\PageArguments;
use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
use TYPO3\CMS\Frontend\Page\PageInformation;

/**
* Builder class to build an ApacheSolrDocument
Expand All @@ -43,19 +46,22 @@ public function __construct(
* This method can be used to build a Document from a TYPO3 page.
*/
public function fromPage(
TypoScriptFrontendController $page,
PageInformation $pageInformation,
PageArguments $pageArguments,
SiteLanguage $siteLanguage,
TypoScriptFrontendController $tsfe,
string $url,
Rootline $pageAccessRootline,
string $mountPointParameter = '',
): Document {
$pageId = $page->id;
$pageRecord = $page->page;
$pageId = $pageInformation->getId();
$pageRecord = $pageInformation->getPageRecord();

$document = GeneralUtility::makeInstance(Document::class);
$site = $this->getSiteByPageId($pageId);

$accessGroups = $this->getDocumentIdGroups($pageAccessRootline);
$documentId = $this->getPageDocumentId($page, $accessGroups, $mountPointParameter);
$documentId = $this->getPageDocumentId($pageInformation, $pageArguments, $siteLanguage, $accessGroups, $mountPointParameter);

$document->setField('id', $documentId);
$document->setField('site', $site->getDomain());
Expand All @@ -71,7 +77,7 @@ public function fromPage(
$variantId = $this->variantIdBuilder->buildFromTypeAndUid('pages', $pageId, $pageRecord, $site, $document);
$document->setField('variantId', $variantId);

$document->setField('typeNum', (int)$page->getPageArguments()->getPageType());
$document->setField('typeNum', (int)$pageArguments->getPageType());
$document->setField('created', $pageRecord['crdate']);
$document->setField('changed', $pageRecord['SYS_LASTCHANGED']);

Expand All @@ -84,7 +90,7 @@ public function fromPage(

// content
// @extensionScannerIgnoreLine
$contentExtractor = $this->getExtractorForPageContent($page->content);
$contentExtractor = $this->getExtractorForPageContent($tsfe->content);
$document->setField('title', $contentExtractor->getPageTitle());
$document->setField('subTitle', $pageRecord['subtitle']);
$document->setField('navTitle', $pageRecord['nav_title']);
Expand Down Expand Up @@ -153,9 +159,9 @@ public function fromRecord(array $itemRecord, string $type, int $rootPageUid, st
/**
* @throws DBALException
*/
protected function getPageDocumentId(TypoScriptFrontendController $frontendController, string $accessGroups, string $mountPointParameter): string
protected function getPageDocumentId(PageInformation $pageInformation, PageArguments $pageArguments, SiteLanguage $siteLanguage, string $accessGroups, string $mountPointParameter): string
{
return Util::getPageDocumentId($frontendController->id, (int)$frontendController->getPageArguments()->getPageType(), $frontendController->getLanguage()->getLanguageId(), $accessGroups, $mountPointParameter);
return Util::getPageDocumentId($pageInformation->getId(), (int)$pageArguments->getPageType(), $siteLanguage->getLanguageId(), $accessGroups, $mountPointParameter);
}

/**
Expand Down
2 changes: 1 addition & 1 deletion Classes/Domain/Search/ApacheSolrDocument/Repository.php
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,6 @@ protected function initializeSearch(int $pageId, int $languageId = 0): void
*/
protected function getSearch(SolrConnection $solrConnection): Search
{
return GeneralUtility::makeInstance(Search::class, $solrConnection);
return GeneralUtility::makeInstance(Search::class, $solrConnection);
}
}
Loading