static function optimize( $useComments, &$php, $tpl, &$tree, &$resourceData ) { /* If for some reason we don't have elements, simply return */ if (! is_array( $tree[1] ) ) return; $addNodeInit = false; /* Loop through the children of the root */ foreach ( $tree[1] as $key => $kiddie ) { /* Analyse per node type */ switch ( $kiddie[0] ) { case eZTemplate::NODE_INTERNAL_OUTPUT_SPACING_INCREASE: case eZTemplate::NODE_INTERNAL_SPACING_DECREASE: /* Removing unnecessary whitespace changes */ unset( $tree[1][$key] ); break; case 3: /* Variable */ if ( isset( $tree[1][$key + 1] ) and ( $tree[1][$key + 1][0] == eZTemplate::NODE_INTERNAL_RESOURCE_ACQUISITION ) and isset( $resourceData['class-info'] ) ) { $ret = eZTemplateOptimizer::optimizeResourceAcquisition( $useComments, $php, $tpl, $tree[1][$key], $tree[1][$key + 1], $resourceData ); /* We only unset the tree node when the optimization * function returns false, as that means that the * optimization could not be made. */ if ($ret) { unset( $tree[1][$key] ); } } else { $ret = eZTemplateOptimizer::optimizeVariable( $useComments, $php, $tpl, $tree[1][$key][2], $resourceData ); if ( $ret & 1 ) $addNodeInit = true; } break; } } if ( $addNodeInit ) { $initializer = array( eZTemplate::NODE_OPTIMIZED_INIT, null, false ); array_unshift( $tree[1], $initializer ); } }