/** * Get all references list according to given parameters * @param int Resource ID * @param Referenced var to return results count * @param string Search keyword * @param int Start results * @param int Results number limit * @return array */ public function references($res = 0, &$count, $search = '', $start = 0, $limit = 15) { $db = XoopsDatabaseFactory::getDatabaseConnection(); $sql = "SELECT COUNT(*) FROM " . $db->prefix('rd_references') . ($res > 0 ? " WHERE id_res='{$res}'" : ''); if ($search != '') { $sql .= ($res > 0 ? " AND " : " WHERE ") . " (title LIKE '%{$k}%' OR text LIKE '%{$k}%')"; } if ($res > 0) { $res = new RDResource($res); } list($num) = $db->fetchRow($db->query($sql)); $limit = $limit <= 0 ? 15 : $limit; $count = $num; //Fin de navegador de páginas $sql = str_replace("COUNT(*)", "*", $sql); $sql .= " ORDER BY id_ref DESC LIMIT {$start},{$limit}"; $result = $db->query($sql); $references = array(); while ($rows = $db->fetchArray($result)) { $ref = new RDReference(); $ref->assignVars($rows); if ($res->isNew()) { $res = new RDResource($ref->resource()); } $references[] = array('id' => $ref->id(), 'title' => $ref->getVar('title'), 'text' => substr(TextCleaner::getInstance()->clean_disabled_tags($ref->getVar('text')), 0, 50) . "...", 'resource' => $res->getVar('title')); } return $references; }
/** * @desc Muestra todas las referencias existentes **/ function rd_show_notes() { global $xoopsModule, $xoopsSecurity; define('RMCSUBLOCATION', 'notes_list'); $id_res = rmc_server_var($_GET, 'res', 0); if ($id_res <= 0) { redirectMsg('resources.php', __('Select a Document to view notes from this', 'docs'), 0); die; } $res = new RDResource($id_res); if ($res->isNew()) { redirectMsg('resources.php', __('The specified Document does not exists!', 'docs'), 0); die; } $search = rmc_server_var($_GET, 'search', ''); //Separamos frase en palabras $words = explode(" ", $search); $db = XoopsDatabaseFactory::getDatabaseConnection(); //Navegador de páginas $sql = "SELECT COUNT(*) FROM " . $db->prefix('rd_references') . ($id_res ? " WHERE id_res='{$id_res}'" : ''); $sql1 = ''; if ($search) { foreach ($words as $k) { //verifica que palabra sea mayor a 2 letras if (strlen($k) <= 2) { continue; } $sql1 .= ($sql1 == '' ? $id_res ? " AND " : " WHERE " : " OR ") . " (title LIKE '%{$k}%' OR text LIKE '%{$k}%')"; } } list($num) = $db->fetchRow($db->query($sql . $sql1)); $page = rmc_server_var($_REQUEST, 'page', 1); $limit = 15; $tpages = ceil($num / $limit); $page = $page > $tpages ? $tpages : $page; $start = $num <= 0 ? 0 : ($page - 1) * $limit; $nav = new RMPageNav($num, $limit, $page, 5); $nav->target_url('notes.php?res=' . $id_res . '&page={PAGE_NUM}'); $sql = str_replace("COUNT(*)", "*", $sql); $sql2 = " LIMIT {$start},{$limit}"; $result = $db->queryF($sql . $sql1 . $sql2); $notes = array(); while ($rows = $db->fetchArray($result)) { $ref = new RDReference(); $ref->assignVars($rows); $notes[] = array('id' => $ref->id(), 'title' => $ref->getVar('title'), 'text' => substr(strip_tags($ref->getVar('text')), 0, 50) . '...'); } // Event $notes = RMEvents::get()->run_event('docs.loading.notes', $notes, $res); RMTemplate::get()->add_style('admin.css', 'docs'); RMTemplate::get()->add_script('../include/js/admin.js'); RMTemplate::get()->assign('xoops_pagetitle', sprintf(__('Notes in %s', 'docs'), $res->getVar('title'))); RMTemplate::get()->add_script(RMCURL . '/include/js/jquery.checkboxes.js'); RMTemplate::get()->add_head('<script type="text/javascript"> var rd_select_message = "' . __('You have not selected any note!', 'docs') . '"; var rd_message = "' . __('Do you really wish to delete selected notes?', 'docs') . '"; </script>'); xoops_cp_location("<a href='./'>" . $xoopsModule->name() . "</a> » " . __('References', 'docs')); xoops_cp_header(); include RMEvents::get()->run_event('docs.admin.template.notes', RMTemplate::get()->get_template('admin/rd_notes.php', 'module', 'docs')); xoops_cp_footer(); }