コード例 #1
0
ファイル: TagCloud.php プロジェクト: BenjaminBeck/pt_extlist
 /**
  * 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;
 }
コード例 #2
0
 /**
  * Builds select part from all parts of plugin
  *
  * @return string SELECT part of query without 'SELECT'
  */
 public function buildSelectPart()
 {
     $selectParts = array();
     foreach ($this->fieldConfigurationCollection as $fieldConfiguration) {
         /* @var $fieldConfiguration Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig */
         if ($fieldConfiguration->getExpandGroupRows() && $this->baseGroupByClause) {
             $selectParts[] = 'group_concat(' . Tx_PtExtlist_Utility_DbUtils::getSelectPartByFieldConfig($fieldConfiguration) . ' SEPARATOR "' . $fieldConfiguration->getExpandGroupRowsSeparator() . '") AS ' . $fieldConfiguration->getIdentifier();
         } else {
             $selectParts[] = Tx_PtExtlist_Utility_DbUtils::getAliasedSelectPartByFieldConfig($fieldConfiguration);
         }
     }
     return implode(', ', $selectParts);
 }
コード例 #3
0
ファイル: DbUtilsTest.php プロジェクト: punktde/pt_extlist
 public function testGetAliasedSelectPartByFieldConfigSpecialString()
 {
     $fieldConfig = new Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig($this->configurationBuilderMock, 'test', array('field' => 'field', 'table' => 'table', 'special' => 'special'));
     $this->assertEquals('(special) AS test', Tx_PtExtlist_Utility_DbUtils::getAliasedSelectPartByFieldConfig($fieldConfig));
 }
コード例 #4
0
ファイル: GroupData.php プロジェクト: BenjaminBeck/pt_extlist
 /**
  * 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;
 }
コード例 #5
0
 /** @test */
 public function buildSelectPartWithTableAndFieldReturnsExpectedString()
 {
     $pagerCollectionMock = $this->getMock('Tx_PtExtlist_Domain_Model_Pager_PagerCollection', array('setItemCount'), array(), '', false, false);
     $dataBackend = new Tx_PtExtlist_Domain_DataBackend_MySqlDataBackend_MySqlDataBackend($this->configurationBuilder);
     $dataBackend->_injectPagerCollection($pagerCollectionMock);
     $dataBackend->_injectQueryInterpreter(new Tx_PtExtlist_Domain_DataBackend_MySqlDataBackend_MySqlInterpreter_MySqlInterpreter());
     $fieldConfigurationCollection = new Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfigCollection();
     $fieldConfigurationCollection->addItem($this->getFieldConfigMockForTableAndFieldAndIdentifier('table1', 'field1', 'test1'));
     $fieldConfigurationCollection->addItem($this->getFieldConfigMockForTableAndFieldAndIdentifier('table1', 'field2', 'test2'));
     $dataBackend->_injectFieldConfigurationCollection($fieldConfigurationCollection);
     $selectPartForFieldConfigurationCollection = $dataBackend->buildSelectPart();
     $expectedSelectPart = Tx_PtExtlist_Utility_DbUtils::getAliasedSelectPartByFieldConfig($fieldConfigurationCollection[0]) . ', ' . Tx_PtExtlist_Utility_DbUtils::getAliasedSelectPartByFieldConfig($fieldConfigurationCollection[1]);
     $this->assertTrue($selectPartForFieldConfigurationCollection == $expectedSelectPart, 'Select part for field configuration collection should be "' . $expectedSelectPart . '" but was ' . $selectPartForFieldConfigurationCollection);
 }