function dt_block_items($options) { global $db, $xoopsModule; include_once XOOPS_ROOT_PATH . '/modules/dtransport/class/dtsoftware.class.php'; include_once XOOPS_ROOT_PATH . '/modules/dtransport/class/dtfunctions.class.php'; $tpl = RMTemplate::get(); $tpl->add_xoops_style('blocks.css', 'dtransport'); $dtfunc = new DTFunctions(); $db = XoopsDatabaseFactory::getDatabaseConnection(); $tbls = $db->prefix("dtrans_software"); $tblc = $db->prefix("dtrans_catsoft"); if ($options[1] > 0) { $sql = "SELECT s.* FROM {$tbls} as s, {$tblc} as c WHERE c.cat='" . $options[1] . "' AND s.id_soft=c.soft AND s.approved=1 AND s.`delete`=0"; } else { $sql = "SELECT s.* FROM {$tbls} as s WHERE s.`approved`=1 AND s.`delete`=0 "; } if (trim($options[10]) > 0) { $user = new RMUser(trim($options[10])); if ($user->isNew()) { return; } $sql .= " AND s.uid='" . $user->id() . "' "; } if ($options[11] > 0) { $sql .= "AND id_cat='{$options['11']}'"; } switch ($options[0]) { case 'all': $sql .= ' ORDER BY RAND() '; break; case 'recent': $sql .= " ORDER BY s.modified DESC, created DESC "; break; case 'popular': $sql .= " ORDER BY s.hits DESC "; break; case 'rated': $sql .= " ORDER BY s.`rating`/s.`votes` DESC "; break; case 'featured': $sql .= " AND featured=1 ORDER BY RAND() "; break; case 'daily': $sql = " AND daily=1 ORDER BY RAND() "; break; } $options[2] = $options[2] > 0 ? $options[2] : 5; $sql .= " LIMIT 0, {$options['2']}"; $result = $db->query($sql); $block = array(); while ($row = $db->fetchArray($result)) { $item = new DTSoftware(); $item->assignVars($row); $rtn = array(); $rtn['name'] = $item->getVar('name'); $rtn['version'] = $item->getVar('version'); if ($options[3]) { $img = new RMImage(); $img->load_from_params($item->getVar('image')); $rtn['image'] = $img->get_version($options[11]); } if ($options[4]) { $rtn['description'] = $item->getVar('shortdesc'); } if ($options[5]) { $rtn['hits'] = sprintf(__('Downloaded %s times.', 'dtransport'), '<strong>' . $item->getVar('hits') . '</strong>'); } if ($options[6]) { $rtn['urate'] = @number_format($item->getVar('rate') / $item->getVar('votes'), 1); } if ($options[7]) { $rtn['siterate'] = DTFunctions::ratingStars($item->getVar('siterate')); } $rtn['link'] = $item->permalink(); $rtn['metas'] = $dtfunc->get_metas('down', $item->id()); if ($options[9]) { $rtn['author'] = array('name' => $item->getVar('author_name'), 'url' => $item->getVar('author_url')); } $block['downs'][] = $rtn; } $block['showbutton'] = $options[8]; $block['downlang'] = __('Download', 'dtransport'); $block['lang_urate'] = __('User rating: %s', 'dtransport'); $block['lang_author'] = __('Author: %s', 'dtransport'); $block['langhits'] = _BK_DT_HITSTEXT; $block['langurate'] = _BK_DT_URATETEXT; $block['languser'] = _BK_DT_USERBY; return $block; }
header('location: ' . DT_URL . ($mc['permalinks'] ? '/license/' . $lic->nameId() : '/?p=license&lic=' . $lic->id())); die; } $p = $page > 0 ? $page - 1 : $page; $start = $num <= 0 ? 0 : $p * $limit; $nav = new RMPageNav($num, $limit, $page); $nav->target_url(DT_URL . ($mc['permalinks'] ? '/license/' . $lic->nameId() . '/page/{PAGE_NUM}/' : '/?p=license&lic=' . $lic->id() . '&page={PAGE_NUM}')); $xoopsTpl->assign('pagenav', $nav->render(true)); // Seleccionamos los registros $sql = str_replace('COUNT(*)', 'b.*', $sql); $sql .= " ORDER BY created DESC"; $sql .= " LIMIT {$start}, {$limit}"; $result = $db->query($sql); while ($row = $db->fetchArray($result)) { $item = new DTSoftware(); $item->assignVars($row); $xoopsTpl->append('download_items', $dtfunc->createItemData($item)); } // Datos de la etiqueta $xoopsTpl->assign('license', array('id' => $lic->id(), 'name' => $lic->name(), 'link' => $lic->permalink())); $tpl->add_xoops_style('main.css', 'dtransport'); $dtfunc->makeHeader(); $xoopsTpl->assign('xoops_pagetitle', sprintf(__('Downloads licensed as %s', 'dtransport'), $lic->name())); if ($mc['inner_dest_download']) { $xoopsTpl->assign('featured_items', $dtfunc->items_by(array($lic->id()), 'licenses', 0, 'featured', 0, $mc['limit_destdown'])); $xoopsTpl->assign('lang_incatego', __('In <a href="%s">%s</a>', 'dtransport')); $xoopsTpl->assign('lang_featured', __('<strong>Featured</strong> Downloads', 'dtransport')); } // Descargas el día if ($mc['inner_daydownload']) { $xoopsTpl->assign('daily_items', $dtfunc->items_by($lic->id(), 'licenses', 0, 'daily', 0, $mc['limit_daydownload']));
/** * Get items by tag(s) */ public function items_by($elements, $by, $exclude = 0, $type = 'all', $start = 0, $limit = 10) { if (!is_array($elements) and $elements <= 0) { return; } if (!is_array($elements)) { $elements = array($elements); } switch ($type) { case 'featured': $filter = "s.approved=1 AND s.featured=1 AND s.delete=0"; $order = "ORDER BY RAND()"; break; case 'recent': $filter = "s.approved=1 AND s.delete=0"; $order = "ORDER BY s.created DESC"; break; case 'daily': $filter = "s.approved=1 AND s.daily=1 AND s.delete=0"; $order = "ORDER BY RAND()"; break; case 'rated': $filter = "s.approved=1 AND s.delete=0"; $order = "ORDER BY s.rating DESC"; break; case 'updated': $filter = "s.approved=1 AND s.delete=0"; $order = "ORDER BY s.modified DESC"; break; default: $filter = 's.approved=1 AND s.delete=0'; $order = "ORDER BY created DESC"; break; } $db = XoopsDatabaseFactory::getDatabaseConnection(); $softt = $db->prefix('dtrans_software'); switch ($by) { case 'tags': $byt = $db->prefix('dtrans_softtag'); $sql = "SELECT s.* FROM {$softt} AS s, {$byt} AS t WHERE t.id_tag IN (" . implode(",", $elements) . ") AND t.id_soft!={$exclude} AND s.id_soft=t.id_soft AND {$filter} GROUP BY t.id_soft {$order} LIMIT {$start}, {$limit}"; break; case 'platforms': $byt = $db->prefix('dtrans_platsoft'); $sql = "SELECT s.* FROM {$softt} AS s, {$byt} AS t WHERE t.id_platform IN (" . implode(",", $elements) . ") AND t.id_soft!={$exclude} AND s.id_soft=t.id_soft AND {$filter} GROUP BY t.id_soft {$order} LIMIT {$start}, {$limit}"; break; case 'licenses': $byt = $db->prefix('dtrans_licsoft'); $sql = "SELECT s.* FROM {$softt} AS s, {$byt} AS t WHERE t.id_lic IN (" . implode(",", $elements) . ") AND t.id_soft!={$exclude} AND s.id_soft=t.id_soft AND {$filter} GROUP BY t.id_soft {$order} LIMIT {$start}, {$limit}"; break; } $result = $db->query($sql); $items = array(); while ($row = $db->fetchArray($result)) { $item = new DTSoftware(); $item->assignVars($row); $cats = $item->categories(true); $cat = $cats[array_rand($cats, 1)]; $items[] = array_merge($this->createItemData($item), array('category' => $cat->name(), 'categoryid' => $cat->id(), 'categorylink' => $cat->permalink())); } return $items; }
/** * @desc Muestra todos lo elementos registrados **/ function dt_show_items() { define('RMCSUBLOCATION', 'downitems'); global $xoopsModule, $xoopsSecurity; $search = rmc_server_var($_REQUEST, 'search', ''); $sort = rmc_server_var($_REQUEST, 'sort', 'id_soft'); $mode = rmc_server_var($_REQUEST, 'mode', 1); $sort = $sort == '' ? 'id_soft' : $sort; $catid = rmc_server_var($_REQUEST, 'cat', 0); $type = rmc_server_var($_REQUEST, 'type', ''); //Barra de Navegación $db = XoopsDatabaseFactory::getDatabaseConnection(); $sql = "SELECT COUNT(*) FROM " . ($type == 'edit' ? $db->prefix('dtrans_software_edited') : $db->prefix('dtrans_software')); $sql .= $catid ? " WHERE id_cat='{$catid}'" : ''; $sql .= $type == 'wait' ? $catid ? " AND approved=0" : " WHERE approved=0" : ""; $sql1 = ''; if ($search) { $words = explode(" ", $search); foreach ($words as $k) { //Verificamos si la palabra proporcionada es mayor a 2 caracteres if (strlen($k) <= 2) { continue; } $sql1 .= ($sql1 == '' ? $catid || $type == 'wait' ? " AND " : " WHERE " : " OR ") . " (name LIKE '%{$k}%' OR uname LIKE '%{$k}%') "; } } $sql2 = " ORDER BY {$sort} " . ($mode ? "DESC" : "ASC"); list($num) = $db->fetchRow($db->queryF($sql . $sql1 . $sql2)); $page = rmc_server_var($_REQUEST, 'page', 1); $limit = 15; $nav = new RMPageNav($num, $limit, $page); $nav->target_url("items.php?search={$search}&sort={$sort}&mode={$mode}&cat={$catid}&type={$type}&page={PAGE_NUM}"); $navpage = $nav->render(false, true); $start = $nav->start(); //Fin de barra de navegación $catego = new DTCategory($catid); $sql = "SELECT * FROM " . ($type == 'edit' ? $db->prefix('dtrans_software_edited') : $db->prefix('dtrans_software')); $sql .= $catid ? " WHERE id_cat={$catid}" : ''; $sql .= $type == 'wait' ? $catid ? " AND approved=0" : " WHERE approved=0" : ""; $sql2 .= " LIMIT {$start},{$limit}"; $result = $db->queryF($sql . $sql1 . $sql2); $items = array(); $timeFormat = new RMTimeFormatter(0, '%m%-%d%-%Y%'); while ($rows = $db->fetchArray($result)) { if ($type == 'edit') { $sw = new DTSoftwareEdited(); } else { $sw = new DTSoftware(); } $sw->assignVars($rows); $img = new RMImage($sw->getVar('image')); $user = new XoopsUser($sw->getVar('uid')); $items[] = array('id' => $type == 'edit' ? $sw->software() : $sw->id(), 'name' => $sw->getVar('name'), 'screens' => $sw->getVar('screens'), 'image' => $img->get_smallest(), 'secure' => $sw->getVar('secure'), 'approved' => $sw->getVar('approved'), 'uname' => $user->getVar('uname'), 'created' => $timeFormat->format($sw->getVar('created')), 'modified' => $timeFormat->format($sw->getVar('modified')), 'link' => $sw->permalink(), 'featured' => $sw->getVar('featured'), 'daily' => $sw->getVar('daily'), 'password' => $sw->getVar('password') != '', 'deletion' => $sw->getVar('delete')); } //Lista de categorías $categories = array(); DTFunctions::getCategos($categos, 0, 0, array(), true); foreach ($categos as $k) { $cat = $k['object']; $categories[] = array('id' => $cat->id(), 'name' => str_repeat('--', $k['jumps']) . ' ' . $cat->name()); } switch ($type) { case 'wait': $loc = __('Pending Downloads', 'dtransport'); break; case 'edit': $loc = __('Edited Downloads', 'dtransport'); break; default: $loc = __('Downloads Management', 'dtransport'); break; } DTFunctions::toolbar(); $tpl = RMTemplate::get(); $tpl->add_style('admin.css', 'dtransport'); $tpl->add_local_script('admin.js', 'dtransport'); $tpl->add_local_script('items.js', 'dtransport'); $tpl->add_local_script('jquery.checkboxes.js', 'rmcommon', 'include'); include DT_PATH . '/include/js_strings.php'; xoops_cp_location("<a href='./'>" . $xoopsModule->name() . "</a> » " . $loc); xoops_cp_header(); include RMTemplate::get()->get_template('admin/dtrans_items.php', 'module', 'dtransport'); xoops_cp_footer(); }
/** * @desc Genera la información para mostrar la Sindicación * @param int Limite de resultados * @return Array */ function &dtrans_rssshow($limit) { global $util, $mc; $db =& XoopsDatabaseFactory::getDatabaseConnection(); include_once XOOPS_ROOT_PATH . '/modules/dtransport/class/dtsoftware.class.php'; foreach ($_GET as $k => $v) { ${$k} = $v; } $feed = array(); // Información General $ret = array(); $mc =& $util->moduleConfig('dtransport'); $sql = "SELECT * FROM " . $db->prefix("dtrans_software") . " WHERE approved='1'"; switch ($show) { case 'pops': $feed['title'] = htmlspecialchars(_MI_DT_RSSPOP); $feed['link'] = XOOPS_URL . '/modules/dtransport'; $feed['description'] = htmlspecialchars(_MI_DT_RSSPOPDESC); $sql .= " ORDER BY hits DESC"; break; case 'rate': $feed['title'] = htmlspecialchars(_MI_DT_RSSRATE); $feed['link'] = XOOPS_URL . '/modules/dtransport'; $feed['description'] = htmlspecialchars(_MI_DT_RSSRATEDESC); $sql .= " ORDER BY `rating`/`votes` DESC"; break; default: $feed['title'] = htmlspecialchars(_MI_DT_RSSRECENT); $feed['link'] = XOOPS_URL . '/modules/dtransport'; $feed['description'] = htmlspecialchars(_MI_DT_RSSRECENTDESC); $sql .= " ORDER BY created DESC, modified DESC"; break; } $sql .= " LIMIT 0, 15"; // Generamos los elementos $result = $db->query($sql); $items = array(); $link = XOOPS_URL . '/modules/dtransport/'; while ($row = $db->fetchArray($result)) { $item = new DTSoftware(); $item->assignVars($row); $rtn = array(); $rtn['title'] = htmlspecialchars($item->name()); $ilink = $link . ($mc['urlmode'] ? "item/" . $item->nameId() . "/" : "item.php?id=" . $item->id()); $rtn['link'] = htmlspecialchars($ilink, ENT_QUOTES); $rtn['description'] = $item->shortdesc(); $rtn['date'] = formatTimestamp($item->created()); $items[] = $rtn; } $ret = array('feed' => $feed, 'items' => $items); return $ret; }