Beispiel #1
0
 /**
  * adds container type filter sql
  *
  * @param  Zend_Db_Select                    $_select
  * @param  Tinebase_Backend_Sql_Abstract     $_backend
  */
 protected function _addContainerTypeFilter($_select, $_backend)
 {
     $currentAccount = Tinebase_Core::getUser();
     $appName = $this->_path->application->name;
     $ignoreAcl = $this->_options['ignoreAcl'];
     switch ($this->_path->containerType) {
         case Tinebase_Model_Container::TYPE_PERSONAL:
             if (!$this->_path->containerOwner) {
                 throw new Tinebase_Exception_InvalidArgument('Container owner not set.');
             }
             if ($this->_path->containerOwner == $currentAccount->accountLoginName) {
                 $names = Tinebase_Container::getInstance()->getPersonalContainer($currentAccount, $appName, $currentAccount, $this->_requiredGrants, $ignoreAcl)->getArrayOfIds();
             } else {
                 $owner = Tinebase_User::getInstance()->getFullUserByLoginName($this->_path->containerOwner);
                 $names = Tinebase_Container::getInstance()->getPersonalContainer($currentAccount, $appName, $owner, $this->_requiredGrants, $ignoreAcl)->getArrayOfIds();
             }
             break;
         case Tinebase_Model_Container::TYPE_SHARED:
             $names = Tinebase_Container::getInstance()->getSharedContainer($currentAccount, $appName, $this->_requiredGrants, $ignoreAcl)->getArrayOfIds();
             break;
     }
     if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
         Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Filter names: ' . print_r($names, TRUE));
     }
     $nameFilter = new Tinebase_Model_Filter_Text('name', 'in', $names);
     $nameFilter->appendFilterSql($_select, $_backend);
 }