Merge branch 'master' into 2.7

Conflicts:
	lib/Cake/VERSION.txt
This commit is contained in:
mark_story 2015-01-16 22:22:26 -05:00
commit 3078a1eb52
11 changed files with 85 additions and 26 deletions

View file

@ -136,7 +136,6 @@
<dependencies> <dependencies>
<php minimum_version="5.2.8" /> <php minimum_version="5.2.8" />
<pear minimum_version="1.9.0" recommended_version="1.9.4" /> <pear minimum_version="1.9.0" recommended_version="1.9.4" />
<package name="PHPUnit" channel="pear.phpunit.de" minimum_version="3.5.0" type="optional" />
</dependencies> </dependencies>
<dirroles key="bin">script</dirroles> <dirroles key="bin">script</dirroles>
<dirroles key="Cake/Console/Templates/skel">php</dirroles> <dirroles key="Cake/Console/Templates/skel">php</dirroles>

View file

@ -974,7 +974,7 @@ class Controller extends Object implements CakeEventListener {
} }
$referer = $this->request->referer($local); $referer = $this->request->referer($local);
if ($referer === '/' && $default) { if ($referer === '/' && $default && $default !== $referer) {
return Router::url($default, !$local); return Router::url($default, !$local);
} }
return $referer; return $referer;

View file

@ -1,7 +1,7 @@
The MIT License The MIT License
CakePHP(tm) : The Rapid Development PHP Framework (http://cakephp.org) CakePHP(tm) : The Rapid Development PHP Framework (http://cakephp.org)
Copyright (c) 2005-2013, Cake Software Foundation, Inc. Copyright (c) 2005-2015, Cake Software Foundation, Inc.
Permission is hereby granted, free of charge, to any person obtaining a Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"), copy of this software and associated documentation files (the "Software"),

View file

@ -460,7 +460,9 @@ class CakeSession {
self::_startSession(); self::_startSession();
} }
session_destroy(); if (self::started()) {
session_destroy();
}
$_SESSION = null; $_SESSION = null;
self::$id = null; self::$id = null;

View file

