7 * @license http://www.gnu.org/licenses/agpl.html AGPL Version 3
8 * @author Lars Kneschke <l.kneschke@metaways.de>
9 * @copyright Copyright (c) 2010-2017 Metaways Infosystems GmbH (http://www.metaways.de)
13 * tree node filter class
18 class Tinebase_Model_Tree_Node_Filter extends Tinebase_Model_Filter_GrantsFilterGroup
21 * @var string class name of this filter group
22 * this is needed to overcome the static late binding
23 * limitation in php < 5.3
25 protected $_className = 'Tinebase_Model_Tree_Node_Filter';
28 * @var string application of this filter group
30 protected $_applicationName = 'Tinebase';
33 * @var string name of model this filter group is designed for
35 protected $_modelName = 'Tinebase_Model_Tree_Node';
38 * @var string acl table name
40 protected $_aclTableName = 'tree_node_acl';
43 * @var string acl record column for join with acl table
45 protected $_aclIdColumn = 'acl_node';
48 * @var array filter model fieldName => definition
50 protected $_filterModel = array(
52 'filter' => 'Tinebase_Model_Filter_Query',
53 'options' => array('fields' => array('name', 'content', 'description'))
55 'id' => array('filter' => 'Tinebase_Model_Filter_Id'),
56 'path' => array('filter' => 'Tinebase_Model_Tree_Node_PathFilter'),
57 'parent_id' => array('filter' => 'Tinebase_Model_Filter_Text'),
58 'name' => array('filter' => 'Tinebase_Model_Filter_Text'),
59 'object_id' => array('filter' => 'Tinebase_Model_Filter_Text'),
60 'acl_node' => array('filter' => 'Tinebase_Model_Filter_Text'),
61 // tree_fileobjects table
62 'last_modified_time' => array(
63 'filter' => 'Tinebase_Model_Filter_Date',
64 'options' => array('tablename' => 'tree_fileobjects')
66 'deleted_time' => array(
67 'filter' => 'Tinebase_Model_Filter_DateTime',
68 'options' => array('tablename' => 'tree_fileobjects')
70 'creation_time' => array(
71 'filter' => 'Tinebase_Model_Filter_Date',
72 'options' => array('tablename' => 'tree_fileobjects')
74 'last_modified_by' => array(
75 'filter' => 'Tinebase_Model_Filter_User',
76 'options' => array('tablename' => 'tree_fileobjects'
78 'created_by' => array(
79 'filter' => 'Tinebase_Model_Filter_User',
80 'options' => array('tablename' => 'tree_fileobjects')
83 'filter' => 'Tinebase_Model_Filter_Text',
84 'options' => array('tablename' => 'tree_fileobjects')
86 'contenttype' => array(
87 'filter' => 'Tinebase_Model_Filter_Text',
88 'options' => array('tablename' => 'tree_fileobjects')
90 'description' => array(
91 'filter' => 'Tinebase_Model_Filter_FullText',
92 'options' => array('tablename' => 'tree_fileobjects')
94 // tree_filerevisions table
96 'filter' => 'Tinebase_Model_Filter_Int',
97 'options' => array('tablename' => 'tree_filerevisions')
100 'recursive' => array(
101 'filter' => 'Tinebase_Model_Filter_Bool'
103 'tag' => array('filter' => 'Tinebase_Model_Filter_Tag', 'options' => array(
104 'idProperty' => 'tree_nodes.id',
105 'applicationName' => 'Tinebase',
109 'filter' => 'Tinebase_Model_Filter_ExternalFullText',
111 'idProperty' => 'object_id',
114 'isIndexed' => array(
115 'filter' => 'Tinebase_Model_Tree_Node_IsIndexedFilter',
117 'is_deleted' => array(
118 'filter' => 'Tinebase_Model_Filter_Bool'
123 * append grants acl filter
125 * @param Zend_Db_Select $select
126 * @param Tinebase_Backend_Sql_Abstract $backend
127 * @param Tinebase_Model_User $user
129 protected function _appendGrantsFilter($select, $backend, $user = null)
131 parent::_appendGrantsFilter($select, $backend, $user);
133 // TODO do something when acl_node = NULL?
137 * return folder + parent_id filter with ignore acl
140 * @return Tinebase_Model_Tree_Node_Filter
142 public static function getFolderParentIdFilterIgnoringAcl($folderId)
144 return new Tinebase_Model_Tree_Node_Filter(array(
146 'field' => 'parent_id',
147 'operator' => $folderId === null ? 'isnull' : 'equals',
151 'operator' => 'equals',
152 'value' => Tinebase_Model_Tree_FileObject::TYPE_FOLDER
154 ), Tinebase_Model_Filter_FilterGroup::CONDITION_AND, array('ignoreAcl' => true));