XBRL-Instance.php
private function validateDivide( $divide, $unitId, $types )
	{
		$numeratorValidation = true;
		$denominatorValidation = true;

		// The divide MUST and a numerator and a denominator
		if ( isset( $divide['numerator'] ) )
		{
			if ( empty( $divide['numerator'] ) )
			{
				$this->log()->instance_validation( "4.8.4", "The 'unitNumerator' MUST NOT be empty", array( 'unit' => $unitId ) );
				$numeratorValidation = false;
			}
			else
			{
				foreach ( $divide['numerator'] as $measure )
				{
					$numeratorValidation &= $this->validateMeasure( $measure, "$unitId (numerator)", $types );
				}
			}
		}
		else
		{
			$this->log()->instance_validation( "4.8.3", "Both a 'unitNumerator' and a 'unitDenominator' MUST be provided.  The numerator is missing.", array( 'unit' => $unitId ) );
			$numeratorValidation = false;
		}

		// The divide MUST and a numerator and a denominator
		if ( isset( $divide['denominator'] ) )
		{
			if ( empty( $divide['denominator'] ) )
			{
				$this->log()->instance_validation( "4.8.4", "The 'unitDenominator' MUST NOT be empty", array( 'unit' => $unitId ) );
				$denominatorValidation = false;
			}
			else
			{
				foreach ( $divide['denominator'] as $measure )
				{
					$denominatorValidation &= $this->validateMeasure( $measure, "$unitId (denominator)", $types );
				}
			}
		}
		else
		{
			$this->log()->instance_validation( "4.8.3", "Both a 'unitNumerator' and a 'unitDenominator' MUST be provided. The denominator is missing.", array( 'unit' => $unitId ) );
			$denominatorValidation = false;
		}

		if ( ! $numeratorValidation || ! $denominatorValidation ) return false;

		// Check the denominator measures do not appear in the numerator measures
		// First create a list of all the numerator qnames
		$qNames = array();
		foreach ( $divide['numerator'] as $measure )
		{
			$qNames[] = qname( $measure, $this->instance_namespaces )->clarkNotation();
		}

		foreach ( $divide['denominator'] as $measure )
		{
			$qName = qname( $measure, $this->instance_namespaces + array( STANDARD_PREFIX_XBRLI => XBRL_Constants::$standardPrefixes[ STANDARD_PREFIX_XBRLI ] ) );
			if ( in_array( $qName->clarkNotation(), $qNames ) )
			{
				XBRL_Log::getInstance()->instance_validation( "4.8.4", "The measure in a denominator cannot appear in a numerator", array( 'unit' => $unitId, 'measure' => $measure ) );
				return false;
			}
		}

		return true;
	}
private function validateDivide( $divide, $unitId, $types )
	{
		$numeratorValidation = true;
		$denominatorValidation = true;

		// The divide MUST and a numerator and a denominator
		if ( isset( $divide['numerator'] ) )
		{
			if ( empty( $divide['numerator'] ) )
			{
				$this->log()->instance_validation( "4.8.4", "The 'unitNumerator' MUST NOT be empty", array( 'unit' => $unitId ) );
				$numeratorValidation = false;
			}
			else
			{
				foreach ( $divide['numerator'] as $measure )
				{
					$numeratorValidation &= $this->validateMeasure( $measure, "$unitId (numerator)", $types );
				}
			}
		}
		else
		{
			$this->log()->instance_validation( "4.8.3", "Both a 'unitNumerator' and a 'unitDenominator' MUST be provided.  The numerator is missing.", array( 'unit' => $unitId ) );
			$numeratorValidation = false;
		}

		// The divide MUST and a numerator and a denominator
		if ( isset( $divide['denominator'] ) )
		{
			if ( empty( $divide['denominator'] ) )
			{
				$this->log()->instance_validation( "4.8.4", "The 'unitDenominator' MUST NOT be empty", array( 'unit' => $unitId ) );
				$denominatorValidation = false;
			}
			else
			{
				foreach ( $divide['denominator'] as $measure )
				{
					$denominatorValidation &= $this->validateMeasure( $measure, "$unitId (denominator)", $types );
				}
			}
		}
		else
		{
			$this->log()->instance_validation( "4.8.3", "Both a 'unitNumerator' and a 'unitDenominator' MUST be provided. The denominator is missing.", array( 'unit' => $unitId ) );
			$denominatorValidation = false;
		}

		if ( ! $numeratorValidation || ! $denominatorValidation ) return false;

		// Check the denominator measures do not appear in the numerator measures
		// First create a list of all the numerator qnames
		$qNames = array();
		foreach ( $divide['numerator'] as $measure )
		{
			$qNames[] = qname( $measure, $this->instance_namespaces )->clarkNotation();
		}

		foreach ( $divide['denominator'] as $measure )
		{
			$qName = qname( $measure, $this->instance_namespaces + array( STANDARD_PREFIX_XBRLI => XBRL_Constants::$standardPrefixes[ STANDARD_PREFIX_XBRLI ] ) );
			if ( in_array( $qName->clarkNotation(), $qNames ) )
			{
				XBRL_Log::getInstance()->instance_validation( "4.8.4", "The measure in a denominator cannot appear in a numerator", array( 'unit' => $unitId, 'measure' => $measure ) );
				return false;
			}
		}

		return true;
	}
