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