/** * Build the group data query to retrieve the group data * * @param array Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fields * @return Tx_PtExtlist_Domain_QueryObject_Query */ protected function buildGroupDataQuery($fields) { $groupDataQuery = new Tx_PtExtlist_Domain_QueryObject_Query(); foreach ($fields as $selectField) { $groupDataQuery->addField(Tx_PtExtlist_Utility_DbUtils::getAliasedSelectPartByFieldConfig($selectField)); } if ($this->additionalTables != '') { $groupDataQuery->addFrom($this->additionalTables); } foreach ($this->displayFields as $displayField) { /* @var $displayField Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig */ $groupDataQuery->addSorting($displayField->getIdentifier(), Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_ASC); } if ($this->showRowCount) { // TODO only works with SQL! $groupDataQuery->addField(sprintf('count("%s") as rowCount', $this->filterField->getTableFieldCombined())); } $groupFields = array(); foreach ($this->getFieldsRequiredToBeSelected() as $field) { /* @var $field Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig */ $groupFields[] = $field->getIdentifier(); } $groupDataQuery->addGroupBy(implode(',', $groupFields)); return $groupDataQuery; }
/** * Creates the select part for given field config * * <table>.<field> * * Or: if a special mysql string is given * <special mysql string> * * @param Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fieldConfiguration * @return string */ public static function getSelectPartByFieldConfig(Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fieldConfiguration) { if ($fieldConfiguration->getSpecial()) { $selectPart = '(' . $fieldConfiguration->getSpecial() . ')'; } else { $selectPart = $fieldConfiguration->getTableFieldCombined(); } return $selectPart; }
/** * (non-PHPdoc) * @see Classes/Domain/Model/Filter/Tx_PtExtlist_Domain_Model_Filter_AbstractFilter::buildFilterCriteria() */ protected function buildFilterCriteria(Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fieldIdentifier) { $criteria = null; if ($this->isActive) { $columnName = $fieldIdentifier->getTableFieldCombined(); $filterValue = intval($this->filterValue); $criteria = Tx_PtExtlist_Domain_QueryObject_Criteria::greaterThanEquals($columnName, $filterValue); } return $criteria; }
/** * Build the group data query to retrieve the group data * * @param array Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fields * @return \Tx_PtExtlist_Domain_QueryObject_Query */ protected function buildGroupDataQuery($fields) { $groupDataQuery = new Tx_PtExtlist_Domain_QueryObject_Query(); foreach ($fields as $selectField) { $groupDataQuery->addField(Tx_PtExtlist_Utility_DbUtils::getAliasedSelectPartByFieldConfig($selectField)); } if ($this->additionalTables != '') { $groupDataQuery->addFrom($this->additionalTables); } $groupDataQuery->addSorting('elementCount', Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_DESC); if ($this->elementCountField !== NULL) { $groupDataQuery->addField(sprintf('%s as elementCount', $this->elementCountField->getTableFieldCombined())); } else { // TODO only works with SQL! $groupDataQuery->addField(sprintf('count("%s") as elementCount', $this->filterField->getTableFieldCombined())); } $groupDataQuery->addGroupBy($this->filterConfig->getFieldIdentifier()->getItemByIndex(0)->getIdentifier()); return $groupDataQuery; }
/** * Returns property name for given fieldConfiguration * * If __self__ is referenced, only field name is returned. * If another domain object is referenced, domain object name (table) is prepended * * @param Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fieldConfiguration * @return string */ protected function getPropertyNameByFieldConfig(Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fieldConfiguration) { if ($fieldConfiguration->getTable() != '__self__') { // __self__ references current domain object $property = $fieldConfiguration->getTableFieldCombined(); } else { $property = $fieldConfiguration->getField(); } return $property; }
/** * (non-PHPdoc) * @see Classes/Domain/Model/Filter/Tx_PtExtlist_Domain_Model_Filter_AbstractOptionsFilter::buildFilterCriteria() */ protected function buildFilterCriteria(Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fieldIdentifier) { $criteria = null; $columnName = $fieldIdentifier->getTableFieldCombined(); $filterValues = array_filter($this->filterValues); if (count($filterValues)) { $criteria = Tx_PtExtlist_Domain_QueryObject_Criteria::like($columnName, current($filterValues) . '%'); } return $criteria; }
public function testGetTableFieldCombined() { $this->assertEquals($this->fieldConfig->getTableFieldCombined(), $this->fieldSettings['table'] . '.' . $this->fieldSettings['field']); }