protected function _init($itemClass, $keyField, $tableName = '') { parent::_init($itemClass, $keyField); $this->_table = $tableName; $this->_select = new Select(); $this->_select->from(array('main_table' => $tableName)); }
/** * @param AbstractCollection $collection * @param $filters * @return array */ public static function applyFiltersOnCollection(AbstractCollection $collection, $filters) { $processedFilters = array(); $xhb = $collection->getXhb(); foreach ($filters as $name => $value) { switch ($name) { case 'period': $periods = $xhb->getDateHelper()->getPredefinedTimePeriods(); $period = isset($periods[$filters['period']]) ? $periods[$filters['period']] : $periods[DateHelper::TIME_PERIOD_DEFAULT]; $ge = $period['start']; $le = $period['end']; $collection->addFieldToFilter('date', array('ge' => Date::dateToJd($ge))); $processedFilters['start_date'] = $ge; $collection->addFieldToFilter('date', array('le' => Date::dateToJd($le))); $processedFilters['end_date'] = $le; break; case 'type': switch ($value) { case 'outcome': $collection->addFieldToFilter('amount', array('lt' => 0)); $processedFilters['min_amount'] = 0; break; case 'income': $collection->addFieldToFilter('amount', array('gt' => 0)); $processedFilters['max_amount'] = 0; break; case 'any_type': default: //no filter break; } break; case 'status': switch ($value) { case 'uncategorized': $collection->addFieldToFilter('category', array('null' => true))->addFieldToFilter('scat', array('null' => true)); $processedFilters['categories'] = null; break; case 'unreconciled': $collection->addFieldToFilter('st', array('in' => Operation\Calculator::getUnreconciliedStatuses())); $processedFilters['status'] = implode(',', Operation\Calculator::getUnreconciliedStatuses()); break; case 'uncleared': $collection->addFieldToFilter('st', array('in' => Operation\Calculator::getUnclearedStatuses())); $processedFilters['status'] = implode(',', Operation\Calculator::getUnclearedStatuses()); break; case 'reconciled': $collection->addFieldToFilter('st', array('in' => Operation\Calculator::getReconciliedStatuses())); $processedFilters['status'] = implode(',', Operation\Calculator::getReconciliedStatuses()); break; case 'cleared': $collection->addFieldToFilter('st', array('in' => Operation\Calculator::getClearedStatuses())); $processedFilters['status'] = implode(',', Operation\Calculator::getClearedStatuses()); break; case 'any_status': default: //no filter break; } break; case 'search': $value = trim($value); if ($value) { $collection->addFieldToFilter('aggregate_search', array('like' => "%{$value}%")); $processedFilters['search'] = $value; } break; } } return $processedFilters; }