1: <?php
2: /**
3: * Ingo_Storage_Whitelist is the object used to hold whitelist rule
4: * information.
5: *
6: * See the enclosed file LICENSE for license information (ASL). If you
7: * did not receive this file, see http://www.horde.org/licenses/apache.
8: *
9: * @author Michael Slusarz <slusarz@horde.org>
10: * @package Ingo
11: */
12: class Ingo_Storage_Whitelist extends Ingo_Storage_Rule
13: {
14: /**
15: */
16: protected $_addr = array();
17:
18: /**
19: */
20: protected $_obtype = Ingo_Storage::ACTION_WHITELIST;
21:
22: /**
23: * Sets the list of whitelisted addresses.
24: *
25: * @param mixed $data The list of addresses (array or string).
26: * @param boolean $sort Sort the list?
27: *
28: * @return boolean True on success.
29: * @throws Ingo_Exception
30: */
31: public function setWhitelist($data, $sort = false)
32: {
33: $addr = array_filter($this->_addressList($data, $sort), array('Ingo', 'filterEmptyAddress'));
34: if (!empty($GLOBALS['conf']['storage']['maxwhitelist'])) {
35: $addr_count = count($addr);
36: if ($addr_count > $GLOBALS['conf']['storage']['maxwhitelist']) {
37: throw new Ingo_Exception(sprintf(_("Maximum number of whitelisted addresses exceeded (Total addresses: %s, Maximum addresses: %s). Could not add new addresses to whitelist."), $addr_count, $GLOBALS['conf']['storage']['maxwhitelist']));
38: }
39: }
40:
41: $this->_addr = $addr;
42: return true;
43: }
44:
45: /**
46: */
47: public function getWhitelist()
48: {
49: return $this->_addr;
50: }
51:
52: }
53: