<?php

require_once (TRACKER_PATH . '/classes/Base.php');
require_once (TRACKER_PATH . '/classes/File.php');
require_once (TRACKER_PATH . '/classes/TorrentStat.php');

class Torrent extends Base
{
    function Torrent($args)
    {
        $args['objTable'] = 'torrent';
        parent::Base($args);
    }

    function getTorrents()
    {
        $result = $this->db->query("SELECT * FROM " . $this->objTable . " ORDER BY id DESC");
        while ($data = $result->fetch_array(MYSQL_ASSOC))
        {
            $results[] = $data;
        }

        return $results;
    }

    function getTorrentsByUser($userId)
    {
        $result = $this->db->query("SELECT * FROM " . $this->objTable . " WHERE user_id = " . $this->db->escape_string($userId) . " ORDER BY id desc");
        while ($data = $result->fetch_array(MYSQL_ASSOC))
        {
            $results[] = $data;
        }

        return $results;
    }

    function getTorrent($input)
    {
        $query = "SELECT * FROM " . $this->objTable . " WHERE id = '" . $this->db->escape_string($input['id']) . "'";
        $result = $this->db->query($query);
        return $result->fetch_array(MYSQL_ASSOC);
    }

    function addTorrent($input, $files)
    {
        $torrentId = parent::add($input);

        if (isset($files) && count($files) > 0)
        {
            foreach ($files as $file)
            {
                // Add the file
                $file['torrent_id'] = $torrentId;
                $file['entered']    = 'NOW()';

                $fileObj = new File($this->objArgs);
                $fileObj->add($file);
            }
        }

        // Add the stat row
        $torrentStat = new TorrentStat($this->objArgs);
        $stat['torrent_id'] = $torrentId;
        $stat['entered']    = 'NOW()';
        $torrentStat->add($stat);

        return $torrentId;
    }

    function getTorrentByInfoHash($infoHash)
    {
        $result = $this->db->query("SELECT id, banned, seeders + leechers AS numpeers, UNIX_TIMESTAMP(added) AS ts FROM " . $this->objTable ." WHERE info_hash = '" . $this->db->escape_string($info_hash) . "'");
        return $result->fetch_array(MYSQLI_ASSOC);
    }
}

?>