1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
<?php
/*
* $Id: bea608bad3f8bd5733c7eac6451d15b1c937115c $
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information please see
* <http://phing.info>.
*/
require_once 'phing/listener/DefaultLogger.php';
include_once 'phing/system/util/Properties.php';
/**
* Uses PEAR Mail package to send the build log to one or
* more recipients.
*
* @author Michiel Rook <mrook@php.net>
* @package phing.listener
* @version $Id$
*/
class MailLogger extends DefaultLogger
{
private $_mailMessage = "";
private $_from = "phing@phing.info";
private $_subject = "Phing build result";
private $_tolist = null;
/**
* Construct new MailLogger
*/
public function __construct() {
parent::__construct();
@require_once 'Mail.php';
if (!class_exists('Mail')) {
throw new BuildException('Need the PEAR Mail package to send logs');
}
$from = Phing::getDefinedProperty('phing.log.mail.from');
$subject = Phing::getDefinedProperty('phing.log.mail.subject');
$tolist = Phing::getDefinedProperty('phing.log.mail.recipients');
if (!empty($from)) {
$this->_from = $from;
}
if (!empty($subject)) {
$this->_subject = $subject;
}
if (!empty($tolist)) {
$this->_tolist = $tolist;
}
}
/**
* @see DefaultLogger#printMessage
* @param string $message
* @param OutputStream $stream
* @param int $priority
*/
protected final function printMessage($message, OutputStream $stream, $priority)
{
if ($message !== null) {
$this->_mailMessage .= $message . "\n";
}
}
/**
* Sends the mail
*
* @see DefaultLogger#buildFinished
* @param BuildEvent $event
*/
public function buildFinished(BuildEvent $event)
{
parent::buildFinished($event);
if (empty($this->_tolist)) {
return;
}
$hdrs = array(
'From' => $this->_from,
'Subject' => $this->_subject . (empty($event) ? " (build succesful)" : " (build failed)")
);
$mail = Mail::factory('mail');
$mail->send($this->_tolist, $hdrs, $this->_mailMessage);
}
}
|