using the WODA-MAX version I've looked into the code where I dealt with a problem of overloading built in functions and at least to me it seemed that "sub mainAction()" does not (exactly) do what the administrator manual describes:
sub mainAction {
....
# sub mySomething defined
if ( defined &$MyAction ) {
&$MyAction();
first selfdefined functions loaded through the definition file or the related files are looked up
# file cgiSomething in local
} elsif ( -e "$WodaFileDir/local/$Action.pl" ) { # overloaded separate file ?
require "$WodaFileDir/local/$Action.pl";
&$Action()
then functions to override built in functions (using the same names) are looked up in the ../local subdirectory
# sub cgiSomething defined
} elsif ( defined &$Action) {
&$Action();
then built in functions are used, and if the function is not yet defined
# file cgiSomething in include dir
} elsif ( -e "$WodaLibDir/$Action.pl" ) { # separate file ?
require "$WodaLibDir/$Action.pl";
&$Action();
files containing the functions are searched in the ../include directory
# file cgiSomething in contrib dir
} elsif ( -e "$WodaFileDir/contrib/$Action.pl" ) { # overloaded separate file ?
require "$WodaFileDir/contrib/$Action.pl";
&$Action()
or in the ../en/contrib drectory.
# file cgiSomething in ../en/contrib dir
} elsif ( -e "$WodaFileDir/../en/contrib/$Action.pl" ) { # overloaded separate file ?
require "$WodaFileDir/../en/contrib/$Action.pl";
&$Action()
...
i.e. a function called cgiShow() in a file in the ../contrib directory would never override the built in function.
The above MAKES sense, but the manual does not state explicitely that NEW functions, i.e. functions using NEW names can use either of the mechanisms to load additional functions where those to override existing ones must be defined in the database definition file with the "my" prefix or placed in files in the ../local directory
Best regards
Richard