From c5fd1ab882076447fba5b7bff98fb1853f9677d7 Mon Sep 17 00:00:00 2001 From: satujalur <98323567+satujalur@users.noreply.github.com> Date: Wed, 19 Oct 2022 19:55:47 +0700 Subject: [PATCH 1/6] hapus semua isi ci2 --- donjo-sys/.htaccess | 1 - donjo-sys/core/Benchmark.php | 119 - donjo-sys/core/CodeIgniter.php | 403 ---- donjo-sys/core/Common.php | 560 ----- donjo-sys/core/Config.php | 380 --- donjo-sys/core/Controller.php | 65 - donjo-sys/core/Exceptions.php | 194 -- donjo-sys/core/Hooks.php | 249 -- donjo-sys/core/Input.php | 866 ------- donjo-sys/core/Lang.php | 161 -- donjo-sys/core/Loader.php | 1249 ---------- donjo-sys/core/Model.php | 58 - donjo-sys/core/Output.php | 575 ----- donjo-sys/core/Router.php | 523 ---- donjo-sys/core/Security.php | 902 ------- donjo-sys/core/URI.php | 655 ------ donjo-sys/core/Utf8.php | 166 -- donjo-sys/core/index.html | 10 - donjo-sys/database/DB.php | 163 -- donjo-sys/database/DB_active_rec.php | 2046 ---------------- donjo-sys/database/DB_cache.php | 196 -- donjo-sys/database/DB_driver.php | 1411 ----------- donjo-sys/database/DB_forge.php | 383 --- donjo-sys/database/DB_result.php | 411 ---- donjo-sys/database/DB_utility.php | 415 ---- .../database/drivers/cubrid/cubrid_driver.php | 793 ------- .../database/drivers/cubrid/cubrid_forge.php | 289 --- .../database/drivers/cubrid/cubrid_result.php | 203 -- .../drivers/cubrid/cubrid_utility.php | 109 - donjo-sys/database/drivers/cubrid/index.html | 10 - donjo-sys/database/drivers/index.html | 10 - donjo-sys/database/drivers/mssql/index.html | 10 - .../database/drivers/mssql/mssql_driver.php | 668 ------ .../database/drivers/mssql/mssql_forge.php | 249 -- .../database/drivers/mssql/mssql_result.php | 170 -- .../database/drivers/mssql/mssql_utility.php | 89 - donjo-sys/database/drivers/mysql/index.html | 10 - .../database/drivers/mysql/mysql_driver.php | 769 ------ .../database/drivers/mysql/mysql_forge.php | 274 --- .../database/drivers/mysql/mysql_result.php | 175 -- .../database/drivers/mysql/mysql_utility.php | 211 -- donjo-sys/database/drivers/mysqli/index.html | 10 - .../database/drivers/mysqli/mysqli_driver.php | 767 ------ .../database/drivers/mysqli/mysqli_forge.php | 259 -- .../database/drivers/mysqli/mysqli_result.php | 175 -- .../drivers/mysqli/mysqli_utility.php | 88 - donjo-sys/database/drivers/oci8/index.html | 10 - .../database/drivers/oci8/oci8_driver.php | 809 ------- .../database/drivers/oci8/oci8_forge.php | 249 -- .../database/drivers/oci8/oci8_result.php | 218 -- .../database/drivers/oci8/oci8_utility.php | 88 - donjo-sys/database/drivers/odbc/index.html | 10 - .../database/drivers/odbc/odbc_driver.php | 638 ----- .../database/drivers/odbc/odbc_forge.php | 267 --- .../database/drivers/odbc/odbc_result.php | 229 -- .../database/drivers/odbc/odbc_utility.php | 104 - donjo-sys/database/drivers/pdo/index.html | 10 - donjo-sys/database/drivers/pdo/pdo_driver.php | 812 ------- donjo-sys/database/drivers/pdo/pdo_forge.php | 267 --- donjo-sys/database/drivers/pdo/pdo_result.php | 184 -- .../database/drivers/pdo/pdo_utility.php | 104 - donjo-sys/database/drivers/postgre/index.html | 10 - .../drivers/postgre/postgre_driver.php | 704 ------ .../drivers/postgre/postgre_forge.php | 300 --- .../drivers/postgre/postgre_result.php | 170 -- .../drivers/postgre/postgre_utility.php | 89 - donjo-sys/database/drivers/sqlite/index.html | 10 - .../database/drivers/sqlite/sqlite_driver.php | 659 ------ .../database/drivers/sqlite/sqlite_forge.php | 266 --- .../database/drivers/sqlite/sqlite_result.php | 180 -- .../drivers/sqlite/sqlite_utility.php | 97 - donjo-sys/database/drivers/sqlsrv/index.html | 10 - .../database/drivers/sqlsrv/sqlsrv_driver.php | 604 ----- .../database/drivers/sqlsrv/sqlsrv_forge.php | 246 -- .../database/drivers/sqlsrv/sqlsrv_result.php | 170 -- .../drivers/sqlsrv/sqlsrv_utility.php | 89 - donjo-sys/database/index.html | 10 - donjo-sys/fonts/index.html | 10 - donjo-sys/fonts/texb.ttf | Bin 143830 -> 0 bytes donjo-sys/helpers/array_helper.php | 120 - donjo-sys/helpers/captcha_helper.php | 336 --- donjo-sys/helpers/cookie_helper.php | 104 - donjo-sys/helpers/date_helper.php | 612 ----- donjo-sys/helpers/directory_helper.php | 81 - donjo-sys/helpers/download_helper.php | 107 - donjo-sys/helpers/email_helper.php | 63 - donjo-sys/helpers/file_helper.php | 480 ---- donjo-sys/helpers/form_helper.php | 1055 --------- donjo-sys/helpers/html_helper.php | 437 ---- donjo-sys/helpers/index.html | 10 - donjo-sys/helpers/inflector_helper.php | 204 -- donjo-sys/helpers/language_helper.php | 59 - donjo-sys/helpers/number_helper.php | 77 - donjo-sys/helpers/path_helper.php | 73 - donjo-sys/helpers/security_helper.php | 129 - donjo-sys/helpers/smiley_helper.php | 282 --- donjo-sys/helpers/string_helper.php | 308 --- donjo-sys/helpers/text_helper.php | 527 ----- donjo-sys/helpers/typography_helper.php | 94 - donjo-sys/helpers/url_helper.php | 595 ----- donjo-sys/helpers/xml_helper.php | 72 - donjo-sys/index.html | 10 - donjo-sys/language/english/calendar_lang.php | 51 - donjo-sys/language/english/date_lang.php | 61 - donjo-sys/language/english/db_lang.php | 29 - donjo-sys/language/english/email_lang.php | 24 - .../language/english/form_validation_lang.php | 29 - donjo-sys/language/english/ftp_lang.php | 18 - donjo-sys/language/english/imglib_lang.php | 24 - donjo-sys/language/english/index.html | 10 - donjo-sys/language/english/migration_lang.php | 13 - donjo-sys/language/english/number_lang.php | 10 - donjo-sys/language/english/profiler_lang.php | 25 - donjo-sys/language/english/unit_test_lang.php | 25 - donjo-sys/language/english/upload_lang.php | 22 - donjo-sys/language/index.html | 10 - donjo-sys/libraries/Cache/Cache.php | 216 -- .../libraries/Cache/drivers/Cache_apc.php | 147 -- .../libraries/Cache/drivers/Cache_dummy.php | 126 - .../libraries/Cache/drivers/Cache_file.php | 193 -- .../Cache/drivers/Cache_memcached.php | 214 -- donjo-sys/libraries/Cache/drivers/index.html | 10 - donjo-sys/libraries/Cache/index.html | 10 - donjo-sys/libraries/Calendar.php | 476 ---- donjo-sys/libraries/Cart.php | 552 ----- donjo-sys/libraries/Driver.php | 228 -- donjo-sys/libraries/Email.php | 2093 ----------------- donjo-sys/libraries/Encrypt.php | 501 ---- donjo-sys/libraries/Form_validation.php | 1383 ----------- donjo-sys/libraries/Ftp.php | 660 ------ donjo-sys/libraries/Image_lib.php | 1538 ------------ donjo-sys/libraries/Javascript.php | 872 ------- donjo-sys/libraries/Log.php | 115 - donjo-sys/libraries/Migration.php | 330 --- donjo-sys/libraries/Pagination.php | 341 --- donjo-sys/libraries/Parser.php | 213 -- donjo-sys/libraries/Profiler.php | 559 ----- donjo-sys/libraries/Session.php | 794 ------- donjo-sys/libraries/Sha1.php | 252 -- donjo-sys/libraries/Table.php | 532 ----- donjo-sys/libraries/Trackback.php | 549 ----- donjo-sys/libraries/Typography.php | 409 ---- donjo-sys/libraries/Unit_test.php | 384 --- donjo-sys/libraries/Upload.php | 1109 --------- donjo-sys/libraries/User_agent.php | 550 ----- donjo-sys/libraries/Xmlrpc.php | 1424 ----------- donjo-sys/libraries/Xmlrpcs.php | 613 ----- donjo-sys/libraries/Zip.php | 424 ---- donjo-sys/libraries/index.html | 10 - donjo-sys/libraries/javascript/Jquery.php | 1072 --------- donjo-sys/libraries/javascript/index.html | 10 - 151 files changed, 50217 deletions(-) delete mode 100644 donjo-sys/.htaccess delete mode 100644 donjo-sys/core/Benchmark.php delete mode 100644 donjo-sys/core/CodeIgniter.php delete mode 100644 donjo-sys/core/Common.php delete mode 100644 donjo-sys/core/Config.php delete mode 100644 donjo-sys/core/Controller.php delete mode 100644 donjo-sys/core/Exceptions.php delete mode 100644 donjo-sys/core/Hooks.php delete mode 100644 donjo-sys/core/Input.php delete mode 100644 donjo-sys/core/Lang.php delete mode 100644 donjo-sys/core/Loader.php delete mode 100644 donjo-sys/core/Model.php delete mode 100644 donjo-sys/core/Output.php delete mode 100644 donjo-sys/core/Router.php delete mode 100644 donjo-sys/core/Security.php delete mode 100644 donjo-sys/core/URI.php delete mode 100644 donjo-sys/core/Utf8.php delete mode 100644 donjo-sys/core/index.html delete mode 100644 donjo-sys/database/DB.php delete mode 100644 donjo-sys/database/DB_active_rec.php delete mode 100644 donjo-sys/database/DB_cache.php delete mode 100644 donjo-sys/database/DB_driver.php delete mode 100644 donjo-sys/database/DB_forge.php delete mode 100644 donjo-sys/database/DB_result.php delete mode 100644 donjo-sys/database/DB_utility.php delete mode 100644 donjo-sys/database/drivers/cubrid/cubrid_driver.php delete mode 100644 donjo-sys/database/drivers/cubrid/cubrid_forge.php delete mode 100644 donjo-sys/database/drivers/cubrid/cubrid_result.php delete mode 100644 donjo-sys/database/drivers/cubrid/cubrid_utility.php delete mode 100644 donjo-sys/database/drivers/cubrid/index.html delete mode 100644 donjo-sys/database/drivers/index.html delete mode 100644 donjo-sys/database/drivers/mssql/index.html delete mode 100644 donjo-sys/database/drivers/mssql/mssql_driver.php delete mode 100644 donjo-sys/database/drivers/mssql/mssql_forge.php delete mode 100644 donjo-sys/database/drivers/mssql/mssql_result.php delete mode 100644 donjo-sys/database/drivers/mssql/mssql_utility.php delete mode 100644 donjo-sys/database/drivers/mysql/index.html delete mode 100644 donjo-sys/database/drivers/mysql/mysql_driver.php delete mode 100644 donjo-sys/database/drivers/mysql/mysql_forge.php delete mode 100644 donjo-sys/database/drivers/mysql/mysql_result.php delete mode 100644 donjo-sys/database/drivers/mysql/mysql_utility.php delete mode 100644 donjo-sys/database/drivers/mysqli/index.html delete mode 100644 donjo-sys/database/drivers/mysqli/mysqli_driver.php delete mode 100644 donjo-sys/database/drivers/mysqli/mysqli_forge.php delete mode 100644 donjo-sys/database/drivers/mysqli/mysqli_result.php delete mode 100644 donjo-sys/database/drivers/mysqli/mysqli_utility.php delete mode 100644 donjo-sys/database/drivers/oci8/index.html delete mode 100644 donjo-sys/database/drivers/oci8/oci8_driver.php delete mode 100644 donjo-sys/database/drivers/oci8/oci8_forge.php delete mode 100644 donjo-sys/database/drivers/oci8/oci8_result.php delete mode 100644 donjo-sys/database/drivers/oci8/oci8_utility.php delete mode 100644 donjo-sys/database/drivers/odbc/index.html delete mode 100644 donjo-sys/database/drivers/odbc/odbc_driver.php delete mode 100644 donjo-sys/database/drivers/odbc/odbc_forge.php delete mode 100644 donjo-sys/database/drivers/odbc/odbc_result.php delete mode 100644 donjo-sys/database/drivers/odbc/odbc_utility.php delete mode 100644 donjo-sys/database/drivers/pdo/index.html delete mode 100644 donjo-sys/database/drivers/pdo/pdo_driver.php delete mode 100644 donjo-sys/database/drivers/pdo/pdo_forge.php delete mode 100644 donjo-sys/database/drivers/pdo/pdo_result.php delete mode 100644 donjo-sys/database/drivers/pdo/pdo_utility.php delete mode 100644 donjo-sys/database/drivers/postgre/index.html delete mode 100644 donjo-sys/database/drivers/postgre/postgre_driver.php delete mode 100644 donjo-sys/database/drivers/postgre/postgre_forge.php delete mode 100644 donjo-sys/database/drivers/postgre/postgre_result.php delete mode 100644 donjo-sys/database/drivers/postgre/postgre_utility.php delete mode 100644 donjo-sys/database/drivers/sqlite/index.html delete mode 100644 donjo-sys/database/drivers/sqlite/sqlite_driver.php delete mode 100644 donjo-sys/database/drivers/sqlite/sqlite_forge.php delete mode 100644 donjo-sys/database/drivers/sqlite/sqlite_result.php delete mode 100644 donjo-sys/database/drivers/sqlite/sqlite_utility.php delete mode 100644 donjo-sys/database/drivers/sqlsrv/index.html delete mode 100644 donjo-sys/database/drivers/sqlsrv/sqlsrv_driver.php delete mode 100644 donjo-sys/database/drivers/sqlsrv/sqlsrv_forge.php delete mode 100644 donjo-sys/database/drivers/sqlsrv/sqlsrv_result.php delete mode 100644 donjo-sys/database/drivers/sqlsrv/sqlsrv_utility.php delete mode 100644 donjo-sys/database/index.html delete mode 100644 donjo-sys/fonts/index.html delete mode 100644 donjo-sys/fonts/texb.ttf delete mode 100644 donjo-sys/helpers/array_helper.php delete mode 100644 donjo-sys/helpers/captcha_helper.php delete mode 100644 donjo-sys/helpers/cookie_helper.php delete mode 100644 donjo-sys/helpers/date_helper.php delete mode 100644 donjo-sys/helpers/directory_helper.php delete mode 100644 donjo-sys/helpers/download_helper.php delete mode 100644 donjo-sys/helpers/email_helper.php delete mode 100644 donjo-sys/helpers/file_helper.php delete mode 100644 donjo-sys/helpers/form_helper.php delete mode 100644 donjo-sys/helpers/html_helper.php delete mode 100644 donjo-sys/helpers/index.html delete mode 100644 donjo-sys/helpers/inflector_helper.php delete mode 100644 donjo-sys/helpers/language_helper.php delete mode 100644 donjo-sys/helpers/number_helper.php delete mode 100644 donjo-sys/helpers/path_helper.php delete mode 100644 donjo-sys/helpers/security_helper.php delete mode 100644 donjo-sys/helpers/smiley_helper.php delete mode 100644 donjo-sys/helpers/string_helper.php delete mode 100644 donjo-sys/helpers/text_helper.php delete mode 100644 donjo-sys/helpers/typography_helper.php delete mode 100644 donjo-sys/helpers/url_helper.php delete mode 100644 donjo-sys/helpers/xml_helper.php delete mode 100644 donjo-sys/index.html delete mode 100644 donjo-sys/language/english/calendar_lang.php delete mode 100644 donjo-sys/language/english/date_lang.php delete mode 100644 donjo-sys/language/english/db_lang.php delete mode 100644 donjo-sys/language/english/email_lang.php delete mode 100644 donjo-sys/language/english/form_validation_lang.php delete mode 100644 donjo-sys/language/english/ftp_lang.php delete mode 100644 donjo-sys/language/english/imglib_lang.php delete mode 100644 donjo-sys/language/english/index.html delete mode 100644 donjo-sys/language/english/migration_lang.php delete mode 100644 donjo-sys/language/english/number_lang.php delete mode 100644 donjo-sys/language/english/profiler_lang.php delete mode 100644 donjo-sys/language/english/unit_test_lang.php delete mode 100644 donjo-sys/language/english/upload_lang.php delete mode 100644 donjo-sys/language/index.html delete mode 100644 donjo-sys/libraries/Cache/Cache.php delete mode 100644 donjo-sys/libraries/Cache/drivers/Cache_apc.php delete mode 100644 donjo-sys/libraries/Cache/drivers/Cache_dummy.php delete mode 100644 donjo-sys/libraries/Cache/drivers/Cache_file.php delete mode 100644 donjo-sys/libraries/Cache/drivers/Cache_memcached.php delete mode 100644 donjo-sys/libraries/Cache/drivers/index.html delete mode 100644 donjo-sys/libraries/Cache/index.html delete mode 100644 donjo-sys/libraries/Calendar.php delete mode 100644 donjo-sys/libraries/Cart.php delete mode 100644 donjo-sys/libraries/Driver.php delete mode 100644 donjo-sys/libraries/Email.php delete mode 100644 donjo-sys/libraries/Encrypt.php delete mode 100644 donjo-sys/libraries/Form_validation.php delete mode 100644 donjo-sys/libraries/Ftp.php delete mode 100644 donjo-sys/libraries/Image_lib.php delete mode 100644 donjo-sys/libraries/Javascript.php delete mode 100644 donjo-sys/libraries/Log.php delete mode 100644 donjo-sys/libraries/Migration.php delete mode 100644 donjo-sys/libraries/Pagination.php delete mode 100644 donjo-sys/libraries/Parser.php delete mode 100644 donjo-sys/libraries/Profiler.php delete mode 100644 donjo-sys/libraries/Session.php delete mode 100644 donjo-sys/libraries/Sha1.php delete mode 100644 donjo-sys/libraries/Table.php delete mode 100644 donjo-sys/libraries/Trackback.php delete mode 100644 donjo-sys/libraries/Typography.php delete mode 100644 donjo-sys/libraries/Unit_test.php delete mode 100644 donjo-sys/libraries/Upload.php delete mode 100644 donjo-sys/libraries/User_agent.php delete mode 100644 donjo-sys/libraries/Xmlrpc.php delete mode 100644 donjo-sys/libraries/Xmlrpcs.php delete mode 100644 donjo-sys/libraries/Zip.php delete mode 100644 donjo-sys/libraries/index.html delete mode 100644 donjo-sys/libraries/javascript/Jquery.php delete mode 100644 donjo-sys/libraries/javascript/index.html diff --git a/donjo-sys/.htaccess b/donjo-sys/.htaccess deleted file mode 100644 index 14249c50b..000000000 --- a/donjo-sys/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Deny from all \ No newline at end of file diff --git a/donjo-sys/core/Benchmark.php b/donjo-sys/core/Benchmark.php deleted file mode 100644 index daffa2923..000000000 --- a/donjo-sys/core/Benchmark.php +++ /dev/null @@ -1,119 +0,0 @@ -marker[$name] = microtime(); - } - - // -------------------------------------------------------------------- - - /** - * Calculates the time difference between two marked points. - * - * If the first parameter is empty this function instead returns the - * {elapsed_time} pseudo-variable. This permits the full system - * execution time to be shown in a template. The output class will - * swap the real value for this variable. - * - * @access public - * @param string a particular marked point - * @param string a particular marked point - * @param integer the number of decimal places - * @return mixed - */ - function elapsed_time($point1 = '', $point2 = '', $decimals = 4) - { - if ($point1 == '') - { - return '{elapsed_time}'; - } - - if ( ! isset($this->marker[$point1])) - { - return ''; - } - - if ( ! isset($this->marker[$point2])) - { - $this->marker[$point2] = microtime(); - } - - list($sm, $ss) = explode(' ', $this->marker[$point1]); - list($em, $es) = explode(' ', $this->marker[$point2]); - - return number_format(($em + $es) - ($sm + $ss), $decimals); - } - - // -------------------------------------------------------------------- - - /** - * Memory Usage - * - * This function returns the {memory_usage} pseudo-variable. - * This permits it to be put it anywhere in a template - * without the memory being calculated until the end. - * The output class will swap the real value for this variable. - * - * @access public - * @return string - */ - function memory_usage() - { - return '{memory_usage}'; - } - -} - -// END CI_Benchmark class - -/* End of file Benchmark.php */ -/* Location: ./system/core/Benchmark.php */ \ No newline at end of file diff --git a/donjo-sys/core/CodeIgniter.php b/donjo-sys/core/CodeIgniter.php deleted file mode 100644 index af3d743b9..000000000 --- a/donjo-sys/core/CodeIgniter.php +++ /dev/null @@ -1,403 +0,0 @@ - $assign_to_config['subclass_prefix'])); - } - -/* - * ------------------------------------------------------ - * Set a liberal script execution time limit - * ------------------------------------------------------ - */ - if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0) - { - @set_time_limit(300); - } - -/* - * ------------------------------------------------------ - * Start the timer... tick tock tick tock... - * ------------------------------------------------------ - */ - $BM =& load_class('Benchmark', 'core'); - $BM->mark('total_execution_time_start'); - $BM->mark('loading_time:_base_classes_start'); - -/* - * ------------------------------------------------------ - * Instantiate the hooks class - * ------------------------------------------------------ - */ - $EXT =& load_class('Hooks', 'core'); - -/* - * ------------------------------------------------------ - * Is there a "pre_system" hook? - * ------------------------------------------------------ - */ - $EXT->_call_hook('pre_system'); - -/* - * ------------------------------------------------------ - * Instantiate the config class - * ------------------------------------------------------ - */ - $CFG =& load_class('Config', 'core'); - - // Do we have any manually set config items in the index.php file? - if (isset($assign_to_config)) - { - $CFG->_assign_to_config($assign_to_config); - } - -/* - * ------------------------------------------------------ - * Instantiate the UTF-8 class - * ------------------------------------------------------ - * - * Note: Order here is rather important as the UTF-8 - * class needs to be used very early on, but it cannot - * properly determine if UTf-8 can be supported until - * after the Config class is instantiated. - * - */ - - $UNI =& load_class('Utf8', 'core'); - -/* - * ------------------------------------------------------ - * Instantiate the URI class - * ------------------------------------------------------ - */ - $URI =& load_class('URI', 'core'); - -/* - * ------------------------------------------------------ - * Instantiate the routing class and set the routing - * ------------------------------------------------------ - */ - $RTR =& load_class('Router', 'core'); - $RTR->_set_routing(); - - // Set any routing overrides that may exist in the main index file - if (isset($routing)) - { - $RTR->_set_overrides($routing); - } - -/* - * ------------------------------------------------------ - * Instantiate the output class - * ------------------------------------------------------ - */ - $OUT =& load_class('Output', 'core'); - -/* - * ------------------------------------------------------ - * Is there a valid cache file? If so, we're done... - * ------------------------------------------------------ - */ - if ($EXT->_call_hook('cache_override') === FALSE) - { - if ($OUT->_display_cache($CFG, $URI) == TRUE) - { - exit; - } - } - -/* - * ----------------------------------------------------- - * Load the security class for xss and csrf support - * ----------------------------------------------------- - */ - $SEC =& load_class('Security', 'core'); - -/* - * ------------------------------------------------------ - * Load the Input class and sanitize globals - * ------------------------------------------------------ - */ - $IN =& load_class('Input', 'core'); - -/* - * ------------------------------------------------------ - * Load the Language class - * ------------------------------------------------------ - */ - $LANG =& load_class('Lang', 'core'); - -/* - * ------------------------------------------------------ - * Load the app controller and local controller - * ------------------------------------------------------ - * - */ - // Load the base controller class - require BASEPATH.'core/Controller.php'; - - function &get_instance() - { - return CI_Controller::get_instance(); - } - - - if (file_exists(APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php')) - { - require APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php'; - } - - // Load the local application controller - // Note: The Router class automatically validates the controller path using the router->_validate_request(). - // If this include fails it means that the default controller in the Routes.php file is not resolving to something valid. - if ( ! file_exists(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php')) - { - show_error('Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid.'); - } - - include(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php'); - - // Set a mark point for benchmarking - $BM->mark('loading_time:_base_classes_end'); - -/* - * ------------------------------------------------------ - * Security check - * ------------------------------------------------------ - * - * None of the functions in the app controller or the - * loader class can be called via the URI, nor can - * controller functions that begin with an underscore - */ - $class = $RTR->fetch_class(); - $method = $RTR->fetch_method(); - - if ( ! class_exists($class) - OR strncmp($method, '_', 1) == 0 - OR in_array(strtolower($method), array_map('strtolower', get_class_methods('CI_Controller'))) - ) - { - if ( ! empty($RTR->routes['404_override'])) - { - $x = explode('/', $RTR->routes['404_override']); - $class = $x[0]; - $method = (isset($x[1]) ? $x[1] : 'index'); - if ( ! class_exists($class)) - { - if ( ! file_exists(APPPATH.'controllers/'.$class.'.php')) - { - show_404("{$class}/{$method}"); - } - - include_once(APPPATH.'controllers/'.$class.'.php'); - } - } - else - { - show_404("{$class}/{$method}"); - } - } - -/* - * ------------------------------------------------------ - * Is there a "pre_controller" hook? - * ------------------------------------------------------ - */ - $EXT->_call_hook('pre_controller'); - -/* - * ------------------------------------------------------ - * Instantiate the requested controller - * ------------------------------------------------------ - */ - // Mark a start point so we can benchmark the controller - $BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_start'); - - $CI = new $class(); - -/* - * ------------------------------------------------------ - * Is there a "post_controller_constructor" hook? - * ------------------------------------------------------ - */ - $EXT->_call_hook('post_controller_constructor'); - -/* - * ------------------------------------------------------ - * Call the requested method - * ------------------------------------------------------ - */ - // Is there a "remap" function? If so, we call it instead - if (method_exists($CI, '_remap')) - { - $CI->_remap($method, array_slice($URI->rsegments, 2)); - } - else - { - // is_callable() returns TRUE on some versions of PHP 5 for private and protected - // methods, so we'll use this workaround for consistent behavior - if ( ! in_array(strtolower($method), array_map('strtolower', get_class_methods($CI)))) - { - // Check and see if we are using a 404 override and use it. - if ( ! empty($RTR->routes['404_override'])) - { - $x = explode('/', $RTR->routes['404_override']); - $class = $x[0]; - $method = (isset($x[1]) ? $x[1] : 'index'); - if ( ! class_exists($class)) - { - if ( ! file_exists(APPPATH.'controllers/'.$class.'.php')) - { - show_404("{$class}/{$method}"); - } - - include_once(APPPATH.'controllers/'.$class.'.php'); - unset($CI); - $CI = new $class(); - } - } - else - { - show_404("{$class}/{$method}"); - } - } - - // Call the requested method. - // Any URI segments present (besides the class/function) will be passed to the method for convenience - call_user_func_array(array(&$CI, $method), array_slice($URI->rsegments, 2)); - } - - - // Mark a benchmark end point - $BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_end'); - -/* - * ------------------------------------------------------ - * Is there a "post_controller" hook? - * ------------------------------------------------------ - */ - $EXT->_call_hook('post_controller'); - -/* - * ------------------------------------------------------ - * Send the final rendered output to the browser - * ------------------------------------------------------ - */ - if ($EXT->_call_hook('display_override') === FALSE) - { - $OUT->_display(); - } - -/* - * ------------------------------------------------------ - * Is there a "post_system" hook? - * ------------------------------------------------------ - */ - $EXT->_call_hook('post_system'); - -/* - * ------------------------------------------------------ - * Close the DB connection if one exists - * ------------------------------------------------------ - */ - if (class_exists('CI_DB') AND isset($CI->db)) - { - $CI->db->close(); - } - - -/* End of file CodeIgniter.php */ -/* Location: ./system/core/CodeIgniter.php */ \ No newline at end of file diff --git a/donjo-sys/core/Common.php b/donjo-sys/core/Common.php deleted file mode 100644 index 5e56aa094..000000000 --- a/donjo-sys/core/Common.php +++ /dev/null @@ -1,560 +0,0 @@ - 0) - { - foreach ($replace as $key => $val) - { - if (isset($config[$key])) - { - $config[$key] = $val; - } - } - } - - $_config[0] =& $config; - return $_config[0]; - } -} - -// ------------------------------------------------------------------------ - -/** -* Returns the specified config item -* -* @access public -* @return mixed -*/ -if ( ! function_exists('config_item')) -{ - function config_item($item) - { - static $_config_item = array(); - - if ( ! isset($_config_item[$item])) - { - $config =& get_config(); - - if ( ! isset($config[$item])) - { - return FALSE; - } - $_config_item[$item] = $config[$item]; - } - - return $_config_item[$item]; - } -} - -// ------------------------------------------------------------------------ - -/** -* Error Handler -* -* This function lets us invoke the exception class and -* display errors using the standard error template located -* in application/errors/errors.php -* This function will send the error page directly to the -* browser and exit. -* -* @access public -* @return void -*/ -if ( ! function_exists('show_error')) -{ - function show_error($message, $status_code = 500, $heading = 'An Error Was Encountered') - { - $_error =& load_class('Exceptions', 'core'); - echo $_error->show_error($heading, $message, 'error_general', $status_code); - exit; - } -} - -// ------------------------------------------------------------------------ - -/** -* 404 Page Handler -* -* This function is similar to the show_error() function above -* However, instead of the standard error template it displays -* 404 errors. -* -* @access public -* @return void -*/ -if ( ! function_exists('show_404')) -{ - function show_404($page = '', $log_error = TRUE) - { - $_error =& load_class('Exceptions', 'core'); - $_error->show_404($page, $log_error); - exit; - } -} - -// ------------------------------------------------------------------------ - -/** -* Error Logging Interface -* -* We use this as a simple mechanism to access the logging -* class and send messages to be logged. -* -* @access public -* @return void -*/ -if ( ! function_exists('log_message')) -{ - function log_message($level = 'error', $message, $php_error = FALSE) - { - static $_log; - - if (config_item('log_threshold') == 0) - { - return; - } - - $_log =& load_class('Log'); - $_log->write_log($level, $message, $php_error); - } -} - -// ------------------------------------------------------------------------ - -/** - * Set HTTP Status Header - * - * @access public - * @param int the status code - * @param string - * @return void - */ -if ( ! function_exists('set_status_header')) -{ - function set_status_header($code = 200, $text = '') - { - $stati = array( - 200 => 'OK', - 201 => 'Created', - 202 => 'Accepted', - 203 => 'Non-Authoritative Information', - 204 => 'No Content', - 205 => 'Reset Content', - 206 => 'Partial Content', - - 300 => 'Multiple Choices', - 301 => 'Moved Permanently', - 302 => 'Found', - 304 => 'Not Modified', - 305 => 'Use Proxy', - 307 => 'Temporary Redirect', - - 400 => 'Bad Request', - 401 => 'Unauthorized', - 403 => 'Forbidden', - 404 => 'Not Found', - 405 => 'Method Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Proxy Authentication Required', - 408 => 'Request Timeout', - 409 => 'Conflict', - 410 => 'Gone', - 411 => 'Length Required', - 412 => 'Precondition Failed', - 413 => 'Request Entity Too Large', - 414 => 'Request-URI Too Long', - 415 => 'Unsupported Media Type', - 416 => 'Requested Range Not Satisfiable', - 417 => 'Expectation Failed', - - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', - 504 => 'Gateway Timeout', - 505 => 'HTTP Version Not Supported' - ); - - if ($code == '' OR ! is_numeric($code)) - { - show_error('Status codes must be numeric', 500); - } - - if (isset($stati[$code]) AND $text == '') - { - $text = $stati[$code]; - } - - if ($text == '') - { - show_error('No status text available. Please check your status code number or supply your own message text.', 500); - } - - $server_protocol = (isset($_SERVER['SERVER_PROTOCOL'])) ? $_SERVER['SERVER_PROTOCOL'] : FALSE; - - if (substr(php_sapi_name(), 0, 3) == 'cgi') - { - header("Status: {$code} {$text}", TRUE); - } - elseif ($server_protocol == 'HTTP/1.1' OR $server_protocol == 'HTTP/1.0') - { - header($server_protocol." {$code} {$text}", TRUE, $code); - } - else - { - header("HTTP/1.1 {$code} {$text}", TRUE, $code); - } - } -} - -// -------------------------------------------------------------------- - -/** -* Exception Handler -* -* This is the custom exception handler that is declaired at the top -* of Codeigniter.php. The main reason we use this is to permit -* PHP errors to be logged in our own log files since the user may -* not have access to server logs. Since this function -* effectively intercepts PHP errors, however, we also need -* to display errors based on the current error_reporting level. -* We do that with the use of a PHP error template. -* -* @access private -* @return void -*/ -if ( ! function_exists('_exception_handler')) -{ - function _exception_handler($severity, $message, $filepath, $line) - { - // We don't bother with "strict" notices since they tend to fill up - // the log file with excess information that isn't normally very helpful. - if ($severity == E_STRICT) - { - return; - } - - $_error =& load_class('Exceptions', 'core'); - - // Should we display the error? We'll get the current error_reporting - // level and add its bits with the severity bits to find out. - if (($severity & error_reporting()) == $severity) - { - $_error->show_php_error($severity, $message, $filepath, $line); - } - - // Should we log the error? No? We're done... - if (config_item('log_threshold') == 0) - { - return; - } - - $_error->log_exception($severity, $message, $filepath, $line); - } -} - -// -------------------------------------------------------------------- - -/** - * Remove Invisible Characters - * - * This prevents sandwiching null characters - * between ascii characters, like Java\0script. - * - * @access public - * @param string - * @return string - */ -if ( ! function_exists('remove_invisible_characters')) -{ - function remove_invisible_characters($str, $url_encoded = TRUE) - { - $non_displayables = array(); - - // every control character except newline (dec 10) - // carriage return (dec 13), and horizontal tab (dec 09) - - if ($url_encoded) - { - $non_displayables[] = '/%0[0-8bcef]/'; // url encoded 00-08, 11, 12, 14, 15 - $non_displayables[] = '/%1[0-9a-f]/'; // url encoded 16-31 - } - - $non_displayables[] = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S'; // 00-08, 11, 12, 14-31, 127 - - do - { - $str = preg_replace($non_displayables, '', $str, -1, $count); - } - while ($count); - - return $str; - } -} - -// ------------------------------------------------------------------------ - -/** -* Returns HTML escaped variable -* -* @access public -* @param mixed -* @return mixed -*/ -if ( ! function_exists('html_escape')) -{ - function html_escape($var) - { - if (is_array($var)) - { - return array_map('html_escape', $var); - } - else - { - return htmlspecialchars($var, ENT_QUOTES, config_item('charset')); - } - } -} - -/* End of file Common.php */ -/* Location: ./system/core/Common.php */ \ No newline at end of file diff --git a/donjo-sys/core/Config.php b/donjo-sys/core/Config.php deleted file mode 100644 index 6051b1d8a..000000000 --- a/donjo-sys/core/Config.php +++ /dev/null @@ -1,380 +0,0 @@ -config =& get_config(); - log_message('debug', "Config Class Initialized"); - - // Set the base_url automatically if none was provided - if ($this->config['base_url'] == '') - { - if (isset($_SERVER['SERVER_ADDR'])) - { - $base_url = (empty($_SERVER['HTTPS']) OR strtolower($_SERVER['HTTPS']) === 'off') ? 'http' : 'https'; - $base_url .= '://'.$_SERVER['SERVER_ADDR']; - $base_url .= substr($_SERVER['SCRIPT_NAME'], 0, strpos($_SERVER['SCRIPT_NAME'], basename($_SERVER['SCRIPT_FILENAME']))); - } - - else - { - $base_url = 'http://localhost/'; - } - - $this->set_item('base_url', $base_url); - } - } - - // -------------------------------------------------------------------- - - /** - * Load Config File - * - * @access public - * @param string the config file name - * @param boolean if configuration values should be loaded into their own section - * @param boolean true if errors should just return false, false if an error message should be displayed - * @return boolean if the file was loaded correctly - */ - function load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE) - { - $file = ($file == '') ? 'config' : str_replace('.php', '', $file); - $found = FALSE; - $loaded = FALSE; - - $check_locations = defined('ENVIRONMENT') - ? array(ENVIRONMENT.'/'.$file, $file) - : array($file); - - foreach ($this->_config_paths as $path) - { - foreach ($check_locations as $location) - { - $file_path = $path.'config/'.$location.'.php'; - - if (in_array($file_path, $this->is_loaded, TRUE)) - { - $loaded = TRUE; - continue 2; - } - - if (file_exists($file_path)) - { - $found = TRUE; - break; - } - } - - if ($found === FALSE) - { - continue; - } - - include($file_path); - - if ( ! isset($config) OR ! is_array($config)) - { - if ($fail_gracefully === TRUE) - { - return FALSE; - } - show_error('Your '.$file_path.' file does not appear to contain a valid configuration array.'); - } - - if ($use_sections === TRUE) - { - if (isset($this->config[$file])) - { - $this->config[$file] = array_merge($this->config[$file], $config); - } - else - { - $this->config[$file] = $config; - } - } - else - { - $this->config = array_merge($this->config, $config); - } - - $this->is_loaded[] = $file_path; - unset($config); - - $loaded = TRUE; - log_message('debug', 'Config file loaded: '.$file_path); - break; - } - - if ($loaded === FALSE) - { - if ($fail_gracefully === TRUE) - { - return FALSE; - } - show_error('The configuration file '.$file.'.php does not exist.'); - } - - return TRUE; - } - - // -------------------------------------------------------------------- - - /** - * Fetch a config file item - * - * - * @access public - * @param string the config item name - * @param string the index name - * @param bool - * @return string - */ - function item($item, $index = '') - { - if ($index == '') - { - if ( ! isset($this->config[$item])) - { - return FALSE; - } - - $pref = $this->config[$item]; - } - else - { - if ( ! isset($this->config[$index])) - { - return FALSE; - } - - if ( ! isset($this->config[$index][$item])) - { - return FALSE; - } - - $pref = $this->config[$index][$item]; - } - - return $pref; - } - - // -------------------------------------------------------------------- - - /** - * Fetch a config file item - adds slash after item (if item is not empty) - * - * @access public - * @param string the config item name - * @param bool - * @return string - */ - function slash_item($item) - { - if ( ! isset($this->config[$item])) - { - return FALSE; - } - if( trim($this->config[$item]) == '') - { - return ''; - } - - return rtrim($this->config[$item], '/').'/'; - } - - // -------------------------------------------------------------------- - - /** - * Site URL - * Returns base_url . index_page [. uri_string] - * - * @access public - * @param string the URI string - * @return string - */ - function site_url($uri = '') - { - if ($uri == '') - { - return $this->slash_item('base_url').$this->item('index_page'); - } - - if ($this->item('enable_query_strings') == FALSE) - { - $suffix = ($this->item('url_suffix') == FALSE) ? '' : $this->item('url_suffix'); - return $this->slash_item('base_url').$this->slash_item('index_page').$this->_uri_string($uri).$suffix; - } - else - { - return $this->slash_item('base_url').$this->item('index_page').'?'.$this->_uri_string($uri); - } - } - - // ------------------------------------------------------------- - - /** - * Base URL - * Returns base_url [. uri_string] - * - * @access public - * @param string $uri - * @return string - */ - function base_url($uri = '') - { - return $this->slash_item('base_url').ltrim($this->_uri_string($uri), '/'); - } - - // ------------------------------------------------------------- - - /** - * Build URI string for use in Config::site_url() and Config::base_url() - * - * @access protected - * @param $uri - * @return string - */ - protected function _uri_string($uri) - { - if ($this->item('enable_query_strings') == FALSE) - { - if (is_array($uri)) - { - $uri = implode('/', $uri); - } - $uri = trim($uri, '/'); - } - else - { - if (is_array($uri)) - { - $i = 0; - $str = ''; - foreach ($uri as $key => $val) - { - $prefix = ($i == 0) ? '' : '&'; - $str .= $prefix.$key.'='.$val; - $i++; - } - $uri = $str; - } - } - return $uri; - } - - // -------------------------------------------------------------------- - - /** - * System URL - * - * @access public - * @return string - */ - function system_url() - { - $x = explode("/", preg_replace("|/*(.+?)/*$|", "\\1", BASEPATH)); - return $this->slash_item('base_url').end($x).'/'; - } - - // -------------------------------------------------------------------- - - /** - * Set a config file item - * - * @access public - * @param string the config item key - * @param string the config item value - * @return void - */ - function set_item($item, $value) - { - $this->config[$item] = $value; - } - - // -------------------------------------------------------------------- - - /** - * Assign to Config - * - * This function is called by the front controller (CodeIgniter.php) - * after the Config class is instantiated. It permits config items - * to be assigned or overriden by variables contained in the index.php file - * - * @access private - * @param array - * @return void - */ - function _assign_to_config($items = array()) - { - if (is_array($items)) - { - foreach ($items as $key => $val) - { - $this->set_item($key, $val); - } - } - } -} - -// END CI_Config class - -/* End of file Config.php */ -/* Location: ./system/core/Config.php */ diff --git a/donjo-sys/core/Controller.php b/donjo-sys/core/Controller.php deleted file mode 100644 index e05362ca7..000000000 --- a/donjo-sys/core/Controller.php +++ /dev/null @@ -1,65 +0,0 @@ - $class) - { - $this->$var =& load_class($class); - } - - $this->load =& load_class('Loader', 'core'); - - $this->load->initialize(); - - log_message('debug', "Controller Class Initialized"); - } - - public static function &get_instance() - { - return self::$instance; - } -} -// END Controller class - -/* End of file Controller.php */ -/* Location: ./system/core/Controller.php */ \ No newline at end of file diff --git a/donjo-sys/core/Exceptions.php b/donjo-sys/core/Exceptions.php deleted file mode 100644 index 4ca2fafb5..000000000 --- a/donjo-sys/core/Exceptions.php +++ /dev/null @@ -1,194 +0,0 @@ - 'Error', - E_WARNING => 'Warning', - E_PARSE => 'Parsing Error', - E_NOTICE => 'Notice', - E_CORE_ERROR => 'Core Error', - E_CORE_WARNING => 'Core Warning', - E_COMPILE_ERROR => 'Compile Error', - E_COMPILE_WARNING => 'Compile Warning', - E_USER_ERROR => 'User Error', - E_USER_WARNING => 'User Warning', - E_USER_NOTICE => 'User Notice', - E_STRICT => 'Runtime Notice' - ); - - - /** - * Constructor - */ - public function __construct() - { - $this->ob_level = ob_get_level(); - // Note: Do not log messages from this constructor. - } - - // -------------------------------------------------------------------- - - /** - * Exception Logger - * - * This function logs PHP generated error messages - * - * @access private - * @param string the error severity - * @param string the error string - * @param string the error filepath - * @param string the error line number - * @return string - */ - function log_exception($severity, $message, $filepath, $line) - { - $severity = ( ! isset($this->levels[$severity])) ? $severity : $this->levels[$severity]; - - log_message('error', 'Severity: '.$severity.' --> '.$message. ' '.$filepath.' '.$line, TRUE); - } - - // -------------------------------------------------------------------- - - /** - * 404 Page Not Found Handler - * - * @access private - * @param string the page - * @param bool log error yes/no - * @return string - */ - function show_404($page = '', $log_error = TRUE) - { - $heading = "404 Page Not Found"; - $message = "The page you requested was not found."; - - // By default we log this, but allow a dev to skip it - if ($log_error) - { - log_message('error', '404 Page Not Found --> '.$page); - } - - echo $this->show_error($heading, $message, 'error_404', 404); - exit; - } - - // -------------------------------------------------------------------- - - /** - * General Error Page - * - * This function takes an error message as input - * (either as a string or an array) and displays - * it using the specified template. - * - * @access private - * @param string the heading - * @param string the message - * @param string the template name - * @param int the status code - * @return string - */ - function show_error($heading, $message, $template = 'error_general', $status_code = 500) - { - set_status_header($status_code); - - $message = '
'.implode('
', ( ! is_array($message)) ? array($message) : $message).'
'; - - if (ob_get_level() > $this->ob_level + 1) - { - ob_end_flush(); - } - ob_start(); - include(APPPATH.'errors/'.$template.'.php'); - $buffer = ob_get_contents(); - ob_end_clean(); - return $buffer; - } - - // -------------------------------------------------------------------- - - /** - * Native PHP error handler - * - * @access private - * @param string the error severity - * @param string the error string - * @param string the error filepath - * @param string the error line number - * @return string - */ - function show_php_error($severity, $message, $filepath, $line) - { - $severity = ( ! isset($this->levels[$severity])) ? $severity : $this->levels[$severity]; - - $filepath = str_replace("\\", "/", $filepath); - - // For safety reasons we do not show the full file path - if (FALSE !== strpos($filepath, '/')) - { - $x = explode('/', $filepath); - $filepath = $x[count($x)-2].'/'.end($x); - } - - if (ob_get_level() > $this->ob_level + 1) - { - ob_end_flush(); - } - ob_start(); - include(APPPATH.'errors/error_php.php'); - $buffer = ob_get_contents(); - ob_end_clean(); - echo $buffer; - } - - -} -// END Exceptions Class - -/* End of file Exceptions.php */ -/* Location: ./system/core/Exceptions.php */ \ No newline at end of file diff --git a/donjo-sys/core/Hooks.php b/donjo-sys/core/Hooks.php deleted file mode 100644 index 4dbabb87b..000000000 --- a/donjo-sys/core/Hooks.php +++ /dev/null @@ -1,249 +0,0 @@ -_initialize(); - log_message('debug', "Hooks Class Initialized"); - } - - // -------------------------------------------------------------------- - - /** - * Initialize the Hooks Preferences - * - * @access private - * @return void - */ - function _initialize() - { - $CFG =& load_class('Config', 'core'); - - // If hooks are not enabled in the config file - // there is nothing else to do - - if ($CFG->item('enable_hooks') == FALSE) - { - return; - } - - // Grab the "hooks" definition file. - // If there are no hooks, we're done. - - if (defined('ENVIRONMENT') AND is_file(APPPATH.'config/'.ENVIRONMENT.'/hooks.php')) - { - include(APPPATH.'config/'.ENVIRONMENT.'/hooks.php'); - } - elseif (is_file(APPPATH.'config/hooks.php')) - { - include(APPPATH.'config/hooks.php'); - } - - - if ( ! isset($hook) OR ! is_array($hook)) - { - return; - } - - $this->hooks =& $hook; - $this->enabled = TRUE; - } - - // -------------------------------------------------------------------- - - /** - * Call Hook - * - * Calls a particular hook - * - * @access private - * @param string the hook name - * @return mixed - */ - function _call_hook($which = '') - { - if ( ! $this->enabled OR ! isset($this->hooks[$which])) - { - return FALSE; - } - - if (isset($this->hooks[$which][0]) AND is_array($this->hooks[$which][0])) - { - foreach ($this->hooks[$which] as $val) - { - $this->_run_hook($val); - } - } - else - { - $this->_run_hook($this->hooks[$which]); - } - - return TRUE; - } - - // -------------------------------------------------------------------- - - /** - * Run Hook - * - * Runs a particular hook - * - * @access private - * @param array the hook details - * @return bool - */ - function _run_hook($data) - { - if ( ! is_array($data)) - { - return FALSE; - } - - // ----------------------------------- - // Safety - Prevents run-away loops - // ----------------------------------- - - // If the script being called happens to have the same - // hook call within it a loop can happen - - if ($this->in_progress == TRUE) - { - return; - } - - // ----------------------------------- - // Set file path - // ----------------------------------- - - if ( ! isset($data['filepath']) OR ! isset($data['filename'])) - { - return FALSE; - } - - $filepath = APPPATH.$data['filepath'].'/'.$data['filename']; - - if ( ! file_exists($filepath)) - { - return FALSE; - } - - // ----------------------------------- - // Set class/function name - // ----------------------------------- - - $class = FALSE; - $function = FALSE; - $params = ''; - - if (isset($data['class']) AND $data['class'] != '') - { - $class = $data['class']; - } - - if (isset($data['function'])) - { - $function = $data['function']; - } - - if (isset($data['params'])) - { - $params = $data['params']; - } - - if ($class === FALSE AND $function === FALSE) - { - return FALSE; - } - - // ----------------------------------- - // Set the in_progress flag - // ----------------------------------- - - $this->in_progress = TRUE; - - // ----------------------------------- - // Call the requested class and/or function - // ----------------------------------- - - if ($class !== FALSE) - { - if ( ! class_exists($class)) - { - require($filepath); - } - - $HOOK = new $class; - $HOOK->$function($params); - } - else - { - if ( ! function_exists($function)) - { - require($filepath); - } - - $function($params); - } - - $this->in_progress = FALSE; - return TRUE; - } - -} - -// END CI_Hooks class - -/* End of file Hooks.php */ -/* Location: ./system/core/Hooks.php */ \ No newline at end of file diff --git a/donjo-sys/core/Input.php b/donjo-sys/core/Input.php deleted file mode 100644 index 40305745a..000000000 --- a/donjo-sys/core/Input.php +++ /dev/null @@ -1,866 +0,0 @@ -_allow_get_array = (config_item('allow_get_array') === TRUE); - $this->_enable_xss = (config_item('global_xss_filtering') === TRUE); - $this->_enable_csrf = (config_item('csrf_protection') === TRUE); - - global $SEC; - $this->security =& $SEC; - - // Do we need the UTF-8 class? - if (UTF8_ENABLED === TRUE) - { - global $UNI; - $this->uni =& $UNI; - } - - // Sanitize global arrays - $this->_sanitize_globals(); - } - - // -------------------------------------------------------------------- - - /** - * Fetch from array - * - * This is a helper function to retrieve values from global arrays - * - * @access private - * @param array - * @param string - * @param bool - * @return string - */ - function _fetch_from_array(&$array, $index = '', $xss_clean = FALSE) - { - if ( ! isset($array[$index])) - { - return FALSE; - } - - if ($xss_clean === TRUE) - { - return $this->security->xss_clean($array[$index]); - } - - return $array[$index]; - } - - // -------------------------------------------------------------------- - - /** - * Fetch an item from the GET array - * - * @access public - * @param string - * @param bool - * @return string - */ - function get($index = NULL, $xss_clean = FALSE) - { - // Check if a field has been provided - if ($index === NULL AND ! empty($_GET)) - { - $get = array(); - - // loop through the full _GET array - foreach (array_keys($_GET) as $key) - { - $get[$key] = $this->_fetch_from_array($_GET, $key, $xss_clean); - } - return $get; - } - - return $this->_fetch_from_array($_GET, $index, $xss_clean); - } - - // -------------------------------------------------------------------- - - /** - * Fetch an item from the POST array - * - * @access public - * @param string - * @param bool - * @return string - */ - function post($index = NULL, $xss_clean = FALSE) - { - // Check if a field has been provided - if ($index === NULL AND ! empty($_POST)) - { - $post = array(); - - // Loop through the full _POST array and return it - foreach (array_keys($_POST) as $key) - { - $post[$key] = $this->_fetch_from_array($_POST, $key, $xss_clean); - } - return $post; - } - - return $this->_fetch_from_array($_POST, $index, $xss_clean); - } - - - // -------------------------------------------------------------------- - - /** - * Fetch an item from either the GET array or the POST - * - * @access public - * @param string The index key - * @param bool XSS cleaning - * @return string - */ - function get_post($index = '', $xss_clean = FALSE) - { - if ( ! isset($_POST[$index]) ) - { - return $this->get($index, $xss_clean); - } - else - { - return $this->post($index, $xss_clean); - } - } - - // -------------------------------------------------------------------- - - /** - * Fetch an item from the COOKIE array - * - * @access public - * @param string - * @param bool - * @return string - */ - function cookie($index = '', $xss_clean = FALSE) - { - return $this->_fetch_from_array($_COOKIE, $index, $xss_clean); - } - - // ------------------------------------------------------------------------ - - /** - * Set cookie - * - * Accepts six parameter, or you can submit an associative - * array in the first parameter containing all the values. - * - * @access public - * @param mixed - * @param string the value of the cookie - * @param string the number of seconds until expiration - * @param string the cookie domain. Usually: .yourdomain.com - * @param string the cookie path - * @param string the cookie prefix - * @param bool true makes the cookie secure - * @return void - */ - function set_cookie($name = '', $value = '', $expire = '', $domain = '', $path = '/', $prefix = '', $secure = FALSE) - { - if (is_array($name)) - { - // always leave 'name' in last place, as the loop will break otherwise, due to $$item - foreach (array('value', 'expire', 'domain', 'path', 'prefix', 'secure', 'name') as $item) - { - if (isset($name[$item])) - { - $$item = $name[$item]; - } - } - } - - if ($prefix == '' AND config_item('cookie_prefix') != '') - { - $prefix = config_item('cookie_prefix'); - } - if ($domain == '' AND config_item('cookie_domain') != '') - { - $domain = config_item('cookie_domain'); - } - if ($path == '/' AND config_item('cookie_path') != '/') - { - $path = config_item('cookie_path'); - } - if ($secure == FALSE AND config_item('cookie_secure') != FALSE) - { - $secure = config_item('cookie_secure'); - } - - if ( ! is_numeric($expire)) - { - $expire = time() - 86500; - } - else - { - $expire = ($expire > 0) ? time() + $expire : 0; - } - - setcookie($prefix.$name, $value, $expire, $path, $domain, $secure); - } - - // -------------------------------------------------------------------- - - /** - * Fetch an item from the SERVER array - * - * @access public - * @param string - * @param bool - * @return string - */ - function server($index = '', $xss_clean = FALSE) - { - return $this->_fetch_from_array($_SERVER, $index, $xss_clean); - } - - // -------------------------------------------------------------------- - - /** - * Fetch the IP Address - * - * @return string - */ - public function ip_address() - { - if ($this->ip_address !== FALSE) - { - return $this->ip_address; - } - - $proxy_ips = config_item('proxy_ips'); - if ( ! empty($proxy_ips)) - { - $proxy_ips = explode(',', str_replace(' ', '', $proxy_ips)); - foreach (array('HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP', 'HTTP_X_CLIENT_IP', 'HTTP_X_CLUSTER_CLIENT_IP') as $header) - { - if (($spoof = $this->server($header)) !== FALSE) - { - // Some proxies typically list the whole chain of IP - // addresses through which the client has reached us. - // e.g. client_ip, proxy_ip1, proxy_ip2, etc. - if (strpos($spoof, ',') !== FALSE) - { - $spoof = explode(',', $spoof, 2); - $spoof = $spoof[0]; - } - - if ( ! $this->valid_ip($spoof)) - { - $spoof = FALSE; - } - else - { - break; - } - } - } - - $this->ip_address = ($spoof !== FALSE && in_array($_SERVER['REMOTE_ADDR'], $proxy_ips, TRUE)) - ? $spoof : $_SERVER['REMOTE_ADDR']; - } - else - { - $this->ip_address = $_SERVER['REMOTE_ADDR']; - } - - if ( ! $this->valid_ip($this->ip_address)) - { - $this->ip_address = '0.0.0.0'; - } - - return $this->ip_address; - } - - // -------------------------------------------------------------------- - - /** - * Validate IP Address - * - * @access public - * @param string - * @param string ipv4 or ipv6 - * @return bool - */ - public function valid_ip($ip, $which = '') - { - $which = strtolower($which); - - // First check if filter_var is available - if (is_callable('filter_var')) - { - switch ($which) { - case 'ipv4': - $flag = FILTER_FLAG_IPV4; - break; - case 'ipv6': - $flag = FILTER_FLAG_IPV6; - break; - default: - $flag = ''; - break; - } - - return (bool) filter_var($ip, FILTER_VALIDATE_IP, $flag); - } - - if ($which !== 'ipv6' && $which !== 'ipv4') - { - if (strpos($ip, ':') !== FALSE) - { - $which = 'ipv6'; - } - elseif (strpos($ip, '.') !== FALSE) - { - $which = 'ipv4'; - } - else - { - return FALSE; - } - } - - $func = '_valid_'.$which; - return $this->$func($ip); - } - - // -------------------------------------------------------------------- - - /** - * Validate IPv4 Address - * - * Updated version suggested by Geert De Deckere - * - * @access protected - * @param string - * @return bool - */ - protected function _valid_ipv4($ip) - { - $ip_segments = explode('.', $ip); - - // Always 4 segments needed - if (count($ip_segments) !== 4) - { - return FALSE; - } - // IP can not start with 0 - if ($ip_segments[0][0] == '0') - { - return FALSE; - } - - // Check each segment - foreach ($ip_segments as $segment) - { - // IP segments must be digits and can not be - // longer than 3 digits or greater then 255 - if ($segment == '' OR preg_match("/[^0-9]/", $segment) OR $segment > 255 OR strlen($segment) > 3) - { - return FALSE; - } - } - - return TRUE; - } - - // -------------------------------------------------------------------- - - /** - * Validate IPv6 Address - * - * @access protected - * @param string - * @return bool - */ - protected function _valid_ipv6($str) - { - // 8 groups, separated by : - // 0-ffff per group - // one set of consecutive 0 groups can be collapsed to :: - - $groups = 8; - $collapsed = FALSE; - - $chunks = array_filter( - preg_split('/(:{1,2})/', $str, NULL, PREG_SPLIT_DELIM_CAPTURE) - ); - - // Rule out easy nonsense - if (current($chunks) == ':' OR end($chunks) == ':') - { - return FALSE; - } - - // PHP supports IPv4-mapped IPv6 addresses, so we'll expect those as well - if (strpos(end($chunks), '.') !== FALSE) - { - $ipv4 = array_pop($chunks); - - if ( ! $this->_valid_ipv4($ipv4)) - { - return FALSE; - } - - $groups--; - } - - while ($seg = array_pop($chunks)) - { - if ($seg[0] == ':') - { - if (--$groups == 0) - { - return FALSE; // too many groups - } - - if (strlen($seg) > 2) - { - return FALSE; // long separator - } - - if ($seg == '::') - { - if ($collapsed) - { - return FALSE; // multiple collapsed - } - - $collapsed = TRUE; - } - } - elseif (preg_match("/[^0-9a-f]/i", $seg) OR strlen($seg) > 4) - { - return FALSE; // invalid segment - } - } - - return $collapsed OR $groups == 1; - } - - // -------------------------------------------------------------------- - - /** - * User Agent - * - * @access public - * @return string - */ - function user_agent() - { - if ($this->user_agent !== FALSE) - { - return $this->user_agent; - } - - $this->user_agent = ( ! isset($_SERVER['HTTP_USER_AGENT'])) ? FALSE : $_SERVER['HTTP_USER_AGENT']; - - return $this->user_agent; - } - - // -------------------------------------------------------------------- - - /** - * Sanitize Globals - * - * This function does the following: - * - * Unsets $_GET data (if query strings are not enabled) - * - * Unsets all globals if register_globals is enabled - * - * Standardizes newline characters to \n - * - * @access private - * @return void - */ - function _sanitize_globals() - { - // It would be "wrong" to unset any of these GLOBALS. - $protected = array('_SERVER', '_GET', '_POST', '_FILES', '_REQUEST', - '_SESSION', '_ENV', 'GLOBALS', 'HTTP_RAW_POST_DATA', - 'system_folder', 'application_folder', 'BM', 'EXT', - 'CFG', 'URI', 'RTR', 'OUT', 'IN'); - - // Unset globals for securiy. - // This is effectively the same as register_globals = off - foreach (array($_GET, $_POST, $_COOKIE) as $global) - { - if ( ! is_array($global)) - { - if ( ! in_array($global, $protected)) - { - global $$global; - $$global = NULL; - } - } - else - { - foreach ($global as $key => $val) - { - if ( ! in_array($key, $protected)) - { - global $$key; - $$key = NULL; - } - } - } - } - - // Is $_GET data allowed? If not we'll set the $_GET to an empty array - if ($this->_allow_get_array == FALSE) - { - $_GET = array(); - } - else - { - if (is_array($_GET) AND count($_GET) > 0) - { - foreach ($_GET as $key => $val) - { - $_GET[$this->_clean_input_keys($key)] = $this->_clean_input_data($val); - } - } - } - - // Clean $_POST Data - if (is_array($_POST) AND count($_POST) > 0) - { - foreach ($_POST as $key => $val) - { - $_POST[$this->_clean_input_keys($key)] = $this->_clean_input_data($val); - } - } - - // Clean $_COOKIE Data - if (is_array($_COOKIE) AND count($_COOKIE) > 0) - { - // Also get rid of specially treated cookies that might be set by a server - // or silly application, that are of no use to a CI application anyway - // but that when present will trip our 'Disallowed Key Characters' alarm - // http://www.ietf.org/rfc/rfc2109.txt - // note that the key names below are single quoted strings, and are not PHP variables - unset($_COOKIE['$Version']); - unset($_COOKIE['$Path']); - unset($_COOKIE['$Domain']); - - // Work-around for PHP bug #66827 (https://bugs.php.net/bug.php?id=66827) - // - // The session ID sanitizer doesn't check for the value type and blindly does - // an implicit cast to string, which triggers an 'Array to string' E_NOTICE. - $sess_cookie_name = config_item('cookie_prefix').config_item('sess_cookie_name'); - if (isset($_COOKIE[$sess_cookie_name]) && ! is_string($_COOKIE[$sess_cookie_name])) - { - unset($_COOKIE[$sess_cookie_name]); - } - - foreach ($_COOKIE as $key => $val) - { - // _clean_input_data() has been reported to break encrypted cookies - if ($key === $sess_cookie_name && config_item('sess_encrypt_cookie')) - { - continue; - } - - $_COOKIE[$this->_clean_input_keys($key)] = $this->_clean_input_data($val); - } - } - - // Sanitize PHP_SELF - $_SERVER['PHP_SELF'] = strip_tags($_SERVER['PHP_SELF']); - - - // CSRF Protection check on HTTP requests - if ($this->_enable_csrf == TRUE && ! $this->is_cli_request()) - { - $this->security->csrf_verify(); - } - - log_message('debug', "Global POST and COOKIE data sanitized"); - } - - // -------------------------------------------------------------------- - - /** - * Clean Input Data - * - * This is a helper function. It escapes data and - * standardizes newline characters to \n - * - * @access private - * @param string - * @return string - */ - function _clean_input_data($str) - { - if (is_array($str)) - { - $new_array = array(); - foreach ($str as $key => $val) - { - $new_array[$this->_clean_input_keys($key)] = $this->_clean_input_data($val); - } - return $new_array; - } - - /* We strip slashes if magic quotes is on to keep things consistent - - NOTE: In PHP 5.4 get_magic_quotes_gpc() will always return 0 and - it will probably not exist in future versions at all. - */ - if ( ! is_php('5.4') && get_magic_quotes_gpc()) - { - $str = stripslashes($str); - } - - // Clean UTF-8 if supported - if (UTF8_ENABLED === TRUE) - { - $str = $this->uni->clean_string($str); - } - - // Remove control characters - $str = remove_invisible_characters($str); - - // Should we filter the input data? - if ($this->_enable_xss === TRUE) - { - $str = $this->security->xss_clean($str); - } - - // Standardize newlines if needed - if ($this->_standardize_newlines == TRUE) - { - if (strpos($str, "\r") !== FALSE) - { - $str = str_replace(array("\r\n", "\r", "\r\n\n"), PHP_EOL, $str); - } - } - - return $str; - } - - // -------------------------------------------------------------------- - - /** - * Clean Keys - * - * This is a helper function. To prevent malicious users - * from trying to exploit keys we make sure that keys are - * only named with alpha-numeric text and a few other items. - * - * @access private - * @param string - * @return string - */ - function _clean_input_keys($str) - { - if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str)) - { - exit('Disallowed Key Characters.'); - } - - // Clean UTF-8 if supported - if (UTF8_ENABLED === TRUE) - { - $str = $this->uni->clean_string($str); - } - - return $str; - } - - // -------------------------------------------------------------------- - - /** - * Request Headers - * - * In Apache, you can simply call apache_request_headers(), however for - * people running other webservers the function is undefined. - * - * @param bool XSS cleaning - * - * @return array - */ - public function request_headers($xss_clean = FALSE) - { - // Look at Apache go! - if (function_exists('apache_request_headers')) - { - $headers = apache_request_headers(); - } - else - { - $headers['Content-Type'] = (isset($_SERVER['CONTENT_TYPE'])) ? $_SERVER['CONTENT_TYPE'] : @getenv('CONTENT_TYPE'); - - foreach ($_SERVER as $key => $val) - { - if (strncmp($key, 'HTTP_', 5) === 0) - { - $headers[substr($key, 5)] = $this->_fetch_from_array($_SERVER, $key, $xss_clean); - } - } - } - - // take SOME_HEADER and turn it into Some-Header - foreach ($headers as $key => $val) - { - $key = str_replace('_', ' ', strtolower($key)); - $key = str_replace(' ', '-', ucwords($key)); - - $this->headers[$key] = $val; - } - - return $this->headers; - } - - // -------------------------------------------------------------------- - - /** - * Get Request Header - * - * Returns the value of a single member of the headers class member - * - * @param string array key for $this->headers - * @param boolean XSS Clean or not - * @return mixed FALSE on failure, string on success - */ - public function get_request_header($index, $xss_clean = FALSE) - { - if (empty($this->headers)) - { - $this->request_headers(); - } - - if ( ! isset($this->headers[$index])) - { - return FALSE; - } - - if ($xss_clean === TRUE) - { - return $this->security->xss_clean($this->headers[$index]); - } - - return $this->headers[$index]; - } - - // -------------------------------------------------------------------- - - /** - * Is ajax Request? - * - * Test to see if a request contains the HTTP_X_REQUESTED_WITH header - * - * @return boolean - */ - public function is_ajax_request() - { - return ($this->server('HTTP_X_REQUESTED_WITH') === 'XMLHttpRequest'); - } - - // -------------------------------------------------------------------- - - /** - * Is cli Request? - * - * Test to see if a request was made from the command line - * - * @return bool - */ - public function is_cli_request() - { - return (php_sapi_name() === 'cli' OR defined('STDIN')); - } - -} - -/* End of file Input.php */ -/* Location: ./system/core/Input.php */ \ No newline at end of file diff --git a/donjo-sys/core/Lang.php b/donjo-sys/core/Lang.php deleted file mode 100644 index 28497034a..000000000 --- a/donjo-sys/core/Lang.php +++ /dev/null @@ -1,161 +0,0 @@ -is_loaded, TRUE)) - { - return; - } - - $config =& get_config(); - - if ($idiom == '') - { - $deft_lang = ( ! isset($config['language'])) ? 'english' : $config['language']; - $idiom = ($deft_lang == '') ? 'english' : $deft_lang; - } - - // Determine where the language file is and load it - if ($alt_path != '' && file_exists($alt_path.'language/'.$idiom.'/'.$langfile)) - { - include($alt_path.'language/'.$idiom.'/'.$langfile); - } - else - { - $found = FALSE; - - foreach (get_instance()->load->get_package_paths(TRUE) as $package_path) - { - if (file_exists($package_path.'language/'.$idiom.'/'.$langfile)) - { - include($package_path.'language/'.$idiom.'/'.$langfile); - $found = TRUE; - break; - } - } - - if ($found !== TRUE) - { - show_error('Unable to load the requested language file: language/'.$idiom.'/'.$langfile); - } - } - - - if ( ! isset($lang)) - { - log_message('error', 'Language file contains no data: language/'.$idiom.'/'.$langfile); - return; - } - - if ($return == TRUE) - { - return $lang; - } - - $this->is_loaded[] = $langfile; - $this->language = array_merge($this->language, $lang); - unset($lang); - - log_message('debug', 'Language file loaded: language/'.$idiom.'/'.$langfile); - return TRUE; - } - - // -------------------------------------------------------------------- - - /** - * Fetch a single line of text from the language array - * - * @access public - * @param string $line the language line - * @return string - */ - function line($line = '') - { - $value = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line]; - - // Because killer robots like unicorns! - if ($value === FALSE) - { - log_message('error', 'Could not find the language line "'.$line.'"'); - } - - return $value; - } - -} -// END Language Class - -/* End of file Lang.php */ -/* Location: ./system/core/Lang.php */ diff --git a/donjo-sys/core/Loader.php b/donjo-sys/core/Loader.php deleted file mode 100644 index 40090db6e..000000000 --- a/donjo-sys/core/Loader.php +++ /dev/null @@ -1,1249 +0,0 @@ - 'unit', - 'user_agent' => 'agent'); - - /** - * Constructor - * - * Sets the path to the view files and gets the initial output buffering level - */ - public function __construct() - { - $this->_ci_ob_level = ob_get_level(); - $this->_ci_library_paths = array(APPPATH, BASEPATH); - $this->_ci_helper_paths = array(APPPATH, BASEPATH); - $this->_ci_model_paths = array(APPPATH); - $this->_ci_view_paths = array(APPPATH.'views/' => TRUE); - - log_message('debug', "Loader Class Initialized"); - } - - // -------------------------------------------------------------------- - - /** - * Initialize the Loader - * - * This method is called once in CI_Controller. - * - * @param array - * @return object - */ - public function initialize() - { - $this->_ci_classes = array(); - $this->_ci_loaded_files = array(); - $this->_ci_models = array(); - $this->_base_classes =& is_loaded(); - - $this->_ci_autoloader(); - - return $this; - } - - // -------------------------------------------------------------------- - - /** - * Is Loaded - * - * A utility function to test if a class is in the self::$_ci_classes array. - * This function returns the object name if the class tested for is loaded, - * and returns FALSE if it isn't. - * - * It is mainly used in the form_helper -> _get_validation_object() - * - * @param string class being checked for - * @return mixed class object name on the CI SuperObject or FALSE - */ - public function is_loaded($class) - { - if (isset($this->_ci_classes[$class])) - { - return $this->_ci_classes[$class]; - } - - return FALSE; - } - - // -------------------------------------------------------------------- - - /** - * Class Loader - * - * This function lets users load and instantiate classes. - * It is designed to be called from a user's app controllers. - * - * @param string the name of the class - * @param mixed the optional parameters - * @param string an optional object name - * @return void - */ - public function library($library = '', $params = NULL, $object_name = NULL) - { - if (is_array($library)) - { - foreach ($library as $class) - { - $this->library($class, $params); - } - - return; - } - - if ($library == '' OR isset($this->_base_classes[$library])) - { - return FALSE; - } - - if ( ! is_null($params) && ! is_array($params)) - { - $params = NULL; - } - - $this->_ci_load_class($library, $params, $object_name); - } - - // -------------------------------------------------------------------- - - /** - * Model Loader - * - * This function lets users load and instantiate models. - * - * @param string the name of the class - * @param string name for the model - * @param bool database connection - * @return void - */ - public function model($model, $name = '', $db_conn = FALSE) - { - if (is_array($model)) - { - foreach ($model as $babe) - { - $this->model($babe); - } - return; - } - - if ($model == '') - { - return; - } - - $path = ''; - - // Is the model in a sub-folder? If so, parse out the filename and path. - if (($last_slash = strrpos($model, '/')) !== FALSE) - { - // The path is in front of the last slash - $path = substr($model, 0, $last_slash + 1); - - // And the model name behind it - $model = substr($model, $last_slash + 1); - } - - if ($name == '') - { - $name = $model; - } - - if (in_array($name, $this->_ci_models, TRUE)) - { - return; - } - - $CI =& get_instance(); - if (isset($CI->$name)) - { - show_error('The model name you are loading is the name of a resource that is already being used: '.$name); - } - - $model = strtolower($model); - - foreach ($this->_ci_model_paths as $mod_path) - { - if ( ! file_exists($mod_path.'models/'.$path.$model.'.php')) - { - continue; - } - - if ($db_conn !== FALSE AND ! class_exists('CI_DB')) - { - if ($db_conn === TRUE) - { - $db_conn = ''; - } - - $CI->load->database($db_conn, FALSE, TRUE); - } - - if ( ! class_exists('CI_Model')) - { - load_class('Model', 'core'); - } - - require_once($mod_path.'models/'.$path.$model.'.php'); - - $model = ucfirst($model); - - $CI->$name = new $model(); - - $this->_ci_models[] = $name; - return; - } - - // couldn't find the model - show_error('Unable to locate the model you have specified: '.$model); - } - - // -------------------------------------------------------------------- - - /** - * Database Loader - * - * @param string the DB credentials - * @param bool whether to return the DB object - * @param bool whether to enable active record (this allows us to override the config setting) - * @return object - */ - public function database($params = '', $return = FALSE, $active_record = NULL) - { - // Grab the super object - $CI =& get_instance(); - - // Do we even need to load the database class? - if (class_exists('CI_DB') AND $return == FALSE AND $active_record == NULL AND isset($CI->db) AND is_object($CI->db)) - { - return FALSE; - } - - require_once(BASEPATH.'database/DB.php'); - - if ($return === TRUE) - { - return DB($params, $active_record); - } - - // Initialize the db variable. Needed to prevent - // reference errors with some configurations - $CI->db = ''; - - // Load the DB class - $CI->db =& DB($params, $active_record); - } - - // -------------------------------------------------------------------- - - /** - * Load the Utilities Class - * - * @return string - */ - public function dbutil() - { - if ( ! class_exists('CI_DB')) - { - $this->database(); - } - - $CI =& get_instance(); - - // for backwards compatibility, load dbforge so we can extend dbutils off it - // this use is deprecated and strongly discouraged - $CI->load->dbforge(); - - require_once(BASEPATH.'database/DB_utility.php'); - require_once(BASEPATH.'database/drivers/'.$CI->db->dbdriver.'/'.$CI->db->dbdriver.'_utility.php'); - $class = 'CI_DB_'.$CI->db->dbdriver.'_utility'; - - $CI->dbutil = new $class(); - } - - // -------------------------------------------------------------------- - - /** - * Load the Database Forge Class - * - * @return string - */ - public function dbforge() - { - if ( ! class_exists('CI_DB')) - { - $this->database(); - } - - $CI =& get_instance(); - - require_once(BASEPATH.'database/DB_forge.php'); - require_once(BASEPATH.'database/drivers/'.$CI->db->dbdriver.'/'.$CI->db->dbdriver.'_forge.php'); - $class = 'CI_DB_'.$CI->db->dbdriver.'_forge'; - - $CI->dbforge = new $class(); - } - - // -------------------------------------------------------------------- - - /** - * Load View - * - * This function is used to load a "view" file. It has three parameters: - * - * 1. The name of the "view" file to be included. - * 2. An associative array of data to be extracted for use in the view. - * 3. TRUE/FALSE - whether to return the data or load it. In - * some cases it's advantageous to be able to return data so that - * a developer can process it in some way. - * - * @param string - * @param array - * @param bool - * @return void - */ - public function view($view, $vars = array(), $return = FALSE) - { - return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return)); - } - - // -------------------------------------------------------------------- - - /** - * Load File - * - * This is a generic file loader - * - * @param string - * @param bool - * @return string - */ - public function file($path, $return = FALSE) - { - return $this->_ci_load(array('_ci_path' => $path, '_ci_return' => $return)); - } - - // -------------------------------------------------------------------- - - /** - * Set Variables - * - * Once variables are set they become available within - * the controller class and its "view" files. - * - * @param array - * @param string - * @return void - */ - public function vars($vars = array(), $val = '') - { - if ($val != '' AND is_string($vars)) - { - $vars = array($vars => $val); - } - - $vars = $this->_ci_object_to_array($vars); - - if (is_array($vars) AND count($vars) > 0) - { - foreach ($vars as $key => $val) - { - $this->_ci_cached_vars[$key] = $val; - } - } - } - - // -------------------------------------------------------------------- - - /** - * Get Variable - * - * Check if a variable is set and retrieve it. - * - * @param array - * @return void - */ - public function get_var($key) - { - return isset($this->_ci_cached_vars[$key]) ? $this->_ci_cached_vars[$key] : NULL; - } - - // -------------------------------------------------------------------- - - /** - * Load Helper - * - * This function loads the specified helper file. - * - * @param mixed - * @return void - */ - public function helper($helpers = array()) - { - foreach ($this->_ci_prep_filename($helpers, '_helper') as $helper) - { - if (isset($this->_ci_helpers[$helper])) - { - continue; - } - - $ext_helper = APPPATH.'helpers/'.config_item('subclass_prefix').$helper.'.php'; - - // Is this a helper extension request? - if (file_exists($ext_helper)) - { - $base_helper = BASEPATH.'helpers/'.$helper.'.php'; - - if ( ! file_exists($base_helper)) - { - show_error('Unable to load the requested file: helpers/'.$helper.'.php'); - } - - include_once($ext_helper); - include_once($base_helper); - - $this->_ci_helpers[$helper] = TRUE; - log_message('debug', 'Helper loaded: '.$helper); - continue; - } - - // Try to load the helper - foreach ($this->_ci_helper_paths as $path) - { - if (file_exists($path.'helpers/'.$helper.'.php')) - { - include_once($path.'helpers/'.$helper.'.php'); - - $this->_ci_helpers[$helper] = TRUE; - log_message('debug', 'Helper loaded: '.$helper); - break; - } - } - - // unable to load the helper - if ( ! isset($this->_ci_helpers[$helper])) - { - show_error('Unable to load the requested file: helpers/'.$helper.'.php'); - } - } - } - - // -------------------------------------------------------------------- - - /** - * Load Helpers - * - * This is simply an alias to the above function in case the - * user has written the plural form of this function. - * - * @param array - * @return void - */ - public function helpers($helpers = array()) - { - $this->helper($helpers); - } - - // -------------------------------------------------------------------- - - /** - * Loads a language file - * - * @param array - * @param string - * @return void - */ - public function language($file = array(), $lang = '') - { - $CI =& get_instance(); - - if ( ! is_array($file)) - { - $file = array($file); - } - - foreach ($file as $langfile) - { - $CI->lang->load($langfile, $lang); - } - } - - // -------------------------------------------------------------------- - - /** - * Loads a config file - * - * @param string - * @param bool - * @param bool - * @return void - */ - public function config($file = '', $use_sections = FALSE, $fail_gracefully = FALSE) - { - $CI =& get_instance(); - $CI->config->load($file, $use_sections, $fail_gracefully); - } - - // -------------------------------------------------------------------- - - /** - * Driver - * - * Loads a driver library - * - * @param string the name of the class - * @param mixed the optional parameters - * @param string an optional object name - * @return void - */ - public function driver($library = '', $params = NULL, $object_name = NULL) - { - if ( ! class_exists('CI_Driver_Library')) - { - // we aren't instantiating an object here, that'll be done by the Library itself - require BASEPATH.'libraries/Driver.php'; - } - - if ($library == '') - { - return FALSE; - } - - // We can save the loader some time since Drivers will *always* be in a subfolder, - // and typically identically named to the library - if ( ! strpos($library, '/')) - { - $library = ucfirst($library).'/'.$library; - } - - return $this->library($library, $params, $object_name); - } - - // -------------------------------------------------------------------- - - /** - * Add Package Path - * - * Prepends a parent path to the library, model, helper, and config path arrays - * - * @param string - * @param boolean - * @return void - */ - public function add_package_path($path, $view_cascade=TRUE) - { - $path = rtrim($path, '/').'/'; - - array_unshift($this->_ci_library_paths, $path); - array_unshift($this->_ci_model_paths, $path); - array_unshift($this->_ci_helper_paths, $path); - - $this->_ci_view_paths = array($path.'views/' => $view_cascade) + $this->_ci_view_paths; - - // Add config file path - $config =& $this->_ci_get_component('config'); - array_unshift($config->_config_paths, $path); - } - - // -------------------------------------------------------------------- - - /** - * Get Package Paths - * - * Return a list of all package paths, by default it will ignore BASEPATH. - * - * @param string - * @return void - */ - public function get_package_paths($include_base = FALSE) - { - return $include_base === TRUE ? $this->_ci_library_paths : $this->_ci_model_paths; - } - - // -------------------------------------------------------------------- - - /** - * Remove Package Path - * - * Remove a path from the library, model, and helper path arrays if it exists - * If no path is provided, the most recently added path is removed. - * - * @param type - * @param bool - * @return type - */ - public function remove_package_path($path = '', $remove_config_path = TRUE) - { - $config =& $this->_ci_get_component('config'); - - if ($path == '') - { - $void = array_shift($this->_ci_library_paths); - $void = array_shift($this->_ci_model_paths); - $void = array_shift($this->_ci_helper_paths); - $void = array_shift($this->_ci_view_paths); - $void = array_shift($config->_config_paths); - } - else - { - $path = rtrim($path, '/').'/'; - foreach (array('_ci_library_paths', '_ci_model_paths', '_ci_helper_paths') as $var) - { - if (($key = array_search($path, $this->{$var})) !== FALSE) - { - unset($this->{$var}[$key]); - } - } - - if (isset($this->_ci_view_paths[$path.'views/'])) - { - unset($this->_ci_view_paths[$path.'views/']); - } - - if (($key = array_search($path, $config->_config_paths)) !== FALSE) - { - unset($config->_config_paths[$key]); - } - } - - // make sure the application default paths are still in the array - $this->_ci_library_paths = array_unique(array_merge($this->_ci_library_paths, array(APPPATH, BASEPATH))); - $this->_ci_helper_paths = array_unique(array_merge($this->_ci_helper_paths, array(APPPATH, BASEPATH))); - $this->_ci_model_paths = array_unique(array_merge($this->_ci_model_paths, array(APPPATH))); - $this->_ci_view_paths = array_merge($this->_ci_view_paths, array(APPPATH.'views/' => TRUE)); - $config->_config_paths = array_unique(array_merge($config->_config_paths, array(APPPATH))); - } - - // -------------------------------------------------------------------- - - /** - * Loader - * - * This function is used to load views and files. - * Variables are prefixed with _ci_ to avoid symbol collision with - * variables made available to view files - * - * @param array - * @return void - */ - protected function _ci_load($_ci_data) - { - // Set the default data variables - foreach (array('_ci_view', '_ci_vars', '_ci_path', '_ci_return') as $_ci_val) - { - $$_ci_val = ( ! isset($_ci_data[$_ci_val])) ? FALSE : $_ci_data[$_ci_val]; - } - - $file_exists = FALSE; - - // Set the path to the requested file - if ($_ci_path != '') - { - $_ci_x = explode('/', $_ci_path); - $_ci_file = end($_ci_x); - } - else - { - $_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION); - $_ci_file = ($_ci_ext == '') ? $_ci_view.'.php' : $_ci_view; - - foreach ($this->_ci_view_paths as $view_file => $cascade) - { - if (file_exists($view_file.$_ci_file)) - { - $_ci_path = $view_file.$_ci_file; - $file_exists = TRUE; - break; - } - - if ( ! $cascade) - { - break; - } - } - } - - if ( ! $file_exists && ! file_exists($_ci_path)) - { - show_error('Unable to load the requested file: '.$_ci_file); - } - - // This allows anything loaded using $this->load (views, files, etc.) - // to become accessible from within the Controller and Model functions. - - $_ci_CI =& get_instance(); - foreach (get_object_vars($_ci_CI) as $_ci_key => $_ci_var) - { - if ( ! isset($this->$_ci_key)) - { - $this->$_ci_key =& $_ci_CI->$_ci_key; - } - } - - /* - * Extract and cache variables - * - * You can either set variables using the dedicated $this->load_vars() - * function or via the second parameter of this function. We'll merge - * the two types and cache them so that views that are embedded within - * other views can have access to these variables. - */ - if (is_array($_ci_vars)) - { - $this->_ci_cached_vars = array_merge($this->_ci_cached_vars, $_ci_vars); - } - extract($this->_ci_cached_vars); - - /* - * Buffer the output - * - * We buffer the output for two reasons: - * 1. Speed. You get a significant speed boost. - * 2. So that the final rendered template can be - * post-processed by the output class. Why do we - * need post processing? For one thing, in order to - * show the elapsed page load time. Unless we - * can intercept the content right before it's sent to - * the browser and then stop the timer it won't be accurate. - */ - ob_start(); - - // If the PHP installation does not support short tags we'll - // do a little string replacement, changing the short tags - // to standard PHP echo statements. - - if ((bool) @ini_get('short_open_tag') === FALSE AND config_item('rewrite_short_tags') == TRUE) - { - echo eval('?>'.preg_replace("/;*\s*\?>/", "; ?>", str_replace('=', ' $this->_ci_ob_level + 1) - { - ob_end_flush(); - } - else - { - $_ci_CI->output->append_output(ob_get_contents()); - @ob_end_clean(); - } - } - - // -------------------------------------------------------------------- - - /** - * Load class - * - * This function loads the requested class. - * - * @param string the item that is being loaded - * @param mixed any additional parameters - * @param string an optional object name - * @return void - */ - protected function _ci_load_class($class, $params = NULL, $object_name = NULL) - { - // Get the class name, and while we're at it trim any slashes. - // The directory path can be included as part of the class name, - // but we don't want a leading slash - $class = str_replace('.php', '', trim($class, '/')); - - // Was the path included with the class name? - // We look for a slash to determine this - $subdir = ''; - if (($last_slash = strrpos($class, '/')) !== FALSE) - { - // Extract the path - $subdir = substr($class, 0, $last_slash + 1); - - // Get the filename from the path - $class = substr($class, $last_slash + 1); - } - - // We'll test for both lowercase and capitalized versions of the file name - foreach (array(ucfirst($class), strtolower($class)) as $class) - { - $subclass = APPPATH.'libraries/'.$subdir.config_item('subclass_prefix').$class.'.php'; - - // Is this a class extension request? - if (file_exists($subclass)) - { - $baseclass = BASEPATH.'libraries/'.ucfirst($class).'.php'; - - if ( ! file_exists($baseclass)) - { - log_message('error', "Unable to load the requested class: ".$class); - show_error("Unable to load the requested class: ".$class); - } - - // Safety: Was the class already loaded by a previous call? - if (in_array($subclass, $this->_ci_loaded_files)) - { - // Before we deem this to be a duplicate request, let's see - // if a custom object name is being supplied. If so, we'll - // return a new instance of the object - if ( ! is_null($object_name)) - { - $CI =& get_instance(); - if ( ! isset($CI->$object_name)) - { - return $this->_ci_init_class($class, config_item('subclass_prefix'), $params, $object_name); - } - } - - $is_duplicate = TRUE; - log_message('debug', $class." class already loaded. Second attempt ignored."); - return; - } - - include_once($baseclass); - include_once($subclass); - $this->_ci_loaded_files[] = $subclass; - - return $this->_ci_init_class($class, config_item('subclass_prefix'), $params, $object_name); - } - - // Lets search for the requested library file and load it. - $is_duplicate = FALSE; - foreach ($this->_ci_library_paths as $path) - { - $filepath = $path.'libraries/'.$subdir.$class.'.php'; - - // Does the file exist? No? Bummer... - if ( ! file_exists($filepath)) - { - continue; - } - - // Safety: Was the class already loaded by a previous call? - if (in_array($filepath, $this->_ci_loaded_files)) - { - // Before we deem this to be a duplicate request, let's see - // if a custom object name is being supplied. If so, we'll - // return a new instance of the object - if ( ! is_null($object_name)) - { - $CI =& get_instance(); - if ( ! isset($CI->$object_name)) - { - return $this->_ci_init_class($class, '', $params, $object_name); - } - } - - $is_duplicate = TRUE; - log_message('debug', $class." class already loaded. Second attempt ignored."); - return; - } - - include_once($filepath); - $this->_ci_loaded_files[] = $filepath; - return $this->_ci_init_class($class, '', $params, $object_name); - } - - } // END FOREACH - - // One last attempt. Maybe the library is in a subdirectory, but it wasn't specified? - if ($subdir == '') - { - $path = strtolower($class).'/'.$class; - return $this->_ci_load_class($path, $params); - } - - // If we got this far we were unable to find the requested class. - // We do not issue errors if the load call failed due to a duplicate request - if ($is_duplicate == FALSE) - { - log_message('error', "Unable to load the requested class: ".$class); - show_error("Unable to load the requested class: ".$class); - } - } - - // -------------------------------------------------------------------- - - /** - * Instantiates a class - * - * @param string - * @param string - * @param bool - * @param string an optional object name - * @return null - */ - protected function _ci_init_class($class, $prefix = '', $config = FALSE, $object_name = NULL) - { - // Is there an associated config file for this class? Note: these should always be lowercase - if ($config === NULL) - { - // Fetch the config paths containing any package paths - $config_component = $this->_ci_get_component('config'); - - if (is_array($config_component->_config_paths)) - { - // Break on the first found file, thus package files - // are not overridden by default paths - foreach ($config_component->_config_paths as $path) - { - // We test for both uppercase and lowercase, for servers that - // are case-sensitive with regard to file names. Check for environment - // first, global next - if (defined('ENVIRONMENT') AND file_exists($path .'config/'.ENVIRONMENT.'/'.strtolower($class).'.php')) - { - include($path .'config/'.ENVIRONMENT.'/'.strtolower($class).'.php'); - break; - } - elseif (defined('ENVIRONMENT') AND file_exists($path .'config/'.ENVIRONMENT.'/'.ucfirst(strtolower($class)).'.php')) - { - include($path .'config/'.ENVIRONMENT.'/'.ucfirst(strtolower($class)).'.php'); - break; - } - elseif (file_exists($path .'config/'.strtolower($class).'.php')) - { - include($path .'config/'.strtolower($class).'.php'); - break; - } - elseif (file_exists($path .'config/'.ucfirst(strtolower($class)).'.php')) - { - include($path .'config/'.ucfirst(strtolower($class)).'.php'); - break; - } - } - } - } - - if ($prefix == '') - { - if (class_exists('CI_'.$class)) - { - $name = 'CI_'.$class; - } - elseif (class_exists(config_item('subclass_prefix').$class)) - { - $name = config_item('subclass_prefix').$class; - } - else - { - $name = $class; - } - } - else - { - $name = $prefix.$class; - } - - // Is the class name valid? - if ( ! class_exists($name)) - { - log_message('error', "Non-existent class: ".$name); - show_error("Non-existent class: ".$class); - } - - // Set the variable name we will assign the class to - // Was a custom class name supplied? If so we'll use it - $class = strtolower($class); - - if (is_null($object_name)) - { - $classvar = ( ! isset($this->_ci_varmap[$class])) ? $class : $this->_ci_varmap[$class]; - } - else - { - $classvar = $object_name; - } - - // Save the class name and object name - $this->_ci_classes[$class] = $classvar; - - // Instantiate the class - $CI =& get_instance(); - if ($config !== NULL) - { - $CI->$classvar = new $name($config); - } - else - { - $CI->$classvar = new $name; - } - } - - // -------------------------------------------------------------------- - - /** - * Autoloader - * - * The config/autoload.php file contains an array that permits sub-systems, - * libraries, and helpers to be loaded automatically. - * - * @param array - * @return void - */ - private function _ci_autoloader() - { - if (defined('ENVIRONMENT') AND file_exists(APPPATH.'config/'.ENVIRONMENT.'/autoload.php')) - { - include(APPPATH.'config/'.ENVIRONMENT.'/autoload.php'); - } - else - { - include(APPPATH.'config/autoload.php'); - } - - if ( ! isset($autoload)) - { - return FALSE; - } - - // Autoload packages - if (isset($autoload['packages'])) - { - foreach ($autoload['packages'] as $package_path) - { - $this->add_package_path($package_path); - } - } - - // Load any custom config file - if (count($autoload['config']) > 0) - { - $CI =& get_instance(); - foreach ($autoload['config'] as $key => $val) - { - $CI->config->load($val); - } - } - - // Autoload helpers and languages - foreach (array('helper', 'language') as $type) - { - if (isset($autoload[$type]) AND count($autoload[$type]) > 0) - { - $this->$type($autoload[$type]); - } - } - - // A little tweak to remain backward compatible - // The $autoload['core'] item was deprecated - if ( ! isset($autoload['libraries']) AND isset($autoload['core'])) - { - $autoload['libraries'] = $autoload['core']; - } - - // Load libraries - if (isset($autoload['libraries']) AND count($autoload['libraries']) > 0) - { - // Load the database driver. - if (in_array('database', $autoload['libraries'])) - { - $this->database(); - $autoload['libraries'] = array_diff($autoload['libraries'], array('database')); - } - - // Load all other libraries - foreach ($autoload['libraries'] as $item) - { - $this->library($item); - } - } - - // Autoload models - if (isset($autoload['model'])) - { - $this->model($autoload['model']); - } - } - - // -------------------------------------------------------------------- - - /** - * Object to Array - * - * Takes an object as input and converts the class variables to array key/vals - * - * @param object - * @return array - */ - protected function _ci_object_to_array($object) - { - return (is_object($object)) ? get_object_vars($object) : $object; - } - - // -------------------------------------------------------------------- - - /** - * Get a reference to a specific library or model - * - * @param string - * @return bool - */ - protected function &_ci_get_component($component) - { - $CI =& get_instance(); - return $CI->$component; - } - - // -------------------------------------------------------------------- - - /** - * Prep filename - * - * This function preps the name of various items to make loading them more reliable. - * - * @param mixed - * @param string - * @return array - */ - protected function _ci_prep_filename($filename, $extension) - { - if ( ! is_array($filename)) - { - return array(strtolower(str_replace('.php', '', str_replace($extension, '', $filename)).$extension)); - } - else - { - foreach ($filename as $key => $val) - { - $filename[$key] = strtolower(str_replace('.php', '', str_replace($extension, '', $val)).$extension); - } - - return $filename; - } - } -} - -/* End of file Loader.php */ -/* Location: ./system/core/Loader.php */ \ No newline at end of file diff --git a/donjo-sys/core/Model.php b/donjo-sys/core/Model.php deleted file mode 100644 index 9bbb1fcdf..000000000 --- a/donjo-sys/core/Model.php +++ /dev/null @@ -1,58 +0,0 @@ -$key; - } -} -// END Model Class - -/* End of file Model.php */ -/* Location: ./system/core/Model.php */ \ No newline at end of file diff --git a/donjo-sys/core/Output.php b/donjo-sys/core/Output.php deleted file mode 100644 index fc88f6e57..000000000 --- a/donjo-sys/core/Output.php +++ /dev/null @@ -1,575 +0,0 @@ -_zlib_oc = @ini_get('zlib.output_compression'); - - // Get mime types for later - if (defined('ENVIRONMENT') AND file_exists(APPPATH.'config/'.ENVIRONMENT.'/mimes.php')) - { - include APPPATH.'config/'.ENVIRONMENT.'/mimes.php'; - } - else - { - include APPPATH.'config/mimes.php'; - } - - - $this->mime_types = $mimes; - - log_message('debug', "Output Class Initialized"); - } - - // -------------------------------------------------------------------- - - /** - * Get Output - * - * Returns the current output string - * - * @access public - * @return string - */ - function get_output() - { - return $this->final_output; - } - - // -------------------------------------------------------------------- - - /** - * Set Output - * - * Sets the output string - * - * @access public - * @param string - * @return void - */ - function set_output($output) - { - $this->final_output = $output; - - return $this; - } - - // -------------------------------------------------------------------- - - /** - * Append Output - * - * Appends data onto the output string - * - * @access public - * @param string - * @return void - */ - function append_output($output) - { - if ($this->final_output == '') - { - $this->final_output = $output; - } - else - { - $this->final_output .= $output; - } - - return $this; - } - - // -------------------------------------------------------------------- - - /** - * Set Header - * - * Lets you set a server header which will be outputted with the final display. - * - * Note: If a file is cached, headers will not be sent. We need to figure out - * how to permit header data to be saved with the cache data... - * - * @access public - * @param string - * @param bool - * @return void - */ - function set_header($header, $replace = TRUE) - { - // If zlib.output_compression is enabled it will compress the output, - // but it will not modify the content-length header to compensate for - // the reduction, causing the browser to hang waiting for more data. - // We'll just skip content-length in those cases. - - if ($this->_zlib_oc && strncasecmp($header, 'content-length', 14) == 0) - { - return; - } - - $this->headers[] = array($header, $replace); - - return $this; - } - - // -------------------------------------------------------------------- - - /** - * Set Content Type Header - * - * @access public - * @param string extension of the file we're outputting - * @return void - */ - function set_content_type($mime_type) - { - if (strpos($mime_type, '/') === FALSE) - { - $extension = ltrim($mime_type, '.'); - - // Is this extension supported? - if (isset($this->mime_types[$extension])) - { - $mime_type =& $this->mime_types[$extension]; - - if (is_array($mime_type)) - { - $mime_type = current($mime_type); - } - } - } - - $header = 'Content-Type: '.$mime_type; - - $this->headers[] = array($header, TRUE); - - return $this; - } - - // -------------------------------------------------------------------- - - /** - * Set HTTP Status Header - * moved to Common procedural functions in 1.7.2 - * - * @access public - * @param int the status code - * @param string - * @return void - */ - function set_status_header($code = 200, $text = '') - { - set_status_header($code, $text); - - return $this; - } - - // -------------------------------------------------------------------- - - /** - * Enable/disable Profiler - * - * @access public - * @param bool - * @return void - */ - function enable_profiler($val = TRUE) - { - $this->enable_profiler = (is_bool($val)) ? $val : TRUE; - - return $this; - } - - // -------------------------------------------------------------------- - - /** - * Set Profiler Sections - * - * Allows override of default / config settings for Profiler section display - * - * @access public - * @param array - * @return void - */ - function set_profiler_sections($sections) - { - foreach ($sections as $section => $enable) - { - $this->_profiler_sections[$section] = ($enable !== FALSE) ? TRUE : FALSE; - } - - return $this; - } - - // -------------------------------------------------------------------- - - /** - * Set Cache - * - * @access public - * @param integer - * @return void - */ - function cache($time) - { - $this->cache_expiration = ( ! is_numeric($time)) ? 0 : $time; - - return $this; - } - - // -------------------------------------------------------------------- - - /** - * Display Output - * - * All "view" data is automatically put into this variable by the controller class: - * - * $this->final_output - * - * This function sends the finalized output data to the browser along - * with any server headers and profile data. It also stops the - * benchmark timer so the page rendering speed and memory usage can be shown. - * - * @access public - * @param string - * @return mixed - */ - function _display($output = '') - { - // Note: We use globals because we can't use $CI =& get_instance() - // since this function is sometimes called by the caching mechanism, - // which happens before the CI super object is available. - global $BM, $CFG; - - // Grab the super object if we can. - if (class_exists('CI_Controller')) - { - $CI =& get_instance(); - } - - // -------------------------------------------------------------------- - - // Set the output data - if ($output == '') - { - $output =& $this->final_output; - } - - // -------------------------------------------------------------------- - - // Do we need to write a cache file? Only if the controller does not have its - // own _output() method and we are not dealing with a cache file, which we - // can determine by the existence of the $CI object above - if ($this->cache_expiration > 0 && isset($CI) && ! method_exists($CI, '_output')) - { - $this->_write_cache($output); - } - - // -------------------------------------------------------------------- - - // Parse out the elapsed time and memory usage, - // then swap the pseudo-variables with the data - - $elapsed = $BM->elapsed_time('total_execution_time_start', 'total_execution_time_end'); - - if ($this->parse_exec_vars === TRUE) - { - $memory = ( ! function_exists('memory_get_usage')) ? '0' : round(memory_get_usage()/1024/1024, 2).'MB'; - - $output = str_replace('{elapsed_time}', $elapsed, $output); - $output = str_replace('{memory_usage}', $memory, $output); - } - - // -------------------------------------------------------------------- - - // Is compression requested? - if ($CFG->item('compress_output') === TRUE && $this->_zlib_oc == FALSE) - { - if (extension_loaded('zlib')) - { - if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) AND strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE) - { - ob_start('ob_gzhandler'); - } - } - } - - // -------------------------------------------------------------------- - - // Are there any server headers to send? - if (count($this->headers) > 0) - { - foreach ($this->headers as $header) - { - @header($header[0], $header[1]); - } - } - - // -------------------------------------------------------------------- - - // Does the $CI object exist? - // If not we know we are dealing with a cache file so we'll - // simply echo out the data and exit. - if ( ! isset($CI)) - { - echo $output; - log_message('debug', "Final output sent to browser"); - log_message('debug', "Total execution time: ".$elapsed); - return TRUE; - } - - // -------------------------------------------------------------------- - - // Do we need to generate profile data? - // If so, load the Profile class and run it. - if ($this->enable_profiler == TRUE) - { - $CI->load->library('profiler'); - - if ( ! empty($this->_profiler_sections)) - { - $CI->profiler->set_sections($this->_profiler_sections); - } - - // If the output data contains closing