private function validateDivide ( $ divide , $ unitId , $ types ) { $ numeratorValidation = true ; $ denominatorValidation = true ; // The divide MUST and a numerator and a denominator
 if ( isset ( $ divide [ 'numerator' ] ) ) { if ( empty ( $ divide [ 'numerator' ] ) ) { $ this -> log ( ) -> instance_validation ( "4.8.4" , "The 'unitNumerator' MUST NOT be empty" , array ( 'unit' => $ unitId ) ) ; $ numeratorValidation = false ; } else { foreach ( $ divide [ 'numerator' ] as $ measure ) { $ numeratorValidation &= $ this -> validateMeasure ( $ measure , "$unitId (numerator)" , $ types ) ; } } } else { $ this -> log ( ) -> instance_validation ( "4.8.3" , "Both a 'unitNumerator' and a 'unitDenominator' MUST be provided.  The numerator is missing." , array ( 'unit' => $ unitId ) ) ; $ numeratorValidation = false ; } // The divide MUST and a numerator and a denominator
 if ( isset ( $ divide [ 'denominator' ] ) ) { if ( empty ( $ divide [ 'denominator' ] ) ) { $ this -> log ( ) -> instance_validation ( "4.8.4" , "The 'unitDenominator' MUST NOT be empty" , array ( 'unit' => $ unitId ) ) ; $ denominatorValidation = false ; } else { foreach ( $ divide [ 'denominator' ] as $ measure ) { $ denominatorValidation &= $ this -> validateMeasure ( $ measure , "$unitId (denominator)" , $ types ) ; } } } else { $ this -> log ( ) -> instance_validation ( "4.8.3" , "Both a 'unitNumerator' and a 'unitDenominator' MUST be provided. The denominator is missing." , array ( 'unit' => $ unitId ) ) ; $ denominatorValidation = false ; } if ( ! $ numeratorValidation || ! $ denominatorValidation ) return false ; // Check the denominator measures do not appear in the numerator measures
 // First create a list of all the numerator qnames
 $ qNames = array ( ) ; foreach ( $ divide [ 'numerator' ] as $ measure ) { $ qNames [ ] = qname ( $ measure , $ this -> instance_namespaces ) -> clarkNotation ( ) ; } foreach ( $ divide [ 'denominator' ] as $ measure ) { $ qName = qname ( $ measure , $ this -> instance_namespaces + array ( STANDARD_PREFIX_XBRLI => XBRL_Constants :: $ standardPrefixes [ STANDARD_PREFIX_XBRLI ] ) ) ; if ( in_array ( $ qName -> clarkNotation ( ) , $ qNames ) ) { XBRL_Log :: getInstance ( ) -> instance_validation ( "4.8.4" , "The measure in a denominator cannot appear in a numerator" , array ( 'unit' => $ unitId , 'measure' => $ measure ) ) ; return false ; } } return true ; }
Validates the measure component of a unit definition

@param string $divide
@param string $unitId
@param XBRL_Types $types
Validates the measure component of a unit definition