8d66f4fffb10aaa13812aacf8de75748b731a084
[freeside.git] / FS / FS / Mason / Request.pm
1 package FS::Mason::Request;
2
3 use strict;
4 use warnings;
5 use vars qw( $FSURL $QUERY_STRING );
6 use base 'HTML::Mason::Request';
7
8 $FSURL = 'http://Set/FS_Mason_Request_FSURL/in_standalone_mode/';
9 $QUERY_STRING = '';
10
11 sub new {
12     my $class = shift;
13
14     my $superclass = $HTML::Mason::ApacheHandler::VERSION ?
15                      'HTML::Mason::Request::ApacheHandler' :
16                      $HTML::Mason::CGIHandler::VERSION ?
17                      'HTML::Mason::Request::CGI' :
18                      'HTML::Mason::Request';
19
20     $class->alter_superclass( $superclass );
21
22     #huh... shouldn't alter_superclass take care of this for us?
23     __PACKAGE__->valid_params( %{ $superclass->valid_params() } );
24
25     my %opt = @_;
26     my $mode = $superclass =~ /Apache/i ? 'apache' : 'standalone';
27     freeside_setup($opt{'comp'}, $mode);
28
29     $class->SUPER::new(@_);
30
31 }
32
33 #override alter_superclass ala RT::Interface::Web::Request ??
34 # for Mason 1.39 vs. Perl 5.10.0
35
36 sub freeside_setup {
37
38     my( $filename, $mode ) = @_;
39
40     #warn "initializing for $filename\n";
41
42     if ( $filename !~ /\/rt\/.*NoAuth/ ) { #not RT images/JS
43
44       package HTML::Mason::Commands;
45       use vars qw( $cgi $p $fsurl );
46       use FS::UID qw( cgisuidsetup );
47       use FS::CGI qw( popurl rooturl );
48
49       if ( $mode eq 'apache' ) {
50         $cgi = new CGI;
51         &cgisuidsetup($cgi);
52         #&cgisuidsetup($r);
53         $fsurl = rooturl();
54         $p = popurl(2);
55       } elsif ( $mode eq 'standalone' ) {
56         $cgi = new CGI $FS::Mason::Request::QUERY_STRING; #better keep setting
57                                                           #if you set it once
58         $FS::UID::cgi = $cgi;
59         $fsurl = $FS::Mason::Request::FSURL; #kludgy, but what the hell
60         $p = popurl(2, "$fsurl$filename");
61       } else {
62         die "unknown mode $mode";
63       }
64
65     } elsif ( $filename =~ /\/rt\/REST\/.*NoAuth/ ) {
66
67       package HTML::Mason::Commands; #?
68       use FS::UID qw( adminsuidsetup );
69
70       #need to log somebody in for the mail gw
71
72       ##old installs w/fs_selfs or selfserv??
73       #&adminsuidsetup('fs_selfservice');
74
75       &adminsuidsetup('fs_queue');
76
77     }
78
79 }
80
81 sub callback {
82   RT::Interface::Web::Request::callback(@_);
83 }
84
85 sub request_path {
86   RT::Interface::Web::Request::request_path(@_);
87 }
88
89 1;