/** * 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; }
/** * 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; }
/** * @test */ public function buildDateFieldIdentifierArrayWithFieldIdentifierCollection() { $filterSettings = $this->defaultFilterSettings; $filterSettings['fieldIdentifier'] = 'field1'; $timeSpanFilterMock = $this->buildAccessibleAbstractTimeSpanFilter($filterSettings); /** @var $timeSpanFilterMock Tx_PtExtlist_Domain_Model_Filter_AbstractTimeSpanFilter */ $fieldIdentifierArray = $timeSpanFilterMock->getDateFieldsConfigs(); $testField = new Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig($this->configurationBuilderMock, 'field1', array('field' => 'fieldName1', 'table' => 'tableName1')); $this->assertTrue(is_a($fieldIdentifierArray[0]['start'], 'Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig')); $this->assertTrue(is_a($fieldIdentifierArray[0]['end'], 'Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig')); $this->assertEquals($testField->getIdentifier(), $fieldIdentifierArray[0]['start']->getIdentifier()); $this->assertEquals($testField->getIdentifier(), $fieldIdentifierArray[0]['end']->getIdentifier()); }
/** * 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; }
public function testGetAccessGroups() { $accessArray = $this->fieldConfig->getAccessGroups(); $this->assertTrue(in_array('1', $accessArray)); $this->assertTrue(in_array('2', $accessArray)); $this->assertTrue(in_array('3', $accessArray)); $this->assertTrue(in_array('4', $accessArray)); }
/** * 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 an array of this sorting state that can be persisted to session. * * Array has format array('fieldName' => fieldName, 'direction' => direction) * * @return array */ public function getSessionPersistableArray() { return array('fieldName' => $this->field->getIdentifier(), 'direction' => $this->direction); }
/** * Adds a given field and direction to sorting state * * @param Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $field * @param integer $direction */ public function addSortingByFieldAndDirection(Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $field, $direction) { $sortingState = new Tx_PtExtlist_Domain_Model_Sorting_SortingState($field, $direction); $this->addItem($sortingState, $field->getIdentifier()); }
/** * Expand the field by delimiter * * @param array $row * @param Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $mapping * @return array */ protected function expandGroupedData(&$row, Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $mapping) { return explode($mapping->getExpandGroupRowsSeparator(), $row[$mapping->getIdentifier()]); }