Formulas/Evaluation.php
private function updateUncoveredAspectFacts( $uncoveredAspectFacts, $binding )
	{
		if ( ! $uncoveredAspectFacts || $binding instanceof ScopeVariableBinding ) return;

		// Get the current fact so the uncovered aspects array
		$fact = $binding->current();

		// Fill any null values in the parent binding with facts from $binding
		// NOTE: Arelle does it this way (see implicitFilter() on line 618 of FormulaEvaluator.py) but it is
		//       necessary that the facts in the parent binding take precedence.  The formula spec say that
		//       any of the facts can be used.  Still, for testing purposes, making this process as close to
		//       the way Arelle operates means it is easier to identify implementation problems.
		foreach ( $binding->uncoveredAspectFacts as $aspect => $fact )
		{
			// Don't change non-null aspects
			if ( ! is_null( $fact ) ) continue;

			// Otherwise, if the corresponding aspect in the existing uncovered aspect facts list is not null apply it.
			if ( ! isset( $uncoveredAspectFacts[ $aspect ] ) || is_null( $uncoveredAspectFacts[ $aspect ] ) ) continue;

			$binding->uncoveredAspectFacts[ $aspect ] = $uncoveredAspectFacts[ $aspect ];
		}
	}
private function updateUncoveredAspectFacts( $uncoveredAspectFacts, $binding )
	{
		if ( ! $uncoveredAspectFacts || $binding instanceof ScopeVariableBinding ) return;

		// Get the current fact so the uncovered aspects array
		$fact = $binding->current();

		// Fill any null values in the parent binding with facts from $binding
		// NOTE: Arelle does it this way (see implicitFilter() on line 618 of FormulaEvaluator.py) but it is
		//       necessary that the facts in the parent binding take precedence.  The formula spec say that
		//       any of the facts can be used.  Still, for testing purposes, making this process as close to
		//       the way Arelle operates means it is easier to identify implementation problems.
		foreach ( $binding->uncoveredAspectFacts as $aspect => $fact )
		{
			// Don't change non-null aspects
			if ( ! is_null( $fact ) ) continue;

			// Otherwise, if the corresponding aspect in the existing uncovered aspect facts list is not null apply it.
			if ( ! isset( $uncoveredAspectFacts[ $aspect ] ) || is_null( $uncoveredAspectFacts[ $aspect ] ) ) continue;

			$binding->uncoveredAspectFacts[ $aspect ] = $uncoveredAspectFacts[ $aspect ];
		}
	}
private function updateUncoveredAspectFacts ( $ uncoveredAspectFacts , $ binding ) { if ( ! $ uncoveredAspectFacts || $ binding instanceof ScopeVariableBinding ) return ; // Get the current fact so the uncovered aspects array
 $ fact = $ binding -> current ( ) ; // Fill any null values in the parent binding with facts from $binding
 // NOTE: Arelle does it this way (see implicitFilter() on line 618 of FormulaEvaluator.py) but it is
 //       necessary that the facts in the parent binding take precedence.  The formula spec say that
 //       any of the facts can be used.  Still, for testing purposes, making this process as close to
 //       the way Arelle operates means it is easier to identify implementation problems.
 foreach ( $ binding -> uncoveredAspectFacts as $ aspect => $ fact ) { // Don't change non-null aspects
 if ( ! is_null ( $ fact ) ) continue ; // Otherwise, if the corresponding aspect in the existing uncovered aspect facts list is not null apply it.
 if ( ! isset ( $ uncoveredAspectFacts [ $ aspect ] ) || is_null ( $ uncoveredAspectFacts [ $ aspect ] ) ) continue ; $ binding -> uncoveredAspectFacts [ $ aspect ] = $ uncoveredAspectFacts [ $ aspect ] ; } }
Update the uncover aspect facts list in the bindings
@param array $uncoveredAspectFacts
@param VariableBinding $binding
Update the uncover aspect facts list in the bindings