1: <?php
2: /**
3: * The Ingo_Script_Sieve_Else:: class represents a Sieve Else Statement.
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 Mike Cochrane <mike@graftonhall.co.nz>
9: * @package Ingo
10: */
11: class Ingo_Script_Sieve_Else
12: {
13: /**
14: * A list of Ingo_Script_Sieve_Action objects that go into the else clause.
15: *
16: * @var array
17: */
18: protected $_actions = array();
19:
20: /**
21: * Constructor.
22: *
23: * @param mixed $actions An Ingo_Script_Sieve_Action object or a list of
24: * Ingo_Script_Sieve_Action objects.
25: */
26: public function __construct($actions = null)
27: {
28: if (is_array($actions)) {
29: $this->_actions = $actions;
30: } elseif (!is_null($actions)) {
31: $this->_actions[] = $actions;
32: }
33: }
34:
35: /**
36: * Returns a script snippet representing this rule and any sub-rules.
37: *
38: * @return string A Sieve script snippet.
39: */
40: public function toCode()
41: {
42: if (count($this->_actions) == 0) {
43: return '';
44: }
45:
46: $code = 'else' . " { \n";
47: foreach ($this->_actions as $action) {
48: $code .= ' ' . $action->toCode() . "\n";
49: }
50: $code .= "} ";
51:
52: return $code;
53: }
54:
55: /**
56: */
57: public function setActions($actions)
58: {
59: $this->_actions = $actions;
60: }
61:
62: /**
63: */
64: public function getActions()
65: {
66: return $this->_actions;
67: }
68:
69: /**
70: * Checks if all sub-rules are valid.
71: *
72: * @return boolean|string True if all rules are valid, an error message
73: * otherwise.
74: */
75: public function check()
76: {
77: foreach ($this->_actions as $action) {
78: $res = $action->check();
79: if ($res !== true) {
80: return $res;
81: }
82: }
83:
84: return true;
85: }
86:
87: /**
88: * Returns a list of sieve extensions required for this rule and any
89: * sub-rules.
90: *
91: * @return array A Sieve extension list.
92: */
93: public function requires()
94: {
95: $requires = array();
96:
97: foreach ($this->_actions as $action) {
98: $requires = array_merge($requires, $action->requires());
99: }
100:
101: return $requires;
102: }
103:
104: }
105: