Merge branch 'email-scope' into 2.4

Merge of GH-1137 into 2.4
This commit is contained in:
mark_story 2013-03-01 22:34:23 -05:00
commit 9cffb0b4c1
3 changed files with 46 additions and 6 deletions

View file

@ -15,6 +15,7 @@
*/ */
App::uses('Set', 'Utility'); App::uses('Set', 'Utility');
App::uses('CakeLog', 'Log');
/** /**
* Object class provides a few generic methods used in several subclasses. * Object class provides a few generic methods used in several subclasses.
@ -151,12 +152,12 @@ class Object {
* @param integer $type Error type constant. Defined in app/Config/core.php. * @param integer $type Error type constant. Defined in app/Config/core.php.
* @return boolean Success of log write * @return boolean Success of log write
*/ */
public function log($msg, $type = LOG_ERR) { public function log($msg, $type = LOG_ERR, $scope = null) {
App::uses('CakeLog', 'Log');
if (!is_string($msg)) { if (!is_string($msg)) {
$msg = print_r($msg, true); $msg = print_r($msg, true);
} }
return CakeLog::write($type, $msg);
return CakeLog::write($type, $msg, $scope);
} }
/** /**

View file

@ -1065,11 +1065,21 @@ class CakeEmail {
$contents = $this->transportClass()->send($this); $contents = $this->transportClass()->send($this);
if (!empty($this->_config['log'])) { if (!empty($this->_config['log'])) {
$level = LOG_DEBUG; $config = array(
'level' => LOG_DEBUG,
'scope' => 'email'
);
if ($this->_config['log'] !== true) { if ($this->_config['log'] !== true) {
$level = $this->_config['log']; if (!is_array($this->_config['log'])) {
$this->_config['log'] = array('level' => $this->_config['log']);
}
$config = array_merge($config, $this->_config['log']);
} }
CakeLog::write($level, PHP_EOL . $contents['headers'] . PHP_EOL . $contents['message']); CakeLog::write(
$config['level'],
PHP_EOL . $contents['headers'] . PHP_EOL . $contents['message'],
$config['scope']
);
} }
return $contents; return $contents;
} }

View file

@ -1013,6 +1013,35 @@ class CakeEmailTest extends CakeTestCase {
CakeLog::drop('email'); CakeLog::drop('email');
} }
/**
* testSendWithLogAndScope method
*
* @return void
*/
public function testSendWithLogAndScope() {
CakeLog::config('email', array(
'engine' => 'FileLog',
'path' => TMP,
'types' => array('cake_test_emails'),
'scopes' => array('email')
));
CakeLog::drop('default');
$this->CakeEmail->transport('Debug');
$this->CakeEmail->to('me@cakephp.org');
$this->CakeEmail->from('cake@cakephp.org');
$this->CakeEmail->subject('My title');
$this->CakeEmail->config(array('log' => array('level' => 'cake_test_emails', 'scope' => 'email')));
$result = $this->CakeEmail->send("Logging This");
App::uses('File', 'Utility');
$File = new File(TMP . 'cake_test_emails.log');
$log = $File->read();
$this->assertTrue(strpos($log, $result['headers']) !== false);
$this->assertTrue(strpos($log, $result['message']) !== false);
$File->delete();
CakeLog::drop('email');
}
/** /**
* testSendRender method * testSendRender method
* *