public function countCubeRecords(DataControllerCallContext $callcontext, CubeCountRequest $request) { $cubeName = $request->getCubeName(); LogHelper::log_notice(t('Counting SQL-based cube records: @cubeName', array('@cubeName' => $cubeName))); $environment_metamodel = data_controller_get_environment_metamodel(); $metamodel = data_controller_get_metamodel(); $this->getExtension('adjustRequest')->adjustCubeCountRequest($this, $request); $cube = $metamodel->getCube($cubeName); $factsDataset = $metamodel->getDataset($cube->factsDatasetName); $datasource = $environment_metamodel->getDataSource($factsDataset->datasourceName); $statement = $this->prepareCubeQueryStatement($callcontext, $request); list($isSubqueryRequired, $assembledSections) = $statement->prepareSections(NULL); $statement = new Statement(); $statement->tables[] = new SubquerySection(Statement::assemble($isSubqueryRequired, NULL, $assembledSections)); return $this->countRecords($callcontext, $datasource, array($statement)); }