Formulas/Resources/Formulas/Aspects/ExplicitDimension.php
public function getValue( $variableSet, $evaluationResult, $log )
	{
		// This is an error
		if ( ! isset( $variableSet->context ) ) return array();

		// Get context for this rule's source
		$sourceContext = $variableSet->getComponentForPath( $this->source, $variableSet->explicitDimensionsComponentPath, 'explicitMember', $evaluationResult, $this->aspectDimension, $log, $contextRef );
		$sourceContext = Dimension::contextToIndex( $sourceContext, true, $variableSet, $this->aspectDimension );

		// Get original context
		$context = $variableSet->context;

		if ( ! $variableSet->xbrlInstance->getNamespaceForPrefix( $this->dimension['originalPrefix'] ) )
		{
			$this->dimension['originalPrefix'] = $variableSet->xbrlInstance->getPrefixForNamespace( $this->dimension['namespace'] );
		}
		$dimensionQName = "{$this->dimension['originalPrefix']}:{$this->dimension['name']}";

		if ( $this->omit )
		{
			// Omit always applies to the default context
			unset( $context[ $dimensionQName ] );
		}
		else if ( $this->member )
		{
			// If a member is defined then the dimension/member is being added or updated
			if ( isset( $this->member['qname'] ) )
			{
				// Make sure the prefix is compatible with the instance document
				$qname = qname( $this->member['qname'], $variableSet->nsMgr->getNamespaces() );
				if ( ! $variableSet->xbrlInstance->getNamespaceForPrefix( $qname->prefix ) )
				{
					$qname->prefix = $variableSet->xbrlInstance->getPrefixForNamespace( $qname->namespaceURI );
				}
				$name = "{$qname->prefix}:{$qname->localName}";
				$context[ $dimensionQName ] = array( $name => $name );
			}
			else if ( $this->member['qnameExpression'] )
			{
				$vars = $evaluationResult['vars'];
				$result = $this->evaluateXPath( $variableSet, "{$this->member['qnameExpression']} cast as xs:string", $vars );

				$qname = qname( $result->getValue(), $variableSet->nsMgr->getNamespaces() );
				if ( ! $variableSet->xbrlInstance->getNamespaceForPrefix( $qname->prefix ) )
				{
					$qname->prefix = $variableSet->xbrlInstance->getPrefixForNamespace( $qname->namespaceURI );
				}
				$name = "{$qname->prefix}:{$qname->localName}";

				$context[ $dimensionQName ] = array( $name => $name );
			}
		}
		else if ( isset( $sourceContext[ $dimensionQName ] ) )
		{
			// Add any members from the source
			$context[ $dimensionQName ] = $sourceContext[ $dimensionQName ];
		}
		else
		{
			$log->formula_validation( "Explicit dimension aspect rule", "A dimension is being added but there are no members",
				array(
					'dimension' => $dimensionQName,
					'error' => 'xbrlfe:missingSAVForExplicitDimensionRule'
				)
			);
		}

		return $context;
	}
public function getValue( $variableSet, $evaluationResult, $log )
	{
		// This is an error
		if ( ! isset( $variableSet->context ) ) return array();

		// Get context for this rule's source
		$sourceContext = $variableSet->getComponentForPath( $this->source, $variableSet->explicitDimensionsComponentPath, 'explicitMember', $evaluationResult, $this->aspectDimension, $log, $contextRef );
		$sourceContext = Dimension::contextToIndex( $sourceContext, true, $variableSet, $this->aspectDimension );

		// Get original context
		$context = $variableSet->context;

		if ( ! $variableSet->xbrlInstance->getNamespaceForPrefix( $this->dimension['originalPrefix'] ) )
		{
			$this->dimension['originalPrefix'] = $variableSet->xbrlInstance->getPrefixForNamespace( $this->dimension['namespace'] );
		}
		$dimensionQName = "{$this->dimension['originalPrefix']}:{$this->dimension['name']}";

		if ( $this->omit )
		{
			// Omit always applies to the default context
			unset( $context[ $dimensionQName ] );
		}
		else if ( $this->member )
		{
			// If a member is defined then the dimension/member is being added or updated
			if ( isset( $this->member['qname'] ) )
			{
				// Make sure the prefix is compatible with the instance document
				$qname = qname( $this->member['qname'], $variableSet->nsMgr->getNamespaces() );
				if ( ! $variableSet->xbrlInstance->getNamespaceForPrefix( $qname->prefix ) )
				{
					$qname->prefix = $variableSet->xbrlInstance->getPrefixForNamespace( $qname->namespaceURI );
				}
				$name = "{$qname->prefix}:{$qname->localName}";
				$context[ $dimensionQName ] = array( $name => $name );
			}
			else if ( $this->member['qnameExpression'] )
			{
				$vars = $evaluationResult['vars'];
				$result = $this->evaluateXPath( $variableSet, "{$this->member['qnameExpression']} cast as xs:string", $vars );

				$qname = qname( $result->getValue(), $variableSet->nsMgr->getNamespaces() );
				if ( ! $variableSet->xbrlInstance->getNamespaceForPrefix( $qname->prefix ) )
				{
					$qname->prefix = $variableSet->xbrlInstance->getPrefixForNamespace( $qname->namespaceURI );
				}
				$name = "{$qname->prefix}:{$qname->localName}";

				$context[ $dimensionQName ] = array( $name => $name );
			}
		}
		else if ( isset( $sourceContext[ $dimensionQName ] ) )
		{
			// Add any members from the source
			$context[ $dimensionQName ] = $sourceContext[ $dimensionQName ];
		}
		else
		{
			$log->formula_validation( "Explicit dimension aspect rule", "A dimension is being added but there are no members",
				array(
					'dimension' => $dimensionQName,
					'error' => 'xbrlfe:missingSAVForExplicitDimensionRule'
				)
			);
		}

		return $context;
	}
