/** * @return XMLALevel Level (must not be null) */ public function getLevel(DOMElement $row) { if ($this->xmlaLevel != null) { return $this->xmlaLevel; } $levelUniqueName = XMLAUtil::stringElement($row, 'LEVEL_UNIQUE_NAME'); $levelsByUname = $this->getCube($row)->levelsByUname; $level = isset($levelsByUname[$levelUniqueName]) ? $levelsByUname[$levelUniqueName] : null; if ($level == null) { // Apparently, the code has requested a member that has // not been queried yet. We must force the initialization // of the dimension tree first. $dimensionUniqueName = XMLAUtil::stringElement($row, 'DIMENSION_UNIQUE_NAME'); $parsedUniqueName = XMLAUtil::parseUniqueName($dimensionUniqueName); $dimensionName = $parsedUniqueName[0]; //print $dimensionName; $dimension = $this->getCube($row)->getDimensions()->get($dimensionName); foreach ($dimension->getHierarchies() as $hierarchy) { $hierarchy->getLevels()->size(); } // Now we attempt to resolve again $level = $this->getCube($row)->levelsByUname[$levelUniqueName]; } return $level; }