public static function prepareTableSection(AbstractSQLDataSourceQueryHandler $datasourceHandler, DataControllerCallContext $callcontext, array &$requestedColumnNames = NULL) { $metamodel = data_controller_get_metamodel(); $tableQuarters = new DatasetSection($metamodel->getDataset(DateDimensionDatasetNames::QUARTERS), self::$TABLE_ALIAS_SUFFIX__QUARTERS); self::selectColumn($tableQuarters, $requestedColumnNames, FALSE, 'quarter_def_id', FALSE); self::selectColumn($tableQuarters, $requestedColumnNames, FALSE, 'year_id', FALSE); // calculated field: first day of quarter $expressionFirstDayOfQuarter = $datasourceHandler->concatenateValues(array('(' . ColumnStatementCompositeEntityParser::assembleColumnName(self::$TABLE_ALIAS_SUFFIX__QUARTER_DEF . '.series') . ' - 1) * 3 + 1', "'/1/'", ColumnStatementCompositeEntityParser::assembleColumnName(DateDimensionYearDatasetAssembler::$TABLE_ALIAS_SUFFIX__YEARS . '.entry_year'))); $expressionFirstDayOfQuarter = $datasourceHandler->formatDateValue($expressionFirstDayOfQuarter, 'm/d/Y'); $columnFirstDayOfQuarter = self::selectColumn($tableQuarters, $requestedColumnNames, FALSE, $expressionFirstDayOfQuarter, TRUE, 'quarter_first_date'); if (isset($columnFirstDayOfQuarter)) { // registering required column for this functionality to work. This will indirectly force joining with required tables self::registerDependentColumnName($requestedColumnNames, 'quarter_series'); self::registerDependentColumnName($requestedColumnNames, 'entry_year'); } $columnQuarterId = self::selectColumn($tableQuarters, $requestedColumnNames, isset($tableQuarters->columns), 'quarter_id', FALSE); if (isset($columnQuarterId)) { $columnQuarterId->key = TRUE; } return $tableQuarters; }