Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge branch 'master' into 2.3

Conflicts:
	lib/Cake/Console/Command/ConsoleShell.php
	lib/Cake/Network/CakeSocket.php
	lib/Cake/Network/Http/HttpResponse.php
	lib/Cake/Utility/Folder.php
	lib/Cake/View/MediaView.php
	lib/Cake/basics.php
  • Loading branch information...
commit 27d7e2865e27122d0cc567a8e292caed5c9da618 2 parents 165035f + 587c707
@markstory markstory authored
Showing with 156 additions and 53 deletions.
  1. +3 −3 build.xml
  2. +11 −1 lib/Cake/Console/Command/ConsoleShell.php
  3. +0 −1  lib/Cake/Console/Command/Task/TemplateTask.php
  4. +1 −0  lib/Cake/Console/ConsoleOptionParser.php
  5. +2 −0  lib/Cake/Console/Shell.php
  6. +1 −1  lib/Cake/Controller/Controller.php
  7. +8 −0 lib/Cake/Error/exceptions.php
  8. +0 −1  lib/Cake/I18n/Multibyte.php
  9. +0 −1  lib/Cake/Model/Behavior/TreeBehavior.php
  10. +0 −1  lib/Cake/Model/BehaviorCollection.php
  11. +0 −1  lib/Cake/Model/Datasource/DataSource.php
  12. +3 −1 lib/Cake/Model/Datasource/Database/Sqlite.php
  13. +2 −0  lib/Cake/Network/CakeResponse.php
  14. +2 −0  lib/Cake/Network/Email/MailTransport.php
  15. +0 −3  lib/Cake/Network/Http/HttpSocket.php
  16. +6 −2 lib/Cake/Test/Case/BasicsTest.php
  17. +2 −0  lib/Cake/Test/Case/Cache/Engine/MemcacheEngineTest.php
  18. +20 −1 lib/Cake/Test/Case/Console/ConsoleOptionParserTest.php
  19. +6 −2 lib/Cake/Test/Case/Core/ConfigureTest.php
  20. +10 −4 lib/Cake/Test/Case/Error/ErrorHandlerTest.php
  21. +1 −1  lib/Cake/Test/Case/Log/CakeLogTest.php
  22. +0 −1  lib/Cake/Test/Case/Model/ModelReadTest.php
  23. +5 −5 lib/Cake/Test/Case/Network/CakeResponseTest.php
  24. +0 −1  lib/Cake/Test/Case/Network/Http/HttpSocketTest.php
  25. +0 −1  lib/Cake/Test/Case/Routing/RouterTest.php
  26. +3 −0  lib/Cake/Test/Case/Utility/SetTest.php
  27. +1 −0  lib/Cake/Test/Case/Utility/XmlTest.php
  28. +5 −1 lib/Cake/Test/Case/View/Helper/JsHelperTest.php
  29. +3 −3 lib/Cake/Test/Case/View/ScaffoldViewTest.php
  30. +3 −1 lib/Cake/Test/Case/View/ViewTest.php
  31. +1 −1  lib/Cake/TestSuite/CakeTestCase.php
  32. +2 −0  lib/Cake/TestSuite/CakeTestSuiteCommand.php
  33. +4 −4 lib/Cake/TestSuite/ControllerTestCase.php
  34. +4 −1 lib/Cake/Utility/Debugger.php
  35. +12 −0 lib/Cake/Utility/Folder.php
  36. +1 −1  lib/Cake/Utility/ObjectCollection.php
  37. +0 −1  lib/Cake/Utility/Security.php
  38. +1 −1  lib/Cake/Utility/Set.php
  39. +10 −3 lib/Cake/Utility/Xml.php
  40. +6 −3 lib/Cake/View/Helper.php
  41. +3 −1 lib/Cake/View/View.php
  42. +14 −0 lib/Cake/basics.php
