/**
  * Prepare table
  */
 private function _prepareTable()
 {
     $request = $this->getRequest();
     $page = $request->getParam('page');
     $recCount = $request->getParam('recCount');
     $paging = array('currentPage' => $this->defaultPageNumber, 'recordCount' => $this->defaultRecordCount);
     if (!$page && !$recCount && $this->getTableSession()) {
         $paging = $this->getPagingFilters();
     } else {
         if ($page || $recCount) {
             if ($page) {
                 $paging['currentPage'] = $page;
             }
             if ($recCount) {
                 $paging['recordCount'] = $recCount;
             }
         }
     }
     $this->collection->setCurrentPageNumber($paging['currentPage']);
     $this->collection->setItemCountPerPage($paging['recordCount']);
     $this->setPagingFilters($paging);
 }
 /**
  * Get object collection
  *
  * @param mixed $condition
  * @param mixed $cols
  * @param mixed $sortOrder
  * @param array $filterColumns
  * @return Uni_Core_Model_Collection 
  */
 public function getModelCollection($condition = NULL, $cols = '*', $sortOrder = NULL, $filterColumns = NULL)
 {
     $modelClass = get_class($this);
     $select = $this->getAdapter()->select(FALSE)->from(array('mainTable' => $this->_name), $cols);
     if (!empty($condition)) {
         if (is_array($condition)) {
             foreach ($condition as $key => $value) {
                 if (is_array($value) && isset($value['operator'])) {
                     $select->where($this->getAdapter()->quoteIdentifier($key) . $value['operator'] . '?', $value['value']);
                 } else {
                     if (isset($filterColumns[$key])) {
                         if (isset($filterColumns[$key]['type'])) {
                             if ($filterColumns[$key]['type'] == Fox_Core_View_Admin_Table::TYPE_NUMBER) {
                                 if (isset($condition[$key]['from']) && $condition[$key]['from'] != '') {
                                     $select->where((isset($filterColumns[$key]['index']) ? $this->getAdapter()->quoteIdentifier($filterColumns[$key]['index']) : $this->getAdapter()->quoteIdentifier($key)) . ">=?", $condition[$key]['from']);
                                 }
                                 if (isset($condition[$key]['to']) && $condition[$key]['to'] != '') {
                                     $select->where((isset($filterColumns[$key]['index']) ? $this->getAdapter()->quoteIdentifier($filterColumns[$key]['index']) : $this->getAdapter()->quoteIdentifier($key)) . "<=?", $condition[$key]['to']);
                                 }
                             } else {
                                 if ($filterColumns[$key]['type'] == Fox_Core_View_Admin_Table::TYPE_DATE) {
                                     if (isset($condition[$key]['from']) && $condition[$key]['from'] != '') {
                                         $select->where((isset($filterColumns[$key]['index']) ? 'date(' . $this->getAdapter()->quoteIdentifier($filterColumns[$key]['index']) . ')' : 'date(' . $this->getAdapter()->quoteIdentifier($key) . ')') . ">=?", $condition[$key]['from']);
                                     }
                                     if (isset($condition[$key]['to']) && $condition[$key]['to'] != '') {
                                         $select->where((isset($filterColumns[$key]['index']) ? 'date(' . $this->getAdapter()->quoteIdentifier($filterColumns[$key]['index']) . ')' : 'date(' . $this->getAdapter()->quoteIdentifier($key) . ')') . "<=?", $condition[$key]['to']);
                                     }
                                 } else {
                                     if (isset($filterColumns[$key]['type']) && $filterColumns[$key]['type'] == Fox_Core_View_Admin_Table::TYPE_OPTIONS) {
                                         $select->where((isset($filterColumns[$key]['index']) ? $this->getAdapter()->quoteIdentifier($filterColumns[$key]['index']) : $this->getAdapter()->quoteIdentifier($key)) . "=?", $value);
                                     } else {
                                         $select->where((isset($filterColumns[$key]['index']) ? $this->getAdapter()->quoteIdentifier($filterColumns[$key]['index']) : $this->getAdapter()->quoteIdentifier($key)) . " like ?", '%' . $value . '%');
                                     }
                                 }
                             }
                         }
                     } else {
                         $select->where($this->getAdapter()->quoteIdentifier($key) . "=?", $value);
                     }
                 }
             }
         } else {
             $select->where($condition);
         }
     }
     if (!empty($sortOrder)) {
         $sortCondition = '';
         if (is_array($sortOrder)) {
             foreach ($sortOrder as $sortKey => $sortVal) {
                 $sortCondition[] = (isset($filterColumns[$sortKey]) && isset($filterColumns[$sortKey]['index']) ? $filterColumns[$sortKey]['index'] : $sortKey) . ' ' . $sortVal;
             }
         } else {
             $sortCondition = $sortOrder;
         }
         $select->order($sortCondition);
     }
     $modelCollection = Uni_Core_Model_Collection::getInstance($select, $modelClass);
     $modelCollection->setItemCountPerPage($modelCollection->getTotalItemCount());
     return $modelCollection;
 }
 /**
  * Get object collection
  *
  * @param mixed $condition
  * @param mixed $cols
  * @param mixed $sortOrder
  * @param array $filterColumns
  * @param int $type
  * @return Uni_Core_Model_Collection 
  */
 public function getModelCollection($condition = NULL, $cols = '*', $sortOrder = NULL, $filterColumns = NULL, $type = Fox::COLLECTION_MINIMAL)
 {
     $modelClass = get_class($this);
     $modelCollection = array();
     $query = $this->getSelectObject($condition, $cols, $sortOrder, $type, $filterColumns);
     $modelCollection = Uni_Core_Model_Collection::getInstance($query, $modelClass);
     $modelCollection->setItemCountPerPage($modelCollection->getTotalItemCount());
     return $modelCollection;
 }