download.php (3684B)
1 <?php 2 class ModelCatalogDownload extends Model { 3 public function addDownload($data) { 4 $this->db->query("INSERT INTO " . DB_PREFIX . "download SET filename = '" . $this->db->escape($data['filename']) . "', mask = '" . $this->db->escape($data['mask']) . "', date_added = NOW()"); 5 6 $download_id = $this->db->getLastId(); 7 8 foreach ($data['download_description'] as $language_id => $value) { 9 $this->db->query("INSERT INTO " . DB_PREFIX . "download_description SET download_id = '" . (int)$download_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "'"); 10 } 11 12 return $download_id; 13 } 14 15 public function editDownload($download_id, $data) { 16 $this->db->query("UPDATE " . DB_PREFIX . "download SET filename = '" . $this->db->escape($data['filename']) . "', mask = '" . $this->db->escape($data['mask']) . "' WHERE download_id = '" . (int)$download_id . "'"); 17 18 $this->db->query("DELETE FROM " . DB_PREFIX . "download_description WHERE download_id = '" . (int)$download_id . "'"); 19 20 foreach ($data['download_description'] as $language_id => $value) { 21 $this->db->query("INSERT INTO " . DB_PREFIX . "download_description SET download_id = '" . (int)$download_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "'"); 22 } 23 } 24 25 public function deleteDownload($download_id) { 26 $this->db->query("DELETE FROM " . DB_PREFIX . "download WHERE download_id = '" . (int)$download_id . "'"); 27 $this->db->query("DELETE FROM " . DB_PREFIX . "download_description WHERE download_id = '" . (int)$download_id . "'"); 28 } 29 30 public function getDownload($download_id) { 31 $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "download d LEFT JOIN " . DB_PREFIX . "download_description dd ON (d.download_id = dd.download_id) WHERE d.download_id = '" . (int)$download_id . "' AND dd.language_id = '" . (int)$this->config->get('config_language_id') . "'"); 32 33 return $query->row; 34 } 35 36 public function getDownloads($data = array()) { 37 $sql = "SELECT * FROM " . DB_PREFIX . "download d LEFT JOIN " . DB_PREFIX . "download_description dd ON (d.download_id = dd.download_id) WHERE dd.language_id = '" . (int)$this->config->get('config_language_id') . "'"; 38 39 if (!empty($data['filter_name'])) { 40 $sql .= " AND dd.name LIKE '" . $this->db->escape($data['filter_name']) . "%'"; 41 } 42 43 $sort_data = array( 44 'dd.name', 45 'd.date_added' 46 ); 47 48 if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { 49 $sql .= " ORDER BY " . $data['sort']; 50 } else { 51 $sql .= " ORDER BY dd.name"; 52 } 53 54 if (isset($data['order']) && ($data['order'] == 'DESC')) { 55 $sql .= " DESC"; 56 } else { 57 $sql .= " ASC"; 58 } 59 60 if (isset($data['start']) || isset($data['limit'])) { 61 if ($data['start'] < 0) { 62 $data['start'] = 0; 63 } 64 65 if ($data['limit'] < 1) { 66 $data['limit'] = 20; 67 } 68 69 $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit']; 70 } 71 72 $query = $this->db->query($sql); 73 74 return $query->rows; 75 } 76 77 public function getDownloadDescriptions($download_id) { 78 $download_description_data = array(); 79 80 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "download_description WHERE download_id = '" . (int)$download_id . "'"); 81 82 foreach ($query->rows as $result) { 83 $download_description_data[$result['language_id']] = array('name' => $result['name']); 84 } 85 86 return $download_description_data; 87 } 88 89 public function getTotalDownloads() { 90 $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "download"); 91 92 return $query->row['total']; 93 } 94 }