コード例 #1
0
 /**
  * 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;
 }