function listMedia($page = 1, $by, $extra, $limit = 15) { $page = ($page < 1) ? 1 : $page; $offset = ($limit * $page) - $limit; // basic SQL $sql = "SELECT m.media_id, m.media_title, m.media_thumb, m.media_description, m.media_type, m.media_chosen, m.model_id, mo.model_name, ty.type_name AS 'type', GROUP_CONCAT(COALESCE(t.tag_name),'') AS 'tags', COUNT(DISTINCT(tr.traffic_ip)) AS 'hits' FROM media m LEFT JOIN media_types ty ON ty.type_id = m.media_type LEFT JOIN models mo ON mo.model_id = m.model_id LEFT JOIN traffic tr ON tr.traffic_page = m.media_url JOIN media_tags mt ON mt.media_id = m.media_id JOIN tags t ON t.tag_id = mt.tag_id WHERE m.media_posted = 1 AND m.media_date <= " . time(); if ($by == 'type') { if ($extra != 'links') { $sql .= " AND ty.type_name = '$extra'"; } } else if ($by == 'search') { $sql .= " AND MATCH (m.media_title,m.media_description) AGAINST('$extra')"; } else if ($by == 'chosen') { $sql .= " AND media_chosen = 1"; } else if ($by == 'model') { $sql .= " AND mo.model_name = '" . unsef_title($extra) . "'"; } $sql .= " GROUP BY m.media_id"; if ($by == 'tag') { $sql .= " HAVING tags LIKE '%$extra%'"; } $sql .= " ORDER BY m.media_date DESC LIMIT " . $offset . ", " . $limit; $this->result = $this->retrieve($sql); $result = $this->totalRows($by, $extra); $row = $result->getRow(); $numRows = $row['count']; $this->numPages = ceil($numRows / $limit); }