/** * appends sql to given select statement * * @param Zend_Db_Select $_select * @param Tinebase_Backend_Sql_Abstract $_backend */ public function appendFilterSql($_select, $_backend) { if (is_array($this->_value)) { foreach ($this->_value as $key => $value) { if ($value === Addressbook_Model_Contact::CURRENTCONTACT) { $this->_value[$key] = Tinebase_Core::getUser()->contact_id; } } } else { if ($this->_value === Addressbook_Model_Contact::CURRENTCONTACT) { $this->_value = Tinebase_Core::getUser()->contact_id; } } parent::appendFilterSql($_select, $_backend); }
/** * add path custom filter * * @param Zend_Db_Select $_select * @param Felamimail_Backend_Cache_Sql_Message $_backend * @param array $_filterData * @return void */ protected function _addPathSql($_select, $_backend, $_filterData) { $db = $_backend->getAdapter(); $folderIds = array(); foreach ((array) $_filterData['value'] as $filterValue) { if (empty($filterValue)) { $_select->where('1 = 0'); } else { if ($filterValue === self::PATH_ALLINBOXES) { $folderIds = array_merge($folderIds, $this->_getFolderIdsOfAllInboxes()); } else { if (strpos($filterValue, '/') !== FALSE) { $pathParts = explode('/', $filterValue); array_shift($pathParts); if (count($pathParts) == 1) { // we only have an account id $this->_addAccountFilter($_select, $_backend, (array) $pathParts[0]); } else { if (count($pathParts) > 1) { $folderIds[] = array_pop($pathParts); } } } } } } if (count($folderIds) > 0) { $folderFilter = new Tinebase_Model_Filter_Id('folder_id', $_filterData['operator'], array_unique($folderIds)); $folderFilter->appendFilterSql($_select, $_backend); } }