コード例 #1
0
 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;
 }