/**
 * Obtiene todos los datos de una descarga
 * Parámetros
 * @ids = Id de la descarga
 * @return = Datos de la descarga
 */
function rmdp_load_downdata($ids)
{
    global $xoopsDB, $xoopsModuleConfig, $xoopsTpl, $myts, $xoopsConfig;
    global $cid, $xoopsUser, $xoopsUserIsAdmin;
    if ($ids <= 0) {
        return;
    }
    $tbls = $xoopsDB->prefix('rmdp_software');
    $result = $xoopsDB->query("SELECT * FROM {$tbls} WHERE id_soft='{$ids}'");
    $num = $xoopsDB->getRowsNum($result);
    if ($num <= 0) {
        return;
    }
    /**
     * Calulamos el indice del rating
     */
    $rate = rmdp_set_rating();
    $row = $xoopsDB->fetchArray($result);
    /**
     * formatemos la fecha en base a las preferencias
     * del módulo
     */
    $fecha = date($xoopsModuleConfig['dateformat'], $row['fecha']);
    /**
     * Comprobamos si la descarga es nueva
     * o si ha sido actualizada
     */
    $isnew = rmdp_element_isnew($row['fecha'], $xoopsModuleConfig['downnew']);
    $isupdate = rmdp_element_isnew($row['update'], $xoopsModuleConfig['update_days']);
    /**
     * Obtenmos el nombre del publicador
     */
    $uname = rmdp_get_username($row['submitter']);
    $cid = $row['reviews'];
    $xoopsTpl->assign('download', array('id' => $row['id_soft'], 'nombre' => $row['nombre'], 'fecha' => $fecha, 'isnew' => $isnew, 'isupdate' => $isupdate, 'licence' => rmdp_get_licencelink($row['licencia']), 'os' => rmdp_get_downos($row['id_soft']), 'shots' => rmdp_get_shotsnum($row['id_soft']), 'size' => rmdp_convert_size($row['size']), 'rating' => rmdp_calculate_rating($row['rating'], $rate), 'calificacion' => $row['calificacion'], 'descargas' => $row['descargas'], 'url' => $row['url'], 'homepage' => $row['urltitle'], 'uname' => $uname, 'submitter' => $row['submitter'], 'ispopular' => rmdp_is_popular($row['descargas']), 'desc' => $myts->MakeTareaData4Show($row['longdesc']), 'img' => $row['img'], 'editor' => rmdp_get_editor_review($row['id_soft'])));
    $xoopsTpl->assign('lng_downloads', _RMDP_DOWNLOADS);
    $xoopsTpl->assign('lng_web_site', _RMDP_WEB_SITE);
    $xoopsTpl->assign('lng_date', _RMDP_DATE);
    $xoopsTpl->assign('lng_isnew', _RMDP_NEW_DOWN);
    $xoopsTpl->assign('lng_isupdate', _RMDP_UPDATE_DOWN);
    $xoopsTpl->assign('lng_licence', _RMDP_LICENCE);
    $xoopsTpl->assign('lng_os', _RMDP_OS);
    $xoopsTpl->assign('lng_screenshot', _RMDP_SCREEN_SHOT);
    $xoopsTpl->assign('lng_sendby', _RMDP_SEND_BY);
    $xoopsTpl->assign('lng_viewshots', _RMDP_VIEW_SHOT);
    $xoopsTpl->assign('lng_rating', _RMDP_USER_RATING);
    $xoopsTpl->assign('lng_vote', _RMDP_VOTE);
    $xoopsTpl->assign('lng_our_rating', _RMDP_OUR_RATING);
    $xoopsTpl->assign('lng_filesize', _RMDP_SIZE);
    $xoopsTpl->assign('lng_usercomments', _RMDP_USER_COMMENTS);
    $xoopsTpl->assign('lng_editorcom', sprintf(_RMDP_EDITOR_COM, $xoopsConfig['sitename']));
    $xoopsTpl->assign('lng_publisher_desc', sprintf(_RMDP_PUBLISHER_DESC, $uname));
    if ($xoopsUser == '' && $xoopsModuleConfig['uservote']) {
        /**
         * El usuario anónimo puede votar
         */
        $xoopsTpl->assign('vote_form', rmdp_make_voteform($row['id_soft']));
    } elseif ($xoopsUser) {
        /**
         * Si el usuario esta registrado y no es el publicador
         * entonces mostramos las opciones de voto
         */
        if ($xoopsUser->getvar('uid') != $row['submitter']) {
            $xoopsTpl->assign('vote_form', rmdp_make_voteform($row['id_soft']));
        }
        /**
         * Si el usuario es el administrador mostramos
         * Opciones administrativas
         */
        if ($xoopsUserIsAdmin) {
            $adminoptions = "<div align='center'>\n\t\t\t\t<a href='admin/downs.php?op=mod&amp;ids=" . $row['id_soft'] . "'><img src='images/edit.gif' border='0'></a>\n\t\t\t\t<a href='admin/downs.php?op=review&amp;ids=" . $row['id_soft'] . "'><img src='images/review.gif' border='0'></a>\n\t\t\t\t</div>";
            $xoopsTpl->assign('admin_options', $adminoptions);
        }
        /**
         * Opcion para reportar un enlace roto
         **/
        $useroptions = "<br><div align='center'><a href='broken.php?id={$row['id_soft']}'><img src='images/report.gif' border='0' alt='" . _RMDP_REPORT_BROKEN . "'></a>&nbsp;&nbsp;";
        /**
         * Si el usuario es el publicador de la descarga
         * Mostramos opciones administrativas del usuario
         */
        if ($xoopsUser->getvar('uid') == $row['submitter']) {
            $xoopsTpl->assign('is_Submitter', true);
            $useroptions .= "<a href='mysends.php?op=modify&amp;id=" . $row['id_soft'] . "'><img src='images/edit.gif' border='0'></a>";
        }
        $useroptions .= "</div>";
        $xoopsTpl->assign('user_options', $useroptions);
    }
}
/**
* Realiza una búsqueda en la bse de datos
**/
function rmdp_search_keyword($key, $cat = 0, $order = 'nombre')
{
    global $xoopsDB, $xoopsTpl, $xoopsModuleConfig, $myts;
    $tblsoft = $xoopsDB->prefix('rmdp_software');
    $limit = $xoopsModuleConfig['limit_result'];
    $upddays = $xoopsModuleConfig['update_days'];
    $newdays = $xoopsModuleConfig['downnew'];
    // Paginamos los productos Existentes
    $pag = $_GET['pag'];
    if ($pag > 0) {
        $pag -= 1;
    }
    $start = $pag * $limit;
    if ($cat > 0) {
        $sql = "SELECT COUNT(*) FROM {$tblsoft} WHERE (nombre LIKE '%{$key}%' OR longdesc LIKE '%{$key}%'\n\t\t\t\t\tOR archivo LIKE '%{$key}%'OR urltitle LIKE '%{$key}%') AND id_cat='{$cat}'";
    } else {
        $sql = "SELECT COUNT(*) FROM {$tblsoft} WHERE nombre LIKE '%{$key}%' OR longdesc LIKE '%{$key}%'\n\t\t\t\t\tOR archivo LIKE '%{$key}%' OR urltitle LIKE '%{$key}%'";
    }
    $result = $xoopsDB->query($sql);
    list($num) = $xoopsDB->fetchRow($result);
    $rtotal = $num;
    // Numero total de resultados
    $tpages = (int) ($num / $limit);
    $pactual = $pag + 1;
    if ($pactual > $tpages) {
        $rest = $pactual - $tpages;
        $pactual = $pactual - $rest + 1;
        $start = ($pactual - 1) * $limit;
    }
    if ($order == '') {
        $order = 'nombre';
    }
    if ($cat > 0) {
        $sql = "SELECT * FROM {$tblsoft} WHERE (nombre LIKE '%{$key}%' OR longdesc LIKE '%{$key}%'\n\t\t\t\tOR archivo LIKE '%{$key}%' OR urltitle LIKE '%{$key}%') AND id_cat='{$cat}' ORDER BY {$order} LIMIT {$start}, {$limit}";
    } else {
        $sql = "SELECT * FROM {$tblsoft} WHERE nombre LIKE '%{$key}%' OR longdesc LIKE '%{$key}%'\n\t\t\t\tOR archivo LIKE '%{$key}%' OR urltitle LIKE '%{$key}%' ORDER BY {$order} LIMIT {$start}, {$limit}";
    }
    $result = $xoopsDB->query($sql);
    $num2 = $xoopsDB->getRowsNum($result);
    // Configurar el total dse resultados
    $rate = rmdp_set_rating();
    // Establecemos los votos para ganar un punto de rating
    while ($row = $xoopsDB->fetchArray($result)) {
        $isnew = rmdp_element_isnew($row['fecha'], $newdays);
        $isupdate = rmdp_element_isnew($row['update'], $upddays);
        $desc = $myts->MakeTareaData4Show(substr($row['longdesc'], 0, 50));
        $desc = str_replace("<br />", ". ", $desc);
        $date = date($xoopsModuleConfig['dateformat'], $row['fecha']);
        $update = date($xoopsModuleConfig['dateformat'], $row['update']);
        $issponsor = rmdp_element_issponsor($row['id_soft']);
        if (rmdp_get_shotsnum($row['id_soft']) > 0) {
            $haveshots = true;
        } else {
            $haveshots = false;
        }
        $xoopsTpl->append('downloads', array('id' => $row['id_soft'], 'nombre' => $row['nombre'], 'desc' => $desc, 'version' => $row['version'], 'licence' => rmdp_get_licencename($row['licencia']), 'size' => rmdp_convert_size($row['size']), 'descargas' => $row['descargas'], 'rating' => rmdp_calculate_rating($row['rating'], $rate), 'calificacion' => $row['calificacion'], 'resaltar' => $row['resaltar'], 'fecha' => $date, 'isnew' => $isnew, 'update' => $update, 'isupdate' => $isupdate, 'issponsor' => $issponsor, 'votos' => sprintf(_RMDP_VOTES, $row['votos']), 'submitter' => $row['submitter'], 'uname' => rmdp_get_username($row['submitter']), 'os' => rmdp_get_downos($row['id_soft']), 'shots' => $haveshots));
    }
    if ($num % $limit > 0) {
        $tpages += 1;
    }
    $xoopsTpl->assign('lng_total_results', sprintf(_RMDP_TOTAL_RESULTS, $start + 1, ($pactual - 1) * $limit + $num2, $num));
    $nav = _RMDP_RESULT_PAGES;
    for ($i = 1; $i <= $tpages; $i++) {
        $nav .= "<a href='search.php?cat={$cat}&amp;key={$key}&amp;pag={$i}&amp;sort={$order}'>{$i}</a>&nbsp;";
    }
    $xoopsTpl->assign('nav_pages', $nav);
    $xoopsTpl->assign('resalte_bg', $xoopsModuleConfig['bgresalte']);
    $xoopsTpl->assign('results_title', $title);
    $xoopsTpl->assign('lng_resort_by', _RMDP_RESORT_BY);
    $xoopsTpl->assign('lng_nombre', _RMDP_ORDER_NAME);
    $xoopsTpl->assign('lng_fecha', _RMDP_ORDER_DATE);
    $xoopsTpl->assign('lng_rating', _RMDP_ORDER_RATING);
    $xoopsTpl->assign('lng_ourrating', _RMDP_ORDER_OURRATING);
    $xoopsTpl->assign('lng_downloads', _RMDP_ORDER_DOWNLOADS);
    $xoopsTpl->assign('lng_sendby', _RMDP_ORDER_SUBMITTER);
    $xoopsTpl->assign('lng_os', _RMDP_OS);
    $xoopsTpl->assign('lng_version', _RMDP_VERSION);
    $xoopsTpl->assign('lng_filesize', _RMDP_FILE_SIZE);
    $xoopsTpl->assign('lng_licence', _RMDP_LICENCE);
    $xoopsTpl->assign('lng_new', _RMDP_NEW_DOWN);
    $xoopsTpl->assign('lng_update', _RMDP_UPDATE_DOWN);
    $xoopsTpl->assign('lang_sponsored', _RMDP_SPONSORED);
    $xoopsTpl->assign('view_shots', _RMDP_VIEW_SHOT);
    $xoopsTpl->assign('rmdp_page', 'search.php?cat=$cat&amp;key=$key');
    if ($num > 0) {
        return 1;
    } else {
        return 0;
    }
}