From b071bb5a92aade551345a495fb13f5678f3978d0 Mon Sep 17 00:00:00 2001 From: admin Date: Sat, 26 Aug 2006 19:28:37 +0000 Subject: --- system/application/config/config.php | 2 ++ system/application/config/routes.php | 3 +- system/codeigniter/CodeIgniter.php | 6 ++-- system/codeigniter/Common.php | 3 +- system/drivers/DB_mssql.php | 2 +- system/drivers/DB_mysql.php | 2 +- system/drivers/DB_mysqli.php | 2 +- system/drivers/DB_odbc.php | 2 +- system/drivers/DB_postgre.php | 8 ++--- system/drivers/DB_sqlite.php | 2 +- system/helpers/form_helper.php | 2 +- system/helpers/url_helper.php | 4 +-- system/libraries/Calendar.php | 2 +- system/libraries/Loader.php | 2 +- system/libraries/Router.php | 45 +++++++++++++----------- system/libraries/URI.php | 14 ++++---- user_guide/general/changelog.html | 16 ++++++--- user_guide/general/controllers.html | 20 +++++++++++ user_guide/general/routing.html | 2 +- user_guide/helpers/form_helper.html | 10 +++--- user_guide/helpers/url_helper.html | 6 ++-- user_guide/libraries/database/active_record.html | 2 +- 22 files changed, 96 insertions(+), 61 deletions(-) diff --git a/system/application/config/config.php b/system/application/config/config.php index 0b4f33f41..c33bda37c 100644 --- a/system/application/config/config.php +++ b/system/application/config/config.php @@ -37,6 +37,8 @@ $config['index_page'] = "index.php"; | 'auto' Default - auto detects | 'path_info' Uses the PATH_INFO | 'query_string' Uses the QUERY_STRING +| 'orig_path_info' Uses the ORIG_PATH_INFO +| 'request_uri' Uses the REQUEST_URI | */ $config['uri_protocol'] = "auto"; diff --git a/system/application/config/routes.php b/system/application/config/routes.php index 5167f7569..dc8a32d01 100644 --- a/system/application/config/routes.php +++ b/system/application/config/routes.php @@ -45,7 +45,8 @@ $route['scaffolding_trigger'] = "scaffolding"; // Define your own routes below ------------------------------------------- +$route['products/([a-z]+)/(\d+)'] = "bamo/$1/a$2"; + -$route['products\/([a-z]+)\/(\d+)'] = "$1/a$2"; ?> \ No newline at end of file diff --git a/system/codeigniter/CodeIgniter.php b/system/codeigniter/CodeIgniter.php index de7f89af2..872f4c049 100644 --- a/system/codeigniter/CodeIgniter.php +++ b/system/codeigniter/CodeIgniter.php @@ -27,7 +27,7 @@ * @link http://www.codeigniter.com/user_guide/ */ -define('APPVER', '1.4'); +define('APPVER', '1.4.0'); /* * ------------------------------------------------------ @@ -122,7 +122,7 @@ $LANG =& _load_class('CI_Language'); * */ -_load_class('CI_Loader'); +_load_class('CI_Loader', FALSE); if (floor(phpversion()) < 5) { @@ -133,7 +133,7 @@ else require(BASEPATH.'codeigniter/Base5'.EXT); } -_load_class('CI_Controller'); +_load_class('CI_Controller', FALSE); require(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().EXT); diff --git a/system/codeigniter/Common.php b/system/codeigniter/Common.php index 2ec1c3d38..4879e7099 100644 --- a/system/codeigniter/Common.php +++ b/system/codeigniter/Common.php @@ -63,11 +63,10 @@ function &_load_class($class, $instantiate = TRUE) } else { - $objects[$class] = TRUE; + $objects[$class] = FALSE; } } - return $objects[$class]; } diff --git a/system/drivers/DB_mssql.php b/system/drivers/DB_mssql.php index 6156ec3c9..48d1929e3 100644 --- a/system/drivers/DB_mssql.php +++ b/system/drivers/DB_mssql.php @@ -93,7 +93,7 @@ class CI_DB_mssql extends CI_DB { * @param string an SQL query * @return string */ - function &_prep_query($sql) + function _prep_query($sql) { return $sql; } diff --git a/system/drivers/DB_mysql.php b/system/drivers/DB_mysql.php index 18c080b21..82e677a1a 100644 --- a/system/drivers/DB_mysql.php +++ b/system/drivers/DB_mysql.php @@ -100,7 +100,7 @@ class CI_DB_mysql extends CI_DB { * @param string an SQL query * @return string */ - function &_prep_query($sql) + function _prep_query($sql) { // "DELETE FROM TABLE" returns 0 affected rows This hack modifies // the query so that it returns the number of affected rows diff --git a/system/drivers/DB_mysqli.php b/system/drivers/DB_mysqli.php index f8cb19dbe..32c4c0f89 100644 --- a/system/drivers/DB_mysqli.php +++ b/system/drivers/DB_mysqli.php @@ -102,7 +102,7 @@ class CI_DB_mysqli extends CI_DB { * @param string an SQL query * @return string */ - function &_prep_query($sql) + function _prep_query($sql) { // "DELETE FROM TABLE" returns 0 affected rows This hack modifies // the query so that it returns the number of affected rows diff --git a/system/drivers/DB_odbc.php b/system/drivers/DB_odbc.php index fac44904b..50f39accd 100644 --- a/system/drivers/DB_odbc.php +++ b/system/drivers/DB_odbc.php @@ -94,7 +94,7 @@ class CI_DB_odbc extends CI_DB { * @param string an SQL query * @return string */ - function &_prep_query($sql) + function _prep_query($sql) { return $sql; } diff --git a/system/drivers/DB_postgre.php b/system/drivers/DB_postgre.php index 01d4b3df0..3829b04af 100644 --- a/system/drivers/DB_postgre.php +++ b/system/drivers/DB_postgre.php @@ -94,7 +94,7 @@ class CI_DB_postgre extends CI_DB { * @param string an SQL query * @return string */ - function &_prep_query($sql) + function _prep_query($sql) { return $sql; } @@ -174,7 +174,7 @@ class CI_DB_postgre extends CI_DB { if ($table == '') return '0'; - $query = $this->query("SELECT COUNT(*) AS numrows FROM `".$this->dbprefix.$table."`"); + $query = $this->query("SELECT COUNT(*) AS numrows FROM ".$this->dbprefix.$table.""); if ($query->num_rows() == 0) return '0'; @@ -225,7 +225,7 @@ class CI_DB_postgre extends CI_DB { { if (stristr($table, '.')) { - $table = preg_replace("/\./", "`.`", $table); + $table = preg_replace("/\./", ".", $table); } return $table; @@ -432,7 +432,7 @@ class CI_DB_postgre_result extends CI_DB_result { $F->name = pg_field_name($this->result_id, $i); $F->type = pg_field_type($this->result_id, $i); $F->max_length = pg_field_size($this->result_id, $i); - $F->primary_key = 0; + $F->primary_key = $i == 0; $F->default = ''; $retval[] = $F; diff --git a/system/drivers/DB_sqlite.php b/system/drivers/DB_sqlite.php index 6428dd5bb..1192e6dc7 100644 --- a/system/drivers/DB_sqlite.php +++ b/system/drivers/DB_sqlite.php @@ -115,7 +115,7 @@ class CI_DB_sqlite extends CI_DB { * @param string an SQL query * @return string */ - function &_prep_query($sql) + function _prep_query($sql) { return $sql; } diff --git a/system/helpers/form_helper.php b/system/helpers/form_helper.php index f82ad01a0..d4e45a0af 100644 --- a/system/helpers/form_helper.php +++ b/system/helpers/form_helper.php @@ -326,7 +326,7 @@ function form_close($extra = '') */ function form_prep($str = '') { - if ($str == '') + if ($str === '') { return ''; } diff --git a/system/helpers/url_helper.php b/system/helpers/url_helper.php index d2d2a5985..03d6c3b2c 100644 --- a/system/helpers/url_helper.php +++ b/system/helpers/url_helper.php @@ -90,7 +90,7 @@ function index_page() */ function anchor($uri = '', $title = '', $attributes = '') { - $site_url = site_url($uri); + $site_url = ( ! preg_match('!^\w+://!i', $uri)) ? site_url($uri) : $uri; if ($title == '') { @@ -128,7 +128,7 @@ function anchor($uri = '', $title = '', $attributes = '') */ function anchor_popup($uri = '', $title = '', $attributes = FALSE) { - $site_url = site_url($uri); + $site_url = ( ! preg_match('!^\w+://!i', $uri)) ? site_url($uri) : $uri; if ($title == '') { diff --git a/system/libraries/Calendar.php b/system/libraries/Calendar.php index 013f06796..b77dd1b6f 100644 --- a/system/libraries/Calendar.php +++ b/system/libraries/Calendar.php @@ -263,7 +263,7 @@ class CI_Calendar { } else { - $month_names = array('01' => 'cal_january', '02' => 'cal_february', '03' => 'cal_march', '04' => 'cal_april', '05' => 'cal_mayl', '06' => 'cal_june', '07' => 'cal_july', '08' => 'cal_august', '09' => 'cal_september', '10' => 'cal_october', '11' => 'cal_novermber', '12' => 'cal_december'); + $month_names = array('01' => 'cal_january', '02' => 'cal_february', '03' => 'cal_march', '04' => 'cal_april', '05' => 'cal_mayl', '06' => 'cal_june', '07' => 'cal_july', '08' => 'cal_august', '09' => 'cal_september', '10' => 'cal_october', '11' => 'cal_november', '12' => 'cal_december'); } $month = $month_names[$month]; diff --git a/system/libraries/Loader.php b/system/libraries/Loader.php index e2467fa64..3d2501fc0 100644 --- a/system/libraries/Loader.php +++ b/system/libraries/Loader.php @@ -478,7 +478,7 @@ class CI_Loader { if ($path == '') { $ext = pathinfo($view, PATHINFO_EXTENSION); - $file = ($ext == '') ? $view.EXT : $view; + $file = ($ext != EXT) ? $view.EXT : $view; $path = $this->view_path.$file; } else diff --git a/system/libraries/Router.php b/system/libraries/Router.php index 678145458..b28ead953 100644 --- a/system/libraries/Router.php +++ b/system/libraries/Router.php @@ -87,25 +87,31 @@ class CI_Router { // Fetch the URI string Depending on the server, // the URI will be available in one of two globals - switch ($this->config->item('uri_protocol')) + if ($this->config->item('uri_protocol') == 'auto') { - case 'path_info' : $this->uri_string = (isset($_SERVER['PATH_INFO'])) ? $_SERVER['PATH_INFO'] : @getenv('PATH_INFO'); - break; - case 'query_string' : $this->uri_string = (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING'); - break; - default : - $path_info = (isset($_SERVER['PATH_INFO'])) ? $_SERVER['PATH_INFO'] : @getenv('PATH_INFO'); - - if ($path_info != '' AND $path_info != "/".SELF) - { - $this->uri_string = $path_info; - } - else - { - $this->uri_string = (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING'); - } - break; + $path_info = getenv('PATH_INFO'); + if ($path_info != '' AND $path_info != "/".SELF) + { + $this->uri_string = $path_info; + } + else + { + $path_info = getenv('ORIG_PATH_INFO'); + if ($path_info != '' AND $path_info != "/".SELF) + { + $this->uri_string = $path_info; + } + else + { + $this->uri_string = getenv('QUERY_STRING'); + } + } + } + else + { + $this->uri_string = getenv(strtoupper($this->config->item('uri_protocol'))); } + // Is there a URI string? If not, the default controller specified // by the admin in the "routes" file will be shown. @@ -291,10 +297,7 @@ class CI_Router { // Loop through the route array looking for wildcards foreach (array_slice($this->routes, 1) as $key => $val) - { - if (count(explode('/', $key)) != $num) - continue; - + { // Convert wildcards to RegEx $key = str_replace(':any', '.+', str_replace(':num', '[0-9]+', $key)); diff --git a/system/libraries/URI.php b/system/libraries/URI.php index 4c2fa9c7f..c5fd4625b 100644 --- a/system/libraries/URI.php +++ b/system/libraries/URI.php @@ -28,7 +28,7 @@ */ class CI_URI { - var $uri; + var $router; var $keyval = array(); /** @@ -42,7 +42,7 @@ class CI_URI { */ function CI_URI() { - $this->uri =& _load_class('CI_Router'); + $this->router =& _load_class('CI_Router'); log_message('debug', "URI Class Initialized"); } @@ -60,7 +60,7 @@ class CI_URI { */ function segment($n, $no_result = FALSE) { - return ( ! isset($this->uri->segments[$n])) ? $no_result : $this->uri->segments[$n]; + return ( ! isset($this->router->segments[$n])) ? $no_result : $this->router->segments[$n]; } // -------------------------------------------------------------------- @@ -196,7 +196,7 @@ class CI_URI { $leading = '/'; $trailing = '/'; } - return ( ! isset($this->uri->segments[$n])) ? '' : $leading.$this->uri->segments[$n].$trailing; + return ( ! isset($this->router->segments[$n])) ? '' : $leading.$this->router->segments[$n].$trailing; } // -------------------------------------------------------------------- @@ -209,7 +209,7 @@ class CI_URI { */ function segment_array() { - return $this->uri->segments; + return $this->router->segments; } // -------------------------------------------------------------------- @@ -222,7 +222,7 @@ class CI_URI { */ function total_segments() { - return count($this->uri->segments); + return count($this->router->segments); } // -------------------------------------------------------------------- @@ -235,7 +235,7 @@ class CI_URI { */ function uri_string() { - return $this->uri->uri_string; + return $this->router->uri_string; } } diff --git a/user_guide/general/changelog.html b/user_guide/general/changelog.html index 5f3b86904..5721bc866 100644 --- a/user_guide/general/changelog.html +++ b/user_guide/general/changelog.html @@ -69,20 +69,28 @@ Change Log diff --git a/user_guide/general/controllers.html b/user_guide/general/controllers.html index 648298eb0..b45b5aef7 100644 --- a/user_guide/general/controllers.html +++ b/user_guide/general/controllers.html @@ -71,6 +71,7 @@ Controllers
  • Functions
  • Private Functions
  • Defining a Default Controller
  • +
  • Organizing Controllers into Sub-folders
  • Class Constructors
  • Reserved Function Names
  • @@ -204,6 +205,25 @@ your application/config/routes.php file and set this variable:

    specifying any URI segments you'll see your Hello World message by default.

    + +

    Organizing Your Controllers into Sub-folders

    + +

    If you are building a large application you might find it convenient to organize your controllers into sub-folders. Code Igniter permits you to do this.

    + +

    Simply create folders within your application/controllers directory and place your controller classes within them.

    + +

    Note:  When using this feature the first segment or your URI must specify the folder. For example, lets say you have a controller +located here:

    + +application/controllers/products/shoes.php + +

    To call the above controller your URI will look something like this:

    + +www.your-site.com/index.php/products/shoes/123 + +

    Code Igniter also permits you to remap your URIs using its URI Routing feature. + +

    Class Constructors

    diff --git a/user_guide/general/routing.html b/user_guide/general/routing.html index 977698b9f..e5dac6808 100644 --- a/user_guide/general/routing.html +++ b/user_guide/general/routing.html @@ -138,7 +138,7 @@ Higher routes will always take precedence over lower ones.

    A typical RegEx route might look something like this:

    -$route['products\/([a-z]+)\/(\d+)'] = "$1/id_$2"; +$route['products/([a-z]+)/(\d+)'] = "$1/id_$2";

    In the above example, a URI similar to products/shirts/123 would instead call the shirts controller class and the id_123 function.

    diff --git a/user_guide/helpers/form_helper.html b/user_guide/helpers/form_helper.html index 8593f81d9..f38d4ada1 100644 --- a/user_guide/helpers/form_helper.html +++ b/user_guide/helpers/form_helper.html @@ -208,7 +208,7 @@ value you wish to be selected. Example: $options = array(
                      'small'  => 'Small Shirt',
                      'med'    => 'Medium Shirt',
    -                  large'   => 'Large Shirt',
    +                  'large'   => 'Large Shirt',
                      'xlarge' => 'Extra Large Shirt',
                    );

    @@ -217,10 +217,10 @@ echo form_dropdown('shirts', $options, 'large');
    // Would produce:

    <select name="shirts">
    -<option value="small">Small Shirt
    -<option value="med">Medium Shirt
    -<option value="large" selected>Large Shirt
    -<option value="xlarge">Extra Large Shirt
    +<option value="small">Small Shirt</option>
    +<option value="med">Medium Shirt</option>
    +<option value="large" selected>Large Shirt</option>
    +<option value="xlarge">Extra Large Shirt</option>
    </select>
    diff --git a/user_guide/helpers/url_helper.html b/user_guide/helpers/url_helper.html index a8f5c14d6..2b5b354cc 100644 --- a/user_guide/helpers/url_helper.html +++ b/user_guide/helpers/url_helper.html @@ -117,8 +117,10 @@ echo site_url($segments); anchor(uri segments, text, attributes)

    The first parameter can contain any segments you wish appended to the URL. As with the site_url() function above, -segments can be a string or an array. Note: Do not include the base URL. It will be built as specified in your config file. Include -only the URI segments you wish appended to the URL.

    +segments can be a string or an array.

    + +

    Note:  If you are building links that are internal to your application do not include the base URL (http://...). This +will be added automatically from the information specified in your config file. Include only the URI segments you wish appended to the URL.

    The second segment is the text you would like the link to say. If you leave it blank, the URL will be used.

    diff --git a/user_guide/libraries/database/active_record.html b/user_guide/libraries/database/active_record.html index 8fc3b8131..6e5d6126a 100644 --- a/user_guide/libraries/database/active_record.html +++ b/user_guide/libraries/database/active_record.html @@ -557,7 +557,7 @@ You can optionally pass this information directly into the update function as a

    Generates a delete SQL string and runs the query.

    -$this->db->delete('mytable', array('id', $id)); +$this->db->delete('mytable', array('id' => $id));

    // Produces:
    // DELETE FROM mytable
    -- cgit v1.2.3-24-g4f1b