]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/prepend.php
Activated Id substitution for Subversion
[SourceForge/phpwiki.git] / lib / prepend.php
1 <?php
2 /* lib/prepend.php
3  *
4  * Things which must be done and defined before anything else.
5  */
6 $RCS_IDS = '';
7 function rcs_id ($id) { 
8     // Save memory
9     if (defined('DEBUG') and DEBUG)
10         $GLOBALS['RCS_IDS'] .= "$id\n"; 
11 }
12 rcs_id('$Id$');
13
14 // see lib/stdlib.php: phpwiki_version()
15 define('PHPWIKI_VERSION', '1.3.14-20080124');
16
17 /** 
18  * Returns true if current php version is at mimimum a.b.c 
19  * Called: check_php_version(4,1)
20  */
21 function check_php_version ($a = '0', $b = '0', $c = '0') {
22     static $PHP_VERSION;
23     if (!isset($PHP_VERSION))
24         $PHP_VERSION = substr( str_pad( preg_replace('/\D/','', PHP_VERSION), 3, '0'), 0, 3);
25     return ($PHP_VERSION >= ($a.$b.$c));
26 }
27
28 /** PHP5 deprecated old-style globals if !(bool)ini_get('register_long_arrays'). 
29   *  See Bug #1180115
30   * We want to work with those old ones instead of the new superglobals, 
31   * for easier coding.
32   */
33 /*
34 foreach (array('SERVER','REQUEST','GET','POST','SESSION','ENV','COOKIE') as $k) {
35     if (!isset($GLOBALS['HTTP_'.$k.'_VARS']) and isset($GLOBALS['_'.$k])) {
36         $GLOBALS['HTTP_'.$k.'_VARS'] =& $GLOBALS['_'.$k];
37     }
38 }
39 */
40 // A new php-5.1.x feature: Turn off php-5.1.x auto_globals_jit = On, or use this mess below.
41 if (empty($GLOBALS['HTTP_SERVER_VARS'])) {
42     $GLOBALS['HTTP_SERVER_VARS']  =& $_SERVER;
43     $GLOBALS['HTTP_ENV_VARS']     =& $_ENV;
44     $GLOBALS['HTTP_GET_VARS']     =& $_GET;
45     $GLOBALS['HTTP_POST_VARS']    =& $_POST;
46     $GLOBALS['HTTP_SESSION_VARS'] =& $_SESSION;
47     $GLOBALS['HTTP_COOKIE_VARS']  =& $_COOKIE;
48     $GLOBALS['HTTP_REQUEST_VARS'] =& $_REQUEST;
49 }
50 unset($k);
51 // catch connection failures on upgrade
52 if (isset($GLOBALS['HTTP_GET_VARS']['action']) 
53     and $GLOBALS['HTTP_GET_VARS']['action'] == 'upgrade')
54     define('ADODB_ERROR_HANDLER_TYPE', E_USER_WARNING);
55
56 // If your php was compiled with --enable-trans-sid it tries to
57 // add a PHPSESSID query argument to all URL strings when cookie
58 // support isn't detected in the client browser.  For reasons
59 // which aren't entirely clear (PHP bug) this screws up the URLs
60 // generated by PhpWiki.  Therefore, transparent session ids
61 // should be disabled.  This next line does that.
62 //
63 // (At the present time, you will not be able to log-in to PhpWiki,
64 // unless your browser supports cookies.)
65 @ini_set('session.use_trans_sid', 0);
66
67 if (defined('DEBUG') and (DEBUG & 8) and extension_loaded("xdebug")) {
68     xdebug_start_trace("trace"); // on Dbgp protocol add 2
69     xdebug_enable();
70 }
71 if (defined('DEBUG') and (DEBUG & 32) and extension_loaded("apd")) {
72     apd_set_pprof_trace();
73     /*  FUNCTION_TRACE      1
74         ARGS_TRACE          2
75         ASSIGNMENT_TRACE    4
76         STATEMENT_TRACE     8
77         MEMORY_TRACE        16
78         TIMING_TRACE        32
79         SUMMARY_TRACE       64 */
80     //apd_set_session_trace(99);
81 }
82
83 // Used for debugging purposes
84 class DebugTimer {
85     function DebugTimer() {
86         $this->_start = $this->microtime();
87         if (function_exists('posix_times'))
88             $this->_times = posix_times();
89     }
90
91     /**
92      * @param string $which  One of 'real', 'utime', 'stime', 'cutime', 'sutime'
93      * @return float Seconds.
94      */
95     function getTime($which='real', $now=false) {
96         if ($which == 'real')
97             return $this->microtime() - $this->_start;
98
99         if (isset($this->_times)) {
100             if (!$now) $now = posix_times();
101             $ticks = $now[$which] - $this->_times[$which];
102             return $ticks / $this->_CLK_TCK();
103         }
104
105         return 0.0;           // Not available.
106     }
107
108     function getStats() {
109         if (!isset($this->_times)) {
110             // posix_times() not available.
111             return sprintf("real: %.3f", $this->getTime('real'));
112         }
113         $now = posix_times();
114         return sprintf("real: %.3f, user: %.3f, sys: %.3f",
115                        $this->getTime('real'),
116                        $this->getTime('utime', $now),
117                        $this->getTime('stime', $now));
118     }
119         
120     function _CLK_TCK() {
121         // FIXME: this is clearly not always right.
122         // But how to figure out the right value?
123         return 100.0;
124     }
125
126     function microtime(){
127         list($usec, $sec) = explode(" ", microtime());
128         return ((float)$usec + (float)$sec);
129     }
130 }
131 $RUNTIMER = new DebugTimer;
132 /*
133 if (defined('E_STRICT') and (E_ALL & E_STRICT)) // strict php5?
134     error_reporting(E_ALL & ~E_STRICT);         // exclude E_STRICT
135 else
136     error_reporting(E_ALL); // php4
137 //echo " prepend: ", error_reporting();
138 */
139 require_once(dirname(__FILE__).'/ErrorManager.php');
140 require_once(dirname(__FILE__).'/WikiCallback.php');
141
142 // FIXME: deprecated
143 function ExitWiki($errormsg = false)
144 {
145     global $request;
146     static $in_exit = 0;
147
148     if (is_object($request) and method_exists($request,"finish"))
149         $request->finish($errormsg); // NORETURN
150
151     if ($in_exit)
152         exit;
153     
154     $in_exit = true;
155
156     global $ErrorManager;
157     $ErrorManager->flushPostponedErrors();
158    
159     if(!empty($errormsg)) {
160         PrintXML(HTML::br(), $errormsg);
161         print "\n</body></html>";
162     }
163     exit;
164 }
165 if (!defined('DEBUG') or (defined('DEBUG') and DEBUG > 2)) {
166     $ErrorManager->setPostponedErrorMask(E_ALL); // ignore all errors
167     $ErrorManager->setFatalHandler(new WikiFunctionCb('ExitWiki'));
168 } else {
169     $ErrorManager->setPostponedErrorMask(E_USER_NOTICE | E_NOTICE);
170 }
171
172
173 // (c-file-style: "gnu")
174 // Local Variables:
175 // mode: php
176 // tab-width: 8
177 // c-basic-offset: 4
178 // c-hanging-comment-ender-p: nil
179 // indent-tabs-mode: nil
180 // End:   
181 ?>