torrus, RT#10574
[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     $class->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     my( $class, $filename, $mode ) = @_;
38
39     if ( $filename =~ qr(/REST/\d+\.\d+/NoAuth/) ) {
40
41       package HTML::Mason::Commands; #?
42       use FS::UID qw( adminsuidsetup );
43
44       #need to log somebody in for the mail gw
45
46       ##old installs w/fs_selfs or selfserv??
47       #&adminsuidsetup('fs_selfservice');
48
49       &adminsuidsetup('fs_queue');
50
51     } else {
52
53       package HTML::Mason::Commands;
54       use vars qw( $cgi $p $fsurl );
55       use FS::UID qw( cgisuidsetup );
56       use FS::CGI qw( popurl rooturl );
57
58       if ( $mode eq 'apache' ) {
59         $cgi = new CGI;
60         &cgisuidsetup($cgi);
61         #&cgisuidsetup($r);
62         $fsurl = rooturl();
63         $p = popurl(2);
64       } elsif ( $mode eq 'standalone' ) {
65         $cgi = new CGI $FS::Mason::Request::QUERY_STRING; #better keep setting
66                                                           #if you set it once
67         $FS::UID::cgi = $cgi;
68         $fsurl = $FS::Mason::Request::FSURL; #kludgy, but what the hell
69         $p = popurl(2, "$fsurl$filename");
70       } else {
71         die "unknown mode $mode";
72       }
73
74   }
75
76 }
77
78 sub callback {
79   RT::Interface::Web::Request::callback(@_);
80 }
81
82 sub request_path {
83   RT::Interface::Web::Request::request_path(@_);
84 }
85
86 1;