1: <?php
2: /**
3: * Copyright 2010-2014 Horde LLC (http://www.horde.org/)
4: *
5: * See the enclosed file COPYING for license information (GPL). If you
6: * did not receive this file, see http://www.horde.org/licenses/gpl.
7: *
8: * @category Horde
9: * @copyright 2010-2014 Horde LLC
10: * @license http://www.horde.org/licenses/gpl GPL
11: * @package IMP
12: */
13:
14: /**
15: * A data structure for storing a stored filter.
16: *
17: * @author Michael Slusarz <slusarz@horde.org>
18: * @category Horde
19: * @copyright 2010-2014 Horde LLC
20: * @license http://www.horde.org/licenses/gpl GPL
21: * @package IMP
22: */
23: class IMP_Search_Filter extends IMP_Search_Query
24: {
25: /**
26: * Display this filter in the preferences screen?
27: *
28: * @var boolean
29: */
30: public $prefDisplay = true;
31:
32: /**
33: */
34: public function __get($name)
35: {
36: switch ($name) {
37: case 'querytext':
38: $text = array();
39:
40: foreach ($this->_criteria as $elt) {
41: $text[] = $elt->queryText();
42: if (!($elt instanceof IMP_Search_Element_Or)) {
43: $text[] = _("and");
44: }
45: }
46: array_pop($text);
47:
48: return sprintf(_("Search %s"), implode(' ', $text));
49: }
50:
51: return parent::__get($name);
52: }
53:
54: /**
55: * Creates a query object from this filter.
56: *
57: * @param array $mboxes The list of mailboxes to apply the filter to.
58: * @param string $id The query ID to use.
59: *
60: * @return IMP_Search_Query A query object.
61: */
62: public function toQuery(array $mboxes, $id = null)
63: {
64: return new IMP_Search_Query(array(
65: 'add' => $this->_criteria,
66: 'id' => $id,
67: 'label' => $this->label,
68: 'mboxes' => $mboxes
69: ));
70: }
71:
72: }
73: