Merge pull request #389 from vjnrv/patch-1

CI_Profiler => Accepting objects while profiling session data.
diff --git a/application/views/welcome_message.php b/application/views/welcome_message.php
index 0bf5a8d..d906bc8 100644
--- a/application/views/welcome_message.php
+++ b/application/views/welcome_message.php
@@ -81,7 +81,7 @@
 		<p>If you are exploring CodeIgniter for the very first time, you should start by reading the <a href="user_guide/">User Guide</a>.</p>
 	</div>
 
-	<p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds</p>
+	<p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds. <?php echo  (ENVIRONMENT == 'development') ?  'CodeIgniter Version <strong>' . CI_VERSION . '</strong>' : '' ?></p>
 </div>
 
 </body>
diff --git a/system/database/DB_active_rec.php b/system/database/DB_active_rec.php
index 89766e3..7162e2a 100644
--- a/system/database/DB_active_rec.php
+++ b/system/database/DB_active_rec.php
@@ -872,11 +872,11 @@
 	 * @param	integer	the offset value
 	 * @return	object
 	 */
-	public function limit($value, $offset = '')
+	public function limit($value, $offset = NULL)
 	{
 		$this->ar_limit = (int) $value;
 
-		if ($offset != '')
+		if ( ! is_null($offset))
 		{
 			$this->ar_offset = (int) $offset;
 		}
diff --git a/system/helpers/string_helper.php b/system/helpers/string_helper.php
index 9fa69f4..dd8ffad 100644
--- a/system/helpers/string_helper.php
+++ b/system/helpers/string_helper.php
@@ -215,12 +215,9 @@
 						case 'nozero'	:	$pool = '123456789';
 							break;
 					}
-
-					$str = '';
-					for ($i=0; $i < $len; $i++)
-					{
-						$str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
-					}
+					
+					$str = substr(str_shuffle(str_repeat($pool, ceil($len/strlen($pool)))),0,$len);
+					
 					return $str;
 				break;
 			case 'unique'	:
diff --git a/system/libraries/Session.php b/system/libraries/Session.php
index 2c8a801..8ee08c5 100644
--- a/system/libraries/Session.php
+++ b/system/libraries/Session.php
@@ -317,7 +317,8 @@
 							'session_id'	=> md5(uniqid($sessid, TRUE)),
 							'ip_address'	=> $this->CI->input->ip_address(),
 							'user_agent'	=> substr($this->CI->input->user_agent(), 0, 120),
-							'last_activity'	=> $this->now
+							'last_activity'	=> $this->now,
+							'user_data'		=> ''
 							);
 
 
diff --git a/user_guide/changelog.html b/user_guide/changelog.html
index fb6e449..3b4c72b 100644
--- a/user_guide/changelog.html
+++ b/user_guide/changelog.html
@@ -70,13 +70,18 @@
 			<li>Callback validation rules can now accept parameters like any other validation rule.</li>
 			<li>Ability to log certain error types, not all under a threshold.</li>
 			<li>Added html_escape() to <a href="general/common_functions.html">Common functions</a> to escape HTML output for preventing XSS.</li>
+			<li>Added support for pem,p10,p12,p7a,p7c,p7m,p7r,p7s,crt,crl,der,kdb,rsa,cer,sst,csr Certs to mimes.php.</li>
+			<li>Added support pgp,gpg to mimes.php.</li>
+			<li>Added support 3gp, 3g2, mp4, wmv, f4v, vlc Video files to mimes.php.</li>
+			<li>Added support m4a, aac, m4u, xspf, au, ac3, flac, ogg Audio files to mimes.php.</li>
 		</ul>
 	</li>
 	<li>Helpers
 		<ul>
 			<li>Added <samp>increment_string()</samp> to <a href="helpers/string_helper.html">String Helper</a> to turn "foo" into "foo-1" or "foo-1" into "foo-2".</li>
