All pastes #66125 Raw Edit

Anonymous

public text v1 · immutable
#66125 ·published 2006-06-16 10:49 UTC
rendered paste body
    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);
    }