public function get_item_url($params, $com) { static $items; $params = urldecode($params); parse_str($params); if (!isset($item) || $item <= 0) { return ''; } if (isset($items[$item])) { $ret = $items[$item]->permalink(); return $ret; } include_once XOOPS_ROOT_PATH . '/modules/dtransport/class/dtsoftware.class.php'; $item = new DTSoftware($item); if ($item->isNew()) { return ''; } $items[$item->id()] = $item; return $item->permalink(); }
/** * @desc Elimina pantallas de la base de datos **/ function deleteScreens() { global $xoopsModule, $util; $ids = isset($_REQUEST['id']) ? $_REQUEST['id'] : 0; $item = isset($_REQUEST['item']) ? intval($_REQUEST['item']) : 0; $ok = isset($_POST['ok']) ? intval($_POST['ok']) : 0; //Verificamos que el software sea válido if ($item <= 0) { redirectMsg('./screens.php', _AS_DT_ERR_ITEMVALID, 1); die; } //Verificamos que el software exista $sw = new DTSoftware($item); if ($sw->isNew()) { redirectMsg('./screens.php', _AS_DT_ERR_ITEMEXIST, 1); die; } //Verificamos si nos proporcionaron alguna pantalla if (!is_array($ids) && $ids <= 0) { redirectMsg('./screens.php?item=' . $item, _AS_DT_NOTSCREEN, 1); die; } $num = 0; if (!is_array($ids)) { $scr = new DTScreenshot($ids); $ids = array($ids); $num = 1; } if ($ok) { if (!$util->validateToken()) { redirectMsg('./screens.php?item=' . $item, _AS_DT_SESSINVALID, 1); die; } $errors = ''; foreach ($ids as $k) { //Verificamos si pantalla es válida if ($k <= 0) { $errors .= sprintf(_AS_DT_ERRSCVAL, $k); continue; } //Verificamos que la pantalla exista $sc = new DTScreenshot($k); if ($sc->isNew()) { $errors .= sprintf(_AS_DT_ERRSCEX, $k); continue; } if (!$sc->delete()) { $errors .= sprintf(_AS_DT_ERRSCDEL, $k); } } if ($errors != '') { redirectMsg('./screens.php?item=' . $item, _AS_DT_ERRORS . $errors, 1); die; } else { redirectMsg('./screens.php?item=' . $item, _AS_DT_DBOK, 0); die; } } else { optionsBar($sw); xoops_cp_location("<a href='./'>" . $xoopsModule->name() . "</a> » <a href='./items.php'>" . _AS_DT_SW . "</a> » " . _AS_DT_DELETESCREEN); xoops_cp_header(); $hiddens['ok'] = 1; $hiddens['id[]'] = $ids; $hiddens['item'] = $item; $hiddens['op'] = 'delete'; $buttons['sbt']['type'] = 'submit'; $buttons['sbt']['value'] = _DELETE; $buttons['cancel']['type'] = 'button'; $buttons['cancel']['value'] = _CANCEL; $buttons['cancel']['extra'] = 'onclick="window.location=\'screens.php?item=' . $item . '\';"'; $util->msgBox($hiddens, 'screens.php', ($num ? sprintf(_AS_DT_DELETECONF, $scr->title()) : _AS_DT_DELCONF) . '<br /><br />' . _AS_DT_ALLPERM, XOOPS_ALERT_ICON, $buttons, true, '400px'); xoops_cp_footer(); } }
} break; case 'edit': default: $edit = $action == 'edit' && $id > 0 ? 1 : 0; // MOSTRAR FORMULARIO $xoopsOption['template_main'] = 'dtrans_submit.html'; $xoopsOption['module_subpage'] = 'submit'; if ($edit) { //Verificamos si el elemento es válido if ($id <= 0) { redirect_header(DT_URL, 2, __('Item not found. Please try again!', 'dtransport')); } //Verificamos si el elemento existe $item = new DTSoftware($id); if ($item->isNew()) { redirect_header(DT_URL, 2, __('Item not found. Please try again!', 'dtransport')); } //Verificamos si se aprueba la edicion if (!$mc['aprove_edit'] && $item->getVar('approved')) { // Si no se aprueba almacenaremos los datos en // la tabla para elementos editados $item = new DTSoftwareEdited($id); $item->setSoftware($id); } if ($item->getVar('uid') != $xoopsUser->uid()) { redirect_header(DT_URL, 1, __('You can not edit this download item!', 'dtransport')); } } include 'header.php'; $dtfunc->makeHeader();
/** * @desc Elimina el Log especificado **/ function dt_delete_log() { global $xoopsModule, $xoopsSecurity; $ids = rmc_server_var($_POST, 'ids', array()); $item = rmc_server_var($_POST, 'item', 0); //Verificamos si el software es válido if ($item <= 0) { redirectMsg('items.php', __('Download item ID not provided!', 'dtransport'), RMMSG_WARN); } //Verificamos si existe el software $sw = new DTSoftware($item); if ($sw->isNew()) { redirectMsg('items.php', __('Specified download item does not exists!', 'dtransport'), RMMSG_WARN); } //Verificamos si nos proporcionaron algun log if (empty($ids)) { redirectMsg('logs.php?item=' . $item, __('You must select at least one log!', 'dtransport'), RMMSG_ERROR); } if (!$xoopsSecurity->check()) { redirectMsg('logs.php?item=' . $item, __('Session token not valid!', 'dtransport'), RMMSG_ERROR); } $db = XoopsDatabaseFactory::getDatabaseConnection(); $sql = "DELETE FROM " . $db->prefix("dtrans_logs") . " WHERE id_log IN(" . implode(",", $ids) . ");"; if ($db->queryF($sql)) { redirectMsg('logs.php?item=' . $item, __('Item logs deleted successfully!', 'dtransport'), RMMSG_SUCCESS); } else { redirectMsg('logs.php?item=' . $item, __('Logs could not be deleted!', 'dtransport') . '<br />' . $db->error(), RMMSG_ERROR); } }
// Author: Eduardo Cortés <*****@*****.**> // Email: i.bitcero@gmail.com // License: GPL 2.0 // -------------------------------------------------------------- if ($id <= 0) { header('location: ' . DT_URL); die; } $file = new DTFile($id); if ($file->isNew() && $mc['permalinks']) { $dtfunc->error_404(); } elseif ($file->isNew()) { redirect_header(DT_URL, 1, __('File not found!', 'dtransport')); } $item = new DTSoftware($file->software()); if ($item->isNew() || !$item->getVar('approved')) { if ($mc['permalinks']) { $dtfunc->error_404(); } else { redirect_header(DT_URL, 1, __('Software does not exists!', 'dtransport')); } } if (!$item->canDownload($xoopsUser ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS)) { redirect_header($item->permalink(), 1, __('Sorry, you don\'t have permission to download this file!', 'dtransport')); } // Comprobamos los límites if ($item->getVar('limits') > 0) { if ($item->downloadsCount() >= $item->getVar('limits')) { redirect_header($item->permalink(), 1, __('You have reached your download limit for this file!', 'dtransport')); } }
/** * Show fields for default image */ function dt_widget_defimg($edit = 0) { $id = intval(rmc_server_var($_REQUEST, 'id', 0)); $type = rmc_server_var($_REQUEST, 'type', ''); $action = rmc_server_var($_REQUEST, 'action', ''); $widget = array(); $widget['title'] = __('Default Image', 'dtransport'); $widget['icon'] = '../images/shots.png'; $util = new RMUtilities(); if ($edit) { //Verificamos que el software sea válido if ($id <= 0) { $params = ''; } //Verificamos que el software exista if ($type == 'edit') { $sw = new DTSoftwareEdited($id); } else { $sw = new DTSoftware($id); } if ($sw->isNew()) { $params = ''; } else { $params = $sw->getVar('image'); } } else { $params = ''; } $widget['content'] = '<form name="frmDefimage" id="frm-defimage" method="post">'; $widget['content'] .= $util->image_manager('image', $params); $widget['content'] .= '</form>'; return $widget; }
/** * Change secure status for items */ function dt_change_data($type, $value = 0) { global $xoopsSecurity; if (!$xoopsSecurity->check()) { dt_send_message(__('Session token not valid!', 'dtransport'), 1, 0); } $id = rmc_server_var($_POST, 'id', 0); if ($id <= 0) { dt_send_message(__('No item ID has been provided!', 'dtransport'), 1, 1); } $sw = new DTSoftware($id); if ($sw->isNew()) { dt_send_message(__('Provided item ID is not valid!', 'dtransport'), 1, 1); } $db = XoopsDatabaseFactory::getDatabaseConnection(); $sql = "UPDATE " . $db->prefix("dtrans_software") . " SET {$type}={$value} WHERE id_soft={$id}"; if (!$db->queryF($sql)) { dt_send_message(__('Data could not be changed!', 'dtransport') . '<br />' . $db->error(), 1, 1); } dt_send_message(array('message' => __('Data changed successfully!', 'dtransport'), 'value' => $value, 'name' => $sw->getVar('name'), 'id' => $sw->id(), 'link' => $sw->permalink()), 0, 1); }
/** * desc Elimina de la base de datos los elementos **/ function dt_delete_items() { global $xoopsModuleConfig, $xoopsConfig, $xoopsModule, $xoopsSecurity, $rmc_config, $xoopsUser; $ids = rmc_server_var($_POST, 'ids', array()); $page = rmc_server_var($_POST, 'page', 1); $search = rmc_server_var($_POST, 'search', ''); $sort = rmc_server_var($_POST, 'sort', 'id_soft'); $mode = rmc_server_var($_POST, 'mode', 1); $cat = rmc_server_var($_POST, 'cat', 0); $type = rmc_server_var($_POST, 'type', ''); $params = '?pag=' . $page . '&search=' . $search . '&sort=' . $sort . '&mode=' . $mode . '&cat=' . $cat . '&type=' . $type; //Verificamos que el software sea válido if (!is_array($ids) && $ids <= 0) { redirectMsg('items.php' . $params, __('You must select at least one download item to delete!', 'dtransport'), RMMSG_WARN); } if (!is_array($ids)) { $ids = array($ids); } if (!$xoopsSecurity->check()) { redirectMsg('items.php' . $params, __('Session token expired!', 'dtransport'), RMMSG_ERROR); } $errors = ''; $mailer = new RMMailer('text/html'); $etpl = DT_PATH . '/lang/deletion_' . $rmc_config['lang'] . '.php'; if (!file_exists($etpl)) { $etpl = DT_PATH . '/lang/deletion_en.php'; } $mailer->template($etpl); $mailer->assign('siteurl', XOOPS_URL); $mailer->assign('dturl', $xoopsModuleConfig['permalinks'] ? XOOPS_URL . '/' . trim($xoopsModuleConfig['htbase'], '/') : DT_URL); $mailer->assign('downcp', $xoopsModuleConfig['permalinks'] ? XOOPS_URL . '/' . trim($xoopsModuleConfig['htbase'], '/') . '/cp/' : DT_URL . '/?p=cpanel'); $mailer->assign('dtname', $xoopsModule->name()); $mailer->assign('sitename', $xoopsConfig['sitename']); foreach ($ids as $id) { $sw = new DTSoftware($id); if ($sw->isNew()) { continue; } if (!$sw->delete()) { $errors .= $sw->errors(); continue; } $xu = new XoopsUser($sw->getVar('uid')); $mailer->add_users(array($xu)); $mailer->assign('uname', $xu->name() != '' ? $xu->name() : $xu->uname()); $mailer->assign('download', $sw->getVar('name')); $mailer->assign('email', $xu->getVar('email')); $mailer->assign('method', $xu->getVar('notify_method')); $mailer->set_subject(sprintf(__('Your download %s has been deleted!', 'dtransport'), $sw->getVar('name'))); if ($xu->getVar('notify_method') == 1) { $mailer->set_from_xuser($xoopsUser); $mailer->send_pm(); } else { $mailer->send(); } } if ($errors != '') { redirectMsg('items.php' . $params, __('Errors ocurred while trying to delete selected downloads!', 'dtransport') . '<br />' . $errors, RMMSG_ERROR); } redirectMsg('items.php' . $params, __('Downloads deleted successfully!', 'dtransport'), RMMSG_SUCCESS); }
/** * @desc Elimina el grupo especificado **/ function deleteGroups() { global $xoopsModule, $util, $xoopsSecurity; $id = rmc_server_var($_REQUEST, 'id', array()); $item = rmc_server_var($_REQUEST, 'item', 0); if (!$xoopsSecurity->check()) { redirectMsg('files.php?item=' . $item, __('Session token not valid!', 'dtransport'), RMMSG_WARN); die; } //Verificamos si el software es válido if ($item <= 0) { redirectMsg('files.php', __('Download item ID not provided!', 'dtransport'), RMMSG_WARN); die; } //Verificamos si existe el software $sw = new DTSoftware($item); if ($sw->isNew()) { redirectMsg('files.php', __('Specified download item does not exists!', 'dtransport'), RMMSG_WARN); die; } //Verificamos si grupo es válido if ($id <= 0) { redirectMsg('files.php?item=' . $item, __('Group id not provided!', 'dtransport'), RMMSG_ERROR); die; } //Verificamos si el grupo existe $group = new DTFileGroup($id); if ($group->isNew()) { redirectMsg('files.php?item=' . $item, __('Specified group does not exists!', 'dtransport'), RMMSG_ERROR); die; } if (!$group->delete()) { redirectMsg('files.php?item=' . $item, sprintf(__('Group %s could not be deleted!', 'dtransport'), '<strong>' . $group->name() . '</strong>') . '<br />' . $group->errors(), 1); die; } else { redirectMsg('files.php?item=' . $item, sprintf(__('Group %s deleted successfully!', 'dtransport'), '<strong>' . $group->name() . '</strong>'), 0); die; } }
function dt_upload_screenshots() { global $xoopsSecurity; $item = rmc_server_var($_REQUEST, 'item', 0); $data = rmc_server_var($_REQUEST, 'data', ''); $rmu = RMUtilities::get(); $mc = $rmu->module_config('dtransport'); $tc = TextCleaner::getInstance(); $data = explode("|", $tc->decrypt($data)); $db = XoopsDatabaseFactory::getDatabaseConnection(); $ses = new XoopsSessionHandler($db); session_decode($ses->read($data[1])); $_SERVER['HTTP_USER_AGENT'] = trim($data[0]); if (!$xoopsSecurity->check(false)) { error(__('Session token not valid!', 'dtransport')); } if ($item <= 0) { error(__('Download item ID not provided!', 'dtransport')); } require_once XOOPS_ROOT_PATH . '/modules/dtransport/class/dtsoftware.class.php'; $sw = new DTSoftware($item); if ($sw->isNew()) { error(__('Specified download item does not exists!', 'dtransport')); } if ($sw->getVar('screens') >= $mc['limit_screen']) { error(__('You have reached the limit screens number for this download item!', 'dtransport')); } // Directorio de almacenamiento $dir = XOOPS_UPLOAD_PATH . '/screenshots'; if (!is_dir($dir)) { mkdir($dir, 511); } $dir .= '/' . date('Y', time()); if (!is_dir($dir)) { mkdir($dir, 511); } $dir .= '/' . date('m', time()); if (!is_dir($dir)) { mkdir($dir, 511); } if (!is_dir($dir . '/ths')) { mkdir($dir . '/ths', 511); } if (!is_dir($dir)) { error(__('Directory for store screenshots does not exists!', 'dtransport')); } include RMCPATH . '/class/uploader.php'; $uploader = new RMFileUploader($dir, $mc['image'] * 1024, array('jpg', 'gif', 'png')); $err = array(); if (!$uploader->fetchMedia('Filedata')) { error($uploader->getErrors()); } if (!$uploader->upload()) { error($uploader->getErrors()); } // Saving image require_once XOOPS_ROOT_PATH . '/modules/dtransport/class/dtscreenshot.class.php'; $img = new DTScreenshot(); $img->setDesc(''); $img->setTitle($uploader->getSavedFileName()); $img->setImage($uploader->getSavedFileName()); $img->setDate(time()); $img->setSoftware($item); if (!$img->save()) { unlink($dir . '/' . $img->image()); error(__('Screenshot could not be saved!', 'dtransport')); } // Resize image $thumb = explode(":", $mc['size_ths']); $big = explode(":", $mc['size_image']); $sizer = new RMImageResizer($dir . '/' . $img->getVar('image'), $dir . '/ths/' . $img->getVar('image')); // Thumbnail if (!isset($thumb[2]) || $thumb[2] == 'crop') { $sizer->resizeAndCrop($thumb[0], $thumb[1]); } else { $sizer->resizeWidthOrHeight($thumb[0], $thumb[1]); } // Full size image $sizer->setTargetFile($dir . '/' . $img->image()); if (!isset($big[2]) || $big[2] == 'crop') { $sizer->resizeAndCrop($big[0], $big[1]); } else { $sizer->resizeWidthOrHeight($big[0], $big[1]); } $ret = array('image' => $uploader->getSavedFileName(), 'dir' => str_replace(XOOPS_UPLOAD_PATH, XOOPS_UPLOAD_URL, $dir), 'token' => $xoopsSecurity->createToken(), 'type' => $uploader->getMediaType(), 'error' => 0, 'id' => $img->id()); echo json_encode($ret); die; }
$mc = $rmu->module_config('dtransport'); $tc = TextCleaner::getInstance(); $data = explode("|", $tc->decrypt($data)); $db = XoopsDatabaseFactory::getDatabaseConnection(); $ses = new XoopsSessionHandler($db); session_decode($ses->read($data[1])); $_SERVER['HTTP_USER_AGENT'] = trim($data[0]); if (!$xoopsSecurity->check()) { error(__('Session token not valid!', 'dtransport')); } if ($item <= 0) { error(__('Download item ID not provided!', 'dtransport')); } require_once XOOPS_ROOT_PATH . '/modules/dtransport/class/dtsoftware.class.php'; $sw = new DTSoftware($item); if ($sw->isNew()) { error(__('Specified download item does not exists!', 'dtransport')); } if ($sw->getVar('secure')) { $dir = $mc['directory_secure']; if (!is_dir($dir)) { if (!mkdir($dir, 511)) { error(__('Directory for protected downloads does not exists!', 'dtransport')); } } } else { $dir = $mc['directory_insecure']; if (!is_dir($dir)) { if (!mkdir($dir, 511)) { error(__('Directory for downloads does not exists!', 'dtransport')); }
/** * Elimina archivos de la base de datos y el disco duro */ function dt_delete_file() { global $xoopsSecurity, $functions; if (!$xoopsSecurity->check()) { $functions->dt_send_message(__('Session token not valid!', 'dtransport'), 1, 0); } $id = rmc_server_var($_POST, 'id', 0); $item = rmc_server_var($_POST, 'item', 0); $file = new DTFile($id); if ($file->isNew()) { $functions->dt_send_message(__('Specified file does not exists!', 'dtransport'), 1, 1); } $sw = new DTSoftware($item); if ($sw->isNew()) { $functions->dt_send_message(__('Specified item download does nto exists!', 'dtransport'), 1, 1); } if ($file->software() != $item) { $functions->dt_send_message(__('This file seems not belong to specified download item!', 'dtransport'), 1, 1); } if (!$file->delete()) { $functions->dt_send_message(__('File could not be deleted!', 'dtransport'), 1, 1); } $rmu = RMUtilities::get(); $mc = $rmu->module_config('dtransport'); $dir = $sw->getVar('secure') ? $mc['directory_secure'] : $mc['directory_insecure']; unlink($dir . '/' . $file->file()); $functions->dt_send_message(__('File deleted successfully!', 'dtransport'), 0, 1); }
// Manage files for download in XOOPS // Author: Eduardo Cortés <*****@*****.**> // Email: i.bitcero@gmail.com // License: GPL 2.0 // -------------------------------------------------------------- if ($id == '') { header('location: ' . DT_URL); die; } $item = new DTSoftware($id); if ($item->getVar('approved')) { $canview = true; } else { $canview = $xoopsUser->isAdmin() || $xoopsUser->uid() == $item->getVar('uid'); } if ($item->isNew() || !$canview) { redirect_header(DT_URL, 2, __('Specified item does not exists!', 'dtransport')); die; } if ($item->getVar('delete')) { redirect_header(DT_URL, 2, __('This item is not available for download at this moment!', 'dtransport')); } // Download default file if ($action == 'download') { $file = $item->file(); if (!$file) { redirect_header($item->permalink(), 0, __('Internal Error! Please try again later', 'dtransport')); } header("location: " . $file->permalink()); die; }