1<?php
2class ModelToolUpload extends Model {
3	public function addUpload($name, $filename) {
4		$code = sha1(uniqid(mt_rand(), true));
5
6		$this->db->query("INSERT INTO `" . DB_PREFIX . "upload` SET `name` = '" . $this->db->escape($name) . "', `filename` = '" . $this->db->escape($filename) . "', `code` = '" . $this->db->escape($code) . "', `date_added` = NOW()");
7
8		return $code;
9	}
10
11	public function deleteUpload($upload_id) {
12		$this->db->query("DELETE FROM " . DB_PREFIX . "upload WHERE upload_id = '" . (int)$upload_id . "'");
13	}
14
15	public function getUpload($upload_id) {
16		$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "upload` WHERE upload_id = '" . (int)$upload_id . "'");
17
18		return $query->row;
19	}
20
21	public function getUploadByCode($code) {
22		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "upload WHERE code = '" . $this->db->escape($code) . "'");
23
24		return $query->row;
25	}
26
27	public function getUploads($data = array()) {
28		$sql = "SELECT * FROM " . DB_PREFIX . "upload";
29
30		$implode = array();
31
32		if (!empty($data['filter_name'])) {
33			$implode[] = "name LIKE '" . $this->db->escape($data['filter_name']) . "%'";
34		}
35
36		if (!empty($data['filter_filename'])) {
37			$implode[] = "filename LIKE '" . $this->db->escape($data['filter_filename']) . "%'";
38		}
39
40		if (!empty($data['filter_date_added'])) {
41			$implode[] = "date_added = '" . $this->db->escape($data['filter_date_added']) . "%'";
42		}
43
44		if ($implode) {
45			$sql .= " WHERE " . implode(" AND ", $implode);
46		}
47
48		$sort_data = array(
49			'name',
50			'filename',
51			'date_added'
52		);
53
54		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
55			$sql .= " ORDER BY " . $data['sort'];
56		} else {
57			$sql .= " ORDER BY date_added";
58		}
59
60		if (isset($data['order']) && ($data['order'] == 'DESC')) {
61			$sql .= " DESC";
62		} else {
63			$sql .= " ASC";
64		}
65
66		if (isset($data['start']) || isset($data['limit'])) {
67			if ($data['start'] < 0) {
68				$data['start'] = 0;
69			}
70
71			if ($data['limit'] < 1) {
72				$data['limit'] = 20;
73			}
74
75			$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
76		}
77
78		$query = $this->db->query($sql);
79
80		return $query->rows;
81	}
82
83	public function getTotalUploads() {
84		$sql = "SELECT COUNT(*) AS total FROM " . DB_PREFIX . "upload";
85
86		$implode = array();
87
88		if (!empty($data['filter_name'])) {
89			$implode[] = "name LIKE '" . $this->db->escape($data['filter_name']) . "%'";
90		}
91
92		if (!empty($data['filter_filename'])) {
93			$implode[] = "filename LIKE '" . $this->db->escape($data['filter_filename']) . "%'";
94		}
95
96		if (!empty($data['filter_date_added'])) {
97			$implode[] = "date_added = '" . $this->db->escape($data['filter_date_added']) . "'";
98		}
99
100		if ($implode) {
101			$sql .= " WHERE " . implode(" AND ", $implode);
102		}
103
104		$query = $this->db->query($sql);
105
106		return $query->row['total'];
107	}
108}