Fix #7123 - getting abra ready to test
[Pman.Xtuple] / Roo.php
1 <?php
2
3
4 require_once 'Pman/Roo.php';
5
6 /**
7  *
8  * Relay into 'main database' for queries..
9  *
10  */
11
12 class Pman_Xtuple_Roo extends Pman_Roo
13 {
14     
15     // getAuth.. the same..
16     function isMain()
17     {
18         $xt = HTML_FlexyFramework::get()->Xtuple;
19         $main = empty($xt['main_db']) ? false : $xt['main_db'];
20         // migration process can not transfer.
21         // transfer if necessary..
22         $do = DB_DAtaObject::Factory('Person');
23         $ret =  !$main || $do->database() == $main;
24         //var_Dump($ret);
25         return $ret;
26              
27         
28         
29     }
30     
31     function get($tab)
32     {
33         $do = DB_DataObject::factory('Person');
34         $ourdb = substr($do->database(),-2);
35         
36         if (isset($_REQUEST['_roo_office']) && $_REQUEST['_roo_office'] != $ourdb) {
37             return $this->relay('GET',$tab, $_REQUEST['_roo_office']);
38         }
39         
40         if (isset($_REQUEST['_roo_office']) || $this->isMain()) {
41             return parent::get($tab);
42         }
43         
44         $this->relay('GET', $tab);
45     }
46     
47     function post($tab)
48     {
49         $do = DB_DataObject::factory('Person');
50         $ourdb = substr($do->database(),-2);
51         
52         if (isset($_REQUEST['_roo_office']) && $_REQUEST['_roo_office'] != $ourdb) {
53             return $this->relay('POST',$tab, $_REQUEST['_roo_office']);
54         }
55         
56         if (isset($_REQUEST['_roo_office']) || $this->isMain()) {
57             return parent::post($tab);
58         }    
59         $this->relay('POST', $tab);
60         
61     }
62     function relay($meth, $tab, $office = false)
63     {
64         
65         $office = preg_replace('/[^a-z]+/i','', $office);
66         if (!file_exists($this->rootDir.'/'. $office . '.php')) {
67             // error technically.
68             $this->jerr('office no available');
69         }
70         
71         //echo "RELAY?";
72         $ff = HTML_FlexyFramework::get();
73         require_once 'HTTP/Request.php';
74         
75         if (empty($ff->Xtuple['main_url'])) {
76             $ff->Xtuple['main_url'] = 'http://localhost'. $this->baseURL;
77         }
78         
79         $url= $ff->Xtuple['main_url'] . '/Roo/'. $tab ;
80         if (!empty($office)) {
81             $mu = preg_replace('#[a-z]+\.php$#', '', $ff->Xtuple['main_url']) .
82                 preg_replace('#[^a-z]+#', '', $office) . '.php';
83             $url=$mu. '/Roo/'. $tab ;
84         }
85         
86         //var_dump($url);exit;
87         $req = new HTTP_Request( $url );
88         
89         $req->setMethod(
90                     $meth == 'POST' ?
91                         HTTP_REQUEST_METHOD_POST :
92                         HTTP_REQUEST_METHOD_GET
93         );
94         
95         if ($meth == 'POST') {
96             $req->addPostData( $_POST );
97         } else {
98             $req->addRawQueryString($_SERVER['QUERY_STRING']);
99         }
100         
101         
102         $res = $req->sendRequest();
103         if (is_a($res,'PEAR_Error')) {
104             $this->jerr("MAIN REQUEST RETURNED ERROR: ". $res->toString()); 
105         }
106         //echo '<PRE>';print_r($req);exit;
107         
108         foreach($req->getResponseHeader() as $k=>$v) {
109             switch($k) {
110                 case 'connection':
111                 case 'transfer-encoding':
112                 case 'date':
113                 case 'server':
114                 case 'x-powered-by':
115                 case 'expires':
116                 case 'cache-control':
117                 case 'pragma':
118                     $k = false;
119                 default:
120                     break;
121             }
122             if (!$k) {
123                 continue;
124             }
125             //echo $k .": $v <BR/>";
126             header(ucfirst($k) .": $v");
127         }
128         
129         
130         
131         echo $req->getResponseBody();exit;
132          
133     }
134 }