Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package CGI_mis;
- use URI::Escape;
- # I've only included two functions that I believe are key to the solution:
- ################################################################################
- #
- # Name: GetAllParams
- #
- # Parameters:
- #
- # [I] $script - Name of script parameters have been passed to.
- #
- # Returns:
- #
- # Hash Ref - Containing all the parameters.
- #
- # Implementation:
- #
- # Gets all the parameters passed to the script, plus the default parameters
- # for this script, provided they have not been overridden. Parameters with
- # multiple values are held in an array reference, as are single valued
- # parameters that are known to be able to hold multiple values.
- #
- # Params are got from CGI query, database defaults then PageConfig defaults
- # in that order.
- #
- ################################################################################
- sub GetAllParams
- {
- my $script = shift || basename($0);
- my %all_params;
- my @params = $query->param();
- my $p;
- my $db_defaults;
- foreach $p (@params)
- {
- @{$all_params{$p}} = $query->param($p);
- if(scalar(@{$all_params{$p}}) == 1)
- {
- # Make it scalar unless it's meant to be an array
- if((! defined $PageConfig::scripts{$script}->{$p}) ||
- ref($PageConfig::scripts{$script}->{$p}->{'default'}) ne 'ARRAY')
- {
- $all_params{$p} = ${$all_params{$p}}[0];
- }
- }
- }
- # Check any defaults that are not set
- # check the DB first
- $db_defaults = PageConfig::GetDBDefaults($script);
- if(defined $db_defaults)
- {
- foreach $p (keys %$db_defaults)
- {
- # Set the db default is it has not already been set
- if(! defined $all_params{$p})
- {
- $all_params{$p} = $db_defaults->{$p};
- }
- }
- }
- # then the 'default' default
- if(defined $PageConfig::scripts{$script})
- {
- foreach $p (keys %{$PageConfig::scripts{$script}})
- {
- if(! defined $all_params{$p})
- {
- $all_params{$p} =
- $PageConfig::scripts{$script}->{$p}->{'default'};
- }
- }
- }
- return \%all_params;
- }
- ################################################################################
- #
- # Name: GetQueryString
- #
- # Parameters:
- #
- # $all_params_ref - Hash Ref contining all the params to construct the
- # query from.
- #
- # Returns:
- #
- # A text string of the built up query.
- #
- # Implementation:
- #
- # Simple concats the parameters together.
- #
- ################################################################################
- sub GetQueryString
- {
- my $all_params_ref = shift || GetAllParams();
- my $q_string = "";
- foreach my $p (keys %$all_params_ref)
- {
- next if (! defined $all_params_ref->{$p});
- if(ref($all_params_ref->{$p}) eq 'ARRAY')
- {
- foreach (@{$all_params_ref->{$p}})
- {
- $p = uri_escape($p);
- $q_string .= "$p=".uri_escape($_)."&";
- }
- }
- else
- {
- $q_string .= "$p=".uri_escape($all_params_ref->{$p})."&";
- }
- }
- $q_string =~ s/\s/\%20/g if $q_string;
- #$q_string =~ s/#/HASH/g;
- return $q_string;
- }
- # end of CGI_mis
- #####################################
- # this is the line in the front end page that gets all the parameters from the above script
- my $all_params_ref = CGI_mis::GetAllParams($script);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement