/** * Set columns (for the queries) * * @param array $flexFormSettings The Settings from the FlexForm * @return void */ public function setColumns($flexFormSettings) { switch ($this->table->getTableType()) { case 'list': $selectedColumnsSettings = 'listColumns'; break; case 'detail': $selectedColumnsSettings = 'detailColumns'; break; case 'edit': $selectedColumnsSettings = 'editColumns'; break; case 'new': $selectedColumnsSettings = 'newColumns'; break; case 'search': $selectedColumnsSettings = 'searchColumns'; break; case 'relation': $selectedColumnsSettings = 'relationColumns'; break; default: $selectedColumnsSettings = NULL; break; } $columns = array(); // Get selected columns and all columns if ($flexFormSettings[$selectedColumnsSettings]) { $selectedColumns = explode(',', $flexFormSettings[$selectedColumnsSettings]); foreach ($selectedColumns as $column) { $columns[$column]['cssName'] = str_replace('.', '_', $column); $columns[$column]['columnName'] = substr($column, strpos($column, '.') + 1, strlen($column) - strpos($column, '.') - 1); $columns[$column]['tableName'] = substr($column, 0, strpos($column, '.')); $columns[$column]['name'] = $column; } // Get primary key columns $primaryKeyColumns = $this->recordManagementRepository->getPrimaryKeyColumns($this->table->getTableNames()); foreach ($primaryKeyColumns as $primaryKeyColumn) { $columns[$primaryKeyColumn['name']]['name'] = $primaryKeyColumn['name']; } // Get additional columns (for links, labels, ...) $columnTypes = $this->table->getColumnTypes(); foreach ($columnTypes as $column => $name) { if (isset($columnTypes[$column]['filterColumn'])) { $columns[$columnTypes[$column]['filterColumn']]['name'] = $columnTypes[$column]['filterColumn']; } if ($this->table->getTableType() == 'detail' || $this->table->getTableType() == 'edit') { if (isset($columnTypes[$column]['labelFrom'])) { $columns[$columnTypes[$column]['labelFrom']]['name'] = $columnTypes[$column]['labelFrom']; } } if ($this->table->getTableType() == 'relation') { if ($column == $this->table->getForeignKeyColumn()) { $columns[$column]['name'] = $this->table->getForeignKeyColumn(); } if ($column == $this->table->getForeignKeyRelationColumn()) { $columns[$column]['name'] = $this->table->getForeignKeyRelationColumn(); } } } // Get additional columns (parameters, additional select, ...) foreach ($columns as $column => $name) { if (isset($columnTypes[$column]['parameters'])) { $parameters = explode(',', $columnTypes[$column]['parameters']); foreach ($parameters as $parameter) { $parameter = trim($parameter); $parameterValue = trim(substr($parameter, strpos($parameter, '=') + 1, strlen($parameter) - strpos($parameter, '=') - 1)); if ($parameterValue[0] != '"') { $columns[$parameterValue]['name'] = $parameterValue; } } } if ($columnTypes[$column]['type'] == 'additional') { unset($columns[$column]); if (isset($columnTypes[$column]['select'])) { $columns[$column]['cssName'] = str_replace('.', '_', $column); $columns[$column]['name'] = $column; $columns[$column]['query'] = $columnTypes[$column]['select']; } } } } else { $columns = $this->recordManagementRepository->getColumnsFromTables($this->table->getTableNames()); } $this->table->setColumns($columns); }