Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 1 | <?php |
| 2 | |
| 3 | // Set up the global CI functions in their most minimal core representation |
| 4 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 5 | if ( ! function_exists('get_instance')) |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 6 | { |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 7 | function &get_instance() |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 8 | { |
| 9 | $test = CI_TestCase::instance(); |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 10 | return $test->ci_instance(); |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 11 | } |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 12 | } |
| 13 | |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 14 | // -------------------------------------------------------------------- |
| 15 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 16 | if ( ! function_exists('get_config')) |
| 17 | { |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 18 | function &get_config() |
| 19 | { |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 20 | $test = CI_TestCase::instance(); |
Andrey Andreev | 62fd52d | 2012-06-10 07:11:41 +0300 | [diff] [blame^] | 21 | $config = $test->ci_get_config(); |
| 22 | return $config; |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 23 | } |
| 24 | } |
| 25 | |
| 26 | if ( ! function_exists('config_item')) |
| 27 | { |
| 28 | function config_item($item) |
| 29 | { |
| 30 | $config =& get_config(); |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 31 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 32 | if ( ! isset($config[$item])) |
| 33 | { |
| 34 | return FALSE; |
| 35 | } |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 36 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 37 | return $config[$item]; |
Pascal Kriete | 88b2963 | 2011-04-21 01:21:55 -0400 | [diff] [blame] | 38 | } |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 39 | } |
| 40 | |
| 41 | // -------------------------------------------------------------------- |
| 42 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 43 | if ( ! function_exists('load_class')) |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 44 | { |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 45 | function load_class($class, $directory = 'libraries', $prefix = 'CI_') |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 46 | { |
Alex Bilbie | d6d1150 | 2012-06-02 11:12:55 +0100 | [diff] [blame] | 47 | if ($directory !== 'core' OR $prefix !== 'CI_') |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 48 | { |
| 49 | throw new Exception('Not Implemented: Non-core load_class()'); |
| 50 | } |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 51 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 52 | $test = CI_TestCase::instance(); |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 53 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 54 | $obj =& $test->ci_core_class($class); |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 55 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 56 | if (is_string($obj)) |
| 57 | { |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 58 | throw new Exception('Bad Isolation: Use ci_set_core_class to set '.$class); |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 59 | } |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 60 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 61 | return $obj; |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 62 | } |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 63 | } |
| 64 | |
| 65 | // This is sort of meh. Should probably be mocked up with |
| 66 | // controllable output, so that we can test some of our |
| 67 | // security code. The function itself will be tested in the |
| 68 | // bootstrap testsuite. |
| 69 | // -------------------------------------------------------------------- |
| 70 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 71 | if ( ! function_exists('remove_invisible_characters')) |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 72 | { |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 73 | function remove_invisible_characters($str, $url_encoded = TRUE) |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 74 | { |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 75 | $non_displayables = array(); |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 76 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 77 | // every control character except newline (dec 10) |
| 78 | // carriage return (dec 13), and horizontal tab (dec 09) |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 79 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 80 | if ($url_encoded) |
| 81 | { |
| 82 | $non_displayables[] = '/%0[0-8bcef]/'; // url encoded 00-08, 11, 12, 14, 15 |
| 83 | $non_displayables[] = '/%1[0-9a-f]/'; // url encoded 16-31 |
| 84 | } |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 85 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 86 | $non_displayables[] = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S'; // 00-08, 11, 12, 14-31, 127 |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 87 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 88 | do |
| 89 | { |
| 90 | $str = preg_replace($non_displayables, '', $str, -1, $count); |
| 91 | } |
| 92 | while ($count); |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 93 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 94 | return $str; |
| 95 | } |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 96 | } |
| 97 | |
| 98 | |
| 99 | // Clean up error messages |
| 100 | // -------------------------------------------------------------------- |
| 101 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 102 | if ( ! function_exists('show_error')) |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 103 | { |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 104 | function show_error($message, $status_code = 500, $heading = 'An Error Was Encountered') |
| 105 | { |
| 106 | throw new RuntimeException('CI Error: '.$message); |
| 107 | } |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 108 | } |
| 109 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 110 | if ( ! function_exists('show_404')) |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 111 | { |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 112 | function show_404($page = '', $log_error = TRUE) |
| 113 | { |
| 114 | throw new RuntimeException('CI Error: 404'); |
| 115 | } |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 116 | } |
| 117 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 118 | if ( ! function_exists('_exception_handler')) |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 119 | { |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 120 | function _exception_handler($severity, $message, $filepath, $line) |
| 121 | { |
| 122 | throw new RuntimeException('CI Exception: '.$message.' | '.$filepath.' | '.$line); |
| 123 | } |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 124 | } |
| 125 | |
| 126 | |
| 127 | // We assume a few things about our environment ... |
| 128 | // -------------------------------------------------------------------- |
| 129 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 130 | if ( ! function_exists('is_php')) |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 131 | { |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 132 | function is_php($version = '5.0.0') |
| 133 | { |
| 134 | return ! (version_compare(PHP_VERSION, $version) < 0); |
| 135 | } |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 136 | } |
| 137 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 138 | if ( ! function_exists('is_really_writable')) |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 139 | { |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 140 | function is_really_writable($file) |
| 141 | { |
| 142 | return is_writable($file); |
| 143 | } |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 144 | } |
| 145 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 146 | if ( ! function_exists('is_loaded')) |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 147 | { |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 148 | function is_loaded() |
| 149 | { |
| 150 | throw new Exception('Bad Isolation: mock up environment'); |
| 151 | } |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 152 | } |
| 153 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 154 | if ( ! function_exists('log_message')) |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 155 | { |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 156 | function log_message($level = 'error', $message, $php_error = FALSE) |
| 157 | { |
| 158 | return TRUE; |
| 159 | } |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 160 | } |
| 161 | |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 162 | if ( ! function_exists('set_status_header')) |
Pascal Kriete | 69c97a7 | 2011-04-20 21:44:54 -0400 | [diff] [blame] | 163 | { |
Taufan Aditya | b2e10b7 | 2012-05-27 15:31:53 +0700 | [diff] [blame] | 164 | function set_status_header($code = 200, $text = '') |
| 165 | { |
| 166 | return TRUE; |
| 167 | } |
Andrey Andreev | f243ce1 | 2012-06-09 23:34:21 +0300 | [diff] [blame] | 168 | } |