View
6 build.xml
@@ -197,7 +197,7 @@
<!--
Upload to pirum pear channel.
-->
- <target name="distribute" depends="prepare">
+ <target name="distribute" depends="prepare" description="Upload pear packages to pear.cakephp.org">
<echo msg="Uploading tgz file to cakephp.org" />
<exec command="scp ${dist.dir}/${pear.package}.tgz cakephp@cakephp.org:${pirum.dir}" dir="." checkreturn="true" />
@@ -208,7 +208,7 @@
<!--
Top level easy to type targets
-->
- <target name="build" depends="generate-package" />
- <target name="release" depends="release-commit,build,distribute" />
+ <target name="build" depends="generate-package" description="Generate a pear package" />
+ <target name="release" depends="release-commit,build,distribute" description="Release a new version of CakePHP" />
</project>
View
12 lib/Cake/Console/Command/ConsoleShell.php
@@ -238,7 +238,9 @@ public function main($command = null) {
if ($this->_isValidModel($modelToCheck)) {
$findCommand = "\$data = \$this->$command;";
+ //@codingStandardsIgnoreStart
@eval($findCommand);
+ //@codingStandardsIgnoreEnd
if (is_array($data)) {
foreach ($data as $idx => $results) {
@@ -294,7 +296,9 @@ public function main($command = null) {
list($foo, $data) = explode("->save", $command);
$data = preg_replace('/^\(*(array)?\(*(.+?)\)*$/i', '\\2', $data);
$saveCommand = "\$this->{$modelToSave}->save(array('{$modelToSave}' => array({$data})));";
+ //@codingStandardsIgnoreStart
@eval($saveCommand);
+ //@codingStandardsIgnoreEnd
$this->out(__d('cake_console', 'Saved record for %s', $modelToSave));
}
break;
@@ -304,7 +308,9 @@ public function main($command = null) {
if ($this->_isValidModel($modelToCheck)) {
// Get the column info for this model
$fieldsCommand = "\$data = \$this->{$modelToCheck}->getColumnTypes();";
+ //@codingStandardsIgnoreStart
@eval($fieldsCommand);
+ //@codingStandardsIgnoreEnd
if (is_array($data)) {
foreach ($data as $field => $type) {
@@ -325,8 +331,10 @@ public function main($command = null) {
case preg_match("/^routes\s+show/i", $command, $tmp):
$this->out(print_r(Hash::combine(Router::$routes, '{n}.template', '{n}.defaults'), true));
break;
- case preg_match("/^route\s+(\(.*\))$/i", $command, $tmp):
+ case (preg_match("/^route\s+(\(.*\))$/i", $command, $tmp) == true):
+ //@codingStandardsIgnoreStart
if ($url = eval('return array' . $tmp[1] . ';')) {
+ //@codingStandardsIgnoreEnd
$this->out(Router::url($url));
}
break;
@@ -362,7 +370,9 @@ protected function _loadRoutes() {
Router::reload();
extract(Router::getNamedExpressions());
+ //@codingStandardsIgnoreStart
if (!@include APP . 'Config' . DS . 'routes.php') {
+ //@codingStandardsIgnoreEnd
return false;
}
CakePlugin::routes();
View
1  lib/Cake/Console/Command/Task/TemplateTask.php
@@ -78,7 +78,6 @@ protected function _findThemes() {
$paths[] = $core;
- // TEMPORARY TODO remove when all paths are DS terminated
foreach ($paths as $i => $path) {
$paths[$i] = rtrim($path, DS) . DS;
}
View
1  lib/Cake/Console/ConsoleOptionParser.php
@@ -345,6 +345,7 @@ public function addArgument($name, $params = array()) {
$arg = new ConsoleInputArgument($options);
}
$this->_args[$index] = $arg;
+ ksort($this->_args);
return $this;
}
View
2  lib/Cake/Console/Shell.php
@@ -686,7 +686,9 @@ public function createFile($path, $contents) {
protected function _checkUnitTest() {
if (class_exists('PHPUnit_Framework_TestCase')) {
return true;
+ //@codingStandardsIgnoreStart
} elseif (@include 'PHPUnit' . DS . 'Autoload.php') {
+ //@codingStandardsIgnoreEnd
return true;
} elseif (App::import('Vendor', 'phpunit', array('file' => 'PHPUnit' . DS . 'Autoload.php'))) {
return true;
View
2  lib/Cake/Controller/Controller.php
@@ -755,7 +755,7 @@ public function redirect($url, $status = null, $exit = true) {
extract($status, EXTR_OVERWRITE);
}
$event = new CakeEvent('Controller.beforeRedirect', $this, array($url, $status, $exit));
- //TODO: Remove the following line when the events are fully migrated to the CakeEventManager
+
list($event->break, $event->breakOn, $event->collectReturn) = array(true, false, true);
$this->getEventManager()->dispatch($event);
View
8 lib/Cake/Error/exceptions.php
@@ -261,9 +261,11 @@ class MissingControllerException extends CakeException {
protected $_messageTemplate = 'Controller class %s could not be found.';
+//@codingStandardsIgnoreStart
public function __construct($message, $code = 404) {
parent::__construct($message, $code);
}
+//@codingStandardsIgnoreEnd
}
@@ -277,9 +279,11 @@ class MissingActionException extends CakeException {
protected $_messageTemplate = 'Action %s::%s() could not be found.';
+//@codingStandardsIgnoreStart
public function __construct($message, $code = 404) {
parent::__construct($message, $code);
}
+//@codingStandardsIgnoreEnd
}
@@ -293,9 +297,11 @@ class PrivateActionException extends CakeException {
protected $_messageTemplate = 'Private Action %s::%s() is not directly accessible.';
+//@codingStandardsIgnoreStart
public function __construct($message, $code = 404, Exception $previous = null) {
parent::__construct($message, $code, $previous);
}
+//@codingStandardsIgnoreEnd
}
@@ -609,8 +615,10 @@ class NotImplementedException extends CakeException {
protected $_messageTemplate = '%s is not implemented.';
+//@codingStandardsIgnoreStart
public function __construct($message, $code = 501) {
parent::__construct($message, $code);
}
+//@codingStandardsIgnoreEnd
}
View
1  lib/Cake/I18n/Multibyte.php
@@ -732,7 +732,6 @@ public static function substr($string, $start, $length = null) {
* @param string $charset charset to use for encoding. defaults to UTF-8
* @param string $newline
* @return string
- * @TODO: add support for 'Q'('Quoted Printable') encoding
*/
public static function mimeEncode($string, $charset = null, $newline = "\r\n") {
if (!Multibyte::checkMultibyte($string) && strlen($string) < 75) {
View
1  lib/Cake/Model/Behavior/TreeBehavior.php
@@ -588,7 +588,6 @@ public function moveUp(Model $Model, $id = null, $number = 1) {
* 'parent' the values of the parent_id field will be used to populate the left and right fields. The missingParentAction
* parameter only applies to "parent" mode and determines what to do if the parent field contains an id that is not present.
*
- * @todo Could be written to be faster, *maybe*. Ideally using a subquery and putting all the logic burden on the DB.
* @param Model $Model Model instance
* @param string $mode parent or tree
* @param string|integer $missingParentAction 'return' to do nothing and return, 'delete' to
View
1  lib/Cake/Model/BehaviorCollection.php
@@ -55,7 +55,6 @@ class BehaviorCollection extends ObjectCollection implements CakeEventListener {
/**
* Attaches a model object and loads a list of behaviors
*
- * @todo Make this method a constructor instead..
* @param string $modelName
* @param array $behaviors
* @return void
View
1  lib/Cake/Model/Datasource/DataSource.php
@@ -322,7 +322,6 @@ protected function _cacheDescription($object, $data = null) {
* @param Model $linkModel Instance of model to replace $__cakeForeignKey__$
* @param array $stack
* @return string String of query data with placeholders replaced.
- * @todo Remove and refactor $assocData, ensure uses of the method have the param removed too.
*/
public function insertQueryData($query, $data, $association, $assocData, Model $model, Model $linkModel, $stack) {
$keys = array('{$__cakeID__$}', '{$__cakeForeignKey__$}');
View
4 lib/Cake/Model/Datasource/Database/Sqlite.php
@@ -250,7 +250,9 @@ public function column($real) {
$col = strtolower(str_replace(')', '', $real));
$limit = null;
- @list($col, $limit) = explode('(', $col);
+ if (strpos($col, '(') !== false) {
+ list($col, $limit) = explode('(', $col);
+ }
$standard = array(
'text',
View
2  lib/Cake/Network/CakeResponse.php
@@ -446,6 +446,8 @@ protected function _setContentType() {
}
if (strpos($this->_contentType, 'text/') === 0) {
$this->header('Content-Type', "{$this->_contentType}; charset={$this->_charset}");
+ } elseif ($this->_contentType === 'application/json') {
+ $this->header('Content-Type', "{$this->_contentType}; charset=UTF-8");
} else {
$this->header('Content-Type', "{$this->_contentType}");
}
View
2  lib/Cake/Network/Email/MailTransport.php
@@ -63,9 +63,11 @@ public function send(CakeEmail $email) {
* @return void
*/
protected function _mail($to, $subject, $message, $headers, $params = null) {
+ //@codingStandardsIgnoreStart
if (!@mail($to, $subject, $message, $headers, $params)) {
throw new SocketException(__d('cake_dev', 'Could not send email.'));
}
+ //@codingStandardsIgnoreEnd
}
}
View
3  lib/Cake/Network/Http/HttpSocket.php
@@ -935,7 +935,6 @@ protected function _buildHeader($header, $mode = 'standard') {
*
* @param array $cookies Array of cookies to send with the request.
* @return string Cookie header string to be sent with the request.
- * @todo Refactor token escape mechanism to be configurable
*/
public function buildCookies($cookies) {
$header = array();
@@ -951,7 +950,6 @@ public function buildCookies($cookies) {
* @param string $token Token to escape
* @param array $chars
* @return string Escaped token
- * @todo Test $chars parameter
*/
protected function _escapeToken($token, $chars = null) {
$regex = '/([' . implode('', $this->_tokenEscapeChars(true, $chars)) . '])/';
@@ -965,7 +963,6 @@ protected function _escapeToken($token, $chars = null) {
* @param boolean $hex true to get them as HEX values, false otherwise
* @param array $chars
* @return array Escape chars
- * @todo Test $chars parameter
*/
protected function _tokenEscapeChars($hex = true, $chars = null) {
if (!empty($chars)) {
View
8 lib/Cake/Test/Case/BasicsTest.php
@@ -282,7 +282,9 @@ public function testCache() {
$result = cache('basics_test');
$this->assertEquals('simple cache write', $result);
- @unlink(CACHE . 'basics_test');
+ if (file_exists(CACHE . 'basics_test')) {
+ unlink(CACHE . 'basics_test');
+ }
cache('basics_test', 'expired', '+1 second');
sleep(2);
@@ -603,7 +605,9 @@ public function testTranslateDomainCategoryPlural() {
* @return void
*/
public function testLogError() {
- @unlink(LOGS . 'error.log');
+ if (file_exists(LOGS . 'error.log')) {
+ unlink(LOGS . 'error.log');
+ }
// disable stderr output for this test
if (CakeLog::stream('stderr')) {
View
2  lib/Cake/Test/Case/Cache/Engine/MemcacheEngineTest.php
@@ -111,9 +111,11 @@ public function testMultipleServers() {
foreach ($servers as $server) {
list($host, $port) = explode(':', $server);
+ //@codingStandardsIgnoreStart
if (!@$Memcache->connect($host, $port)) {
$available = false;
}
+ //@codingStandardsIgnoreEnd
}
$this->skipIf(!$available, 'Need memcache servers at ' . implode(', ', $servers) . ' to run this test.');
View
21 lib/Cake/Test/Case/Console/ConsoleOptionParserTest.php
@@ -314,11 +314,30 @@ public function testAddArgumentObject() {
$parser = new ConsoleOptionParser('test', false);
$parser->addArgument(new ConsoleInputArgument('test'));
$result = $parser->arguments();
- $this->assertEquals(1, count($result));
+ $this->assertCount(1, $result);
$this->assertEquals('test', $result[0]->name());
}
/**
+ * Test adding arguments out of order.
+ *
+ * @return void
+ */
+ public function testAddArgumentOutOfOrder() {
+ $parser = new ConsoleOptionParser('test', false);
+ $parser->addArgument('name', array('index' => 1, 'help' => 'first argument'))
+ ->addArgument('bag', array('index' => 2, 'help' => 'second argument'))
+ ->addArgument('other', array('index' => 0, 'help' => 'Zeroth argument'));
+
+ $result = $parser->arguments();
+ $this->assertCount(3, $result);
+ $this->assertEquals('other', $result[0]->name());
+ $this->assertEquals('name', $result[1]->name());
+ $this->assertEquals('bag', $result[2]->name());
+ $this->assertSame(array(0, 1, 2), array_keys($result));
+ }
+
+/**
* test overwriting positional arguments.
*
* @return void
View
8 lib/Cake/Test/Case/Core/ConfigureTest.php
@@ -437,7 +437,9 @@ public function testDump() {
$result = file_get_contents(TMP . 'config_test.php');
$this->assertContains('<?php', $result);
$this->assertContains('$config = ', $result);
- @unlink(TMP . 'config_test.php');
+ if (file_exists(TMP . 'config_test.php')) {
+ unlink(TMP . 'config_test.php');
+ }
}
/**
@@ -456,7 +458,9 @@ public function testDumpPartial() {
$this->assertContains('Error', $result);
$this->assertNotContains('debug', $result);
- @unlink(TMP . 'config_test.php');
+ if (file_exists(TMP . 'config_test.php')) {
+ unlink(TMP . 'config_test.php');
+ }
}
}
View
14 lib/Cake/Test/Case/Error/ErrorHandlerTest.php
@@ -124,7 +124,9 @@ public function testErrorSuppressed() {
$this->_restoreError = true;
ob_start();
+ //@codingStandardsIgnoreStart
@include 'invalid.file';
+ //@codingStandardsIgnoreEnd
$result = ob_get_clean();
$this->assertTrue(empty($result));
}
@@ -138,7 +140,7 @@ public function testHandleErrorDebugOff() {
Configure::write('debug', 0);
Configure::write('Error.trace', false);
if (file_exists(LOGS . 'debug.log')) {
- @unlink(LOGS . 'debug.log');
+ unlink(LOGS . 'debug.log');
}
set_error_handler('ErrorHandler::handleError');
@@ -152,7 +154,9 @@ public function testHandleErrorDebugOff() {
'/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} (Notice|Debug): Notice \(8\): Undefined variable:\s+out in \[.+ line \d+\]$/',
$result[0]
);
- @unlink(LOGS . 'debug.log');
+ if (file_exists(LOGS . 'debug.log')) {
+ unlink(LOGS . 'debug.log');
+ }
}
/**
@@ -164,7 +168,7 @@ public function testHandleErrorLoggingTrace() {
Configure::write('debug', 0);
Configure::write('Error.trace', true);
if (file_exists(LOGS . 'debug.log')) {
- @unlink(LOGS . 'debug.log');
+ unlink(LOGS . 'debug.log');
}
set_error_handler('ErrorHandler::handleError');
@@ -179,7 +183,9 @@ public function testHandleErrorLoggingTrace() {
);
$this->assertRegExp('/^Trace:/', $result[1]);
$this->assertRegExp('/^ErrorHandlerTest\:\:testHandleErrorLoggingTrace\(\)/', $result[2]);
- @unlink(LOGS . 'debug.log');
+ if (file_exists(LOGS . 'debug.log')) {
+ unlink(LOGS . 'debug.log');
+ }
}
/**
View
2  lib/Cake/Test/Case/Log/CakeLogTest.php
@@ -150,7 +150,7 @@ public function testConfig() {
$this->assertEquals(array('file'), $result);
if (file_exists(LOGS . 'error.log')) {
- @unlink(LOGS . 'error.log');
+ unlink(LOGS . 'error.log');
}
CakeLog::write(LOG_WARNING, 'Test warning');
$this->assertTrue(file_exists(LOGS . 'error.log'));
View
1  lib/Cake/Test/Case/Model/ModelReadTest.php
@@ -4054,7 +4054,6 @@ public function testSaveEmpty() {
/**
* testFindAllWithConditionInChildQuery
*
- * @todo external conditions like this are going to need to be revisited at some point
* @return void
*/
public function testFindAllWithConditionInChildQuery() {
View
10 lib/Cake/Test/Case/Network/CakeResponseTest.php
@@ -199,7 +199,7 @@ public function testSend() {
* Tests the send method and changing the content type
*
*/
- public function testSendChangingContentYype() {
+ public function testSendChangingContentType() {
$response = $this->getMock('CakeResponse', array('_sendHeader', '_sendContent', '_setCookies'));
$response->type('mp3');
$response->body('the response body');
@@ -215,12 +215,12 @@ public function testSendChangingContentYype() {
}
/**
- * Tests the send method and changing the content type
+ * Tests the send method and changing the content type to JSON
*
*/
- public function testSendChangingContentType() {
+ public function testSendChangingContentTypeJSON() {
$response = $this->getMock('CakeResponse', array('_sendHeader', '_sendContent', '_setCookies'));
- $response->type('mp3');
+ $response->type('json');
$response->body('the response body');
$response->expects($this->once())->method('_sendContent')->with('the response body');
$response->expects($this->at(0))->method('_setCookies');
@@ -229,7 +229,7 @@ public function testSendChangingContentType() {
$response->expects($this->at(2))
->method('_sendHeader')->with('Content-Length', 17);
$response->expects($this->at(3))
- ->method('_sendHeader')->with('Content-Type', 'audio/mpeg');
+ ->method('_sendHeader')->with('Content-Type', 'application/json; charset=UTF-8');
$response->send();
}
View
1  lib/Cake/Test/Case/Network/Http/HttpSocketTest.php
@@ -1567,7 +1567,6 @@ public function testBuildHeader() {
* testBuildCookies method
*
* @return void
- * @todo Test more scenarios
*/
public function testBuildCookies() {
$cookies = array(
View
1  lib/Cake/Test/Case/Routing/RouterTest.php
@@ -1538,7 +1538,6 @@ public function testNamedArgsUrlParsing() {
* test url generation with legacy (1.2) style prefix routes.
*
* @return void
- * @todo Remove tests related to legacy style routes.
* @see testUrlGenerationWithAutoPrefixes
*/
public function testUrlGenerationWithLegacyPrefixes() {
View
3  lib/Cake/Test/Case/Utility/SetTest.php
@@ -152,6 +152,9 @@ public function testMerge() {
$r = Set::merge('foo', 'bar');
$this->assertEquals(array('foo', 'bar'), $r);
+ $r = Set::merge(array('foo'), array(), array('bar'));
+ $this->assertEquals(array('foo', 'bar'), $r);
+
$r = Set::merge('foo', array('user' => 'bob', 'no-bar'), 'bar');
$this->assertEquals(array('foo', 'user' => 'bob', 'no-bar', 'bar'), $r);
View
1  lib/Cake/Test/Case/Utility/XmlTest.php
@@ -177,6 +177,7 @@ public static function invalidDataProvider() {
array(null),
array(false),
array(''),
+ array('http://localhost/notthere.xml'),
);
}
View
6 lib/Cake/Test/Case/View/Helper/JsHelperTest.php
@@ -29,7 +29,9 @@ class JsEncodingObject {
protected $_title = 'Old thing';
+ //@codingStandardsIgnoreStart
private $__noshow = 'Never ever';
+ //@codingStandardsIgnoreEnd
}
@@ -366,7 +368,9 @@ public function testWriteScriptsInFile() {
$this->assertTrue(file_exists(WWW_ROOT . $filename[1]));
$contents = file_get_contents(WWW_ROOT . $filename[1]);
$this->assertRegExp('/one\s=\s1;\ntwo\s=\s2;/', $contents);
- @unlink(WWW_ROOT . $filename[1]);
+ if (file_exists(WWW_ROOT . $filename[1])) {
+ unlink(WWW_ROOT . $filename[1]);
+ }
Configure::write('Cache.disable', true);
$this->Js->buffer('one = 1;');
View
6 lib/Cake/Test/Case/View/ScaffoldViewTest.php
@@ -279,7 +279,7 @@ public function testViewScaffold() {
$this->assertRegExp('/<h2>View Scaffold Mock<\/h2>/', $result);
$this->assertRegExp('/<dl>/', $result);
- //TODO: add specific tests for fields.
+
$this->assertRegExp('/<a href="\/scaffold_users\/view\/1">1<\/a>/', $result); //belongsTo links
$this->assertRegExp('/<li><a href="\/scaffold_mock\/edit\/1">Edit Scaffold Mock<\/a>\s<\/li>/', $result);
$this->assertRegExp('/<a href="\#" onclick="if[^>]*>Delete Scaffold Mock<\/a>\s<\/li>/', $result);
@@ -370,7 +370,7 @@ public function testAdminIndexScaffold() {
$this->assertRegExp('/<h2>Scaffold Mock<\/h2>/', $result);
$this->assertRegExp('/<table cellpadding="0" cellspacing="0">/', $result);
- //TODO: add testing for table generation
+
$this->assertRegExp('/<li><a href="\/admin\/scaffold_mock\/add">New Scaffold Mock<\/a><\/li>/', $result);
Configure::write('Routing.prefixes', $_backAdmin);
@@ -454,7 +454,7 @@ public function testMultiplePrefixScaffold() {
$this->assertRegExp('/<h2>Scaffold Mock<\/h2>/', $result);
$this->assertRegExp('/<table cellpadding="0" cellspacing="0">/', $result);
- //TODO: add testing for table generation
+
$this->assertRegExp('/<li><a href="\/member\/scaffold_mock\/add">New Scaffold Mock<\/a><\/li>/', $result);
Configure::write('Routing.prefixes', $_backAdmin);
View
4 lib/Cake/Test/Case/View/ViewTest.php
@@ -1101,7 +1101,9 @@ public function testRenderCache() {
$this->assertRegExp('/^some cacheText/', $result);
- @unlink($path);
+ if (file_exists($path)) {
+ unlink($path);
+ }
}
/**
View
2  lib/Cake/TestSuite/CakeTestCase.php
@@ -674,7 +674,7 @@ protected function skipUnless($condition, $message = '') {
}
return $condition;
}
- // @codingStandardsIgnoreStop
+ // @codingStandardsIgnoreEnd
/**
* Mock a model, maintain fixtures and table association
View
2  lib/Cake/TestSuite/CakeTestSuiteCommand.php
@@ -82,7 +82,9 @@ public function run(array $argv, $exit = true) {
$result = $skeleton->generate(true);
if (!$result['incomplete']) {
+ //@codingStandardsIgnoreStart
eval(str_replace(array('<?php', '?>'), '', $result['code']));
+ //@codingStandardsIgnoreEnd
$suite = new PHPUnit_Framework_TestSuite(
$this->arguments['test'] . 'Test'
);
View
8 lib/Cake/TestSuite/ControllerTestCase.php
@@ -173,7 +173,7 @@ public function afterRender($viewFile) {
*
* @var boolean
*/
- private $__dirtyController = false;
+ protected $_dirtyController = false;
/**
* Used to enable calling ControllerTestCase::testAction() without the testing
@@ -252,7 +252,7 @@ protected function _testAction($url = '', $options = array()) {
$this->headers = Router::currentRoute()->response->header();
return;
}
- if ($this->__dirtyController) {
+ if ($this->_dirtyController) {
$this->controller = null;
}
@@ -275,7 +275,7 @@ protected function _testAction($url = '', $options = array()) {
if (isset($this->controller->View)) {
$this->view = $this->controller->View->fetch('__view_no_layout__');
}
- $this->__dirtyController = true;
+ $this->_dirtyController = true;
$this->headers = $Dispatch->response->header();
$_GET = $restore['get'];
@@ -366,7 +366,7 @@ public function generate($controller, $mocks = array()) {
}
$_controller->constructClasses();
- $this->__dirtyController = false;
+ $this->_dirtyController = false;
$this->controller = $_controller;
return $this->controller;
View
5 lib/Cake/Utility/Debugger.php
@@ -395,7 +395,10 @@ public static function excerpt($file, $line, $context = 2) {
if (!file_exists($file)) {
return array();
}
- $data = @explode("\n", file_get_contents($file));
+ $data = file_get_contents($file);
+ if (!empty($data) && strpos($data, "\n") !== false) {
+ $data = explode("\n", $data);
+ }
if (empty($data) || !isset($data[$line])) {
return;
View
12 lib/Cake/Utility/Folder.php
@@ -378,7 +378,9 @@ public function chmod($path, $mode = false, $recursive = true, $exceptions = arr
}
if ($recursive === false && is_dir($path)) {
+ //@codingStandardsIgnoreStart
if (@chmod($path, intval($mode, 8))) {
+ //@codingStandardsIgnoreEnd
$this->_messages[] = __d('cake_dev', '%s changed to %s', $path, $mode);
return true;
}
@@ -399,7 +401,9 @@ public function chmod($path, $mode = false, $recursive = true, $exceptions = arr
continue;
}
+ //@codingStandardsIgnoreStart
if (@chmod($fullpath, intval($mode, 8))) {
+ //@codingStandardsIgnoreEnd
$this->_messages[] = __d('cake_dev', '%s changed to %s', $fullpath, $mode);
} else {
$this->_errors[] = __d('cake_dev', '%s NOT changed to %s', $fullpath, $mode);
@@ -583,13 +587,17 @@ public function delete($path = null) {
foreach ($iterator as $item) {
$filePath = $item->getPathname();
if ($item->isFile() || $item->isLink()) {
+ //@codingStandardsIgnoreStart
if (@unlink($filePath)) {
+ //@codingStandardsIgnoreEnd
$this->_messages[] = __d('cake_dev', '%s removed', $filePath);
} else {
$this->_errors[] = __d('cake_dev', '%s NOT removed', $filePath);
}
} elseif ($item->isDir() && !$item->isDot()) {
+ //@codingStandardsIgnoreStart
if (@rmdir($filePath)) {
+ //@codingStandardsIgnoreEnd
$this->_messages[] = __d('cake_dev', '%s removed', $filePath);
} else {
$this->_errors[] = __d('cake_dev', '%s NOT removed', $filePath);
@@ -599,7 +607,9 @@ public function delete($path = null) {
}
$path = rtrim($path, DS);
+ //@codingStandardsIgnoreStart
if (@rmdir($path)) {
+ //@codingStandardsIgnoreEnd
$this->_messages[] = __d('cake_dev', '%s removed', $path);
} else {
$this->_errors[] = __d('cake_dev', '%s NOT removed', $path);
@@ -654,7 +664,9 @@ public function copy($options = array()) {
}
$exceptions = array_merge(array('.', '..', '.svn'), $options['skip']);
+ //@codingStandardsIgnoreStart
if ($handle = @opendir($fromDir)) {
+ //@codingStandardsIgnoreEnd
while (($item = readdir($handle)) !== false) {
$to = Folder::addPathElement($toDir, $item);
if (($options['scheme'] != Folder::SKIP || !is_dir($to)) && !in_array($item, $exceptions)) {
View
2  lib/Cake/Utility/ObjectCollection.php
@@ -103,7 +103,7 @@ public function trigger($callback, $params = array(), $options = array()) {
if (empty($event->omitSubject)) {
$subject = $event->subject();
}
- //TODO: Temporary BC check, while we move all the triggers system into the CakeEventManager
+
foreach (array('break', 'breakOn', 'collectReturn', 'modParams') as $opt) {
if (isset($event->{$opt})) {
$options[$opt] = $event->{$opt};
View
1  lib/Cake/Utility/Security.php
@@ -71,7 +71,6 @@ public static function generateAuthKey() {
*
* @param string $authKey Authorization hash
* @return boolean Success
- * @todo Complete implementation
*/
public static function validateAuthKey($authKey) {
return true;
View
2  lib/Cake/Utility/Set.php
@@ -45,7 +45,7 @@ class Set {
*/
public static function merge($data, $merge = null) {
$args = func_get_args();
- if (empty($args[1])) {
+ if (empty($args[1]) && count($args) <= 2) {
return (array)$args[0];
}
if (!is_array($args[0])) {
View
13 lib/Cake/Utility/Xml.php
@@ -18,6 +18,7 @@
* @since CakePHP v .0.10.3.1400
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
+App::uses('HttpSocket', 'Network/Http');
/**
* XML handling for Cake.
@@ -97,9 +98,15 @@ public static function build($input, $options = array()) {
return self::fromArray((array)$input, $options);
} elseif (strpos($input, '<') !== false) {
return self::_loadXml($input, $options);
- } elseif (file_exists($input) || strpos($input, 'http://') === 0 || strpos($input, 'https://') === 0) {
- $input = file_get_contents($input);
- return self::_loadXml($input, $options);
+ } elseif (file_exists($input)) {
+ return self::_loadXml(file_get_contents($input), $options);
+ } elseif (strpos($input, 'http://') === 0 || strpos($input, 'https://') === 0) {
+ $socket = new HttpSocket();
+ $response = $socket->get($input);
+ if (!$response->isOk()) {
+ throw new XmlException(__d('cake_dev', 'XML cannot be read.'));
+ }
+ return self::_loadXml($response->body, $options);
} elseif (!is_string($input)) {
throw new XmlException(__d('cake_dev', 'Invalid input.'));
}
View
9 lib/Cake/View/Helper.php
@@ -341,20 +341,26 @@ public function assetTimestamp($path) {
$filepath = preg_replace('/^' . preg_quote($this->request->webroot, '/') . '/', '', $path);
$webrootPath = WWW_ROOT . str_replace('/', DS, $filepath);
if (file_exists($webrootPath)) {
+ //@codingStandardsIgnoreStart
return $path . '?' . @filemtime($webrootPath);
+ //@codingStandardsIgnoreEnd
}
$segments = explode('/', ltrim($filepath, '/'));
if ($segments[0] === 'theme') {
$theme = $segments[1];
unset($segments[0], $segments[1]);
$themePath = App::themePath($theme) . 'webroot' . DS . implode(DS, $segments);
+ //@codingStandardsIgnoreStart
return $path . '?' . @filemtime($themePath);
+ //@codingStandardsIgnoreEnd
} else {
$plugin = Inflector::camelize($segments[0]);
if (CakePlugin::loaded($plugin)) {
unset($segments[0]);
$pluginPath = CakePlugin::path($plugin) . 'webroot' . DS . implode(DS, $segments);
+ //@codingStandardsIgnoreStart
return $path . '?' . @filemtime($pluginPath);
+ //@codingStandardsIgnoreEnd
}
}
}
@@ -593,7 +599,6 @@ public function field() {
* @param string $id The name of the 'id' attribute.
* @return mixed If $options was an array, an array will be returned with $id set. If a string
* was supplied, a string will be returned.
- * @todo Refactor this method to not have as many input/output options.
*/
public function domId($options = null, $id = 'id') {
if (is_array($options) && array_key_exists($id, $options) && $options[$id] === null) {
@@ -626,7 +631,6 @@ public function domId($options = null, $id = 'id') {
* @param string $key The name of the attribute to be set, defaults to 'name'
* @return mixed If an array was given for $options, an array with $key set will be returned.
* If a string was supplied a string will be returned.
- * @todo Refactor this method to not have as many input/output options.
*/
protected function _name($options = array(), $field = null, $key = 'name') {
if ($options === null) {
@@ -670,7 +674,6 @@ protected function _name($options = array(), $field = null, $key = 'name') {
* @param string $key The name of the attribute to be set, defaults to 'value'
* @return mixed If an array was given for $options, an array with $key set will be returned.
* If a string was supplied a string will be returned.
- * @todo Refactor this method to not have as many input/output options.
*/
public function value($options = array(), $field = null, $key = 'value') {
if ($options === null) {
View
4 lib/Cake/View/View.php
@@ -530,7 +530,9 @@ public function renderCache($filename, $timeStart) {
if (preg_match('/^<!--cachetime:(\\d+)-->/', $out, $match)) {
if (time() >= $match['1']) {
+ //@codingStandardsIgnoreStart
@unlink($filename);
+ //@codingStandardsIgnoreEnd
unset ($out);
return false;
} else {
@@ -869,7 +871,7 @@ protected function _render($viewFile, $data = array()) {
$content = $this->_evaluate($viewFile, $data);
$afterEvent = new CakeEvent('View.afterRenderFile', $this, array($viewFile, $content));
- //TODO: For BC puporses, set extra info in the event object. Remove when appropriate
+
$afterEvent->modParams = 1;
$eventManager->dispatch($afterEvent);
$content = $afterEvent->data[1];
View
14 lib/Cake/basics.php
@@ -422,19 +422,27 @@ function cache($path, $data = null, $expires = '+1 day', $target = 'cache') {
$filetime = false;
if (file_exists($filename)) {
+ //@codingStandardsIgnoreStart
$filetime = @filemtime($filename);
+ //@codingStandardsIgnoreEnd
}
if ($data === null) {
if (file_exists($filename) && $filetime !== false) {
if ($filetime + $timediff < $now) {
+ //@codingStandardsIgnoreStart
@unlink($filename);
+ //@codingStandardsIgnoreEnd
} else {
+ //@codingStandardsIgnoreStart
$data = @file_get_contents($filename);
+ //@codingStandardsIgnoreEnd
}
}
} elseif (is_writable(dirname($filename))) {
+ //@codingStandardsIgnoreStart
@file_put_contents($filename, $data, LOCK_EX);
+ //@codingStandardsIgnoreEnd
}
return $data;
}
@@ -459,7 +467,9 @@ function clearCache($params = null, $type = 'views', $ext = '.php') {
$cache = CACHE . $type . DS . $params;
if (is_file($cache . $ext)) {
+ //@codingStandardsIgnoreStart
@unlink($cache . $ext);
+ //@codingStandardsIgnoreEnd
return true;
} elseif (is_dir($cache)) {
$files = glob($cache . '*');
@@ -470,7 +480,9 @@ function clearCache($params = null, $type = 'views', $ext = '.php') {
foreach ($files as $file) {
if (is_file($file) && strrpos($file, DS . 'empty') !== strlen($file) - 6) {
+ //@codingStandardsIgnoreStart
@unlink($file);
+ //@codingStandardsIgnoreEnd
}
}
return true;
@@ -491,7 +503,9 @@ function clearCache($params = null, $type = 'views', $ext = '.php') {
}
foreach ($files as $file) {
if (is_file($file) && strrpos($file, DS . 'empty') !== strlen($file) - 6) {
+ //@codingStandardsIgnoreStart
@unlink($file);
+ //@codingStandardsIgnoreEnd
}
}
return true;
Please sign in to comment.
Something went wrong with that request. Please try again.