/**
  * appends sql to given select statement
  *
  * @param Zend_Db_Select                $_select
  * @param Tinebase_Backend_Sql_Abstract $_backend
  */
 public function appendFilterSql($_select, $_backend)
 {
     if (empty($this->_value)) {
         // nothing to filter
         return;
     }
     $filterData = array(array('field' => 'lead_name', 'operator' => 'contains', 'value' => $this->_value), array('field' => 'description', 'operator' => 'contains', 'value' => $this->_value), array('field' => 'showClosed', 'operator' => 'equals', 'value' => TRUE));
     $filter = new Crm_Model_LeadFilter($filterData, 'OR');
     /*** also filter for related contacts ***/
     $contactFilter = new Addressbook_Model_ContactFilter(array(array('field' => 'query', 'operator' => 'contains', 'value' => $this->_value)));
     $contactIds = Addressbook_Controller_Contact::getInstance()->search($contactFilter, NULL, FALSE, TRUE);
     $relationFilter = new Tinebase_Model_RelationFilter(array(array('field' => 'own_model', 'operator' => 'equals', 'value' => 'Crm_Model_Lead'), array('field' => 'related_model', 'operator' => 'equals', 'value' => 'Addressbook_Model_Contact'), array('field' => 'related_id', 'operator' => 'in', 'value' => $contactIds)));
     $leadIds = Tinebase_Relations::getInstance()->search($relationFilter, NULL)->own_id;
     $filter->addFilter(new Tinebase_Model_Filter_Id('id', 'in', $leadIds));
     Tinebase_Backend_Sql_Filter_FilterGroup::appendFilters($_select, $filter, $_backend);
 }
 /**
  * append relation filter
  * 
  * @param Crm_Model_LeadFilter $filter
  */
 protected function _appendRelationFilter($filter)
 {
     if (!Tinebase_Core::getPreference()->getValue(Tinebase_Preference::ADVANCED_SEARCH, false)) {
         return;
     }
     $relationsToSearchIn = array('Addressbook_Model_Contact', 'Sales_Model_Product', 'Tasks_Model_Task');
     $leadIds = array();
     foreach ($relationsToSearchIn as $relatedModel) {
         $filterModel = $relatedModel . 'Filter';
         $relatedFilter = new $filterModel(array(array('field' => 'query', 'operator' => 'contains', 'value' => $this->_value)));
         $relatedIds = Tinebase_Core::getApplicationInstance($relatedModel)->search($relatedFilter, NULL, FALSE, TRUE);
         $relationFilter = new Tinebase_Model_RelationFilter(array(array('field' => 'own_model', 'operator' => 'equals', 'value' => 'Crm_Model_Lead'), array('field' => 'related_model', 'operator' => 'equals', 'value' => $relatedModel), array('field' => 'related_id', 'operator' => 'in', 'value' => $relatedIds)));
         $leadIds = array_merge($leadIds, Tinebase_Relations::getInstance()->search($relationFilter, NULL)->own_id);
     }
     $filter->addFilter(new Tinebase_Model_Filter_Id('id', 'in', $leadIds));
 }
 /**
  * get lead filter
  *
  * @return Crm_Model_LeadFilter
  */
 protected function _getFilter($container = 'single')
 {
     $filterData = array(array('field' => 'query', 'operator' => 'contains', 'value' => 'PHPUnit'));
     $filterData[] = $container == 'single' ? array('field' => 'container_id', 'operator' => 'equals', 'value' => $this->_testContainer->id) : array('field' => 'container_id', 'operator' => 'specialNode', 'value' => $container);
     $filter = new Crm_Model_LeadFilter($filterData);
     $filter->createFilter('showClosed', 'equals', TRUE);
     return $filter;
 }