Index: kernel/common/eztemplateautoload.php
===================================================================
--- kernel/common/eztemplateautoload.php	(revision 25031)
+++ kernel/common/eztemplateautoload.php	(working copy)
@@ -33,70 +33,54 @@
 
 $eZTemplateOperatorArray = array();
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/ezurloperator.php',
-                                    'class' => 'eZURLOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZURLOperator',
                                     'operator_names' => array( 'ezurl', 'ezroot', 'ezdesign', 'ezimage', 'exturl',
                                                                'ezsys', 'ezhttp', 'ezhttp_hasvariable', 'ezini', 'ezini_hasvariable' ) );
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/ezi18noperator.php',
-                                    'class' => 'eZI18nOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZi18nOperator',
                                     'operator_names' => array( 'i18n', 'x18n' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/ezalphabetoperator.php',
-                                    'class' => 'eZAlphabetOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZAlphabetOperator',
                                     'operator_names' => array( 'alphabet' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/ezdateoperatorcollection.php',
-                                    'class' => 'eZDateOperatorCollection',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZDateOperatorCollection',
                                     'operator_names' => array( 'month_overview' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/ezautolinkoperator.php',
-                                    'class' => 'eZAutoLinkOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZAutoLinkOperator',
                                     'operator_names' => array( 'autolink' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/ezsimpletagsoperator.php',
-                                    'class' => 'eZSimpleTagsOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZSimpleTagsOperator',
                                     'operator_names' => array( 'simpletags' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/eztreemenuoperator.php',
-                                    'class' => 'eZTreeMenuOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTreeMenuOperator',
                                     'operator_names' => array( 'treemenu' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/ezcontentstructuretreeoperator.php',
-                                    'class' => 'eZContentStructureTreeOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZContentStructureTreeOperator',
                                     'operator_names' => array( 'content_structure_tree' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/ezwordtoimageoperator.php',
-                                    'class' => 'eZWordToImageOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZWordToImageOperator',
                                     'operator_names' => array( 'wordtoimage',
                                                                'mimetype_icon', 'class_icon', 'classgroup_icon', 'action_icon', 'icon',
                                                                'flag_icon', 'icon_info' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/ezkerneloperator.php',
-                                    'class' => 'eZKernelOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZKernelOperator',
                                     'operator_names' => array( 'ezpreference' ) );
 
 
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatephpoperator.php',
-                                    'function' => 'eZPHPOperatorInit',
+$eZTemplateOperatorArray[] = array( 'function' => 'eZPHPOperatorInit',
                                     'operator_names_function' => 'eZPHPOperatorNameInit' );
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/ezmoduleparamsoperator.php',
-                                    'class' => 'eZModuleParamsOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZModuleParamsOperator',
                                     'operator_names' => array( 'module_params' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/eztopmenuoperator.php',
-                                    'class' => 'eZTopMenuOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTopMenuOperator',
                                     'operator_names' => array( 'topmenu' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/ezpackageoperator.php',
-                                    'class' => 'eZPackageOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZPackageOperator',
                                     'operator_names' => array( 'ezpackage' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/eztocoperator.php',
-                                    'class' => 'eZTOCOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTOCOperator',
                                     'operator_names' => array( 'eztoc' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/common/ezmoduleoperator.php',
-                                    'class' => 'eZModuleOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZModuleOperator',
                                     'operator_names' => array( 'ezmodule' ) );
 
 // Function autoloading
Index: kernel/private/eztemplate/eztemplateautoload.php
===================================================================
--- kernel/private/eztemplate/eztemplateautoload.php	(revision 25031)
+++ kernel/private/eztemplate/eztemplateautoload.php	(working copy)
@@ -8,8 +8,7 @@
  */
 
 $eZTemplateOperatorArray = array();
-$eZTemplateOperatorArray[] = array( 'script' => 'kernel/private/eztemplate/ezplanguageswitcheroperator.php',
-                                    'class' => 'ezpLanguageSwitcherOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'ezpLanguageSwitcherOperator',
                                     'operator_names' => array( 'language_switcher' ) );
 
-?>
\ No newline at end of file
+?>
Index: lib/ezpdf/classes/eztemplateautoload.php
===================================================================
--- lib/ezpdf/classes/eztemplateautoload.php	(revision 25031)
+++ lib/ezpdf/classes/eztemplateautoload.php	(working copy)
@@ -33,8 +33,7 @@
 
 $eZTemplateOperatorArray = array();
 
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/ezpdf/classes/ezpdf.php',
-                                    'class' => 'eZPDF',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZPDF',
                                     'operator_names' => array( 'pdf' ) );
 
 ?>
Index: lib/eztemplate/classes/eztemplate.php
===================================================================
--- lib/eztemplate/classes/eztemplate.php	(revision 25031)
+++ lib/eztemplate/classes/eztemplate.php	(working copy)
@@ -1752,10 +1752,9 @@
 
     function registerAutoloadFunctions( $functionDefinition )
     {
-        if ( ( ( isset( $functionDefinition['function'] ) or
-                 ( isset( $functionDefinition['script'] ) and
-                   isset( $functionDefinition['class'] ) ) ) and
-               ( isset( $functionDefinition['function_names_function'] ) or
+        if ( ( ( isset( $functionDefinition['function'] ) ||
+                 isset( $functionDefinition['class'] ) ) &&
+               ( isset( $functionDefinition['function_names_function'] ) ||
                  isset( $functionDefinition['function_names'] ) ) ) )
         {
             if ( isset( $functionDefinition['function_names_function'] ) )
@@ -1793,16 +1792,17 @@
         if ( isset( $functionDefinition['function'] ) )
         {
             $function = $functionDefinition['function'];
-//             print( "loadAndRegisterFunction: $function<br/>" );
             if ( function_exists( $function ) )
                 $functionObject = $function();
         }
-        else if ( isset( $functionDefinition['script'] ) )
+        else
         {
-            $script = $functionDefinition['script'];
+            if ( !class_exists( $functionDefinition['class'], false )
+                    && isset( $functionDefinition['script'] ) )
+            {
+                include_once( $functionDefinition['script'] );
+            }
             $class = $functionDefinition['class'];
-//             print( "loadAndRegisterFunction: $script<br/>" );
-            include_once( $script );
             if ( class_exists( $class ) )
                 $functionObject = new $class();
         }
@@ -1878,10 +1878,9 @@
 
     function registerAutoloadOperators( $operatorDefinition )
     {
-        if ( ( ( isset( $operatorDefinition['function'] ) or
-                 ( isset( $operatorDefinition['script'] ) and
-                   isset( $operatorDefinition['class'] ) ) ) and
-               ( isset( $operatorDefinition['operator_names_function'] ) or
+        if ( ( ( isset( $operatorDefinition['function'] ) ||
+                 isset( $operatorDefinition['class'] ) ) &&
+               ( isset( $operatorDefinition['operator_names_function'] ) ||
                  isset( $operatorDefinition['operator_names'] ) ) ) )
         {
             if ( isset( $operatorDefinition['operator_names_function'] ) )
@@ -1911,16 +1910,16 @@
         if ( isset( $operatorDefinition['function'] ) )
         {
             $function = $operatorDefinition['function'];
-//             print( "loadAndRegisterOperator: $function<br/>" );
             if ( function_exists( $function ) )
                 $operatorObject = $function();
         }
-        else if ( isset( $operatorDefinition['script'] ) )
+        else
         {
-            $script = $operatorDefinition['script'];
             $class = $operatorDefinition['class'];
-//             print( "loadAndRegisterOperator: $script<br/>" );
-            include_once( $script );
+            if ( !class_exists( $class, false ) && isset( $operatorDefinition['script'] ) )
+            {
+                include_once( $operatorDefinition['script'] );
+            }
             if ( class_exists( $class ) )
             {
                 if ( isset( $operatorDefinition['class_parameter'] ) )
Index: lib/eztemplate/classes/eztemplateautoload.php
===================================================================
--- lib/eztemplate/classes/eztemplateautoload.php	(revision 25031)
+++ lib/eztemplate/classes/eztemplateautoload.php	(working copy)
@@ -32,8 +32,7 @@
 // Operator autoloading
 
 $eZTemplateOperatorArray = array();
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatearrayoperator.php',
-                                    'class' => 'eZTemplateArrayOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateArrayOperator',
                                     'operator_names' => array( 'array',
                                                                'hash',
                                                                'array_prepend', // DEPRECATED/OBSOLETE
@@ -62,42 +61,32 @@
 
 
 
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplateexecuteoperator.php',
-                                    'class' => 'eZTemplateExecuteOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateExecuteOperator',
                                     'operator_names' => array( 'fetch', 'fetch_alias' ) );
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatelocaleoperator.php',
-                                    'class' => 'eZTemplateLocaleOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateLocaleOperator',
                                     'operator_names' => array( 'l10n', 'locale', 'datetime', 'currentdate', 'maketime', 'makedate', 'gettime' ) );
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplateattributeoperator.php',
-                                    'class' => 'eZTemplateAttributeOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateAttributeOperator',
                                     'operator_names' => array( 'attribute' ) );
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatenl2broperator.php',
-                                    'class' => 'eZTemplateNl2BrOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateNl2BrOperator',
                                     'operator_names' => array( 'nl2br' ) );
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatetextoperator.php',
-                                    'class' => 'eZTemplateTextOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateTextOperator',
                                     'operator_names' => array( 'concat', 'indent' ) );
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplateunitoperator.php',
-                                    'class' => 'eZTemplateUnitOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateUnitOperator',
                                     'operator_names' => array( 'si' ) );
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatelogicoperator.php',
-                                    'class' => 'eZTemplateLogicOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateLogicOperator',
                                     'operator_names' => array( 'lt', 'gt', 'le',
                                                                'ge', 'eq', 'ne', 'null',
                                                                'not', 'true', 'false',
                                                                'or', 'and', 'choose' ) );
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatetypeoperator.php',
-                                    'class' => 'eZTemplateTypeOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateTypeOperator',
                                     'operator_names' => array( 'is_array', 'is_boolean', 'is_integer',
                                                                'is_float', 'is_numeric', 'is_string',
                                                                'is_object', 'is_class', 'is_null',
                                                                'is_set', 'is_unset', 'get_type', 'get_class' ) );
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatecontroloperator.php',
-                                    'class' => 'eZTemplateControlOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateControlOperator',
                                     'operator_names' => array( 'cond', 'first_set' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatearithmeticoperator.php',
-                                    'class' => 'eZTemplateArithmeticOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateArithmeticOperator',
                                     'operator_names' => array( 'sum', 'sub', 'inc', 'dec',
                                                                'div', 'mod', 'mul',
                                                                'max', 'min',
@@ -107,15 +96,13 @@
                                                                'roman',
                                                                'rand' ) );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplateimageoperator.php',
-                                    'class' => 'eZTemplateImageOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateImageOperator',
                                     'operator_names' => array( 'texttoimage',
                                                                'image',
                                                                'imagefile' ) );
 
 
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatestringoperator.php',
-                                    'class' => 'eZTemplateStringOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateStringOperator',
                                     'operator_names' => array( 'upcase',
                                                                'downcase',
                                                                'count_words',
@@ -133,8 +120,7 @@
                                                                'shorten',
                                                                'pad') );
 
-$eZTemplateOperatorArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatedigestoperator.php',
-                                    'class' => 'eZTemplateDigestOperator',
+$eZTemplateOperatorArray[] = array( 'class' => 'eZTemplateDigestOperator',
                                     'operator_names' => array( 'crc32',
                                                                'md5',
                                                                'rot13', ) );
@@ -144,89 +130,72 @@
 // Function autoloading
 
 $eZTemplateFunctionArray = array();
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatesectionfunction.php',
-                                    'class' => 'eZTemplateSectionFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateSectionFunction',
                                     'function_names' => array( 'section' ),
                                     'function_attributes' => array( 'delimiter',
                                                                     'section-exclude',
                                                                     'section-include',
                                                                     'section-else' ) );
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatedelimitfunction.php',
-                                    'class' => 'eZTemplateDelimitFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateDelimitFunction',
                                     'function_names' => array( 'ldelim', 'rdelim' ) );
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplateincludefunction.php',
-                                    'class' => 'eZTemplateIncludeFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateIncludeFunction',
                                     'function_names' => array( 'include' ) );
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplateswitchfunction.php',
-                                    'class' => 'eZTemplateSwitchFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateSwitchFunction',
                                     'function_names' => array( 'switch' ),
                                     'function_attributes' => array( 'case' ) );
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatesequencefunction.php',
-                                    'class' => 'eZTemplateSequenceFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateSequenceFunction',
                                     'function_names' => array( 'sequence' ) );
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatesetfunction.php',
-                                    'class' => 'eZTemplateSetFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateSetFunction',
                                     'function_names' => array( 'set', 'let', 'default' ) );
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplateblockfunction.php',
-                                    'class' => 'eZTemplateBlockFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateBlockFunction',
                                     'function_names' => array( 'set-block', 'append-block', 'run-once' ) );
 
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatedebugfunction.php',
-                                    'class' => 'eZTemplateDebugFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateDebugFunction',
                                     'function_names' => array( 'debug-timing-point', 'debug-accumulator',
                                                                'debug-log',
                                                                'debug-trace' ) );
 
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatecachefunction.php',
-                                    'class' => 'eZTemplateCacheFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateCacheFunction',
                                     'function_names' => array( 'cache-block' ) );
 
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatetoolbarfunction.php',
-                                    'class' => 'eZTemplateToolbarFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateToolbarFunction',
                                     'function_names' => array( 'tool_bar' ) );
 
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatemenufunction.php',
-                                    'class' => 'eZTemplateMenuFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateMenuFunction',
                                     'function_names' => array( 'menu' ) );
 
 // should we add 'break', 'continue' and 'skip' to the {if} attribute list?
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplateiffunction.php',
-                                    'class' => 'eZTemplateIfFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateIfFunction',
                                     'function_names' => array( 'if' ),
                                     'function_attributes' => array( 'elseif',
                                                                     'else' ) );
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatewhilefunction.php',
-                                    'class' => 'eZTemplateWhileFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateWhileFunction',
                                     'function_names' => array( 'while' ),
                                     'function_attributes' => array( 'delimiter',
                                                                     'break',
                                                                     'continue',
                                                                     'skip' ) );
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplateforfunction.php',
-                                    'class' => 'eZTemplateForFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateForFunction',
                                     'function_names' => array( 'for' ),
                                     'function_attributes' => array( 'delimiter',
                                                                     'break',
                                                                     'continue',
                                                                     'skip' ) );
 
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplateforeachfunction.php',
-                                    'class' => 'eZTemplateForeachFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateForeachFunction',
                                     'function_names' => array( 'foreach' ),
                                     'function_attributes' => array( 'delimiter',
                                                                     'break',
                                                                     'continue',
                                                                     'skip' ) );
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatedofunction.php',
-                                    'class' => 'eZTemplateDoFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateDoFunction',
                                     'function_names' => array( 'do' ),
                                     'function_attributes' => array( 'delimiter',
                                                                     'break',
                                                                     'continue',
                                                                     'skip' ) );
 
-$eZTemplateFunctionArray[] = array( 'script' => 'lib/eztemplate/classes/eztemplatedeffunction.php',
-                                    'class' => 'eZTemplateDefFunction',
+$eZTemplateFunctionArray[] = array( 'class' => 'eZTemplateDefFunction',
                                     'function_names' => array( 'def', 'undef' ) );
 
 
