public function getPages($filter = array(), $orderby = 'name', $orderdir = 'asc', $page = 1, $limit = 0) { if ($limit > 0) { $query = "Select SQL_CALC_FOUND_ROWS * from #__ams_pages where namespace = '" . $this->_db->escape($this->_namespace) . "' "; } else { $query = "Select * from #__ams_pages where namespace = '" . $this->_db->escape($this->_namespace) . "' "; } $props = $this->_getProperties(); $where = array(); if (!empty($filter)) { foreach ($filter as $key => $value) { if ($key == 'id') { $key = 'ams_page_id'; } if ($key == 'date_added') { $query .= " and DATE(from_unixtime(date_created)) = DATE('" . $this->_db->escape($value) . "') "; } if ($key == 'ams_page_id') { $query .= " and ams_page_id = '" . (int) $value . "' "; } elseif ($key == 'name') { $query .= " and `name` like '%" . $this->_db->escape($value) . "%' "; } elseif ($key == 'parent_id') { $query .= " and parent_id = '" . (int) $value . "' "; } elseif ($key == 'status') { $query .= " and `status` = '" . (int) $value . "' "; } elseif (isset($props[$key])) { $query .= " and ams_page_id in (select distinct(ams_page_id) from #__ams_nodes " . "where node = '" . $this->_db->escape($key) . "' and content like '%" . $this->_db->escape($value) . "%') "; } } } $orderbys = array('ams_page_id', 'name', 'parent_id', 'status', 'date_created', 'date_modified'); $order = in_array($orderby, $orderbys) ? $orderby : 'name'; $dir = strtolower($orderdir) == 'desc' ? 'desc' : 'asc'; $query .= " order by {$order} {$dir}"; if ($limit > 0) { if ($page < 1) { $page = 1; } $start = ($page - 1) * $limit; $query .= " limit {$start}, {$limit}"; } $res = $this->_db->query($query); $res->total = $res->num_rows; if ($limit > 0) { $totals = $this->_db->fetchRow("select FOUND_ROWS() as total"); $res->total = $totals['total']; } return $res; }