-        	<li>Altered form helper - made action on form_open_multipart helper function call optional.  Fixes (#65)</li>
+        		<li>Altered form helper - made action on form_open_multipart helper function call optional.  Fixes (#65)</li>
 			<li><samp>url_title()</samp> will now trim extra dashes from beginning and end.</li>
+			<li>Improved speed of <a href="helpers/string_helper.html">String Helper</a>'s <b>random_string()</b> method</li>
 		</ul>
 	</li>
 	<li>Database
@@ -120,6 +125,7 @@
 	<li>Fixed a bug (#8) - <samp>load_class()</samp> now looks for core classes in <samp>APPPATH</samp> first, allowing them to be replaced.</li>
 	<li>Fixed a bug (#24) - ODBC database driver called incorrect parent in __construct().</li>
 	<li>Fixed a bug (#85) - OCI8 (Oracle) database escape_str() function did not escape correct.</li>
+	<li>Fixed a bug (#344) - Using schema found in <a href="libraries/sessions.html">Saving Session Data to a Database</a>, system would throw error "user_data does not have a default value" when deleting then creating a session.</li>
 </ul>
 
 <h2>Version 2.0.3</h2>
@@ -141,11 +147,6 @@
 			<li class="reactor">Added "application/x-csv" to mimes.php.</li>
 			<li class="reactor">Added CSRF protection URI whitelisting.</li>
 			<li>Fixed a bug where <a href="libraries/email.html">Email library</a> attachments with a "." in the name would using invalid MIME-types.</li>
-            <li>Added support for pem,p10,p12,p7a,p7c,p7m,p7r,p7s,crt,crl,der,kdb,rsa,cer,sst,csr Certs to mimes.php.</li>
-            <li>Added support pgp,gpg to mimes.php.</li>
-            <li>Added support 3gp, 3g2, mp4, wmv, f4v, vlc Video files to mimes.php.</li>
-            <li>Added support m4a, aac, m4u, xspf, au, ac3, flac, ogg Audio files to mimes.php.</li>
-
 		</ul>
 	</li>
 	<li>Helpers
@@ -177,7 +178,7 @@
 	<li class="reactor">Fixed issue #199 - Attributes passed as string does not include a space between it and the opening tag.</li>
 	<li class="reactor">Fixed a bug where the method <kbd>$this->cart->total_items()</kbd> from <a href="libraries/cart.html">Cart Library</a> now returns the sum of the quantity of all items in the cart instead of your total count.</li>
 	<li class="reactor">Fixed a bug where not setting 'null' when adding fields in db_forge for mysql and mysqli drivers would default to NULL instead of NOT NULL as the docs suggest.</li>
-	<li class="reactor">Fixed a bug where using <kbd>$this->db->select_max()</kdb>, <kbd>$this->db->select_min()</kdb>, etc could throw notices. Thanks to w43l for the patch.</li>
+	<li class="reactor">Fixed a bug where using <kbd>$this->db->select_max()</kbd>, <kbd>$this->db->select_min()</kbd>, etc could throw notices. Thanks to w43l for the patch.</li>
 	<li class="reactor">Replace checks for STDIN with php_sapi_name() == 'cli' which on the whole is more reliable. This should get parameters in crontab working.</li>
 </ul>
 
diff --git a/user_guide/database/utilities.html b/user_guide/database/utilities.html
index 8231c7e..c80e3d1 100644
--- a/user_guide/database/utilities.html
+++ b/user_guide/database/utilities.html
@@ -183,14 +183,15 @@
 echo $this->dbutil->csv_from_result($query);
 </code>
 
-<p>The second and third parameters allows you to
-set the delimiter and newline character.  By default tabs are used as the delimiter and "\n" is used as a new line.  Example:</p>
+<p>The second, third, and fourth parameters allow you to
+set the delimiter, newline, and enclosure characters respectively.  By default tabs are used as the delimiter, "\n" is used as a new line, and a double-quote is used as the enclosure.  Example:</p>
 
 <code>
 $delimiter = ",";<br />
 $newline = "\r\n";<br />
+$enclosure = '"';<br />
 <br />
-echo $this->dbutil->csv_from_result($query, $delimiter, $newline);
+echo $this->dbutil->csv_from_result($query, $delimiter, $newline, $enclosure);
 </code>
 
 <p><strong>Important:</strong>&nbsp; This function will NOT write the CSV file for you.  It simply creates the CSV layout.
diff --git a/user_guide/helpers/form_helper.html b/user_guide/helpers/form_helper.html
index dd935eb..0afe0eb 100644
--- a/user_guide/helpers/form_helper.html
+++ b/user_guide/helpers/form_helper.html
@@ -84,7 +84,7 @@
 
 <p>The above example would create a form that points to your base URL plus the "email/send" URI segments, like this:</p>
 
-<code>&lt;form method="post" accept-charset="utf-8" action="http:/example.com/index.php/email/send" /></code>
+<code>&lt;form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send" /></code>
 
 <h4>Adding Attributes</h4>
 
@@ -97,7 +97,7 @@
 
 <p>The above example would create a form similar to this:</p>
 
-<code>&lt;form method="post" accept-charset="utf-8" action="http:/example.com/index.php/email/send" &nbsp;class="email" &nbsp;id="myform" /></code>
+<code>&lt;form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send" &nbsp;class="email" &nbsp;id="myform" /></code>
 
 <h4>Adding Hidden Input Fields</h4>
 
@@ -110,7 +110,7 @@
 
 <p>The above example would create a form similar to this:</p>
 
-<code>&lt;form method="post" accept-charset="utf-8" action="http:/example.com/index.php/email/send"><br />
+<code>&lt;form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send"><br />
 &lt;input type="hidden" name="username" value="Joe" /><br />
 &lt;input type="hidden" name="member_id" value="234" /></code>
 
diff --git a/user_guide/installation/downloads.html b/user_guide/installation/downloads.html
index 539fbc1..bb18f1d 100644
--- a/user_guide/installation/downloads.html
+++ b/user_guide/installation/downloads.html
@@ -88,14 +88,14 @@
 
 
 
-<h1 id="hg">Mercurial Server</h1>
-<p><a href="http://mercurial.selenic.com">Mercurial</a> is a distributed version control system.</p>
+<h1 id="git">Git Server</h1>
+<p><a href="http://git-scm.com/about">Git</a> is a distributed version control system.</p>
 
-							<p>Public Hg access is available at <a href="http://bitbucket.org/ellislab/codeigniter-reactor/">BitBucket</a>.
+							<p>Public Git access is available at <a href="https://github.com/EllisLab/CodeIgniter">GitHub</a>.
 								Please note that while every effort is made to keep this code base functional, we cannot guarantee the functionality of code taken
 								from the tip.</p>
 
-							<p>Beginning with version 1.6.1, stable tags are also available via BitBucket, simply select the version from the Tags dropdown.</p>
+							<p>Beginning with version 2.0.3, stable tags are also available via GitHub, simply select the version from the Tags dropdown.</p>
 </div>
 <!-- END CONTENT -->
 
diff --git a/user_guide/installation/index.html b/user_guide/installation/index.html
index 84338e2..ad66ad7 100644
--- a/user_guide/installation/index.html
+++ b/user_guide/installation/index.html
@@ -67,14 +67,14 @@
 </ol>
 
 <p>If you wish to increase security by hiding the location of your CodeIgniter files you can rename the <dfn>system</dfn> and <dfn>application</dfn> folders
-to something more private.  If you do rename them, you must open your main <kbd>index.php</kbd> file and set the <samp>$system_folder</samp> and <samp>$application_folder</samp>
+to something more private.  If you do rename them, you must open your main <kbd>index.php</kbd> file and set the <samp>$system_path</samp> and <samp>$application_folder</samp>
 variables at the top of the file with the new name you've chosen.</p>
 
 <p>For the best security, both the <dfn>system</dfn> and any <dfn>application</dfn> folders should be placed above web root so that they are not directly accessible via a browser.  By default, .htaccess files are included in each folder to help prevent direct access, but it is best to remove them from public access entirely in case the web server configuration changes or doesn't abide by the .htaccess.</p>
 
 <p>If you would like to keep your views public it is also possible to move the <dfn>views</dfn> folder out of your application folder.</p>
 
-<p>After moving them, open your main <kdb>index.php</kbd> file and set the <samp>$system_folder</samp>, <samp>$application_folder</samp> and <samp>$view_folder</samp> variables, preferably with a full path, e.g. '<dfn>/www/MyUser/system</dfn>'.</p>
+<p>After moving them, open your main <kdb>index.php</kbd> file and set the <samp>$system_path</samp>, <samp>$application_folder</samp> and <samp>$view_folder</samp> variables, preferably with a full path, e.g. '<dfn>/www/MyUser/system</dfn>'.</p>
 
 <p>
     One additional measure to take in production environments is to disable
@@ -107,4 +107,4 @@
 </div>
 
 </body>
-</html>
\ No newline at end of file
+</html>