db->query("INSERT INTO `" . $this->exptable . "` (`page_id`) VALUES ('" . $page_id . "')"); return $page_id; } function update_page($fields=null, $extra=null) { $page_id = blxPage::update_page($fields, $extra); return $page_id; } function del_page($page_id) { blxPage::del_page($page_id); $this->delete_items($page_id); } function delete_items($page_id) { $items = $this->db->fetchall("SELECT * FROM `dnlItems` WHERE `page_id` = " . $page_id); foreach($items as $item) { $this->delete_item($item['downloaditem_id'], $page_id, false); } } function delete_item($id, $page_id, $renum=true) { $this->delete_file($id); $this->db->query("DELETE FROM `dnlItems` WHERE `downloaditem_id` = " . $id); if ($renum == true) { $this->renum_items($page_id); } } function delete_file($id) { global $_config; $file = $this->db->fetchfield("srv_filename", "SELECT `srv_filename` FROM `dnlItems` WHERE `downloaditem_id` = " . $id); if(file_exists($_config['secure_path'] . "/" . $file)) { unlink($_config['secure_path'] . "/" . $file); } } function renum_items($page_id) { // volgorde is altijd 2,4,6,8,... zo kan er met een dropdown een item tussen worden gevoegd $ids = $this->db->fetchall("SELECT `downloaditem_id` FROM `dnlItems` WHERE `page_id` = " . $page_id . " ORDER BY `volgorde` ASC"); $volgorde = 2; foreach ($ids as $id) { $this->db->query("UPDATE `dnlItems` SET `volgorde` = " . $volgorde . " WHERE `downloaditem_id` = " . $id['downloaditem_id']); $volgorde += 2; } } function copy_page($from, $to) { $new_id = blxPage::copy_page($from, $to); $this->copy_items($from, $new_id); } function copy_items($from, $to) { $items = $this->db->fetchall("SELECT * FROM `dnlItems` WHERE `page_id` = " . $from); $dnlitem = new blxitem_dnl(); foreach ($items as $i) { $dnlitem->copy_item($i['downloaditem_id'], $to); } } } require_once "class.blxitem.php"; class blxitem_dnl extends blxItem { var $item_kind = ''; // std, pol, img, ... var $item_id = ''; var $key = 'downloaditem_id'; // content_id var $table = 'dnlItems'; // Content table var $expTable = ''; // expPoll, expColumn ... var $edit_page = 'edit_downloaditem.php?page_id=%parent_id%&id=%record_id%'; // edit_stditem.php?page_id=%parent_id%&id=%record_id% // needed for the mutations history // the %parent_id% and %record_id% are literal var $db; // database connection (class), see constructor var $is_std_content = false; // item is on a standard page = true var $parent_id; // id of parent of item function blxitem_dnl($item_id=null,$parent_id=null) { blxItem::__construct($item_id,$parent_id); $this->parent_id = $_GET['page_id']; } function add_item($fields, $extra) { if ($_FILES['bestandsnaam']['name']) { $fields['org_filename'] = $_FILES['bestandsnaam']['name']; $fields['size'] = $_FILES['bestandsnaam']['size']; $fields['filetype'] = $_FILES['bestandsnaam']['type']; $fields['srv_filename'] = $this->insert_file($_FILES['bestandsnaam'], $fields['srv_filename']); } blxItem::add_item($fields, $extra); $this->resetPositions(); } function update_item($fields, $extra) { $old_fields = $this->db->fetchrow("SELECT * FROM `dnlItems` WHERE `downloaditem_id` = " . $fields['downloaditem_id']); $fields = array_merge($old_fields, $fields); if (is_uploaded_file($_FILES['bestandsnaam']['tmp_name'])) { $fields['org_filename'] = $_FILES['bestandsnaam']['name']; $fields['size'] = $_FILES['bestandsnaam']['size']; $fields['filetype'] = $_FILES['bestandsnaam']['type']; $fields['srv_filename'] = $this->insert_file($_FILES['bestandsnaam'], $fields['srv_filename']); } blxItem::update_item($fields, $extra); $this->resetPositions(); } function delete_item($item_id=null) { global $_config; $item_id = ($item_id > 0) ? $item_id : $this->item_id; $page_id = $this->parent_id; $file = $this->db->fetchfield("srv_filename", "SELECT `srv_filename` FROM `dnlItems` WHERE `downloaditem_id` = " . $item_id); if(file_exists($_config['secure_path'] . "/" . $file)) { unlink($_config['secure_path'] . "/" . $file); } blxItem::delete_item($item_id, $page_id); } function resetPositions() { $items = $this->db->fetchall("SELECT `downloaditem_id` FROM `dnlItems` WHERE `page_id` = " . $this->parent_id . " ORDER BY `volgorde` DESC"); $order = 2; foreach ($items as $i) { $this->db->query("UPDATE `dnlItems` SET `volgorde` = " . $order . " WHERE `downloaditem_id` = " . $i['downloaditem_id']); $order += 2; } } function insert_file($afile, $old_srv_name="") { global $_config; if (is_uploaded_file($afile['tmp_name'])) { // maak unieke bestandsnaam $path = $_config['secure_path'] . "/"; do $srv_name = date("YmdHis"); while (file_exists($path.$srv_name)); // verplaats uploadbestand naar de juiste map move_uploaded_file($afile['tmp_name'],$path.$srv_name); // verwijder evt aanwezig (oud) bestand if ($old_srv_name && file_exists($path . $old_srv_name)) { unlink($path.$old_srv_name); } return $srv_name; } } function copy_item($item_id, $dst_page_id) { global $_config; $new_id = blxItem::copy_item($item_id, $dst_page_id); $record = $this->db->fetchrow("SELECT * FROM `" . $this->table . "` WHERE `" . $this->key . "` = " . $new_id); // make unique filename $path = $_config['secure_path'] . "/"; do $srv_name = date("YmdHis"); while (file_exists($path.$srv_name)); // copy file to new record copy($path.$record['srv_filename'],$path.$srv_name); $record['page_id'] = $dst_page_id; $record['srv_filename'] = $srv_name; $this->db->replace_into($this->table, $record, ['page_id' => $record['page_id']]); } } function dnlCreateContent($page_id, &$smarty) { global $db; $objPage = new blxPage_dnl(); if ($objPage->exptable) { $sql = 'SELECT `sort_alphabet` FROM `' . $objPage->exptable . '` WHERE `page_id` = ' . $page_id; $sort_alphabet = $db->fetchField('sort_alphabet', $sql); } if($sort_alphabet){ $downloads = $db->fetchall("SELECT * FROM `dnlItems` WHERE `status` = 'online' AND `page_id` = " . $page_id . " ORDER BY CONVERT(`titel` USING utf8) ASC"); } else { $downloads = $db->fetchall("SELECT * FROM `dnlItems` WHERE `status` = 'online' AND `page_id` = " . $page_id . " ORDER BY `volgorde` ASC"); } $smarty->assign('downloads', $downloads); } ?>