<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>CodeIgniter User Guide : Change Log</title><style type='text/css' media='all'>@import url('userguide.css');</style><link rel='stylesheet' type='text/css' media='all' href='userguide.css' /><script type="text/javascript" src="./nav/nav.js"></script><script type="text/javascript" src="./nav/prototype.lite.js"></script><script type="text/javascript" src="./nav/moo.fx.js"></script><script type="text/javascript" src="./nav/user_guide_menu.js"></script><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv='expires' content='-1' /><meta http-equiv= 'pragma' content='no-cache' /><meta name='robots' content='all' /><meta name='author' content='Rick Ellis' /><meta name='description' content='CodeIgniter User Guide' /></head><body><!-- START NAVIGATION --><div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('./');</script></div></div><div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="./images/nav_toggle.jpg" width="153" height="44" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div><div id="masthead"><table cellpadding="0" cellspacing="0" border="0" style="width:100%"><tr><td><h1>CodeIgniter User Guide Version 1.5.4</h1></td><td id="breadcrumb_right"><a href="./toc.html">Table of Contents Page</a></td></tr></table></div><!-- END NAVIGATION --><!-- START BREADCRUMB --><table cellpadding="0" cellspacing="0" border="0" style="width:100%"><tr><td id="breadcrumb"><a href="http://www.codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;<a href="index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;Change Log</td><td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td></tr></table><!-- END BREADCRUMB --><br clear="all" /><!-- START CONTENT --><div id="content"><h1>Change Log</h1><h2>Version 1.5.5</h2><p>Release Date: -- still in development </p><ul>	<li>Added Flashdata variables, session_id regeneration and configurable session update   times to the <a href="./libraries/sessions.html">Session class.</a></li>	<li>Added the ability to <a href="./general/autoloader.html">auto-load</a> <a href="./general/models.html">Models</a></li>	<li>Added $this->DB->save_queries variable to DB driver, enabling queries to get saved or no. Previously they were always saved.</li>	<li>Added <dfn>$assign_to_controller</dfn> variable in the main <kbd>index.php</kbd> file.  Anything that this variable contains will be passed automatically to a controller constructor when initialized.</li>	<li>Reorganized the URI and Routes classes for better clarity.</li>    <li>Javascript Calendar plugin now uses the months and days from the calendar language file, instead of hard-coded values, internationalizing it.</li>    <li>Removed &quot;rand()&quot; as a listed option from orderby in the <a href="./database/active_record.html">Active Record</a>, as it was MySQL only. </li>    <li>Added titles to all user manual pages.</li>    <li>Added a check for NULL fields in the MySQL database backup utility.</li>    <li>Documented the timezones() function in the <a href="./helpers/date_helper.html">Date Helper</a>.</li>    <li>Documented unset_userdata in the <a href="./libraries/sessions.html">Session class</a>.</li>    <li>Changed the behaviour of custom callbacks so that they no longer trigger the &quot;required&quot; rule. </li>    <li>Added a few additional mime type variations for CSV.</li>    <li>Added <kbd>strip_quotes()</kbd> function to <a href="./helpers/string_helper.html">string helper</a>.</li>    <li>Added <kbd>reduce_multiples()</kbd> function to <a href="./helpers/string_helper.html">string helper</a>.</li>    <li>Added <kbd>quotes_to_entities()</kbd> function to <a href="./helpers/string_helper.html">string helper</a>.</li>    <li>Moved the safe mode and auth checks for the Email library into the constructor. </li>    <li>Fixed a bug in <kbd>highlight_pharse()</kbd> that caused an error with slashes.</li>    <li>Fixed a bug in <kbd>word_wrap()</kbd> of the Text Helper that incorrectly referenced an object. </li>    <li>Fixed a bug in the <a href="./libraries/email.html">Email</a> library where some timezones were calculated incorrectly. </li>    <li>Fixed a bug in <a href="./libraries/validation.html">Validation</a> where valid_ip() wasn't called properly.</li>    <li>Fixed a bug in the Session library where user agent matching would fail on user agents ending with a space. </li>    <li>Fixed a bug in database driver where num_rows property wasn't getting updated.</li>    <li>Fixed a bug in captcha calling an invalid PHP function.</li>    <li>Fixed a bug in _html_entity_decode_callback() when 'global_xss_filtering' is enabled.</li>	<li>Fixed a bug in the cookie helper "set_cookie" function.  It was not honoring the config settings.</li>    <li>Fixed an example of comma-separated emails in the email library documentation.</li>    <li>Fixed an example in the Calendar library for Showing Next/Previous Month Links.</li>    <li>Fixed a typo in the database language file. </li>    <li>Fixed an example for XML RPC.</li>    <li>Fixed an example of <kbd>accept_charset()</kbd> in the <a href="./libraries/user_agent.html">User Agent Library</a>. </li>    <li>Fixed a missing &quot;?&gt;&quot; in the smiley helper. </li>    <li>Fixed a typo in the docblock comments that had CodeIgniter spelled CodeIgnitor. </li>    <li>Fixed a typo in the <a href="./helpers/string_helper.html">String Helper</a> (uniquid changed to uniqid) </li>    <li>Fixed a typo in the DocBlock comment for unset_userdata() in Session.</li>    <li>Fixed a typo in the table library docs. </li>    <li>Moved part of the userguide menu javascript to an external file. </li></ul><h2>Version 1.5.4</h2><p>Release Date: July 12, 2007 </p><ul>    <li>Added <a href="./libraries/language.html">custom Language files</a> to the <a href="./general/autoloader.html">autoload</a> options. </li>	<li>Added stripslashes() to the _clean_input_data() function in the <a href="./libraries/input.html">Input class</a> when magic quotes is on so that data will always be un-slashed within the framework.</li>	<li>Added array to string into the <a href="general/profiling.html">profiler</a>.</li>	<li>Added some additional mime types in application/config/mimes.php.</li>	<li>Added filename_security() method to <a href="./libraries/input.html">Input library</a>.</li>	<li>Added some additional arguments to the <a href="./helpers/inflector_helper.html">Inflection helper</a> singular() to compensate for words ending in "s".  Also added a force parameter to pluralize().</li>	<li>Added $config['charset'] to the config file.  Default value is 'UTF-8', used in some string handling functions.</li>	<li>Fixed MSSQL insert_id().</li>	<li>Fixed a logic error in the DB trans_status() function.  It was incorrectly returning TRUE on failure and FALSE on success.</li>	<li>Fixed a bug that was allowing multiple load attempts on extended classes.</li>	<li>Fixed a bug in the bootstrap file that was incorrectly attempting to discern the full server path even when it was explicity set by the user.</li>	<li>Fixed a bug in the escape_str() function in the MySQL driver.</li>    <li>Fixed a typo in the <a href="./libraries/calendar.html">Calendar library </a> </li>    <li>Fixed a typo in rpcs.php library</li>    <li>Fixed a bug in the <a href="./libraries/zip.html">Zip library</a>, providing PC Zip file compatibility with Mac OS X</li>    <li>Fixed a bug in router that was ignoring the scaffolding route for optimization </li>	<li>Fixed an IP validation bug.</li>	<li>Fixed a bug in display of POST keys in the <a href="./general/profiling.html">Profiler</a> output</li>	<li>Fixed a bug in display of queries with characters that would be interpreted as HTML in the <a href="./general/profiling.html">Profiler</a> output</li>	<li>Fixed a bug in display of Email class print debugger with characters that would be interpreted as HTML in the debugging output</li>	<li>Fixed a bug in the Content-Transfer-Encoding of HTML emails with the quoted-printable MIME type</li>	<li>Fixed a bug where one could unset certain PHP superglobals by setting them via GET or POST data</li>	<li>Fixed an undefined function error in the insert_id() function of the PostgreSQL driver</li>	<li>Fixed various doc typos. </li>	<li>Documented two functions from the <a href="./helpers/string_helper.html">String helper </a> that were missing from the user guide:  trim_slashes() and reduce_double_slashes().</li>	<li>Docs now validate to XHTML 1 transitional</li>    <li>Updated the XSS Filtering to take into account the IE expression() ability and improved certain deletions to prevent possible exploits</li>    <li>Modified the Router so that when Query Strings are Enabled, the controller trigger and function trigger values are sanitized for filename include security.</li>    <li>Modified the is_image() method in the Upload library to take into account Windows IE 6/7 eccentricities when dealing with MIMEs</li>    <li>Modified XSS Cleaning routine to be more performance friendly and compatible with PHP 5.2's new PCRE backtrack and recursion limits.</li>	<li>Modified the <a href="./helpers/url_helper.html">URL Helper</a> to type cast the $title as a string in case a numeric value is supplied</li>	<li>Modified Form Helper form_dropdown() to type cast the keys and values of the options array as strings, allowing numeric values to be properly set as 'selected'</li>	<li>Deprecated the use if <kbd>is_numeric()</kbd> in various places since it allows periods.  Due to compatibility problems with <kbd>ctype_digit()</kbd>, making it unreliable in some installations, the following regular expression was used instead:  <kbd>preg_match("/[^0-9]/", $n)</kbd></li>    <li>Deprecated: APPVER has been deprecated and replaced with CI_VERSION for clarity. </li></ul><h2>Version 1.5.3</h2><p>Release Date: April 15, 2007 </p><ul>    <li>Added array to string into the profiler </li>    <li>Code Igniter references updated to CodeIgniter </li>    <li>pMachine references updated to EllisLab </li>    <li>Fixed a bug in the repeater function of <a href="./helpers/string_helper.html">string helper</a>. </li>    <li>Fixed a bug in ODBC driver </li>    <li>Fixed a bug in result_array() that was returning an empty array when no result is produced.</li>    <li>Fixed a bug in the redirect function of the <a href="./helpers/url_helper.html">url helper</a>. </li>    <li>Fixed an undefined variable in Loader </li>    <li>Fixed a version bug in the Postgre driver </li>    <li>Fixed a bug in the textarea function of the form helper for use with strings</li>    <li>Fixed doc typos. </li></ul><h2>Version 1.5.2</h2><p>Release Date: February 13, 2007 </p><ul>    <li>Added <a href="./installation/downloads.html#svn">subversion information</a> to the <a href="./installation/downloads.html">downloads</a> page. </li>	<li>Added support for captions in the <a href="./libraries/table.html">Table Library</a> </li>	<li>Fixed a bug in the <a href="./helpers/download_helper.html">download_helper</a> that was causing Internet Explorer to load rather then download </li>    <li>Fixed a bug in the Active Record Join function that was not taking table prefixes into consideration.</li>    <li>Removed unescaped variables in error messages of Input and Router classes</li>    <li>Fixed a bug in the Loader that was causing errors on Libraries loaded twice. A debug message is now silently made in the log.  </li>    <li>Fixed a bug in the <a href="./helpers/form_helper.html">form helper</a> that gave textarea a value attribute </li>    <li>Fixed a bug in the <a href="./libraries/image_lib.php">Image Library</a> that was ignoring resizing the same size image </li>    <li>Fixed some doc typos.</li></ul><h2>Version 1.5.1</h2><p>Release Date: November 23, 2006</p><ul>    <li>Added support for submitting arrays of libraries in the $this-&gt;load-&gt;library function.</li>    <li>Added support for naming custom library files in lower or uppercase.</li>    <li>Fixed a bug related to output buffering.</li>    <li>Fixed a bug in the active record class that was not resetting query data after a completed query.</li>    <li>Fixed a bug that was suppressing errors in controllers.</li>    <li>Fixed a problem that can cause a loop to occur when the config file is missing.</li>    <li>Fixed a bug that occurred when multiple models were loaded with the third parameter set to TRUE.</li>    <li>Fixed an oversight that was not unsetting globals properly in the input sanitize function.</li>    <li>Fixed some bugs in the Oracle DB driver.</li>    <li>Fixed an incorrectly named variable in the MySQLi result driver.</li>    <li>Fixed some doc typos.</li></ul><h2>Version 1.5.0.1</h2><p>Release Date: October 31, 2006</p><ul><li>Fixed a problem in which duplicate attempts to load helpers and classes were not being stopped.</li><li>Fixed a bug in the word_wrap() helper function.</li><li>Fixed an invalid color Hex number in the Profiler class.</li><li>Fixed a corrupted image in the user guide.</li></ul><h2>Version 1.5.0</h2><p>Release Date: October 30, 2006</p><ul><li>Added <a href="./database/utilities.html">DB utility class</a>, permitting DB backups, CVS or XML files from DB results, and various other functions.</li><li>Added <a href="./database/caching.html">Database Caching Class</a>.</li><li>Added <a href="./database/transactions.html">transaction support</a> to the database classes.</li><li>Added <a href="./general/profiling.html">Profiler Class</a> which generates a report of Benchmark execution times, queries, and POST data at the bottom of your pages.</li><li>Added <a href="./libraries/user_agent.html">User Agent Library</a> which allows browsers, robots, and mobile devises to be identified.</li><li>Added <a href="./libraries/table.html">HTML Table Class</a> , enabling tables to be generated from arrays or database results.</li><li>Added <a href="./libraries/zip.html">Zip Encoding Library</a>.</li><li>Added <a href="./libraries/ftp.html">FTP Library</a>.</li><li>Added the ability to <a href="./general/creating_libraries.html">extend libraries</a> and <a href="./general/core_classes.html">extend core classes</a>, in addition to being able to replace them.</li><li>Added support for storing <a href="./general/models.html">models within sub-folders</a>.</li><li>Added <a href="./helpers/download_helper.html">Download Helper</a>.</li><li>Added <a href="./database/queries.html">simple_query()</a> function to the database classes</li><li>Added <a href="./helpers/date_helper.html">standard_date()</a> function to the Date Helper.</li><li>Added <a href="./database/results.html">$query->free_result()</a> to database class.</li><li>Added <a href="./database/fields.html">$query->list_fields()</a> function to database class</li><li>Added <a href="./database/helpers.html">$this->db->platform()</a> function</li><li>Added new <a href="./helpers/file_helper.html">File Helper</a>:  get_filenames()</li><li>Added new helper:  <a href="./helpers/smiley_helper.html">Smiley Helper</a></li><li>Added support for &lt;ul> and &lt;ol> lists in the  <a href="./helpers/html_helper.html">HTML Helper</a></li><li>Added the ability to rewrite <a href="./general/alternative_php.html">short tags</a> on-the-fly, converting them to standard PHP statements, for those servers that do not support short tags.  This allows the cleaner syntax to be used regardless of whether it's supported by the server.</li><li>Added the ability to <a href="./general/managing_apps.html">rename or relocate the "application" folder</a>.<li>Added more thorough initialization in the upload class so that all class variables are reset.</li><li>Added "is_numeric" to validation, which uses the native PHP is_numeric function.</li><li>Improved the URI handler to make it more reliable when the $config['uri_protocol'] item is set to AUTO.</li><li>Moved most of the functions in the Controller class into the Loader class, allowing fewer reserved function names for controllers when running under PHP 5.</li><li>Updated the DB Result class to return an empty array when $query->result() doesn't produce a result.</li><li>Updated the <dfn>input->cookie()</dfn> and <dfn>input->post()</dfn> functions in <a href="./libraries/input.html">Input Class</a> to permit arrays contained cookies that are arrays to be run through the XSS filter.</li><li>Documented three functions from the <a href="./libraries/validation.html">Validation class</a> that were missing from the user guide:  set_select(), set_radio(), and set_checkbox().</li><li>Fixed a bug in the Email class related to SMTP Helo data.</li><li>Fixed a bug in the word wrapping helper and function in the email class.</li><li>Fixed a bug in the validation class.</li><li>Fixed a bug in the typography helper that was incorrectly wrapping block level elements in paragraph tags.</li><li>Fixed a problem in the form_prep() function that was double encoding entities.</li><li>Fixed a bug that affects some versions of PHP when output buffering is nested.</li><li>Fixed a bug that caused CI to stop working when the PHP magic __get() or __set() functions were used within models or controllers.</li><li>Fixed a pagination bug that was permitting negative values in the URL.</li><li>Fixed an oversight in which the Loader class was not allowed to be exteneded.</li><li>Changed <dfn>_get_config()</dfn> to <dfn>get_config()</dfn> since the function is not a private one.</li><li><strong>Deprecated "init" folder</strong>.  Initialization happens automatically now.  <a href="./general/creating_libraries.html">Please see documentation</a>.</li><li><strong>Deprecated</strong> $this->db->field_names()  USE  $this->db->list_fields()</li><li><strong>Deprecated</strong> the <dfn>$config['log_errors']</dfn> item from the config.php file.  Instead, <dfn>$config['log_threshold']</dfn> can be set to "0" to turn it off.</li></ul><h2>Version 1.4.1</h2><p>Release Date: September 21, 2006</p><ul><li>Added a new feature that passes URI segments directly to your function calls as parameters. See the <a href="controllers.html">Controllers</a> page for more info.</li><li>Added support for a function named <dfn>_output()</dfn>, which when used in your controllers will received the final rendered output from the output class.  More info in the <a href="controllers.html">Controllers</a> page.</li><li>Added several new functions in the <a href="./libraries/uri.html">URI Class</a> to let you retrieve and manipulate URI segments that have been re-routed using the <a href="routing.html">URI Routing</a> feature. Previously, the URI class did not permit you to access any re-routed URI segments, but now it does.</li><li>Added <a href="./libraries/output.html">$this->output->set_header()</a> function, which allows you to set server headers.</li><li>Updated plugins, helpers, and language classes to allow your <dfn>application</dfn> folder to contain its own plugins, helpers, and language folders.  Previously they were always treated as global for your entire installation.  If your application folder contains any of these resources they will be used <em>instead</em> the global ones.</li><li>Added <a href="./helpers/inflector_helper.html">Inflector helper</a>.</li><li>Added <dfn>element()</dfn> function in the <a href="./helpers/array_helper.html">array helper</a>.</li><li>Added <dfn>RAND()</dfn> to active record <dfn>orderby()</dfn> function.</li><li>Added <dfn>delete_cookie()</dfn> and <dfn>get_cookie()</dfn> to <a href="./helpers/cookie_helper.html">Cookie helper</a>, even though the input class has a cookie fetching function.</li><li>Added Oracle database driver (still undergoing testing so it might have some bugs).</li><li>Added the ability to combine pseudo-variables and php variables in the template parser class.</li><li>Added output compression option to the config file.</li><li>Removed the is_numeric test from the db->escape() function.</li><li>Fixed a MySQLi bug that was causing error messages not to contain proper error data.</li><li>Fixed a bug in the email class which was causing it to ignore explicitly set alternative headers.</li><li>Fixed a bug that was causing a PHP error when the Exceptions class was called within the get_config() function since it was causing problems.</li><li>Fixed an oversight in the cookie helper in which the config file cookie settings were not being honored.</li><li>Fixed an oversight in the upload class. An item mentioned in the 1.4 changelog was missing.</li><li>Added some code to allow email attachments to be reset when sending batches of email.</li><li>Deprecated the <dfn>application/scripts</dfn> folder. It will continue to work for legacy users, but it is recommended that you create your own<a href="./general/libraries.html">libraries</a> or <a href="./general/models.html">models</a> instead.  It was originally added before CI had user libraries or models, but it's not needed anymore.</li><li>Deprecated the <dfn>$autoload['core']</dfn> item from the <kbd>autoload.php</kbd> file.  Instead, please now use: <kbd>$autoload['libraries']</kbd></li><li>Deprecated the following database functions: $this->db->smart_escape_str() and $this->db->fields().</li></ul><h2>Version 1.4.0</h2><p>Release Date: September 17, 2006</p><ul><li>Added <a href="hooks.html">Hooks</a> feature, enabling you to tap into and modify the inner workings of the framework without hacking the core files.</li><li>Added the ability to organize controller files <a href="controllers.html">into sub-folders</a>.  Kudos to Marco for <a href="http://www.codeigniter.com/forums/viewthread/627/">suggesting</a> this (and the next two) feature.</li><li>Added regular expressions support for <a href="routing.html">routing rules</a>.</li><li>Added the ability to <a href="controllers.html">remap function calls</a> within your controllers.</li><li>Added the ability to <a href="core_classes.html">replace core system classes</a> with your own classes.</li><li>Added support for % character in URL.</li><li>Added the ability to supply full URLs using the <a href="./helpers/url_helper.html">anchor()</a> helper function.</li><li>Added mode parameter to <a href="./helpers/file_helper.html">file_write()</a> helper.</li><li>Added support for changing the port number in the <a href="./database/configuration.html">Postgre driver</a>.</li><li>Moved the list of "allowed URI characters" out of the Router class and into the config file.</li><li>Moved the MIME type array out of the Upload class and into its own file in the applications/config/ folder.</li><li>Updated the Upload class to allow the upload field name to be set when calling <a href="./libraries/file_uploading.html">do_upload()</a>.</li><li>Updated the <a href="./libraries/config.html">Config Library</a> to be able to load config files silently, and to be able to assign config files to their own index (to avoid collisions if you use multiple config files).</li><li>Updated the URI Protocol code to allow more options so that URLs will work more reliably in different environments.</li><li>Updated the <dfn>form_open()</dfn> helper to allow the GET method to be used.</li><li>Updated the MySQLi <dfn>execute()</dfn> function with some code to help prevent lost connection errors.</li><li>Updated the SQLite Driver to check for object support before attempting to return results as objects.  If unsupported it returns an array.</li><li>Updated the Models loader function to allow multiple loads of the same model.</li><li>Updated the MS SQL driver so that single quotes are escaped.</li><li>Updated the Postgre and ODBC drivers for better compatibility.</li><li>Removed a strtolower() call that was changing URL segments to lower case.</li><li>Removed some references that were interfering with PHP 4.4.1 compatibility.</li><li>Removed backticks from Postgre class since these are not needed.</li><li>Renamed <dfn>display()</dfn> to <dfn>_display()</dfn> in the Output class to make it clear that it's a private function.</li><li>Deprecated the hash() function due to a naming conflict with a native PHP function with the same name.  Please use <kbd>dohash()</kbd> instead.</li><li>Fixed an bug that was preventing the input class from unsetting GET variables.</li><li>Fixed a router bug that was making it too greedy when matching end segments.</li><li>Fixed a bug that was preventing multiple discreet database calls.</li><li>Fixed a bug in which loading a language file was producing a "file contains no data" message.</li><li>Fixed a session bug caused by the XSS Filtering feature inadvertently changing the case of certain words.</li><li>Fixed some missing prefixes when using the database prefix feature.</li><li>Fixed a typo in the Calendar class (cal_november).</li><li>Fixed a bug in the <dfn>form_checkbox()</dfn> helper.</li><li>Fixed a bug that was allowing the second segment of the URI to be identical to the class name.</li><li>Fixed an evaluation bug in the database initialization function.</li><li>Fixed a minor bug in one of the error messages in the language class.</li><li>Fixed a bug in the date helper <dfn>timespan</dfn> function.</li><li>Fixed an undefined variable in the DB Driver class.</li><li>Fixed a bug in which dollar signs used as binding replacement values in the DB class would be treated as RegEx back-references.</li><li>Fixed a bug in the <dfn>set_hash()</dfn> function which was preventing MD5 from being used.</li><li>Fixed a couple bugs in the Unit Testing class.</li><li>Fixed an incorrectly named variable in the Validation class.</li><li>Fixed an incorrectly named variable in the URI class.</li><li>Fixed a bug in the config class that was preventing the base URL from being called properly.</li><li>Fixed a bug in the validation class that was not permitting callbacks if the form field was empty.</li><li>Fixed a problem that was preventing scaffolding from working properly with MySQLi.</li><li>Fixed some MS SQL bugs.</li><li>Fixed some doc typos.</li></ul><h2>Version 1.3.3</h2><p>Release Date: June 1, 2006</p><ul><li>Models do <strong>not</strong> connect automatically to the database as of this version. <a href="./general/models.html">More info here</a>.</li><li>Updated the Sessions class to utilize the active record class when running session related queries.  Previously the queries assumed MySQL syntax.</li><li>Updated alternator() function to re-initialize when called with no arguments, allowing multiple calls.</li><li>Fixed a bug in the active record "having" function.</li><li>Fixed a problem in the validation class which was making checkboxes be ignored when required.</li><li>Fixed a bug in the word_limiter() helper function.  It was cutting off the fist word.</li><li>Fixed a bug in the xss_clean function due to a PHP bug that affects some versions of html_entity_decode.</li><li>Fixed a validation bug that was preventing rules from being set twice in one controller.</li><li>Fixed a calendar bug that was not letting it use dynamically loaded languages.</li><li>Fixed a bug in the active record class when using WHERE clauses with LIKE</li><li>Fixed a bug in the hash() security helper.</li><li>Fixed some typos.</li></ul><h2>Version 1.3.2</h2><p>Release Date: April 17, 2006</p><ul><li>Changed the behavior of the validation class such that if a "required" rule is NOT explicitly stated for a field then all other tests get ignored.</li><li>Fixed a bug in the Controller class that was causing it to look in the local "init" folder instead of the main system one.</li><li>Fixed a bug in the init_pagination file.  The $config item was not being set correctly.</li><li>Fixed a bug in the auto typography helper that was causing inconsistent behavior.</li><li>Fixed a couple bugs in the Model class.</li><li>Fixed some documentation typos and errata.</li></ul><h2>Version 1.3.1</h2><p>Release Date: April 11, 2006</p><ul><li>Added a <a href="./libraries/unit_testing.html">Unit Testing Library</a>.</li><li>Added the ability to pass objects to the <strong>insert()</strong> and <strong>update()</strong>  database functions.This feature enables you to (among other things) use your  <a href="./general/models.html">Model class</a> variables to run queries with. See the Models page for details.</li><li>Added the ability to pass objects to the <a href="./general/views.html">view loading function</a>: $this->load->view('my_view', <var>$object</var>);</li><li>Added <kbd>getwhere</kbd> function to <a href="./database/active_record.html">Active Record class</a>.</li><li>Added <kbd>count_all</kbd> function to <a href="./database/active_record.html">Active Record class</a>.</li><li>Added language file for scaffolding and fixed a scaffolding bug that occurs when there are no rows in the specified table.</li><li>Added <a href="./database/queries.html">$this->db->last_query()</a>, which allows you to view your last query that was run.</li><li>Added a new mime type to the upload class for better compatibility.</li><li>Changed how cache files are read to prevent PHP errors if the cache file contains an XML tag, which PHP wants to interpret as a short tag.</li><li>Fixed a bug in a couple of the active record functions (where and orderby).</li><li>Fixed a bug in the image library when realpath() returns false.</li><li>Fixed a bug in the Models that was preventing libraries from being used within them.</li><li>Fixed a bug in the "exact_length" function of the validation class.</li><li>Fixed some typos in the user guide</li></ul><h2>Version 1.3</h2><p>Release Date: April 3, 2006</p><ul><li>Added support for <a href="models.html">Models</a>.</li><li>Redesigned the database libraries to support additional RDBMs (Postgre, MySQLi, etc.).</li><li>Redesigned the <a href="./database/active_record.html">Active Record class</a> to enable more varied types of queries with simpler syntax, and advanced features like JOINs.</li><li>Added a feature to the database class that lets you run <a href="./database/call_function.html">custom function calls</a>.</li><li>Added support for <a href="controllers.html">private functions</a> in your controllers.  Any controller function name that starts with an underscore will not be served by a URI request.</li><li>Added the ability to pass your own initialization parameters to your <a href="creating_libraries.html">custom core libraries</a> when using $this->load->library()</li><li>Added support for running standard <a href="urls.html">query string URLs</a>.  These can be optionally enabled in your config file.</li><li>Added the ability to  <a href="urls.html">specify a "suffix"</a>, which will be appended to your URLs.  For example, you could add .html to your URLs, making them appear static. This feature is enabled in your config file.</li><li>Added a new error template for use with native PHP errors.</li><li>Added "alternator" function in the <a href="./helpers/string_helper.html">string helpers</a>.<li>Removed slashing from the input class. After much debate we decided to kill this feature.</li><li>Change the commenting style in the scripts to the PEAR standard so that IDEs and tools like phpDocumenter can harvest the comments.</li><li>Added better class and function name-spacing to avoid collisions with user developed classes. All CodeIgniter classes are now prefixed with <dfn>CI_</dfn> andall controller methods are prefixed with <dfn>_ci</dfn> to avoid controller collisions. A list of reserved function names can be <a href="controllers.html">found here</a>.</li><li>Redesigned how the "CI" super object is referenced, depending on whether PHP 4 or 5 is being run, since PHP 5 allows a more graceful way to manage objects that utilizes a bit less resources.</li><li>Deprecated: <var>$this->db->use_table()</var> has been deprecated. Please read the <a href="./database/active_record.html">Active Record</a> page for information.</li><li>Deprecated: <var>$this->db->smart_escape_str()</var> has been deprecated. Please use this instead: <var>$this->db->escape()</var></li><li>Fixed a bug in the exception handler which was preventing some PHP errors from showing up.</li><li>Fixed a typo in the URI class.  $this->total_segment() should be plural: $this->total_segments()</li><li>Fixed some typos in the default calendar template</li><li>Fixed some typos in the user guide</li></ul><h2>Version 1.2</h2><p>Release Date: March 21, 2006</p><ul><li>Redesigned some internal aspects of the framework to resolve scoping problems that surfaced during the beta tests. The problem was most notable when instantiating classes in your constructors, particularly if those classes in turn did work in their constructors.</li><li>Added a global function named <a href="ancillary_classes.html">get_instance()</a> allowing the main CodeIgniter object to be accessible throughout your own classes.</li><li>Added new <a href="./helpers/file_helper.html">File Helper</a>:  delete_files()</li><li>Added new <a href="./helpers/url_helper.html">URL Helpers</a>:  base_url(), index_page()</li><li>Added the ability to create your own <a href="creating_libraries.html">core libraries</a> and store them in your local application directory.</li><li>Added an <kbd>overwrite</kbd> option to the <a href="./libraries/file_uploading.html">Upload class</a>, enabling files to be overwritten rather than having the file name appended.</li><li>Added Javascript Calendar plugin.</li><li>Added search feature to user guide.  Note: This is done using Google, which at the time of this writing has not crawled all the pages of the docs.</li><li>Updated the parser class so that it allows tag pars within other tag pairs.</li><li>Fixed a bug in the DB "where" function.</li><li>Fixed a bug that was preventing custom config files to be auto-loaded.</li><li>Fixed a bug in the mysql class bind feature that prevented question marks in the replacement data.</li><li>Fixed some bugs in the xss_clean function</li></ul><h2>Version Beta 1.1</h2><p>Release Date: March 10, 2006</p><ul><li>Added a <a href="./libraries/calendar.html">Calendaring class</a>.</li><li>Added support for running <a href="managing_apps.html">multiple applications</a> that share a common CodeIgniter backend.</li><li>Moved the "uri protocol" variable from the index.php file into the config.php file</li><li>Fixed a problem that was preventing certain function calls from working within constructors.</li><li>Fixed a problem that was preventing the $this->load->library function from working in constructors.</li><li>Fixed a bug that occurred when the session class was loaded using the auto-load routine.</li><li>Fixed a bug that can happen with PHP versions that do not support the E_STRICT constant</li><li>Fixed a data type error in the form_radio function (form helper)</li><li>Fixed a bug that was preventing the xss_clean function from being called from the validation class.</li><li>Fixed the cookie related config names, which were incorrectly specified as $conf rather than $config</li><li>Fixed a pagination problem in the scaffolding.</li><li>Fixed a bug in the mysql class "where" function.</li><li>Fixed a regex problem in some code that trimmed duplicate slashes.</li><li>Fixed a bug in the br() function in the HTML helper</li><li>Fixed a syntax mistake in the form_dropdown function in the Form Helper.</li><li>Removed the "style" attributes form the form helpers.</li><li>Updated the documentation. Added "next/previous" links to each page and fixed various typos.</li></ul><h2>Version Beta 1.0 </h2><p>Release Date: February 28, 2006</p><p>First publicly released version.</p></div><!-- END CONTENT --><div id="footer"><p>Previous Topic:&nbsp;&nbsp;<a href="license.html">License Agreement</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;Next Topic:&nbsp;&nbsp;<a href="./general/credits.html">Credits</a></p><p><a href="http://www.codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2007 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p></div></body></html>