- my ($modestring, $ur, $uw, $ux, $gr, $gw, $gx, $or, $ow, $ox);
- my $mode = shift;
-
- $ur = ($mode & 0400) ? "r" : "-"; # User Read
- $uw = ($mode & 0200) ? "w" : "-"; # User Write
- $ux = ($mode & 0100) ? "x" : "-"; # User eXecute
- $gr = ($mode & 0040) ? "r" : "-"; # Group Read
- $gw = ($mode & 0020) ? "w" : "-"; # Group Write
- $gx = ($mode & 0010) ? "x" : "-"; # Group eXecute
- $or = ($mode & 0004) ? "r" : "-"; # Other Read
- $ow = ($mode & 0002) ? "w" : "-"; # Other Write
- $ox = ($mode & 0001) ? "x" : "-"; # Other eXecute
-
- # build a readable mode string (rwxrwxrwx)
- return $ur . $uw . $ux . $gr . $gw . $gx . $or . $ow . $ox;
+ my $params = shift;
+
+ # Detect the protocol (simple HTTP or SSL encrypted HTTP)
+ # and check if the server listens on the default port
+
+ my $protocol = "";
+ my $port = "";
+
+ if(https)
+ {
+ # SSL encrypted HTTP (HTTPS)
+
+ $protocol = "https";
+ $port = ($ENV{'SERVER_PORT'} == 443) ? "" : ":".$ENV{'SERVER_PORT'};
+ }
+ else
+ {
+ # Simple HTTP
+
+ $protocol = "http";
+ $port = ($ENV{'SERVER_PORT'} == 80) ? "" : ":".$ENV{'SERVER_PORT'};
+ }
+
+ # The following code is grabbed from Template::_query of
+ # Andre Malo's selfforum (http://sourceforge.net/projects/selfforum/)
+ # and modified by Patrick Canterino
+
+ my $query = '?'.join ('&' =>
+ map {
+ (ref)
+ ? map{escape ($_).'='.escape ($params -> {$_})} @{$params -> {$_}}
+ : escape ($_).'='.escape ($params -> {$_})
+ } keys %$params
+ );
+
+ # Create the redirection header
+
+ my $header = redirect($protocol."://".virtual_host.$port.$ENV{'SCRIPT_NAME'}.$query);
+
+ return \$header;