summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--system/database/DB_active_rec.php2
-rw-r--r--system/database/drivers/mysql/mysql_driver.php12
-rw-r--r--system/helpers/date_helper.php70
-rw-r--r--user_guide_src/source/changelog.rst2
4 files changed, 49 insertions, 37 deletions
diff --git a/system/database/DB_active_rec.php b/system/database/DB_active_rec.php
index 43920772a..41950e7d8 100644
--- a/system/database/DB_active_rec.php
+++ b/system/database/DB_active_rec.php
@@ -1424,7 +1424,7 @@ class CI_DB_active_record extends CI_DB_driver {
$this->limit($limit);
}
- $sql = $this->_update($this->_protect_identifiers($this->ar_from[0], TRUE, NULL, FALSE), $this->ar_set, $this->ar_where, $this->ar_orderby, $this->ar_limit);
+ $sql = $this->_update($this->_protect_identifiers($this->ar_from[0], TRUE, NULL, FALSE), $this->ar_set, $this->ar_where, $this->ar_orderby, $this->ar_limit, $this->ar_like);
$this->_reset_write();
return $this->query($sql);
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index 828ef006b..6ded6e531 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -606,7 +606,7 @@ class CI_DB_mysql_driver extends CI_DB {
* @param array the limit clause
* @return string
*/
- function _update($table, $values, $where, $orderby = array(), $limit = FALSE)
+ function _update($table, $values, $where, $orderby = array(), $limit = FALSE, $like = array())
{
foreach ($values as $key => $val)
{
@@ -620,6 +620,16 @@ class CI_DB_mysql_driver extends CI_DB {
$sql = "UPDATE ".$table." SET ".implode(', ', $valstr);
$sql .= ($where != '' AND count($where) >=1) ? " WHERE ".implode(" ", $where) : '';
+
+ if (count($like) > 0)
+ {
+ $sql .= ($where == '' AND count($where) <1) ? " WHERE " : ' AND ';
+
+ foreach ($like as $st_like)
+ {
+ $sql .= " " . $st_like;
+ }
+ }
$sql .= $orderby.$limit;
diff --git a/system/helpers/date_helper.php b/system/helpers/date_helper.php
index 8c92fdc89..49dbdbeb3 100644
--- a/system/helpers/date_helper.php
+++ b/system/helpers/date_helper.php
@@ -5,9 +5,9 @@
* 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:
@@ -96,14 +96,14 @@ if ( ! function_exists('mdate'))
{
if ($datestr == '')
{
- return '';
+ return '';
}
$time = ($time == '') ? now() : $time;
$datestr = str_replace(
- '%\\',
- '',
+ '%\\',
+ '',
preg_replace("/([a-z]+?){1}/i", "\\\\\\1", $datestr)
);
@@ -181,15 +181,15 @@ if ( ! function_exists('timespan'))
$seconds = ($time <= $seconds) ? 1 : $time - $seconds;
$str = '';
- $years = floor($seconds / 31536000);
+ $years = floor($seconds / 31557600);
if ($years > 0)
{
$str .= $years.' '.$CI->lang->line((($years > 1) ? 'date_years' : 'date_year')).', ';
}
- $seconds -= $years * 31536000;
- $months = floor($seconds / 2628000);
+ $seconds -= $years * 31557600;
+ $months = floor($seconds / 2629743);
if ($years > 0 OR $months > 0)
{
@@ -198,7 +198,7 @@ if ( ! function_exists('timespan'))
$str .= $months.' '.$CI->lang->line((($months > 1) ? 'date_months' : 'date_month')).', ';
}
- $seconds -= $months * 2628000;
+ $seconds -= $months * 2629743;
}
$weeks = floor($seconds / 604800);
@@ -315,13 +315,13 @@ if ( ! function_exists('local_to_gmt'))
{
$time = time();
}
-
+
return mktime(
- gmdate("H", $time),
- gmdate("i", $time),
- gmdate("s", $time),
- gmdate("m", $time),
- gmdate("d", $time),
+ gmdate("H", $time),
+ gmdate("i", $time),
+ gmdate("s", $time),
+ gmdate("m", $time),
+ gmdate("d", $time),
gmdate("Y", $time)
);
}
@@ -494,17 +494,17 @@ if ( ! function_exists('human_to_unix'))
if (substr($ampm, 0, 1) == 'p' AND $hour < 12)
{
- $hour = $hour + 12;
+ $hour = $hour + 12;
}
if (substr($ampm, 0, 1) == 'a' AND $hour == 12)
{
$hour = '00';
}
-
+
if (strlen($hour) == 1)
{
- $hour = '0'.$hour;
+ $hour = '0'.$hour;
}
}
@@ -517,7 +517,7 @@ if ( ! function_exists('human_to_unix'))
/**
* Turns many "reasonably-date-like" strings into something
* that is actually useful. This only works for dates after unix epoch.
- *
+ *
* @access public
* @param string The terribly formatted date-like string
* @param string Date format to return (same as php date function)
@@ -525,7 +525,7 @@ if ( ! function_exists('human_to_unix'))
*/
if ( ! function_exists('nice_date'))
{
- function nice_date($bad_date = '', $format = FALSE)
+ function nice_date($bad_date = '', $format = FALSE)
{
if (empty($bad_date))
{
@@ -533,47 +533,47 @@ if ( ! function_exists('nice_date'))
}
// Date like: YYYYMM
- if (preg_match('/^\d{6}$/', $bad_date))
+ if (preg_match('/^\d{6}$/', $bad_date))
{
- if (in_array(substr($bad_date, 0, 2),array('19', '20')))
+ if (in_array(substr($bad_date, 0, 2),array('19', '20')))
{
$year = substr($bad_date, 0, 4);
$month = substr($bad_date, 4, 2);
- }
- else
+ }
+ else
{
$month = substr($bad_date, 0, 2);
$year = substr($bad_date, 2, 4);
}
-
+
return date($format, strtotime($year . '-' . $month . '-01'));
}
-
+
// Date Like: YYYYMMDD
- if (preg_match('/^\d{8}$/',$bad_date))
+ if (preg_match('/^\d{8}$/',$bad_date))
{
$month = substr($bad_date, 0, 2);
$day = substr($bad_date, 2, 2);
$year = substr($bad_date, 4, 4);
-
+
return date($format, strtotime($month . '/01/' . $year));
}
-
+
// Date Like: MM-DD-YYYY __or__ M-D-YYYY (or anything in between)
if (preg_match('/^\d{1,2}-\d{1,2}-\d{4}$/',$bad_date))
- {
+ {
list($m, $d, $y) = explode('-', $bad_date);
return date($format, strtotime("{$y}-{$m}-{$d}"));
}
-
+
// Any other kind of string, when converted into UNIX time,
// produces "0 seconds after epoc..." is probably bad...
// return "Invalid Date".
if (date('U', strtotime($bad_date)) == '0')
- {
+ {
return "Invalid Date";
}
-
+
// It's probably a valid-ish date format already
return date($format, strtotime($bad_date));
}
@@ -688,9 +688,9 @@ if ( ! function_exists('timezones'))
{
return $zones;
}
-
+
$tz = ($tz == 'GMT') ? 'UTC' : $tz;
-
+
return ( ! isset($zones[$tz])) ? 0 : $zones[$tz];
}
}
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 74c29a509..62f60b1bb 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -40,6 +40,7 @@ Release Date: Not Released
- Added new :doc:`Active Record <database/active_record>` methods that return
the SQL string of queries without executing them: get_compiled_select(),
get_compiled_insert(), get_compiled_update(), get_compiled_delete().
+ - Taking care of LIKE condition when used with MySQL UPDATE statement.
- Libraries
@@ -73,6 +74,7 @@ Bug fixes for 3.0
- Fixed bugs (#157 and #174) - the Image_lib clear() function now resets all variables to their default values.
- Fixed a bug where using $this->dbforge->create_table() with PostgreSQL database could lead to fetching whole table.
- Bug #795 - Fixed form method and accept-charset when passing an empty array.
+- Bug #797 - timespan was using incorrect seconds for year and month.
Version 2.1.0
=============