merge filemanager
[tine20] / tine20 / Tinebase / Model / Tree / NodePathFilter.php
1 <?php
2 /**
3  * Tine 2.0
4  * 
5  * @package     Tinebase
6  * @subpackage  Filter
7  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
8  * @copyright   Copyright (c) 2011 Metaways Infosystems GmbH (http://www.metaways.de)
9  * @author      Philipp Schüle <p.schuele@metaways.de>
10  */
11
12 /**
13  * Tinebase_Model_Tree_NodePathFilter
14  * 
15  * @package     Tinebase
16  * @subpackage  Filter
17  * 
18  */
19 class Tinebase_Model_Tree_NodePathFilter extends Tinebase_Model_Filter_Text 
20 {
21     /**
22      * @var array list of allowed operators
23      * 
24      * @todo add more operators?
25      */
26     protected $_operators = array(
27         0 => 'equals',       
28         //1 => 'in',         
29     );
30     
31     /**
32      * a path could belong to one container
33      * 
34      * @var Tinebase_Model_Container
35      */
36     protected $_container = NULL;
37     
38     /**
39      * set container
40      * 
41      * @param Tinebase_Model_Container $_container
42      */
43     public function setContainer(Tinebase_Model_Container $_container)
44     {
45         $this->_container = $_container;
46     }
47     
48     /**
49      * appends sql to given select statement
50      *
51      * @param  Zend_Db_Select                    $_select
52      * @param  Tinebase_Backend_Sql_Abstract     $_backend
53      */
54     public function appendFilterSql($_select, $_backend)
55     {
56         $path = $this->_value;
57         if ($this->_container) {
58             $path = preg_replace('/' . $this->_container->name . '/', $this->_container->getId(), $path);
59         }
60         
61         $node = Tinebase_FileSystem::getInstance()->stat($path);
62         
63         $field = 'parent_id';
64         $action = $this->_opSqlMap[$this->_operator];
65         $value = $node->getId();
66         
67         $where = Tinebase_Core::getDb()->quoteInto($field . $action['sqlop'], $value);
68         $_select->where($where);
69     }    
70 }