@ -795,6 +795,17 @@ class Mysql extends DboSource {
return 'text'; return 'text';
} }
/**
* {@inheritDoc}
*/
public function value($data, $column = null) {
$value = parent::value($data, $column);
if (is_numeric($value) && substr($column, 0, 3) === 'set') {
return $this->_connection->quote($value);
}
return $value;
}
/** /**
* Gets the schema name * Gets the schema name
* *

View file

@ -355,8 +355,10 @@ class DboSource extends DataSource {
return str_replace(',', '.', strval($data)); return str_replace(',', '.', strval($data));
} }
if ((is_int($data) || $data === '0') || ( if ((is_int($data) || $data === '0') || (
is_numeric($data) && strpos($data, ',') === false && is_numeric($data) &&
$data[0] != '0' && strpos($data, 'e') === false) strpos($data, ',') === false &&
$data[0] != '0' &&
strpos($data, 'e') === false)
) { ) {
return $data; return $data;
} }

View file

@ -119,7 +119,7 @@ class CakeSocket {
} }
/** /**
* Connect the socket to the given host and port. * Connects the socket to the given host and port.
* *
* @return bool Success * @return bool Success
* @throws SocketException * @throws SocketException
@ -188,7 +188,7 @@ class CakeSocket {
} }
/** /**
* Get the connection context. * Gets the connection context.
* *
* @return null|array Null when there is no connection, an array when there is. * @return null|array Null when there is no connection, an array when there is.
*/ */
@ -200,7 +200,7 @@ class CakeSocket {
} }
/** /**
* Get the host name of the current connection. * Gets the host name of the current connection.
* *
* @return string Host name * @return string Host name
*/ */
@ -212,7 +212,7 @@ class CakeSocket {
} }
/** /**
* Get the IP address of the current connection. * Gets the IP address of the current connection.
* *
* @return string IP address * @return string IP address
*/ */
@ -224,7 +224,7 @@ class CakeSocket {
} }
/** /**
* Get all IP addresses associated with the current connection. * Gets all IP addresses associated with the current connection.
* *
* @return array IP addresses * @return array IP addresses
*/ */
@ -236,7 +236,7 @@ class CakeSocket {
} }
/** /**
* Get the last error as a string. * Gets the last error as a string.
* *
* @return string|null Last error * @return string|null Last error
*/ */
@ -248,7 +248,7 @@ class CakeSocket {
} }
/** /**
* Set the last error. * Sets the last error.
* *
* @param int $errNum Error code * @param int $errNum Error code
* @param string $errStr Error string * @param string $errStr Error string
@ -259,7 +259,7 @@ class CakeSocket {
} }
/** /**
* Write data to the socket. * Writes data to the socket.
* *
* @param string $data The data to write to the socket * @param string $data The data to write to the socket
* @return bool Success * @return bool Success
@ -281,7 +281,7 @@ class CakeSocket {
} }
/** /**
* Read data from the socket. Returns false if no data is available or no connection could be * Reads data from the socket. Returns false if no data is available or no connection could be
* established. * established.
* *
* @param int $length Optional buffer length to read; defaults to 1024 * @param int $length Optional buffer length to read; defaults to 1024
@ -307,7 +307,7 @@ class CakeSocket {
} }
/** /**
* Disconnect the socket from the current connection. * Disconnects the socket from the current connection.
* *
* @return bool Success * @return bool Success
*/ */
@ -353,14 +353,14 @@ class CakeSocket {
} }
/** /**
* Encrypts current stream socket, using one of the defined encryption methods * Encrypts current stream socket, using one of the defined encryption methods.
* *
* @param string $type can be one of 'ssl2', 'ssl3', 'ssl23' or 'tls' * @param string $type Type which can be one of 'sslv2', 'sslv3', 'sslv23' or 'tls'.
* @param string $clientOrServer can be one of 'client', 'server'. Default is 'client' * @param string $clientOrServer Can be one of 'client', 'server'. Default is 'client'.
* @param bool $enable enable or disable encryption. Default is true (enable) * @param bool $enable Enable or disable encryption. Default is true (enable)
* @return bool True on success * @return bool True on success
* @throws InvalidArgumentException When an invalid encryption scheme is chosen. * @throws InvalidArgumentException When an invalid encryption scheme is chosen.
* @throws SocketException When attempting to enable SSL/TLS fails * @throws SocketException When attempting to enable SSL/TLS fails.
* @see stream_socket_enable_crypto * @see stream_socket_enable_crypto
*/ */
public function enableCrypto($type, $clientOrServer = 'client', $enable = true) { public function enableCrypto($type, $clientOrServer = 'client', $enable = true) {
@ -369,7 +369,8 @@ class CakeSocket {
} }
$enableCryptoResult = false; $enableCryptoResult = false;
try { try {
$enableCryptoResult = stream_socket_enable_crypto($this->connection, $enable, $this->_encryptMethods[$type . '_' . $clientOrServer]); $enableCryptoResult = stream_socket_enable_crypto($this->connection, $enable,
$this->_encryptMethods[$type . '_' . $clientOrServer]);
} catch (Exception $e) { } catch (Exception $e) {
$this->setLastError(null, $e->getMessage()); $this->setLastError(null, $e->getMessage());
throw new SocketException($e->getMessage()); throw new SocketException($e->getMessage());

View file

@ -1031,6 +1031,30 @@ class ControllerTest extends CakeTestCase {
$this->assertEquals('/', $result); $this->assertEquals('/', $result);
} }
/**
* Test that the referer is not absolute if it is '/'.
*
* This avoids the base path being applied twice on string urls.
*
* @return void
*/
public function testRefererSlash() {
$request = $this->getMock('CakeRequest', array('referer'));
$request->base = '/base';
$request->expects($this->any())
->method('referer')
->will($this->returnValue('/'));
Router::setRequestInfo($request);
$controller = new Controller($request);
$result = $controller->referer('/', true);
$this->assertEquals('/', $result);
$controller = new Controller($request);
$result = $controller->referer('/some/path', true);
$this->assertEquals('/base/some/path', $result);
}
/** /**
* testSetAction method * testSetAction method
* *

View file

@ -553,6 +553,10 @@ class MysqlTest extends CakeTestCase {
$result = $this->Dbo->column('decimal(14,7) unsigned'); $result = $this->Dbo->column('decimal(14,7) unsigned');
$expected = 'decimal'; $expected = 'decimal';
$this->assertEquals($expected, $result); $this->assertEquals($expected, $result);
$result = $this->Dbo->column("set('a','b','c')");
$expected = "set('a','b','c')";
$this->assertEquals($expected, $result);
} }
/** /**
@ -4071,4 +4075,21 @@ SQL;
$this->Dbo->useNestedTransactions = $nested; $this->Dbo->useNestedTransactions = $nested;
} }
/**
* Test that value() quotes set values even when numeric.
*
* @return void
*/
public function testSetValue() {
$column = "set('a','b','c')";
$result = $this->Dbo->value('1', $column);
$this->assertEquals("'1'", $result);
$result = $this->Dbo->value(1, $column);
$this->assertEquals("'1'", $result);
$result = $this->Dbo->value('a', $column);
$this->assertEquals("'a'", $result);
}
} }

View file

@ -604,8 +604,7 @@ class FileTest extends CakeTestCase {
* *
* @return void * @return void
*/ */
public function testNoPartialPathBeingSetForNonExistentPath() public function testNoPartialPathBeingSetForNonExistentPath() {
{
$tmpFile = new File('/non/existent/file'); $tmpFile = new File('/non/existent/file');
$this->assertNull($tmpFile->pwd()); $this->assertNull($tmpFile->pwd());
$this->assertNull($tmpFile->path); $this->assertNull($tmpFile->path);

View file

@ -706,7 +706,7 @@ class PaginatorHelper extends AppHelper {
* - `currentClass` Class for wrapper tag on current active page, defaults to 'current' * - `currentClass` Class for wrapper tag on current active page, defaults to 'current'
* - `currentTag` Tag to use for current page number, defaults to null * - `currentTag` Tag to use for current page number, defaults to null
* *
* @param array $options Options for the numbers, (before, after, model, modulus, separator) * @param array|bool $options Options for the numbers, (before, after, model, modulus, separator)
* @return string Numbers string. * @return string Numbers string.
* @link http://book.cakephp.org/2.0/en/core-libraries/helpers/paginator.html#PaginatorHelper::numbers * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/paginator.html#PaginatorHelper::numbers
*/ */
@ -727,7 +727,7 @@ class PaginatorHelper extends AppHelper {
$params = (array)$this->params($options['model']) + array('page' => 1); $params = (array)$this->params($options['model']) + array('page' => 1);
unset($options['model']); unset($options['model']);
if ($params['pageCount'] <= 1) { if (empty($params['pageCount']) || $params['pageCount'] <= 1) {
return ''; return '';
} }