Updated CodeIgniter to v3.1.5

This commit is contained in:
alext 2017-06-29 15:35:42 +02:00
parent 1c0458b7aa
commit 483e2348a1
20 changed files with 248 additions and 128 deletions

View file

@ -27,13 +27,13 @@
}, },
"minimum-stability": "stable", "minimum-stability": "stable",
"require-dev": { "require-dev": {
"codeigniter/framework": "~3.1.4",
"phpunit/phpunit": "^5.6" "phpunit/phpunit": "^5.6"
}, },
"require": { "require": {
"php": ">=5.6", "php": ">=5.6",
"roave/security-advisories": "dev-master", "roave/security-advisories": "dev-master",
"gregwar/captcha": "^1.1", "gregwar/captcha": "^1.1",
"phpmailer/phpmailer": "^5.2" "phpmailer/phpmailer": "^5.2",
"codeigniter/framework": "3.1.5"
} }
} }

192
composer.lock generated
View file

@ -4,8 +4,41 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "25bac256233b0471e7cc3b8922e61b61", "content-hash": "9291221da0af4f9eeb4fb70314d354f2",
"packages": [ "packages": [
{
"name": "codeigniter/framework",
"version": "3.1.5",
"source": {
"type": "git",
"url": "https://github.com/bcit-ci/CodeIgniter.git",
"reference": "6c7a4266410070d30f8f6bcdf9c9e67f3d6478e3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/bcit-ci/CodeIgniter/zipball/6c7a4266410070d30f8f6bcdf9c9e67f3d6478e3",
"reference": "6c7a4266410070d30f8f6bcdf9c9e67f3d6478e3",
"shasum": ""
},
"require": {
"php": ">=5.3.7"
},
"require-dev": {
"mikey179/vfsstream": "1.1.*",
"phpunit/phpunit": "4.* || 5.*"
},
"suggest": {
"paragonie/random_compat": "Provides better randomness in PHP 5.x"
},
"type": "project",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "The CodeIgniter framework",
"homepage": "https://codeigniter.com",
"time": "2017-06-19T08:33:58+00:00"
},
{ {
"name": "gregwar/captcha", "name": "gregwar/captcha",
"version": "v1.1.1", "version": "v1.1.1",
@ -129,42 +162,145 @@
], ],
"description": "PHPMailer is a full-featured email creation and transfer class for PHP", "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"time": "2017-03-15T19:32:56+00:00" "time": "2017-03-15T19:32:56+00:00"
} },
],
"packages-dev": [
{ {
"name": "codeigniter/framework", "name": "roave/security-advisories",
"version": "3.1.4", "version": "dev-master",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/bcit-ci/CodeIgniter.git", "url": "https://github.com/Roave/SecurityAdvisories.git",
"reference": "873608df8be83420474e3cf9fc749a8ed12a6c09" "reference": "0b18b6bbeed070fb900ad78e81ffa1182a57a752"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/bcit-ci/CodeIgniter/zipball/873608df8be83420474e3cf9fc749a8ed12a6c09", "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/0b18b6bbeed070fb900ad78e81ffa1182a57a752",
"reference": "873608df8be83420474e3cf9fc749a8ed12a6c09", "reference": "0b18b6bbeed070fb900ad78e81ffa1182a57a752",
"shasum": "" "shasum": ""
}, },
"require": { "conflict": {
"php": ">=5.2.4" "adodb/adodb-php": "<5.20.6",
"amphp/artax": ">=2,<2.0.6|<1.0.6",
"aws/aws-sdk-php": ">=3,<3.2.1",
"bugsnag/bugsnag-laravel": ">=2,<2.0.2",
"cakephp/cakephp": ">=3,<3.0.15|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=1.3,<1.3.18|>=2.7,<2.7.6|>=3.1,<3.1.4",
"cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
"cartalyst/sentry": "<2.1",
"codeigniter/framework": "<=3.0.6",
"composer/composer": "<=1.0.0-alpha11",
"contao-components/mediaelement": ">=2.14.2,<2.21.1",
"contao/core": ">=2.11,<3.5.15",
"doctrine/annotations": ">=1,<1.2.7",
"doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
"doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
"doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2",
"doctrine/doctrine-bundle": "<1.5.2",
"doctrine/doctrine-module": "<=0.7.1",
"doctrine/mongodb-odm": ">=1,<1.0.2",
"doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
"doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1",
"dompdf/dompdf": ">=0.6,<0.6.2",
"drupal/core": ">=8,<8.3.4",
"drupal/drupal": ">=8,<8.3.4",
"firebase/php-jwt": "<2",
"friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
"friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
"gregwar/rst": "<1.0.3",
"guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1",
"illuminate/auth": ">=4,<4.0.99|>=4.1,<4.1.26",
"illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29",
"joomla/session": "<1.3.1",
"laravel/framework": ">=4,<4.0.99|>=4.1,<4.1.29",
"laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
"magento/magento1ce": ">=1.5.0.1,<1.9.3.2",
"magento/magento1ee": ">=1.9,<1.14.3.2",
"magento/magento2ce": ">=2,<2.2",
"monolog/monolog": ">=1.8,<1.12",
"namshi/jose": "<2.2",
"onelogin/php-saml": "<2.10.4",
"oro/crm": ">=1.7,<1.7.4",
"oro/platform": ">=1.7,<1.7.4",
"phpmailer/phpmailer": ">=5,<5.2.22",
"pusher/pusher-php-server": "<2.2.1",
"sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9",
"shopware/shopware": "<4.4|>=5,<5.2.16",
"silverstripe/cms": ">=3.1,<3.1.11|>=3,<=3.0.11",
"silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
"silverstripe/framework": ">=3,<3.3",
"silverstripe/userforms": "<3",
"simplesamlphp/saml2": "<1.8.1|>=1.9,<1.9.1|>=1.10,<1.10.3|>=2,<2.3.3",
"simplesamlphp/simplesamlphp": "<1.14.12",
"simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
"socalnick/scn-social-auth": "<1.15.2",
"squizlabs/php_codesniffer": ">=1,<2.8.1",
"swiftmailer/swiftmailer": ">=4,<5.4.5",
"symfony/dependency-injection": ">=2,<2.0.17",
"symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.7",
"symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2",
"symfony/http-foundation": ">=2,<2.3.27|>=2.4,<2.5.11|>=2.6,<2.6.6",
"symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8",
"symfony/routing": ">=2,<2.0.19",
"symfony/security": ">=2.3,<2.3.37|>=2.4,<2.6.13|>=2.7,<2.7.9|>=2,<2.0.25|>=2.1,<2.1.13|>=2.2,<2.2.9",
"symfony/security-core": ">=2.8,<2.8.6|>=3,<3.0.6|>=2.4,<2.6.13|>=2.7,<2.7.9",
"symfony/security-http": ">=2.4,<2.7.13|>=2.3,<2.3.41|>=2.8,<2.8.6|>=3,<3.0.6",
"symfony/serializer": ">=2,<2.0.11",
"symfony/symfony": ">=2,<2.3.41|>=2.4,<2.7.13|>=2.8,<2.8.6|>=3,<3.0.6",
"symfony/translation": ">=2,<2.0.17",
"symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
"symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
"symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
"thelia/backoffice-default-template": ">=2.1,<2.1.2",
"thelia/thelia": ">=2.1.0-beta1,<2.1.3|>=2.1,<2.1.2",
"twig/twig": "<1.20",
"typo3/cms": ">=6.2,<6.2.30|>=8,<8.6.1|>=7,<7.6.16",
"typo3/flow": ">=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5|>=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1",
"typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4",
"willdurand/js-translation-bundle": "<2.1.1",
"yiisoft/yii": ">=1.1.14,<1.1.15",
"yiisoft/yii2": "<2.0.5",
"yiisoft/yii2-bootstrap": "<2.0.4",
"yiisoft/yii2-dev": "<2.0.4",
"yiisoft/yii2-gii": "<2.0.4",
"yiisoft/yii2-jui": "<2.0.4",
"zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
"zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
"zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
"zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
"zendframework/zend-diactoros": ">=1,<1.0.4",
"zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
"zendframework/zend-http": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.3,<2.3.8|>=2.4,<2.4.1",
"zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
"zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
"zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
"zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
"zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
"zendframework/zend-validator": ">=2.3,<2.3.6",
"zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
"zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
"zendframework/zendframework": ">=2,<2.4.11|>=2.5,<2.5.1",
"zendframework/zendframework1": "<1.12.20",
"zendframework/zendopenid": ">=2,<2.0.2",
"zendframework/zendxml": ">=1,<1.0.1",
"zf-commons/zfc-user": "<1.2.2",
"zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
"zfr/zfr-oauth2-server-module": "<0.1.2"
}, },
"require-dev": { "type": "metapackage",
"mikey179/vfsstream": "1.1.*",
"phpunit/phpunit": "4.* || 5.*"
},
"suggest": {
"paragonie/random_compat": "Provides better randomness in PHP 5.x"
},
"type": "project",
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
"MIT" "MIT"
], ],
"description": "The CodeIgniter framework", "authors": [
"homepage": "https://codeigniter.com", {
"time": "2017-03-20T15:51:08+00:00" "name": "Marco Pivetta",
}, "email": "ocramius@gmail.com",
"role": "maintainer"
}
],
"description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
"time": "2017-06-22T16:43:17+00:00"
}
],
"packages-dev": [
{ {
"name": "doctrine/instantiator", "name": "doctrine/instantiator",
"version": "1.0.5", "version": "1.0.5",
@ -1469,9 +1605,13 @@
], ],
"aliases": [], "aliases": [],
"minimum-stability": "stable", "minimum-stability": "stable",
"stability-flags": [], "stability-flags": {
"roave/security-advisories": 20
},
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,
"platform": [], "platform": {
"php": ">=5.6"
},
"platform-dev": [] "platform-dev": []
} }