public function getValue ( $ variableSet , $ evaluationResult , $ log ) { // This is an error
 if ( ! isset ( $ variableSet -> context ) ) return array ( ) ; // Get context for this rule's source
 $ sourceContext = $ variableSet -> getComponentForPath ( $ this -> source , $ variableSet -> explicitDimensionsComponentPath , 'explicitMember' , $ evaluationResult , $ this -> aspectDimension , $ log , $ contextRef ) ; $ sourceContext = Dimension :: contextToIndex ( $ sourceContext , true , $ variableSet , $ this -> aspectDimension ) ; // Get original context
 $ context = $ variableSet -> context ; if ( ! $ variableSet -> xbrlInstance -> getNamespaceForPrefix ( $ this -> dimension [ 'originalPrefix' ] ) ) { $ this -> dimension [ 'originalPrefix' ] = $ variableSet -> xbrlInstance -> getPrefixForNamespace ( $ this -> dimension [ 'namespace' ] ) ; } $ dimensionQName = "{$this->dimension['originalPrefix']}:{$this->dimension['name']}" ; if ( $ this -> omit ) { // Omit always applies to the default context
 unset ( $ context [ $ dimensionQName ] ) ; } else if ( $ this -> member ) { // If a member is defined then the dimension/member is being added or updated
 if ( isset ( $ this -> member [ 'qname' ] ) ) { // Make sure the prefix is compatible with the instance document
 $ qname = qname ( $ this -> member [ 'qname' ] , $ variableSet -> nsMgr -> getNamespaces ( ) ) ; if ( ! $ variableSet -> xbrlInstance -> getNamespaceForPrefix ( $ qname -> prefix ) ) { $ qname -> prefix = $ variableSet -> xbrlInstance -> getPrefixForNamespace ( $ qname -> namespaceURI ) ; } $ name = "{$qname->prefix}:{$qname->localName}" ; $ context [ $ dimensionQName ] = array ( $ name => $ name ) ; } else if ( $ this -> member [ 'qnameExpression' ] ) { $ vars = $ evaluationResult [ 'vars' ] ; $ result = $ this -> evaluateXPath ( $ variableSet , "{$this->member['qnameExpression']} cast as xs:string" , $ vars ) ; $ qname = qname ( $ result -> getValue ( ) , $ variableSet -> nsMgr -> getNamespaces ( ) ) ; if ( ! $ variableSet -> xbrlInstance -> getNamespaceForPrefix ( $ qname -> prefix ) ) { $ qname -> prefix = $ variableSet -> xbrlInstance -> getPrefixForNamespace ( $ qname -> namespaceURI ) ; } $ name = "{$qname->prefix}:{$qname->localName}" ; $ context [ $ dimensionQName ] = array ( $ name => $ name ) ; } } else if ( isset ( $ sourceContext [ $ dimensionQName ] ) ) { // Add any members from the source
 $ context [ $ dimensionQName ] = $ sourceContext [ $ dimensionQName ] ; } else { $ log -> formula_validation ( "Explicit dimension aspect rule" , "A dimension is being added but there are no members" , array ( 'dimension' => $ dimensionQName , 'error' => 'xbrlfe:missingSAVForExplicitDimensionRule' ) ) ; } return $ context ; }
Get the explicity dimension context information for this rule
@param Formula $variableSet
@param array $evaluationResult
@param \XBRL_Log $log
@return DOMXPathNavigator
Get the explicity dimension context information for this rule