Example #1
0
 /**
  * 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);
 }
Example #2
0
 /**
  * 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());
 }