Exemple #1
0
 protected function search($params, $categories)
 {
     $contactsDb = new Contacts_Model_DbTable_Contact();
     $columns = array('c.id', 'c.name1', 'c.name2', 'a.postcode', 'a.street', 'a.postcode', 'a.city', 'a.country', 'p.phone', 'e.email', 'i.internet');
     $query = '';
     $schema = 'c';
     if ($params['keyword']) {
         $query = $this->_helper->Query->getQueryKeyword($query, $params['keyword'], $columns);
     }
     if ($params['catid']) {
         $query = $this->_helper->Query->getQueryCategory($query, $params['catid'], $categories, $schema);
     }
     if ($params['country']) {
         $query = $this->_helper->Query->getQueryCountryC($query, $params['country'], 'a');
     }
     if ($query) {
         $query .= " AND a.type = 'primaryAddress'";
         $query .= ' AND c.clientid = ' . $this->_user['clientid'];
     }
     $order = $params['order'];
     if ($order == 'street' || $order == 'postcode' || $order == 'city' || $order == 'country') {
         $order = 'a.' . $order;
     } else {
         $order = 'c.' . $order;
     }
     $contacts = $contactsDb->fetchAll($contactsDb->select()->setIntegrityCheck(false)->from(array($schema => 'contact'))->join(array('a' => 'address'), 'c.id = a.contactid', array('street', 'postcode', 'city', 'country'))->joinLeft(array('p' => 'phone'), 'c.id = p.contactid', array('phones' => new Zend_Db_Expr('GROUP_CONCAT(DISTINCT p.phone)')))->joinLeft(array('e' => 'email'), 'c.id = e.contactid', array('emails' => new Zend_Db_Expr('GROUP_CONCAT(DISTINCT e.email)')))->joinLeft(array('i' => 'internet'), 'c.id = i.contactid', array('internets' => new Zend_Db_Expr('GROUP_CONCAT(DISTINCT i.internet)')))->group($schema . '.id')->where($query ? $query : 1)->order($order . ' ' . $params['sort'])->limit($params['limit']));
     return $contacts;
 }