function chooseTransformation( $operatorName, &$node, $tpl, &$resourceData, $element, $lastElement, $elementList, $elementTree, &$parameters ) { $values = array(); $function = $operatorName; if ( ( count( $parameters ) < 2) ) { return false; } $tmpValues = false; $newElements = array(); if ( eZTemplateNodeTool::isConstantElement( $parameters[0] ) ) { $selected = eZTemplateNodeTool::elementConstantValue( $parameters[0] ); if ( $selected < 0 or $selected > ( count( $parameters ) - 1 ) ) { return false; } return $parameters[$selected + 1]; } else { $values[] = $parameters[0]; $array = $parameters; unset( $array[0] ); $count = count( $parameters ) - 1; $operatorNameText = eZPHPCreator::variableText( $operatorName ); if ( count( $parameters ) == ( 2 + 1 ) ) { $code = "%output% = %1% ? %3% : %2%;\n"; $values[] = $parameters[1]; $values[] = $parameters[2]; } else { $code = ( "if ( %1% < 0 and\n" . " %1% >= $count )\n" . "{\n" . " \$tpl->error( $operatorNameText, \"Index \" . %1% . \" out of range\" );\n" . " %output% = false;\n" . "}\n" ); $code .= "else switch ( %1% )\n{\n"; $valueNumber = 2; for ( $i = 0; $i < $count; ++$i ) { $parameterNumber = $i + 1; $code .= " case $i:"; if ( eZTemplateNodeTool::isConstantElement( $parameters[$parameterNumber] ) ) { $value = eZTemplateNodeTool::elementConstantValue( $parameters[$parameterNumber] ); $valueText = eZPHPCreator::variableText( $value, 0, 0, false ); $code .= " %output% = $valueText; break;\n"; } else { $code .= "\n {\n"; $code .= "%code$valueNumber%\n"; $code .= "%output% = %$valueNumber%;\n"; $code .= " } break;\n"; $values[] = $parameters[$parameterNumber]; ++$valueNumber; } } $code .= "}\n"; } } $newElements[] = eZTemplateNodeTool::createCodePieceElement( $code, $values, eZTemplateNodeTool::extractVariableNodePlacement( $node ), false ); return $newElements; }