/** * Return a aggregated column by method * * @param Tx_PtExtlist_Domain_Configuration_Data_Aggregates_AggregateConfig $aggregateConfig * @throws Exception * @return number */ public function getAggregateByConfig(Tx_PtExtlist_Domain_Configuration_Data_Aggregates_AggregateConfig $aggregateConfig) { $fieldIdentifier = $aggregateConfig->getFieldIdentifier()->getIdentifier(); if (!is_array($this->fieldData[$fieldIdentifier])) { $this->buildFieldData($fieldIdentifier); } $methodName = 'getField' . ucfirst($aggregateConfig->getMethod()); if (!method_exists($this, $methodName)) { throw new Exception('The array aggregate Method "' . $aggregateConfig->getMethod() . '" is not implemented 1282905192'); } return $this->{$methodName}($fieldIdentifier); }
/** * Build the SQL Query for an aggregate * * @param Tx_PtExtlist_Domain_Configuration_Data_Aggregates_AggregateConfig $aggregateConfig * @return string */ protected function buildAggregateFieldSQLByConfig(Tx_PtExtlist_Domain_Configuration_Data_Aggregates_AggregateConfig $aggregateConfig) { $supportedMethods = array('sum', 'avg', 'min', 'max', 'count'); if ($aggregateConfig->getSpecial()) { $aggregateFieldSQL = $aggregateConfig->getSpecial(); } else { Tx_PtExtbase_Assertions_Assert::isInArray($aggregateConfig->getMethod(), $supportedMethods, array('info' => 'The given aggregate method "' . $aggregateConfig->getMethod() . '" is not supported by this DataBackend')); $aggregateFieldSQL = strtoupper($aggregateConfig->getMethod()) . '(' . $aggregateConfig->getFieldIdentifier() . ')'; } $aggregateFieldSQL .= ' AS ' . $aggregateConfig->getIdentifier(); return $aggregateFieldSQL; }
public function testScopeIsForcedToQueryIfSpecialIsGiven() { $aggregateSettings = array('fieldIdentifier' => 'field1', 'method' => 'avg', 'special' => 'sql', 'scope' => 'page'); $aggregateConfig = new Tx_PtExtlist_Domain_Configuration_Data_Aggregates_AggregateConfig('agg2', $aggregateSettings, $this->configurationBuilderMock); $this->assertEquals('query', $aggregateConfig->getScope()); }