Improve array, captcha & cookie helpers
diff --git a/system/helpers/captcha_helper.php b/system/helpers/captcha_helper.php
index 668b034..40b6e5b 100644
--- a/system/helpers/captcha_helper.php
+++ b/system/helpers/captcha_helper.php
@@ -1,13 +1,13 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
  * An open source application development framework for PHP 5.1.6 or newer
  *
  * NOTICE OF LICENSE
- * 
+ *
  * Licensed under the Open Software License version 3.0
- * 
+ *
  * This source file is subject to the Open Software License (OSL 3.0) that is
  * bundled with this package in the files license.txt / license.rst.  It is
  * also available through the world wide web at this URL:
@@ -57,12 +57,9 @@
 
 		foreach ($defaults as $key => $val)
 		{
-			if ( ! is_array($data))
+			if ( ! is_array($data) && ( ! isset($$key) OR $$key == ''))
 			{
-				if ( ! isset($$key) OR $$key == '')
-				{
-					$$key = $val;
-				}
+				$$key = $val;
 			}
 			else
 			{
@@ -70,22 +67,7 @@
 			}
 		}
 
-		if ($img_path == '' OR $img_url == '')
-		{
-			return FALSE;
-		}
-
-		if ( ! @is_dir($img_path))
-		{
-			return FALSE;
-		}
-
-		if ( ! is_writable($img_path))
-		{
-			return FALSE;
-		}
-
-		if ( ! extension_loaded('gd'))
+		if ($img_path == '' OR $img_url == '' OR ! @is_dir($img_path) OR ! is_writeable($img_path) OR ! extension_loaded('gd'))
 		{
 			return FALSE;
 		}
@@ -94,21 +76,16 @@
 		// Remove old images
 		// -----------------------------------
 
-		list($usec, $sec) = explode(" ", microtime());
+		list($usec, $sec) = explode(' ', microtime());
 		$now = ((float)$usec + (float)$sec);
 
 		$current_dir = @opendir($img_path);
-
 		while ($filename = @readdir($current_dir))
 		{
-			if ($filename != "." and $filename != ".." and $filename != "index.html")
+			if ($filename !== '.' && $filename !== '..' && $filename !== 'index.html'
+				&& (str_replace('.jpg', '', $filename) + $expiration) < $now)
 			{
-				$name = str_replace(".jpg", "", $filename);
-
-				if (($name + $expiration) < $now)
-				{
-					@unlink($img_path.$filename);
-				}
+				@unlink($img_path.$filename);
 			}
 		}
 
@@ -118,18 +95,17 @@
 		// Do we have a "word" yet?
 		// -----------------------------------
 
-	   if ($word == '')
-	   {
+		if ($word == '')
+		{
 			$pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
 
-			$str = '';
-			for ($i = 0; $i < 8; $i++)
+			$word = '';
+			for ($i = 0, $mt_rand_max = strlen($pool) - 1; $i < 8; $i++)
 			{
-				$str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
+				$word .= substr($pool, mt_rand(0, $mt_rand_max), 1);
 			}
 
-			$word = $str;
-	   }
+		}
 
 		// -----------------------------------
 		// Determine angle and position
@@ -138,7 +114,7 @@
 		$length	= strlen($word);
 		$angle	= ($length >= 6) ? rand(-($length-6), ($length-6)) : 0;
 		$x_axis	= rand(6, (360/$length)-16);
-		$y_axis = ($angle >= 0 ) ? rand($img_height, $img_width) : rand(6, $img_height);
+		$y_axis = ($angle >= 0) ? rand($img_height, $img_width) : rand(6, $img_height);
 
 		// -----------------------------------
 		// Create image
@@ -180,18 +156,18 @@
 		$circles	= 20;
 		$points		= 32;
 
-		for ($i = 0; $i < ($circles * $points) - 1; $i++)
+		for ($i = 0, $cp = $circles * $points; $i < $cp - 1; $i++)
 		{
-			$theta = $theta + $thetac;
-			$rad = $radius * ($i / $points );
+			$theta += $thetac;
+			$rad = $radius * ($i / $points);
 			$x = ($rad * cos($theta)) + $x_axis;
 			$y = ($rad * sin($theta)) + $y_axis;
-			$theta = $theta + $thetac;
+			$theta += $thetac;
 			$rad1 = $radius * (($i + 1) / $points);
 			$x1 = ($rad1 * cos($theta)) + $x_axis;
-			$y1 = ($rad1 * sin($theta )) + $y_axis;
+			$y1 = ($rad1 * sin($theta)) + $y_axis;
 			imageline($im, $x, $y, $x1, $y1, $grid_color);
-			$theta = $theta - $thetac;
+			$theta -= $thetac;
 		}
 
 		// -----------------------------------
@@ -213,18 +189,18 @@
 			$y = $font_size+2;
 		}
 
-		for ($i = 0; $i < strlen($word); $i++)
+		for ($i = 0; $i < $length; $i++)
 		{
 			if ($use_font == FALSE)
 			{
 				$y = rand(0 , $img_height/2);
-				imagestring($im, $font_size, $x, $y, substr($word, $i, 1), $text_color);
+				imagestring($im, $font_size, $x, $y, $word[$i], $text_color);
 				$x += ($font_size*2);
 			}
 			else
 			{
 				$y = rand($img_height/2, $img_height-3);
-				imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_path, substr($word, $i, 1));
+				imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_path, $word[$i]);
 				$x += $font_size;
 			}
 		}
@@ -255,4 +231,4 @@
 // ------------------------------------------------------------------------
 
 /* End of file captcha_helper.php */
-/* Location: ./system/helpers/captcha_helper.php */
\ No newline at end of file
+/* Location: ./system/helpers/captcha_helper.php */