protected function generateDatasetMeasures(__CubeUIMetaDataGenerator_CallContext $callcontext, DatasetUIMetaData $datasetUIMetaData, CubeMetaData $cube, $referencePath) { if (isset($callcontext->usedMeasureNames)) { // preparing list of dataset-wide measures (those are measures which were not used by any columns) foreach ($callcontext->usedMeasureNames as $measureName => $used) { if ($used) { continue; } // we do not need to show several 'Record Count' measures if (isset($referencePath) && ($measureName === StarSchemaNamingConvention::$MEASURE_NAME__RECORD_COUNT)) { continue; } // checking if the measure could be linked to facts $possibleFactColumnNames = StarSchemaNamingConvention::preparePossibleOwners4Measure($measureName); if (isset($possibleFactColumnNames)) { foreach ($possibleFactColumnNames as $possibleFactColumnName) { $possibleFactUIMetaDataName = self::prepareColumnUIMetaDataName($referencePath, $cube->factsDatasetName, $possibleFactColumnName); $attributeUIMetaData = $datasetUIMetaData->findAttribute($possibleFactUIMetaDataName); if (isset($attributeUIMetaData)) { $this->prepareAttributeCustomMeasure($attributeUIMetaData, $referencePath, $cube, $measureName); continue 2; } } } // adding dataset custom measure $measure = $cube->measures[$measureName]; $measureUIMetaData = new CubeMeasureUIMetaData(); $measureUIMetaData->name = self::prepareMeasureUIMetaDataName($referencePath, $cube, $measureName); $measureUIMetaData->publicName = $measure->publicName; $measureUIMetaData->description = $measure->description; $measureUIMetaData->type = clone $measure->type; $datasetUIMetaData->registerMeasure($measureUIMetaData); } } }