Merge pull request #5760 from cakephp/master

Merge master into 2.7
This commit is contained in:
Mark Story 2015-01-27 20:48:15 -05:00
commit 35e0dc2bbd
10 changed files with 69 additions and 7 deletions

View file

@ -162,6 +162,7 @@ class ConsoleOutput {
$this->_output = fopen($stream, 'w');
if ((DS === '\\' && !(bool)env('ANSICON')) ||
$stream === 'php://output' ||
(function_exists('posix_isatty') && !posix_isatty($this->_output))
) {
$this->_outputAs = self::PLAIN;

View file

@ -751,7 +751,7 @@ class Controller extends Object implements CakeEventListener {
*
* @param string|array $url A string or array-based URL pointing to another location within the app,
* or an absolute URL
* @param int $status Optional HTTP status code (eg: 404)
* @param int|array|null $status HTTP status code (eg: 301). Defaults to 302 when null is passed.
* @param bool $exit If true, exit() will be called after the redirect
* @return void
* @triggers Controller.beforeRedirect $this, array($url, $status, $exit)
@ -785,9 +785,10 @@ class Controller extends Object implements CakeEventListener {
}
}
if ($status) {
$this->response->statusCode($status);
if ($status === null) {
$status = 302;
}
$this->response->statusCode($status);
if ($exit) {
$this->response->send();

View file

@ -1428,8 +1428,12 @@ class Model extends Object implements CakeEventListener {
* @return string Column type
*/
public function getColumnType($column) {
$db = $this->getDataSource();
$cols = $this->schema();
if (isset($cols[$column]) && isset($cols[$column]['type'])) {
return $cols[$column]['type'];
}
$db = $this->getDataSource();
$model = null;
$startQuote = isset($db->startQuote) ? $db->startQuote : null;

View file

@ -106,7 +106,7 @@ class CakeRequest implements ArrayAccess {
'ajax' => array('env' => 'HTTP_X_REQUESTED_WITH', 'value' => 'XMLHttpRequest'),
'flash' => array('env' => 'HTTP_USER_AGENT', 'pattern' => '/^(Shockwave|Adobe) Flash/'),
'mobile' => array('env' => 'HTTP_USER_AGENT', 'options' => array(
'Android', 'AvantGo', 'BlackBerry', 'DoCoMo', 'Fennec', 'iPod', 'iPhone', 'iPad',
'Android', 'AvantGo', 'BB10', 'BlackBerry', 'DoCoMo', 'Fennec', 'iPod', 'iPhone', 'iPad',
'J2ME', 'MIDP', 'NetFront', 'Nokia', 'Opera Mini', 'Opera Mobi', 'PalmOS', 'PalmSource',
'portalmmm', 'Plucker', 'ReqwirelessWeb', 'SonyEricsson', 'Symbian', 'UP\\.Browser',
'webOS', 'Windows CE', 'Windows Phone OS', 'Xiino'

View file

@ -231,6 +231,17 @@ class ConsoleOutputTest extends CakeTestCase {
$this->output->write('<error>Bad</error> Regular', false);
}
/**
* test plain output when php://output, as php://output is
* not compatible with posix_ functions.
*
* @return void
*/
public function testOutputAsPlainWhenOutputStream() {
$output = $this->getMock('ConsoleOutput', array('_write'), array('php://output'));
$this->assertEquals(ConsoleOutput::PLAIN, $output->outputAs());
}
/**
* test plain output only strips tags used for formatting.
*

View file

@ -2497,4 +2497,17 @@ class ModelIntegrationTest extends BaseModelTest {
$model->expects($this->never())->method('getDataSource');
$this->assertEmpty($model->schema());
}
/**
* Tests that calling getColumnType() on a model that is not supposed to use a table
* does not trigger any calls on any datasource
*
* @return void
*/
public function testGetColumnTypeNoDB() {
$model = $this->getMock('Example', array('getDataSource'));
$model->expects($this->never())->method('getDataSource');
$result = $model->getColumnType('filefield');
$this->assertEquals('string', $result);
}
}

View file

@ -5048,3 +5048,34 @@ class CustomArticle extends AppModel {
}
}
/**
* Example class
*
* @package Cake.Test.Case.Model
*/
class Example extends AppModel {
/**
* useTable property
*
* @var string
*/
public $useTable = false;
/**
* schema property
*
* @var array
*/
protected $_schema = array(
'filefield' => array(
'type' => 'string',
'length' => 254,
'default' => null,
'null' => true,
'comment' => null
),
);
}

View file

@ -297,6 +297,7 @@ class ControllerTestCaseTest extends CakeTestCase {
'Location' => 'http://cakephp.org'
);
$this->assertEquals($expected, $results);
$this->assertSame(302, $Controller->response->statusCode());
}
/**

View file

@ -91,7 +91,7 @@ class ClassRegistry {
* stored in the registry and returned.
* @param bool $strict if set to true it will return false if the class was not found instead
* of trying to create an AppModel
* @return object instance of ClassName.
* @return $class instance of ClassName.
* @throws CakeException when you try to construct an interface or abstract class.
*/
public static function init($class, $strict = false) {

View file

@ -75,7 +75,7 @@ class ViewBlock {
*/
public function start($name) {
if (in_array($name, $this->_active)) {
throw new CakeException(__("A view block with the name '%s' is already/still open.", $name));
throw new CakeException(__d('cake', "A view block with the name '%s' is already/still open.", $name));
}
$this->_active[] = $name;
ob_start();