View file

@ -55,7 +55,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
* @var string * @var string
* *
*/ */
const CI_VERSION = '3.1.4'; const CI_VERSION = '3.1.5';
/* /*
* ------------------------------------------------------ * ------------------------------------------------------
@ -434,7 +434,7 @@ if ( ! is_php('5.4'))
* ReflectionMethod::isConstructor() is the ONLY reliable check, * ReflectionMethod::isConstructor() is the ONLY reliable check,
* knowing which method will be executed as a constructor. * knowing which method will be executed as a constructor.
*/ */
elseif ( ! is_callable(array($class, $method)) && strcasecmp($class, $method) === 0) elseif ( ! is_callable(array($class, $method)))
{ {
$reflection = new ReflectionMethod($class, $method); $reflection = new ReflectionMethod($class, $method);
if ( ! $reflection->isPublic() OR $reflection->isConstructor()) if ( ! $reflection->isPublic() OR $reflection->isConstructor())

View file

@ -135,7 +135,7 @@ if ( ! function_exists('load_class'))
* *
* @param string the class name being requested * @param string the class name being requested
* @param string the directory where the class should be found * @param string the directory where the class should be found
* @param string an optional argument to pass to the class constructor * @param mixed an optional argument to pass to the class constructor
* @return object * @return object
*/ */
function &load_class($class, $directory = 'libraries', $param = NULL) function &load_class($class, $directory = 'libraries', $param = NULL)

View file

@ -231,7 +231,7 @@ class CI_Exceptions {
* @param string $message Error message * @param string $message Error message
* @param string $filepath File path * @param string $filepath File path
* @param int $line Line number * @param int $line Line number
* @return string Error page output * @return void
*/ */
public function show_php_error($severity, $message, $filepath, $line) public function show_php_error($severity, $message, $filepath, $line)
{ {

View file

@ -586,62 +586,59 @@ class CI_Output {
return; return;
} }
if (flock($fp, LOCK_EX)) if ( ! flock($fp, LOCK_EX))
{
// If output compression is enabled, compress the cache
// itself, so that we don't have to do that each time
// we're serving it
if ($this->_compress_output === TRUE)
{
$output = gzencode($output);
if ($this->get_header('content-type') === NULL)
{
$this->set_content_type($this->mime_type);
}
}
$expire = time() + ($this->cache_expiration * 60);
// Put together our serialized info.
$cache_info = serialize(array(
'expire' => $expire,
'headers' => $this->headers
));
$output = $cache_info.'ENDCI--->'.$output;
for ($written = 0, $length = self::strlen($output); $written < $length; $written += $result)
{
if (($result = fwrite($fp, self::substr($output, $written))) === FALSE)
{
break;
}
}
flock($fp, LOCK_UN);
}
else
{ {
log_message('error', 'Unable to secure a file lock for file at: '.$cache_path); log_message('error', 'Unable to secure a file lock for file at: '.$cache_path);
fclose($fp);
return; return;
} }
// If output compression is enabled, compress the cache
// itself, so that we don't have to do that each time
// we're serving it
if ($this->_compress_output === TRUE)
{
$output = gzencode($output);
if ($this->get_header('content-type') === NULL)
{
$this->set_content_type($this->mime_type);
}
}
$expire = time() + ($this->cache_expiration * 60);
// Put together our serialized info.
$cache_info = serialize(array(
'expire' => $expire,
'headers' => $this->headers
));
$output = $cache_info.'ENDCI--->'.$output;
for ($written = 0, $length = self::strlen($output); $written < $length; $written += $result)
{
if (($result = fwrite($fp, self::substr($output, $written))) === FALSE)
{
break;
}
}
flock($fp, LOCK_UN);
fclose($fp); fclose($fp);
if (is_int($result)) if ( ! is_int($result))
{
chmod($cache_path, 0640);
log_message('debug', 'Cache file written: '.$cache_path);
// Send HTTP cache-control headers to browser to match file cache settings.
$this->set_cache_header($_SERVER['REQUEST_TIME'], $expire);
}
else
{ {
@unlink($cache_path); @unlink($cache_path);
log_message('error', 'Unable to write the complete cache content at: '.$cache_path); log_message('error', 'Unable to write the complete cache content at: '.$cache_path);
return;
} }
chmod($cache_path, 0640);
log_message('debug', 'Cache file written: '.$cache_path);
// Send HTTP cache-control headers to browser to match file cache settings.
$this->set_cache_header($_SERVER['REQUEST_TIME'], $expire);
} }
// -------------------------------------------------------------------- // --------------------------------------------------------------------
@ -708,11 +705,9 @@ class CI_Output {
log_message('debug', 'Cache file has expired. File deleted.'); log_message('debug', 'Cache file has expired. File deleted.');
return FALSE; return FALSE;
} }
else
{ // Send the HTTP cache control headers
// Or else send the HTTP cache control headers. $this->set_cache_header($last_modified, $expire);
$this->set_cache_header($last_modified, $expire);
}
// Add headers from cache file. // Add headers from cache file.
foreach ($cache_info['headers'] as $header) foreach ($cache_info['headers'] as $header)
@ -798,13 +793,11 @@ class CI_Output {
$this->set_status_header(304); $this->set_status_header(304);
exit; exit;
} }
else
{ header('Pragma: public');
header('Pragma: public'); header('Cache-Control: max-age='.$max_age.', public');
header('Cache-Control: max-age='.$max_age.', public'); header('Expires: '.gmdate('D, d M Y H:i:s', $expiration).' GMT');
header('Expires: '.gmdate('D, d M Y H:i:s', $expiration).' GMT'); header('Last-modified: '.gmdate('D, d M Y H:i:s', $last_modified).' GMT');
header('Last-modified: '.gmdate('D, d M Y H:i:s', $last_modified).' GMT');
}
} }
// -------------------------------------------------------------------- // --------------------------------------------------------------------

