root/trunk/etc/sglBridge.php

Revision 3122, 3.2 kB (checked in by demian, 1 month ago)

bugfix to trunk merge

Line 
1 <?php
2 //  setup seagull environment
3 require_once dirname(__FILE__)  . '/../lib/SGL/FrontController.php';
4 require_once dirname(__FILE__)  . '/../tests/classes/DB.php';
5
6 class TestRunnerInit extends SGL_FrontController
7 {
8     function run()
9     {
10         define('SGL_TEST_MODE', true);
11
12         if (!defined('SGL_INITIALISED')) {
13             SGL_FrontController::init();
14         }
15         //  assign request to registry
16         $input = &SGL_Registry::singleton();
17         $req = SGL_Request::singleton();
18
19         if (PEAR::isError($req)) {
20             //  stop with error page
21             SGL::displayStaticPage($req->getMessage());
22         }
23         $input->setRequest($req);
24         $output = &new SGL_Output();
25
26         $process =  new SGL_Task_Init(
27                     new SGL_Task_DiscoverClientOs(
28                     new SGL_Task_SetupTestDb(
29                     new SGL_Task_SetupTestDbResource(
30                     new SGL_Task_MinimalSession(
31                     new SGL_Task_SetupLangSupport(
32                     new SGL_Void()
33                    ))))));
34
35         $process->process($input, $output);
36     }
37 }
38
39 class SGL_Task_SetupTestDb extends SGL_DecorateProcess
40 {
41     function process(&$input, &$output)
42     {
43         $conf = $GLOBALS['_STR']['CONF'];
44
45         // Create a DSN to create DB (must not include database name from config)
46         $dbType = $conf['database']['type'];
47         if ($dbType == 'mysql') {
48             $dbType = 'mysql_SGL';
49         }
50         if ($dbType == 'mysqli') {
51             $dbType = 'mysqli_SGL';
52         }
53         $protocol = isset($conf['database']['protocol']) ? $conf['database']['protocol'] . '+' : '';
54         $dsn = $dbType . '://' .
55             $conf['database']['user'] . ':' .
56             $conf['database']['pass'] . '@' .
57             $protocol .
58             $conf['database']['host'];
59         $dbh = &SGL_DB::singleton($dsn);
60         if (PEAR::isError($dbh)) {
61             die($dbh->getMessage());
62         }
63
64         $query = 'DROP DATABASE IF EXISTS ' . $conf['database']['name'];
65         $result = $dbh->query($query);
66         $query = 'CREATE DATABASE ' . $conf['database']['name'];
67         $result = $dbh->query($query);
68         $this->processRequest->process($input, $output);
69     }
70 }
71
72 class SGL_Task_SetupTestDbResource extends SGL_DecorateProcess
73 {
74     function process(&$input, &$output)
75     {
76         $locator = &SGL_ServiceLocator::singleton();
77         //  in case
78         $locator->remove('DB');
79         $dbh =& STR_DB::singleton();
80         $locator->register('DB', $dbh);
81
82         $this->processRequest->process($input, $output);
83     }
84 }
85
86 class SGL_Task_MinimalSession extends SGL_DecorateProcess
87 {
88     function process(&$input, &$output)
89     {
90         session_start();
91         $_SESSION['uid'] = 1;
92         $_SESSION['rid'] = 1;
93         $_SESSION['aPrefs'] = array();
94
95         $this->processRequest->process($input, $output);
96     }
97 }
98
99 //  value from php.ini, before sgl modifies it
100 $oldIncludePath = ini_get('include_path');
101
102 TestRunnerInit::run();
103
104 //  add global path, so SimpleTest lib can be included
105 $includeSeparator = (substr(PHP_OS, 0, 3) == 'WIN') ? ';' : ':';
106 ini_set('include_path', ini_get('include_path') . $includeSeparator . $oldIncludePath);
107 ?>
Note: See TracBrowser for help on using the browser.