/** * Find all contacts * @param array $criteria * @param array $orderBy * @param array $paging * @return array */ public function fetchAll($criteria = array(), $orderBy = array(), &$paging = null) { /* @var $select Zend_Db_Select*/ $select = $this->_dbTable->select(); $select->setIntegrityCheck(false)->from(array('c' => 'contact'), array('c.*')); if (isset($criteria['application_id'])) { $select->where('c.application_id = ?', $criteria['application_id']); } if (isset($criteria['form_id'])) { $select->where('c.form_id = ?', $criteria['form_id']); } if (isset($criteria['lang_filter'])) { $select->where('c.language = ?', $criteria['lang_filter']); } if (isset($criteria['from_filter'])) { $select->where('date(c.posted) >= ?', $criteria['from_filter']); } if (isset($criteria['to_filter'])) { $select->where('date(c.posted) <= ?', $criteria['to_filter']); } if (isset($criteria['search_filter'])) { $search = new Zend_Db_Expr($select->getAdapter()->quoteInto("?", $criteria['search_filter'] . "%")); $select->where("(c.first_name LIKE {$search} OR\n c.last_name LIKE {$search} OR\n c.email LIKE {$search} OR\n c.gender LIKE {$search} OR\n c.phone LIKE {$search} OR\n c.mobile LIKE {$search} OR\n c.fax LIKE {$search} OR\n c.country LIKE {$search} OR\n c.zip LIKE {$search} OR\n c.city LIKE {$search} OR\n c.street LIKE {$search} OR\n c.description LIKE {$search})"); } if (is_array($orderBy) && count($orderBy) > 0) { $select->order($orderBy); } if (isset($criteria['data_type']) && $criteria['data_type'] == 'array') { $resultSet = $this->_dbTable->fetchAll($select); return $resultSet->toArray(); } // init paginator if ($paging != null) { $resultSet = $this->_getPagingRows($paging, $select); } else { $resultSet = $this->_dbTable->fetchAll($select); } $contacts = array(); if (0 == count($resultSet)) { return $contacts; } foreach ($resultSet as $row) { $rowArray = $row->toArray(); $contact = new Contact_Model_Contact(); $contact->setOptions($rowArray); $contacts[] = $contact; } return $contacts; }