View file

@ -68,7 +68,7 @@ if ( ! function_exists('mb_strlen'))
* @link http://php.net/mb_strlen * @link http://php.net/mb_strlen
* @param string $str * @param string $str
* @param string $encoding * @param string $encoding
* @return string * @return int
*/ */
function mb_strlen($str, $encoding = NULL) function mb_strlen($str, $encoding = NULL)
{ {

View file

@ -143,7 +143,7 @@ class CI_DB_Cache {
$segment_two = ($this->CI->uri->segment(2) == FALSE) ? 'index' : $this->CI->uri->segment(2); $segment_two = ($this->CI->uri->segment(2) == FALSE) ? 'index' : $this->CI->uri->segment(2);
$filepath = $this->db->cachedir.$segment_one.'+'.$segment_two.'/'.md5($sql); $filepath = $this->db->cachedir.$segment_one.'+'.$segment_two.'/'.md5($sql);
if (FALSE === ($cachedata = @file_get_contents($filepath))) if ( ! is_file($filepath) OR FALSE === ($cachedata = file_get_contents($filepath)))
{ {
return FALSE; return FALSE;
} }

View file

@ -488,7 +488,7 @@ abstract class CI_DB_forge {
* *
* @param string $table Table name * @param string $table Table name
* @param bool $if_exists Whether to add an IF EXISTS condition * @param bool $if_exists Whether to add an IF EXISTS condition
* @return string * @return mixed (Returns a platform-specific DROP table string, or TRUE to indicate there's nothing to do)
*/ */
protected function _drop_table($table, $if_exists) protected function _drop_table($table, $if_exists)
{ {
@ -979,8 +979,8 @@ abstract class CI_DB_forge {
/** /**
* Process indexes * Process indexes
* *
* @param string $table * @param string $table Table name
* @return string * @return string[] list of SQL statements
*/ */
protected function _process_indexes($table) protected function _process_indexes($table)
{ {

View file

@ -1409,7 +1409,7 @@ abstract class CI_DB_query_builder extends CI_DB_driver {
$this->qb_orderby = NULL; $this->qb_orderby = NULL;
} }
$result = ($this->qb_distinct === TRUE OR ! empty($this->qb_groupby) OR ! empty($this->qb_cache_groupby)) $result = ($this->qb_distinct === TRUE OR ! empty($this->qb_groupby) OR ! empty($this->qb_cache_groupby) OR $this->qb_limit OR $this->qb_offset)
? $this->query($this->_count_string.$this->protect_identifiers('numrows')."\nFROM (\n".$this->_compile_select()."\n) CI_count_all_results") ? $this->query($this->_count_string.$this->protect_identifiers('numrows')."\nFROM (\n".$this->_compile_select()."\n) CI_count_all_results")
: $this->query($this->_compile_select($this->_count_string.$this->protect_identifiers('numrows'))); : $this->query($this->_compile_select($this->_count_string.$this->protect_identifiers('numrows')));

View file

@ -91,7 +91,7 @@ class CI_DB_ibase_forge extends CI_DB_forge {
* Create database * Create database
* *
* @param string $db_name * @param string $db_name
* @return string * @return bool
*/ */
public function create_database($db_name) public function create_database($db_name)
{ {

View file

@ -124,7 +124,7 @@ class CI_DB_oci8_forge extends CI_DB_forge {
if ($alter_type === 'MODIFY' && ! empty($field[$i]['new_name'])) if ($alter_type === 'MODIFY' && ! empty($field[$i]['new_name']))
{ {
$sqls[] = $sql.' RENAME COLUMN '.$this->db->escape_identifiers($field[$i]['name']) $sqls[] = $sql.' RENAME COLUMN '.$this->db->escape_identifiers($field[$i]['name'])
.' '.$this->db->escape_identifiers($field[$i]['new_name']); .' TO '.$this->db->escape_identifiers($field[$i]['new_name']);
} }
$field[$i] = "\n\t".$field[$i]['_literal']; $field[$i] = "\n\t".$field[$i]['_literal'];

View file

@ -117,7 +117,7 @@ class CI_DB_pdo_oci_forge extends CI_DB_pdo_forge {
if ($alter_type === 'MODIFY' && ! empty($field[$i]['new_name'])) if ($alter_type === 'MODIFY' && ! empty($field[$i]['new_name']))
{ {
$sqls[] = $sql.' RENAME COLUMN '.$this->db->escape_identifiers($field[$i]['name']) $sqls[] = $sql.' RENAME COLUMN '.$this->db->escape_identifiers($field[$i]['name'])
.' '.$this->db->escape_identifiers($field[$i]['new_name']); .' TO '.$this->db->escape_identifiers($field[$i]['new_name']);
} }
} }
} }

View file

@ -597,7 +597,7 @@ if ( ! function_exists('form_label'))
* *
* @param string The text to appear onscreen * @param string The text to appear onscreen
* @param string The id the label applies to * @param string The id the label applies to
* @param array Additional attributes * @param mixed Additional attributes
* @return string * @return string
*/ */
function form_label($label_text = '', $id = '', $attributes = array()) function form_label($label_text = '', $id = '', $attributes = array())
@ -610,13 +610,7 @@ if ( ! function_exists('form_label'))
$label .= ' for="'.$id.'"'; $label .= ' for="'.$id.'"';
} }
if (is_array($attributes) && count($attributes) > 0) $label .= _attributes_to_string($attributes);
{
foreach ($attributes as $key => $val)
{
$label .= ' '.$key.'="'.$val.'"';
}
}
return $label.'>'.$label_text.'</label>'; return $label.'>'.$label_text.'</label>';
} }

View file

@ -95,6 +95,7 @@ if ( ! function_exists('singular'))
'/(s)tatuses$/' => '\1\2tatus', '/(s)tatuses$/' => '\1\2tatus',
'/(c)hildren$/' => '\1\2hild', '/(c)hildren$/' => '\1\2hild',
'/(n)ews$/' => '\1\2ews', '/(n)ews$/' => '\1\2ews',
'/(quiz)zes$/' => '\1',
'/([^us])s$/' => '\1' '/([^us])s$/' => '\1'
); );

View file

@ -913,18 +913,13 @@ class CI_Email {
/** /**
* Get Mail Protocol * Get Mail Protocol
* *
* @param bool
* @return mixed * @return mixed
*/ */
protected function _get_protocol($return = TRUE) protected function _get_protocol()
{ {
$this->protocol = strtolower($this->protocol); $this->protocol = strtolower($this->protocol);
in_array($this->protocol, $this->_protocols, TRUE) OR $this->protocol = 'mail'; in_array($this->protocol, $this->_protocols, TRUE) OR $this->protocol = 'mail';
return $this->protocol;
if ($return === TRUE)
{
return $this->protocol;
}
} }
// -------------------------------------------------------------------- // --------------------------------------------------------------------
@ -932,25 +927,21 @@ class CI_Email {
/** /**
* Get Mail Encoding * Get Mail Encoding
* *
* @param bool
* @return string * @return string
*/ */
protected function _get_encoding($return = TRUE) protected function _get_encoding()
{ {
in_array($this->_encoding, $this->_bit_depths) OR $this->_encoding = '8bit'; in_array($this->_encoding, $this->_bit_depths) OR $this->_encoding = '8bit';
foreach ($this->_base_charsets as $charset) foreach ($this->_base_charsets as $charset)
{ {
if (strpos($charset, $this->charset) === 0) if (strpos($this->charset, $charset) === 0)
{ {
$this->_encoding = '7bit'; $this->_encoding = '7bit';
} }
} }
if ($return === TRUE) return $this->_encoding;
{
return $this->_encoding;
}
} }
// -------------------------------------------------------------------- // --------------------------------------------------------------------
@ -1829,14 +1820,15 @@ class CI_Email {
{ {
$this->_unwrap_specials(); $this->_unwrap_specials();
$method = '_send_with_'.$this->_get_protocol(); $protocol = $this->_get_protocol();
$method = '_send_with_'.$protocol;
if ( ! $this->$method()) if ( ! $this->$method())
{ {
$this->_set_error_message('lang:email_send_failure_'.($this->_get_protocol() === 'mail' ? 'phpmail' : $this->_get_protocol())); $this->_set_error_message('lang:email_send_failure_'.($protocol === 'mail' ? 'phpmail' : $protocol));
return FALSE; return FALSE;
} }
$this->_set_error_message('lang:email_sent', $this->_get_protocol()); $this->_set_error_message('lang:email_sent', $protocol);
return TRUE; return TRUE;
} }

View file

@ -1229,9 +1229,9 @@ class CI_Form_validation {
*/ */
public function valid_email($str) public function valid_email($str)
{ {
if (function_exists('idn_to_ascii') && sscanf($str, '%[^@]@%s', $name, $domain) === 2) if (function_exists('idn_to_ascii') && preg_match('#\A([^@]+)@(.+)\z#', $str, $matches))
{ {
$str = $name.'@'.idn_to_ascii($domain); $str = $matches[1].'@'.idn_to_ascii($matches[2]);
} }
return (bool) filter_var($str, FILTER_VALIDATE_EMAIL); return (bool) filter_var($str, FILTER_VALIDATE_EMAIL);

View file

@ -51,7 +51,7 @@ class CI_Session_redis_driver extends CI_Session_driver implements SessionHandle
/** /**
* phpRedis instance * phpRedis instance
* *
* @var resource * @var Redis
*/ */
protected $_redis; protected $_redis;

View file

@ -435,7 +435,7 @@ class CI_Table {
/** /**
* Set table data from a database result object * Set table data from a database result object
* *
* @param CI_DB_result $db_result Database result object * @param CI_DB_result $object Database result object
* @return void * @return void
*/ */
protected function _set_from_db_result($object) protected function _set_from_db_result($object)

View file

@ -1886,7 +1886,7 @@ class XML_RPC_Values extends CI_Xmlrpc
public function serializeval($o) public function serializeval($o)
{ {
$array = $o->me; $array = $o->me;
list($value, $type) = array(reset($ar), key($array)); list($value, $type) = array(reset($array), key($array));
return "<value>\n".$this->serializedata($type, $value)."</value>\n"; return "<value>\n".$this->serializedata($type, $value)."</value>\n";
} }