/** * @test */ public function getAliasedSelectPartByFieldConfigCollection() { $fieldConfig1 = new Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig($this->configurationBuilderMock, 'test1', array('field' => 'field', 'table' => 'table')); $fieldConfig2 = new Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig($this->configurationBuilderMock, 'test2', array('field' => 'field', 'table' => 'table', 'special' => 'special')); $fieldConfigCollection = new Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfigCollection(); $fieldConfigCollection->addFieldConfig($fieldConfig1); $fieldConfigCollection->addFieldConfig($fieldConfig2); $return = Tx_PtExtlist_Utility_DbUtils::getSelectPartByFieldConfigCollection($fieldConfigCollection); $this->assertEquals('table.field, (special)', $return); }
/** * translate fullText criteria * * @param Tx_PtExtlist_Domain_QueryObject_Criteria $criteria * @return string */ public static function translateCriteria(Tx_PtExtlist_Domain_QueryObject_Criteria $criteria) { $connection = $GLOBALS['TYPO3_DB']; /** @var TYPO3\CMS\Core\Database\DatabaseConnection $connection */ $searchString = $criteria->getSearchString(); if ($criteria->getSearchParameter('booleanMode')) { $booleanMode = $criteria->getSearchParameter('booleanMode') ? ' IN BOOLEAN MODE' : ''; if ($criteria->getSearchParameter('booleanModeWrapWithStars')) { if (substr($searchString, 0, 1) != '*') { $searchString = '*' . $searchString; } if (substr($searchString, -1, 1) != '*') { $searchString .= '*'; } } } $searchString = $connection->fullQuoteStr($searchString, ''); return sprintf('MATCH (%s) AGAINST (%s%s)', Tx_PtExtlist_Utility_DbUtils::getSelectPartByFieldConfigCollection($criteria->getFields()), $searchString, $booleanMode); }
/** * @param Tx_PtExtlist_Domain_Model_Filter_FilterInterface $filter * @param string $filterField * @param string $notActiveQuery * * @return string */ public function render(Tx_PtExtlist_Domain_Model_Filter_FilterInterface $filter, $filterField = '', $notActiveQuery = '1=1') { if (!$filter->isActive()) { return $notActiveQuery; } if ($filter instanceof Tx_PtExtlist_Domain_Model_Filter_DateRangeFilter) { $calculatedTimestampBoundaries = $filter->getCalculatedTimestampBoundaries(); if (is_array($filterField)) { return sprintf('%s >= %s AND %s <= %s', $filterField[0], $calculatedTimestampBoundaries['filterValueFromTimestamp'], $filterField[1], $calculatedTimestampBoundaries['filterValueToTimestamp']); } else { return sprintf('%s >= %s AND %1$s <= %s', $filterField, $calculatedTimestampBoundaries['filterValueFromTimestamp'], $calculatedTimestampBoundaries['filterValueToTimestamp']); } } $filterValue = $filter->getValue(); $filterField = $filterField ? $filterField : Tx_PtExtlist_Utility_DbUtils::getSelectPartByFieldConfigCollection($filter->getFilterConfig()->getFieldIdentifier()); if (is_array($filterValue)) { return sprintf('%s in (%s)', $filterField, implode(', ', $filterValue)); } else { return sprintf('%s = %s', $filterField, $filterValue); } }