1: <?php
2: /**
3: * The Ingo_Script_Sieve_Action_Notify class represents a notify action.
4: *
5: * See the enclosed file LICENSE for license information (ASL). If you
6: * did not receive this file, see http://www.horde.org/licenses/apache.
7: *
8: * @author Paul Wolstenholme <wolstena@sfu.ca>
9: * @package Ingo
10: */
11: class Ingo_Script_Sieve_Action_Notify extends Ingo_Script_Sieve_Action
12: {
13: /**
14: * Constructor.
15: *
16: * @param array $vars Any required parameters.
17: */
18: public function __construct($vars = array())
19: {
20: $this->_vars['address'] = isset($vars['address'])
21: ? $vars['address']
22: : '';
23: $this->_vars['name'] = isset($vars['name'])
24: ? $vars['name']
25: : '';
26: }
27:
28: /**
29: * Returns a script snippet representing this rule and any sub-rules.
30: *
31: * @return string A Sieve script snippet.
32: */
33: public function toCode()
34: {
35: return 'notify :method "mailto" :options "' .
36: Ingo_Script_Sieve::escapeString($this->_vars['address']) .
37: '" :message "' .
38: _("You have received a new message") . "\n" .
39: _("From:") . " \$from\$ \n" .
40: _("Subject:") . " \$subject\$ \n" .
41: _("Rule:") . ' ' . $this->_vars['name'] . '";';
42: }
43:
44: /**
45: * Checks if the rule parameters are valid.
46: *
47: * @return boolean|string True if this rule is valid, an error message
48: * otherwise.
49: */
50: public function check()
51: {
52: return empty($this->_vars['address'])
53: ? _("Missing address to notify")
54: : true;
55: }
56:
57: /**
58: * Returns a list of sieve extensions required for this rule and any
59: * sub-rules.
60: *
61: * @return array A Sieve extension list.
62: */
63: public function requires()
64: {
65: return array('notify');
66: }
67:
68: }
69: