Esempio n. 1
0
 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;
 }