/trunk/papyrus/bibliotheque/system/codeigniter/Compat.php |
---|
New file |
0,0 → 1,93 |
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); |
/** |
* CodeIgniter |
* |
* An open source application development framework for PHP 4.3.2 or newer |
* |
* @package CodeIgniter |
* @author ExpressionEngine Dev Team |
* @copyright Copyright (c) 2008, EllisLab, Inc. |
* @license http://codeigniter.com/user_guide/license.html |
* @link http://codeigniter.com |
* @since Version 1.0 |
* @filesource |
*/ |
// ------------------------------------------------------------------------ |
/** |
* Compatibility Functions |
* |
* Function overrides for older versions of PHP or PHP environments missing |
* certain extensions / libraries |
* |
* @package CodeIgniter |
* @subpackage codeigniter |
* @category Compatibility Functions |
* @author ExpressionEngine Development Team |
* @link http://codeigniter.com/user_guide/ |
*/ |
// ------------------------------------------------------------------------ |
/* |
* PHP versions prior to 5.0 don't support the E_STRICT constant |
* so we need to explicitly define it otherwise the Exception class |
* will generate errors when running under PHP 4 |
* |
*/ |
if ( ! defined('E_STRICT')) |
{ |
define('E_STRICT', 2048); |
} |
/** |
* ctype_digit() |
* |
* Determines if a string is comprised only of digits |
* http://us.php.net/manual/en/function.ctype_digit.php |
* |
* @access public |
* @param string |
* @return bool |
*/ |
if ( ! function_exists('ctype_digit')) |
{ |
function ctype_digit($str) |
{ |
if ( ! is_string($str) OR $str == '') |
{ |
return FALSE; |
} |
return ! preg_match('/[^0-9]/', $str); |
} |
} |
// -------------------------------------------------------------------- |
/** |
* ctype_alnum() |
* |
* Determines if a string is comprised of only alphanumeric characters |
* http://us.php.net/manual/en/function.ctype-alnum.php |
* |
* @access public |
* @param string |
* @return bool |
*/ |
if ( ! function_exists('ctype_alnum')) |
{ |
function ctype_alnum($str) |
{ |
if ( ! is_string($str) OR $str == '') |
{ |
return FALSE; |
} |
return ! preg_match('/[^0-9a-z]/i', $str); |
} |
} |
/* End of file Compat.php */ |
/* Location: ./system/codeigniter/Compat.php */ |
/trunk/papyrus/bibliotheque/system/codeigniter/index.html |
---|
New file |
0,0 → 1,10 |
<html> |
<head> |
<title>403 Forbidden</title> |
</head> |
<body> |
<p>Directory access is forbidden.</p> |
</body> |
</html> |
/trunk/papyrus/bibliotheque/system/codeigniter/Common.php |
---|
New file |
0,0 → 1,307 |
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); |
/** |
* CodeIgniter |
* |
* An open source application development framework for PHP 4.3.2 or newer |
* |
* @package CodeIgniter |
* @author ExpressionEngine Dev Team |
* @copyright Copyright (c) 2008, EllisLab, Inc. |
* @license http://codeigniter.com/user_guide/license.html |
* @link http://codeigniter.com |
* @since Version 1.0 |
* @filesource |
*/ |
// ------------------------------------------------------------------------ |
/** |
* Common Functions |
* |
* Loads the base classes and executes the request. |
* |
* @package CodeIgniter |
* @subpackage codeigniter |
* @category Common Functions |
* @author ExpressionEngine Dev Team |
* @link http://codeigniter.com/user_guide/ |
*/ |
// ------------------------------------------------------------------------ |
/** |
* Tests for file writability |
* |
* is_writable() returns TRUE on Windows servers when you really can't write to |
* the file, based on the read-only attribute. is_writable() is also unreliable |
* on Unix servers if safe_mode is on. |
* |
* @access private |
* @return void |
*/ |
function is_really_writable($file) |
{ |
// If we're on a Unix server with safe_mode off we call is_writable |
if (DIRECTORY_SEPARATOR == '/' AND @ini_get("safe_mode") == FALSE) |
{ |
return is_writable($file); |
} |
// For windows servers and safe_mode "on" installations we'll actually |
// write a file then read it. Bah... |
if (is_dir($file)) |
{ |
$file = rtrim($file, '/').'/'.md5(rand(1,100)); |
if (($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE) |
{ |
return FALSE; |
} |
fclose($fp); |
@chmod($file, DIR_WRITE_MODE); |
@unlink($file); |
return TRUE; |
} |
elseif (($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE) |
{ |
return FALSE; |
} |
fclose($fp); |
return TRUE; |
} |
// ------------------------------------------------------------------------ |
/** |
* Class registry |
* |
* This function acts as a singleton. If the requested class does not |
* exist it is instantiated and set to a static variable. If it has |
* previously been instantiated the variable is returned. |
* |
* @access public |
* @param string the class name being requested |
* @param bool optional flag that lets classes get loaded but not instantiated |
* @return object |
*/ |
function &load_class($class, $instantiate = TRUE) |
{ |
static $objects = array(); |
// Does the class exist? If so, we're done... |
if (isset($objects[$class])) |
{ |
return $objects[$class]; |
} |
// If the requested class does not exist in the application/libraries |
// folder we'll load the native class from the system/libraries folder. |
if (file_exists(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT)) |
{ |
require(BASEPATH.'libraries/'.$class.EXT); |
require(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT); |
$is_subclass = TRUE; |
} |
else |
{ |
if (file_exists(APPPATH.'libraries/'.$class.EXT)) |
{ |
require(APPPATH.'libraries/'.$class.EXT); |
$is_subclass = FALSE; |
} |
else |
{ |
require(BASEPATH.'libraries/'.$class.EXT); |
$is_subclass = FALSE; |
} |
} |
if ($instantiate == FALSE) |
{ |
$objects[$class] = TRUE; |
return $objects[$class]; |
} |
if ($is_subclass == TRUE) |
{ |
$name = config_item('subclass_prefix').$class; |
$objects[$class] =& new $name(); |
return $objects[$class]; |
} |
$name = ($class != 'Controller') ? 'CI_'.$class : $class; |
$objects[$class] =& new $name(); |
return $objects[$class]; |
} |
/** |
* Loads the main config.php file |
* |
* @access private |
* @return array |
*/ |
function &get_config() |
{ |
static $main_conf; |
if ( ! isset($main_conf)) |
{ |
if ( ! file_exists(APPPATH.'config/config'.EXT)) |
{ |
exit('The configuration file config'.EXT.' does not exist.'); |
} |
require(APPPATH.'config/config'.EXT); |
if ( ! isset($config) OR ! is_array($config)) |
{ |
exit('Your config file does not appear to be formatted correctly.'); |
} |
$main_conf[0] =& $config; |
} |
return $main_conf[0]; |
} |
/** |
* Gets a config item |
* |
* @access public |
* @return mixed |
*/ |
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 |
*/ |
function show_error($message) |
{ |
$error =& load_class('Exceptions'); |
echo $error->show_error('An Error Was Encountered', $message); |
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 |
*/ |
function show_404($page = '') |
{ |
$error =& load_class('Exceptions'); |
$error->show_404($page); |
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 |
*/ |
function log_message($level = 'error', $message, $php_error = FALSE) |
{ |
static $LOG; |
$config =& get_config(); |
if ($config['log_threshold'] == 0) |
{ |
return; |
} |
$LOG =& load_class('Log'); |
$LOG->write_log($level, $message, $php_error); |
} |
/** |
* Exception Handler |
* |
* This is the custom exception handler that is declaired at the top |
* of Codeigniter.php. The main reason we use this is permit |
* PHP errors to be logged in our own log files since we 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 |
*/ |
function _exception_handler($severity, $message, $filepath, $line) |
{ |
// We don't bother with "strict" notices since they will fill up |
// the log file with information that isn't normally very |
// helpful. For example, if you are running PHP 5 and you |
// use version 4 style class functions (without prefixes |
// like "public", "private", etc.) you'll get notices telling |
// you that these have been deprecated. |
if ($severity == E_STRICT) |
{ |
return; |
} |
$error =& load_class('Exceptions'); |
// 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... |
$config =& get_config(); |
if ($config['log_threshold'] == 0) |
{ |
return; |
} |
$error->log_exception($severity, $message, $filepath, $line); |
} |
/* End of file Common.php */ |
/* Location: ./system/codeigniter/Common.php */ |
/trunk/papyrus/bibliotheque/system/codeigniter/CodeIgniter.php |
---|
New file |
0,0 → 1,276 |
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); |
/** |
* CodeIgniter |
* |
* An open source application development framework for PHP 4.3.2 or newer |
* |
* @package CodeIgniter |
* @author ExpressionEngine Dev Team |
* @copyright Copyright (c) 2008, EllisLab, Inc. |
* @license http://codeigniter.com/user_guide/license.html |
* @link http://codeigniter.com |
* @since Version 1.0 |
* @filesource |
*/ |
// ------------------------------------------------------------------------ |
/** |
* System Front Controller |
* |
* Loads the base classes and executes the request. |
* |
* @package CodeIgniter |
* @subpackage codeigniter |
* @category Front-controller |
* @author ExpressionEngine Dev Team |
* @link http://codeigniter.com/user_guide/ |
*/ |
// CI Version |
define('CI_VERSION', '1.7.0'); |
/* |
* ------------------------------------------------------ |
* Load the global functions |
* ------------------------------------------------------ |
*/ |
require(BASEPATH.'codeigniter/Common'.EXT); |
/* |
* ------------------------------------------------------ |
* Load the compatibility override functions |
* ------------------------------------------------------ |
*/ |
require(BASEPATH.'codeigniter/Compat'.EXT); |
/* |
* ------------------------------------------------------ |
* Load the framework constants |
* ------------------------------------------------------ |
*/ |
require(APPPATH.'config/constants'.EXT); |
/* |
* ------------------------------------------------------ |
* Define a custom error handler so we can log PHP errors |
* ------------------------------------------------------ |
*/ |
set_error_handler('_exception_handler'); |
set_magic_quotes_runtime(0); // Kill magic quotes |
/* |
* ------------------------------------------------------ |
* Start the timer... tick tock tick tock... |
* ------------------------------------------------------ |
*/ |
$BM =& load_class('Benchmark'); |
$BM->mark('total_execution_time_start'); |
$BM->mark('loading_time_base_classes_start'); |
/* |
* ------------------------------------------------------ |
* Instantiate the hooks class |
* ------------------------------------------------------ |
*/ |
$EXT =& load_class('Hooks'); |
/* |
* ------------------------------------------------------ |
* Is there a "pre_system" hook? |
* ------------------------------------------------------ |
*/ |
$EXT->_call_hook('pre_system'); |
/* |
* ------------------------------------------------------ |
* Instantiate the base classes |
* ------------------------------------------------------ |
*/ |
$CFG =& load_class('Config'); |
$URI =& load_class('URI'); |
$RTR =& load_class('Router'); |
$OUT =& load_class('Output'); |
/* |
* ------------------------------------------------------ |
* 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 remaining base classes |
* ------------------------------------------------------ |
*/ |
$IN =& load_class('Input'); |
$LANG =& load_class('Language'); |
/* |
* ------------------------------------------------------ |
* Load the app controller and local controller |
* ------------------------------------------------------ |
* |
* Note: Due to the poor object handling in PHP 4 we'll |
* conditionally load different versions of the base |
* class. Retaining PHP 4 compatibility requires a bit of a hack. |
* |
* Note: The Loader class needs to be included first |
* |
*/ |
if (floor(phpversion()) < 5) |
{ |
load_class('Loader', FALSE); |
require(BASEPATH.'codeigniter/Base4'.EXT); |
} |
else |
{ |
require(BASEPATH.'codeigniter/Base5'.EXT); |
} |
// Load the base controller class |
load_class('Controller', FALSE); |
// Load the local application controller |
// Note: The Router class automatically validates the controller path. 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().EXT)) |
{ |
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().EXT); |
// 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 $method == 'controller' |
OR strncmp($method, '_', 1) == 0 |
OR in_array(strtolower($method), array_map('strtolower', get_class_methods('Controller'))) |
) |
{ |
show_404("{$class}/{$method}"); |
} |
/* |
* ------------------------------------------------------ |
* Is there a "pre_controller" hook? |
* ------------------------------------------------------ |
*/ |
$EXT->_call_hook('pre_controller'); |
/* |
* ------------------------------------------------------ |
* Instantiate the controller and call requested method |
* ------------------------------------------------------ |
*/ |
// Mark a start point so we can benchmark the controller |
$BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_start'); |
$CI = new $class(); |
// Is this a scaffolding request? |
if ($RTR->scaffolding_request === TRUE) |
{ |
if ($EXT->_call_hook('scaffolding_override') === FALSE) |
{ |
$CI->_ci_scaffolding(); |
} |
} |
else |
{ |
/* |
* ------------------------------------------------------ |
* Is there a "post_controller_constructor" hook? |
* ------------------------------------------------------ |
*/ |
$EXT->_call_hook('post_controller_constructor'); |
// Is there a "remap" function? |
if (method_exists($CI, '_remap')) |
{ |
$CI->_remap($method); |
} |
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)))) |
{ |
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/codeigniter/CodeIgniter.php */ |
/trunk/papyrus/bibliotheque/system/codeigniter/Base4.php |
---|
New file |
0,0 → 1,69 |
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); |
/** |
* CodeIgniter |
* |
* An open source application development framework for PHP 4.3.2 or newer |
* |
* @package CodeIgniter |
* @author ExpressionEngine Dev Team |
* @copyright Copyright (c) 2008, EllisLab, Inc. |
* @license http://codeigniter.com/user_guide/license.html |
* @link http://codeigniter.com |
* @since Version 1.3 |
* @filesource |
*/ |
// ------------------------------------------------------------------------ |
/** |
* CI_BASE - For PHP 4 |
* |
* This file is used only when CodeIgniter is being run under PHP 4. |
* |
* In order to allow CI to work under PHP 4 we had to make the Loader class |
* the parent of the Controller Base class. It's the only way we can |
* enable functions like $this->load->library('email') to instantiate |
* classes that can then be used within controllers as $this->email->send() |
* |
* PHP 4 also has trouble referencing the CI super object within application |
* constructors since objects do not exist until the class is fully |
* instantiated. Basically PHP 4 sucks... |
* |
* Since PHP 5 doesn't suffer from this problem so we load one of |
* two files based on the version of PHP being run. |
* |
* @package CodeIgniter |
* @subpackage codeigniter |
* @category front-controller |
* @author ExpressionEngine Dev Team |
* @link http://codeigniter.com/user_guide/ |
*/ |
class CI_Base extends CI_Loader { |
function CI_Base() |
{ |
// This allows syntax like $this->load->foo() to work |
parent::CI_Loader(); |
$this->load =& $this; |
// This allows resources used within controller constructors to work |
global $OBJ; |
$OBJ = $this->load; // Do NOT use a reference. |
} |
} |
function &get_instance() |
{ |
global $CI, $OBJ; |
if (is_object($CI)) |
{ |
return $CI; |
} |
return $OBJ->load; |
} |
/* End of file Base4.php */ |
/* Location: ./system/codeigniter/Base4.php */ |
/trunk/papyrus/bibliotheque/system/codeigniter/Base5.php |
---|
New file |
0,0 → 1,56 |
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); |
/** |
* CodeIgniter |
* |
* An open source application development framework for PHP 4.3.2 or newer |
* |
* @package CodeIgniter |
* @author ExpressionEngine Dev Team |
* @copyright Copyright (c) 2008, EllisLab, Inc. |
* @license http://codeigniter.com/user_guide/license.html |
* @link http://codeigniter.com |
* @since Version 1.3 |
* @filesource |
*/ |
// ------------------------------------------------------------------------ |
/** |
* CI_BASE - For PHP 5 |
* |
* This file contains some code used only when CodeIgniter is being |
* run under PHP 5. It allows us to manage the CI super object more |
* gracefully than what is possible with PHP 4. |
* |
* @package CodeIgniter |
* @subpackage codeigniter |
* @category front-controller |
* @author ExpressionEngine Dev Team |
* @link http://codeigniter.com/user_guide/ |
*/ |
class CI_Base { |
private static $instance; |
public function CI_Base() |
{ |
self::$instance =& $this; |
} |
public static function &get_instance() |
{ |
return self::$instance; |
} |
} |
function &get_instance() |
{ |
return CI_Base::get_instance(); |
} |
/* End of file Base5.php */ |
/* Location: ./system/codeigniter/Base5.php */ |