Skip to content
Snippets Groups Projects
Commit 2ec84165 authored by jaapjansma's avatar jaapjansma
Browse files

Fixed bug with aggregate field

parent 3f8b1f1d
No related branches found
No related tags found
No related merge requests found
......@@ -98,9 +98,6 @@ class CRM_Dataprocessor_BAO_DataProcessor extends CRM_Dataprocessor_DAO_DataProc
try {
$outputHandler->initialize($field['name'], $field['title'], $field['configuration']);
$dataProcessorClass->addOutputFieldHandlers($outputHandler);
if ($outputHandler instanceof OutputHandlerAggregate && $outputHandler->isAggregateField()) {
$dataProcessorClass->getDataFlow()->addAggregateOutputHandler($outputHandler);
}
} catch (\Exception $e) {
CRM_Core_Session::setStatus($e->getMessage(), E::ts("Invalid field"), 'error');
}
......
......@@ -41,6 +41,13 @@ class DateFieldOutputHandler extends AbstractSimpleFieldOutputHandler implements
$this->function = $function;
$this->inputFieldSpec->setMySqlFunction($availableFunctions[$function]['sql']);
}
if ($this->isAggregateField) {
$dataFlow = $this->dataSource->ensureField($this->getAggregateFieldSpec());
if ($dataFlow) {
$dataFlow->addAggregateOutputHandler($this);
}
}
}
/**
......
......@@ -30,6 +30,13 @@ class RawFieldOutputHandler extends AbstractSimpleFieldOutputHandler implements
public function initialize($alias, $title, $configuration) {
parent::initialize($alias, $title, $configuration);
$this->isAggregateField = isset($configuration['is_aggregate']) ? $configuration['is_aggregate'] : false;
if ($this->isAggregateField) {
$dataFlow = $this->dataSource->ensureField($this->getAggregateFieldSpec());
if ($dataFlow) {
$dataFlow->addAggregateOutputHandler($this);
}
}
}
/**
......
......@@ -201,7 +201,7 @@ abstract class AbstractCivicrmEntitySource extends AbstractSource {
}
/**
* Ensure that filter field is accesible in the query
* Ensure that filter or aggregate field is accesible in the query
*
* @param FieldSpecification $field
* @return \Civi\DataProcessor\DataFlow\AbstractDataFlow|null
......@@ -322,7 +322,6 @@ abstract class AbstractCivicrmEntitySource extends AbstractSource {
* Ensures a field is in the data source
*
* @param \Civi\DataProcessor\DataSpecification\FieldSpecification $fieldSpecification
* @return SourceInterface
* @throws \Exception
*/
public function ensureFieldInSource(FieldSpecification $fieldSpecification) {
......@@ -335,17 +334,13 @@ abstract class AbstractCivicrmEntitySource extends AbstractSource {
->getFieldSpecificationByName($fieldSpecification->name);
}
if ($originalFieldSpecification && $originalFieldSpecification instanceof CustomFieldSpecification) {
$customGroupDataFlow = $this->ensureCustomGroup($originalFieldSpecification->customGroupTableName, $originalFieldSpecification->customGroupName);
if (!$customGroupDataFlow->getDataSpecification()
->doesFieldExist($fieldSpecification->alias)) {
$customGroupDataFlow->getDataSpecification()
->addFieldSpecification($fieldSpecification->alias, $fieldSpecification);
$dataFlow = $this->ensureCustomGroup($originalFieldSpecification->customGroupTableName, $originalFieldSpecification->customGroupName);
if (!$dataFlow->getDataSpecification()->doesFieldExist($fieldSpecification->alias)) {
$dataFlow->getDataSpecification()->addFieldSpecification($fieldSpecification->alias, $fieldSpecification);
}
}
elseif ($originalFieldSpecification) {
$entityDataFlow = $this->ensureEntity();
$entityDataFlow->getDataSpecification()
->addFieldSpecification($fieldSpecification->alias, $fieldSpecification);
} elseif ($originalFieldSpecification) {
$dataFlow = $this->ensureEntity();
$dataFlow->getDataSpecification()->addFieldSpecification($fieldSpecification->alias, $fieldSpecification);
}
} catch (FieldExistsException $e) {
// Do nothing.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment