Browse Source

Merge branch 'master' into 2.4

ADmad 12 years ago
parent
commit
12da3b1f27

+ 2 - 1
lib/Cake/Model/Model.php

@@ -1678,13 +1678,14 @@ class Model extends Object implements CakeEventListener {
 		}
 
 		$db = $this->getDataSource();
+		$now = time();
 
 		foreach ($dateFields as $updateCol) {
 			if ($this->hasField($updateCol) && !in_array($updateCol, $fields)) {
 				$default = array('formatter' => 'date');
 				$colType = array_merge($default, $db->columns[$this->getColumnType($updateCol)]);
 				if (!array_key_exists('format', $colType)) {
-					$time = strtotime('now');
+					$time = $now;
 				} else {
 					$time = call_user_func($colType['formatter'], $colType['format']);
 				}

+ 5 - 2
lib/Cake/Network/Email/SmtpTransport.php

@@ -161,7 +161,10 @@ class SmtpTransport extends AbstractTransport {
  * @throws SocketException
  */
 	protected function _sendRcpt() {
-		$from = $this->_cakeEmail->from();
+		$from = $this->_cakeEmail->returnPath();
+		if (empty($from)) {
+			$from = $this->_cakeEmail->from();
+		}
 		$this->_smtpSend('MAIL FROM:<' . key($from) . '>');
 
 		$to = $this->_cakeEmail->to();
@@ -182,7 +185,7 @@ class SmtpTransport extends AbstractTransport {
 	protected function _sendData() {
 		$this->_smtpSend('DATA', '354');
 
-		$headers = $this->_cakeEmail->getHeaders(array('from', 'sender', 'replyTo', 'readReceipt', 'returnPath', 'to', 'cc', 'subject'));
+		$headers = $this->_cakeEmail->getHeaders(array('from', 'sender', 'replyTo', 'readReceipt', 'to', 'cc', 'subject'));
 		$headers = $this->_headersToString($headers);
 		$lines = $this->_cakeEmail->message();
 		$messages = array();

+ 1 - 0
lib/Cake/Routing/Filter/CacheDispatcher.php

@@ -60,6 +60,7 @@ class CacheDispatcher extends DispatcherFilter {
 		if (file_exists($filename)) {
 			$controller = null;
 			$view = new View($controller);
+			$view->response = $event->data['response'];
 			$result = $view->renderCache($filename, microtime(true));
 			if ($result !== false) {
 				$event->stopPropagation();

+ 1 - 0
lib/Cake/Test/Case/Controller/ControllerTest.php

@@ -1080,6 +1080,7 @@ class ControllerTest extends CakeTestCase {
  * @return void
  */
 	public function testValidateErrorsOnArbitraryModels() {
+		Configure::write('Config.language', 'eng');
 		$TestController = new TestController();
 
 		$Post = new ControllerPost();

+ 1 - 0
lib/Cake/Test/Case/Controller/ScaffoldTest.php

@@ -129,6 +129,7 @@ class ScaffoldTest extends CakeTestCase {
  */
 	public function setUp() {
 		parent::setUp();
+		Configure::write('Config.language', 'eng');
 		$request = new CakeRequest(null, false);
 		$this->Controller = new ScaffoldMockController($request);
 		$this->Controller->response = $this->getMock('CakeResponse', array('_sendHeader'));

+ 1 - 0
lib/Cake/Test/Case/Error/ExceptionRendererTest.php

@@ -148,6 +148,7 @@ class ExceptionRendererTest extends CakeTestCase {
  */
 	public function setUp() {
 		parent::setUp();
+		Configure::write('Config.language', 'eng');
 		App::build(array(
 			'View' => array(
 				CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS

+ 1 - 0
lib/Cake/Test/Case/Model/Behavior/TranslateBehaviorTest.php

@@ -942,6 +942,7 @@ class TranslateBehaviorTest extends CakeTestCase {
  * @return void
  */
 	public function testValidation() {
+		Configure::write('Config.language', 'eng');
 		$this->loadFixtures('Translate', 'TranslatedItem');
 
 		$TestModel = new TranslatedItem();

+ 10 - 0
lib/Cake/Test/Case/Model/ModelValidationTest.php

@@ -28,6 +28,16 @@ require_once dirname(__FILE__) . DS . 'ModelTestBase.php';
 class ModelValidationTest extends BaseModelTest {
 
 /**
+ * override locale to the default (eng).
+ *
+ * @return void
+ */
+	public function setUp() {
+		parent::setUp();
+		Configure::write('Config.language', 'eng');
+	}
+
+/**
  * Tests validation parameter order in custom validation methods
  *
  * @return void

+ 10 - 0
lib/Cake/Test/Case/Model/ModelWriteTest.php

@@ -33,6 +33,16 @@ require_once dirname(__FILE__) . DS . 'ModelTestBase.php';
 class ModelWriteTest extends BaseModelTest {
 
 /**
+ * override locale to the default (eng).
+ *
+ * @return void
+ */
+	public function setUp() {
+		parent::setUp();
+		Configure::write('Config.language', 'eng');
+	}
+
+/**
  * Test save() failing when there is no data.
  *
  * @return void

+ 10 - 0
lib/Cake/Test/Case/Model/Validator/CakeValidationSetTest.php

@@ -28,6 +28,16 @@ App::uses('CakeValidationSet', 'Model/Validator');
 class CakeValidationSetTest extends CakeTestCase {
 
 /**
+ * override locale to the default (eng).
+ *
+ * @return void
+ */
+	public function setUp() {
+		parent::setUp();
+		Configure::write('Config.language', 'eng');
+	}
+
+/**
  * testValidate method
  *
  * @return void

+ 22 - 1
lib/Cake/Test/Case/Network/Email/SmtpTransportTest.php

@@ -271,6 +271,28 @@ class SmtpTransportTest extends CakeTestCase {
 	}
 
 /**
+ * testRcptWithReturnPath method
+ *
+ * @return void
+ */
+	public function testRcptWithReturnPath() {
+		$email = new CakeEmail();
+		$email->from('noreply@cakephp.org', 'CakePHP Test');
+		$email->to('cake@cakephp.org', 'CakePHP');
+		$email->returnPath('pleasereply@cakephp.org', 'CakePHP Return');
+
+		$this->socket->expects($this->at(0))->method('write')->with("MAIL FROM:<pleasereply@cakephp.org>\r\n");
+		$this->socket->expects($this->at(1))->method('read')->will($this->returnValue(false));
+		$this->socket->expects($this->at(2))->method('read')->will($this->returnValue("250 OK\r\n"));
+		$this->socket->expects($this->at(3))->method('write')->with("RCPT TO:<cake@cakephp.org>\r\n");
+		$this->socket->expects($this->at(4))->method('read')->will($this->returnValue(false));
+		$this->socket->expects($this->at(5))->method('read')->will($this->returnValue("250 OK\r\n"));
+
+		$this->SmtpTransport->setCakeEmail($email);
+		$this->SmtpTransport->sendRcpt();
+	}
+
+/**
  * testSendData method
  *
  * @return void
@@ -290,7 +312,6 @@ class SmtpTransportTest extends CakeTestCase {
 		$email->expects($this->any())->method('message')->will($this->returnValue(array('First Line', 'Second Line', '.Third Line', '')));
 
 		$data = "From: CakePHP Test <noreply@cakephp.org>\r\n";
-		$data .= "Return-Path: CakePHP Return <pleasereply@cakephp.org>\r\n";
 		$data .= "To: CakePHP <cake@cakephp.org>\r\n";
 		$data .= "Cc: Mark Story <mark@cakephp.org>, Juan Basso <juan@cakephp.org>\r\n";
 		$data .= "X-Mailer: CakePHP Email\r\n";

+ 1 - 0
lib/Cake/Test/Case/View/Helper/FormHelperTest.php

@@ -524,6 +524,7 @@ class FormHelperTest extends CakeTestCase {
 	public function setUp() {
 		parent::setUp();
 
+		Configure::write('Config.language', 'eng');
 		Configure::write('App.base', '');
 		Configure::delete('Asset');
 		$this->Controller = new ContactTestController();

+ 1 - 0
lib/Cake/Test/Case/View/Helper/PaginatorHelperTest.php

@@ -42,6 +42,7 @@ class PaginatorHelperTest extends CakeTestCase {
  */
 	public function setUp() {
 		parent::setUp();
+		Configure::write('Config.language', 'eng');
 		$controller = null;
 		$this->View = new View($controller);
 		$this->Paginator = new PaginatorHelper($this->View);

+ 11 - 0
lib/Cake/Test/Case/View/Helper/TextHelperTest.php

@@ -171,6 +171,17 @@ class TextHelperTest extends CakeTestCase {
 		$expected = 'This is a <b>test</b> text with URL <a href="http://www.cakephp.org">http://www.cakephp.org</a>';
 		$result = $this->Text->autoLink($text, array('escape' => false));
 		$this->assertEquals($expected, $result);
+
+		$text = 'test <ul>
+		<li>lorem: http://example.org?some</li>
+		<li>ipsum: http://othersite.com/abc</li>
+		</ul> test';
+		$expected = 'test <ul>
+		<li>lorem: <a href="http://example.org?some">http://example.org?some</a></li>
+		<li>ipsum: <a href="http://othersite.com/abc">http://othersite.com/abc</a></li>
+		</ul> test';
+		$result = $this->Text->autoLink($text, array('escape' => false));
+		$this->assertEquals($expected, $result);
 	}
 
 /**

+ 0 - 1
lib/Cake/Test/test_app/Model/Datasource/Database/TestLocalDriver.php

@@ -2,4 +2,3 @@
 App::uses('TestSource', 'TestPlugin.Model/Datasource');
 class TestLocalDriver extends TestSource {
 }
-

+ 1 - 1
lib/Cake/View/Helper/CacheHelper.php

@@ -307,7 +307,7 @@ class CacheHelper extends AppHelper {
 
 		$file .= '
 				$request = unserialize(base64_decode(\'' . base64_encode(serialize($this->request)) . '\'));
-				$response = new CakeResponse();
+				$response->type(\'' . $this->_View->response->type() . '\');
 				$controller = new ' . $this->_View->name . 'Controller($request, $response);
 				$controller->plugin = $this->plugin = \'' . $this->_View->plugin . '\';
 				$controller->helpers = $this->helpers = unserialize(base64_decode(\'' . base64_encode(serialize($this->_View->helpers)) . '\'));

+ 1 - 0
lib/Cake/View/Helper/FormHelper.php

@@ -1735,6 +1735,7 @@ class FormHelper extends AppHelper {
  * ### Options:
  *
  * - `data` - Array with key/value to pass in input hidden
+ * - `method` - Request method to use. Set to 'delete' to simulate HTTP/1.1 DELETE request. Defaults to 'post'.
  * - `confirm` - Can be used instead of $confirmMessage.
  * - Other options is the same of HtmlHelper::link() method.
  * - The option `onclick` will be replaced.

+ 1 - 1
lib/Cake/View/Helper/TextHelper.php

@@ -105,7 +105,7 @@ class TextHelper extends AppHelper {
 		$this->_placeholders = array();
 		$options += array('escape' => true);
 
-		$pattern = '#(?<!href="|src="|">)((?:https?|ftp|nntp)://[a-z0-9.\-:]+(?:[/?][^\s]*)?)#i';
+		$pattern = '#(?<!href="|src="|">)((?:https?|ftp|nntp)://[a-z0-9.\-:]+(?:[/?][^\s<]*)?)#i';
 		$text = preg_replace_callback(
 			$pattern,
 			array(&$this, '_insertPlaceHolder'),

+ 3 - 4
lib/Cake/View/View.php

@@ -547,10 +547,12 @@ class View extends Object {
  * @return boolean Success of rendering the cached file.
  */
 	public function renderCache($filename, $timeStart) {
+		$response = $this->response;
 		ob_start();
 		include ($filename);
 
-		if (Configure::read('debug') > 0 && $this->layout !== 'xml') {
+		$type = $response->mapType($response->type());
+		if (Configure::read('debug') > 0 && $type === 'html') {
 			echo "<!-- Cached Render Time: " . round(microtime(true) - $timeStart, 4) . "s -->";
 		}
 		$out = ob_get_clean();
@@ -563,9 +565,6 @@ class View extends Object {
 				unset($out);
 				return false;
 			} else {
-				if ($this->layout === 'xml') {
-					header('Content-type: text/xml');
-				}
 				return substr($out, strlen($match[0]));
 			}
 		}

+ 0 - 5
lib/Cake/basics.php

@@ -322,11 +322,6 @@ if (!function_exists('env')) {
 		}
 
 		switch ($key) {
-			case 'SCRIPT_FILENAME':
-				if (defined('SERVER_IIS') && SERVER_IIS === true) {
-					return str_replace('\\\\', '\\', env('PATH_TRANSLATED'));
-				}
-				break;
 			case 'DOCUMENT_ROOT':
 				$name = env('SCRIPT_NAME');
 				$filename = env('SCRIPT_FILENAME');