private function filter_find($class, $order) { $object_list = array(); $paginator = new \org\rhaco\Paginator(20, $this->in_vars('page', 1)); $paginator->cp(array('order' => $order)); if ($this->is_vars('search_clear')) { $object_list = $class::find_all($paginator, Q::select_order($order, $this->in_vars('porder'))); $this->rm_vars(); } else { if ($this->is_vars('search')) { $q = new \org\rhaco\store\db\Q(); foreach ($this->ar_vars() as $k => $v) { if ($v !== '' && strpos($k, 'search_') === 0) { list(, $type, $key) = explode('_', $k, 3); switch ($type) { case 'timestamp': case 'date': list($fromto, $key) = explode('_', $key); $q->add($fromto == 'to' ? Q::lte($key, $v) : Q::gte($key, $v)); break; default: $q->add(Q::contains($key, $v)); } $paginator->vars($k, $v); } $paginator->vars('search', true); } $object_list = $class::find_all($q, $paginator, Q::select_order($order, $this->in_vars('porder'))); $this->rm_vars('q'); } else { $object_list = $class::find_all(Q::match($this->in_vars('q')), $paginator, Q::select_order($order, $this->in_vars('porder'))); $paginator->vars('q', $this->in_vars('q')); } } return array($object_list, $paginator); }