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
This commit is contained in:
mark_story 2012-11-20 23:02:33 -05:00
commit 27d7e2865e
42 changed files with 156 additions and 53 deletions

View file

@ -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 file

@ -238,7 +238,9 @@ class ConsoleShell extends AppShell {
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 @@ class ConsoleShell extends AppShell {
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 @@ class ConsoleShell extends AppShell {
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 @@ class ConsoleShell extends AppShell {
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 @@ class ConsoleShell extends AppShell {
Router::reload();
extract(Router::getNamedExpressions());
//@codingStandardsIgnoreStart
if (!@include APP . 'Config' . DS . 'routes.php') {
//@codingStandardsIgnoreEnd
return false;
}
CakePlugin::routes();

View file

@ -78,7 +78,6 @@ class TemplateTask extends AppShell {
$paths[] = $core;
// TEMPORARY TODO remove when all paths are DS terminated
foreach ($paths as $i => $path) {
$paths[$i] = rtrim($path, DS) . DS;
}

View file

@ -345,6 +345,7 @@ class ConsoleOptionParser {
$arg = new ConsoleInputArgument($options);
}
$this->_args[$index] = $arg;
ksort($this->_args);
return $this;
}

View file

@ -686,7 +686,9 @@ class Shell extends Object {
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 file

@ -755,7 +755,7 @@ class Controller extends Object implements CakeEventListener {
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 file

@ -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 file

@ -732,7 +732,6 @@ class Multibyte {
* @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 file

@ -588,7 +588,6 @@ class TreeBehavior extends ModelBehavior {
* '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 file

@ -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 file

@ -322,7 +322,6 @@ class DataSource extends Object {
* @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 file

@ -250,7 +250,9 @@ class Sqlite extends DboSource {
$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 file

@ -446,6 +446,8 @@ class CakeResponse {
}
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 file

@ -63,9 +63,11 @@ class MailTransport extends AbstractTransport {
* @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 file

@ -935,7 +935,6 @@ class HttpSocket extends CakeSocket {
*
* @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 @@ class HttpSocket extends CakeSocket {
* @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 @@ class HttpSocket extends CakeSocket {
* @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 file

@ -282,7 +282,9 @@ class BasicsTest extends CakeTestCase {
$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 @@ class BasicsTest extends CakeTestCase {
* @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 file

@ -111,9 +111,11 @@ class MemcacheEngineTest extends CakeTestCase {
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 file

@ -314,10 +314,29 @@ class ConsoleOptionParserTest extends CakeTestCase {
$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.
*

View file

@ -437,7 +437,9 @@ class ConfigureTest extends CakeTestCase {
$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 @@ class ConfigureTest extends CakeTestCase {
$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 file

@ -124,7 +124,9 @@ class ErrorHandlerTest extends CakeTestCase {
$this->_restoreError = true;
ob_start();
//@codingStandardsIgnoreStart
@include 'invalid.file';
//@codingStandardsIgnoreEnd
$result = ob_get_clean();
$this->assertTrue(empty($result));
}
@ -138,7 +140,7 @@ class ErrorHandlerTest extends CakeTestCase {
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 @@ class ErrorHandlerTest extends CakeTestCase {
'/^\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 @@ class ErrorHandlerTest extends CakeTestCase {
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 @@ class ErrorHandlerTest extends CakeTestCase {
);
$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 file

@ -150,7 +150,7 @@ class CakeLogTest extends CakeTestCase {
$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 file

@ -4054,7 +4054,6 @@ class ModelReadTest extends BaseModelTest {
/**
* testFindAllWithConditionInChildQuery
*
* @todo external conditions like this are going to need to be revisited at some point
* @return void
*/
public function testFindAllWithConditionInChildQuery() {

View file

@ -199,7 +199,7 @@ class CakeResponseTest extends CakeTestCase {
* 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 @@ class CakeResponseTest extends CakeTestCase {
}
/**
* 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 @@ class CakeResponseTest extends CakeTestCase {
$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 file

@ -1567,7 +1567,6 @@ class HttpSocketTest extends CakeTestCase {
* testBuildCookies method
*
* @return void
* @todo Test more scenarios
*/
public function testBuildCookies() {
$cookies = array(

View file

@ -1538,7 +1538,6 @@ class RouterTest extends CakeTestCase {
* 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 file

@ -152,6 +152,9 @@ class SetTest extends CakeTestCase {
$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 file

@ -177,6 +177,7 @@ class XmlTest extends CakeTestCase {
array(null),
array(false),
array(''),
array('http://localhost/notthere.xml'),
);
}

View file

@ -29,7 +29,9 @@ class JsEncodingObject {
protected $_title = 'Old thing';
//@codingStandardsIgnoreStart
private $__noshow = 'Never ever';
//@codingStandardsIgnoreEnd
}
@ -366,7 +368,9 @@ class JsHelperTest extends CakeTestCase {
$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 file

@ -279,7 +279,7 @@ class ScaffoldViewTest extends CakeTestCase {
$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 @@ class ScaffoldViewTest extends CakeTestCase {
$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 @@ class ScaffoldViewTest extends CakeTestCase {
$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 file

@ -1101,7 +1101,9 @@ class ViewTest extends CakeTestCase {
$this->assertRegExp('/^some cacheText/', $result);
@unlink($path);
if (file_exists($path)) {
unlink($path);
}
}
/**

View file

@ -674,7 +674,7 @@ abstract class CakeTestCase extends PHPUnit_Framework_TestCase {
}
return $condition;
}
// @codingStandardsIgnoreStop
// @codingStandardsIgnoreEnd
/**
* Mock a model, maintain fixtures and table association

View file

@ -82,7 +82,9 @@ class CakeTestSuiteCommand extends PHPUnit_TextUI_Command {
$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 file

@ -173,7 +173,7 @@ abstract class ControllerTestCase extends CakeTestCase {
*
* @var boolean
*/
private $__dirtyController = false;
protected $_dirtyController = false;
/**
* Used to enable calling ControllerTestCase::testAction() without the testing
@ -252,7 +252,7 @@ abstract class ControllerTestCase extends CakeTestCase {
$this->headers = Router::currentRoute()->response->header();
return;
}
if ($this->__dirtyController) {
if ($this->_dirtyController) {
$this->controller = null;
}
@ -275,7 +275,7 @@ abstract class ControllerTestCase extends CakeTestCase {
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 @@ abstract class ControllerTestCase extends CakeTestCase {
}
$_controller->constructClasses();
$this->__dirtyController = false;
$this->_dirtyController = false;
$this->controller = $_controller;
return $this->controller;

View file

@ -395,7 +395,10 @@ class Debugger {
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 file

@ -378,7 +378,9 @@ class Folder {
}
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 @@ class Folder {
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 @@ class Folder {
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 @@ class Folder {
}
$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 @@ class Folder {
}
$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 file

@ -103,7 +103,7 @@ abstract class ObjectCollection {
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 file

@ -71,7 +71,6 @@ class Security {
*
* @param string $authKey Authorization hash
* @return boolean Success
* @todo Complete implementation
*/
public static function validateAuthKey($authKey) {
return true;

View file

@ -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 file

@ -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 @@ class Xml {
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 file

@ -341,20 +341,26 @@ class Helper extends Object {
$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 @@ class Helper extends Object {
* @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 @@ class Helper extends Object {
* @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 @@ class Helper extends Object {
* @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 file

@ -530,7 +530,9 @@ class View extends Object {
if (preg_match('/^<!--cachetime:(\\d+)-->/', $out, $match)) {
if (time() >= $match['1']) {
//@codingStandardsIgnoreStart
@unlink($filename);
//@codingStandardsIgnoreEnd
unset ($out);
return false;
} else {
@ -869,7 +871,7 @@ class View extends Object {
$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 file

@ -422,19 +422,27 @@ if (!function_exists('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 @@ if (!function_exists('clearCache')) {
$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 @@ if (!function_exists('clearCache')) {
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 @@ if (!function_exists('clearCache')) {
}
foreach ($files as $file) {
if (is_file($file) && strrpos($file, DS . 'empty') !== strlen($file) - 6) {
//@codingStandardsIgnoreStart
@unlink($file);
//@codingStandardsIgnoreEnd
}
}
return true;