/** * @desc Obtiene las secciones hijas de una sección * @param int $id Publicación a que pertenece * @param int $parent Sección padre a qur pertenece **/ function child(&$sections, $id, $parent, $indent) { global $tpl, $db, $util; $child = array(); $sql = "SELECT * FROM " . $db->prefix('rd_sections') . " WHERE id_res='{$id}' AND parent='{$parent}' ORDER BY `order`"; $result = $db->queryF($sql); while ($rows = $db->fetchArray($result)) { $sec = new RDSection(); $sec->assignVars($rows); $sections[] = array('id' => $sec->id(), 'title' => $sec->getVar('title'), 'order' => $sec->getVar('order'), 'resource' => $sec->getVar('id_res'), 'parent' => $sec->getVar('parent'), 'indent' => $indent, 'permalink' => $sec->permalink(), 'author' => $sec->getVar('uname'), 'created' => formatTimestamp($sec->getVar('created'), 'l'), 'modified' => formatTimestamp($sec->getVar('modified'), 'l')); child($sections, $id, $sec->id(), $indent + 1); } }
/** * @desc Realiza una búsqueda en el módulo desde EXM */ function ahelpSearch($queryarray, $andor, $limit, $offset, $userid) { global $myts; include_once XOOPS_ROOT_PATH . "/modules/docs/class/rdsection.class.php"; include_once XOOPS_ROOT_PATH . "/modules/docs/class/rdresource.class.php"; $mc = RMUtilities::module_config('docs'); $db = XoopsDatabaseFactory::getDatabaseConnection(); $tbl1 = $db->prefix("rd_resources"); $tbl2 = $db->prefix("rd_sections"); $sql = "SELECT a.id_res,a.title,a.description,a.created,a.modified,a.public,a.nameid,a.owner,a.owname,a.approved,b.id_sec,b.title AS stitle,b.content,b.id_res AS sid_res,\n\tb.nameid AS snameid,b.uid,b.uname,b.created AS screated FROM {$tbl1} a, {$tbl2} b "; $sql1 = ''; foreach ($queryarray as $k) { $sql1 .= ($sql1 == '' ? '' : " {$andor} ") . " (a.id_res=b.id_res) AND (\n \t (b.title LIKE '%{$k}%' AND b.id_res=a.id_res) OR \n \t (b.content LIKE '%{$k}%' AND b.id_res=a.id_res))"; } $sql .= $sql1 != '' ? "WHERE {$sql1}" : ''; $sql .= " AND approved=1 AND public=1 ORDER BY a.modified DESC LIMIT {$offset}, {$limit}"; $result = $db->queryF($sql); $ret = array(); while ($row = $db->fetchArray($result)) { $res = new RDResource(); $res->assignVars($row); $sec = new RDSection(); $sec->assignVars($row); $sec->assignVar('title', $row['stitle']); $sec->assignVar('id_res', $row['sid_res']); $sec->assignVar('nameid', $row['snameid']); $sec->assignVar('created', $row['screated']); $rtn = array(); $rtn['image'] = 'images/result.png'; $rtn['link'] = $sec->permalink(); $rtn['title'] = $sec->getVar('title'); $rtn['time'] = $sec->getVar('created'); $rtn['uid'] = $sec->getVar('uid'); $rtn['desc'] = TextCleaner::getInstance()->truncate($sec->getVar('content'), 150); $ret[] = $rtn; } return $ret; }
/** * Get a single section and all his sub sections */ public function get_section_tree($id, RDResource $res, $number = 1, $text = false) { global $xoopsUser; $db = XoopsDatabaseFactory::getDatabaseConnection(); if (get_class($res) != 'RDResource') { return; } $sql = "SELECT * FROM " . $db->prefix("rd_sections") . " WHERE " . ($res->id() > 0 ? "id_res='" . $res->id() . "' AND" : '') . "\n id_sec='{$id}'"; $result = $db->query($sql); if ($db->getRowsNum($result) <= 0) { return; } $sec = new RDSection(); $row = $db->fetchArray($result); $sec->assignVars($row); $sections[0] = array('id' => $sec->id(), 'title' => $sec->getVar('title'), 'nameid' => $sec->getVar('nameid'), 'jump' => 0, 'link' => $sec->permalink(), 'order' => $sec->getVar('order'), 'author' => $sec->getVar('uid'), 'author_name' => $sec->getVar('uname'), 'created' => $sec->getVar('created'), 'modified' => $sec->getVar('modified'), 'number' => $number, 'comments' => $sec->getVar('comments'), 'edit' => !$xoopsUser ? 0 : ($xoopsUser->isAdmin() ? true : $res->isEditor($xoopsUser->uid())), 'resource' => $sec->getVar('id_res'), 'metas' => $sec->metas()); if ($text) { $sections[0]['content'] = $sec->getVar('content'); } self::sections_tree_index($sec->id(), 1, $res, '', $number, false, $sections, $text); return $sections; }
/** * @desc Muestra el contenido completo de una sección */ function showSection(RDResource &$res, RDSection &$section) { global $xoopsUser, $xoopsModuleConfig, $xoopsOption, $xoopsTpl, $xoopsConfig, $standalone; include 'header.php'; $xoopsTpl->assign('xoops_pagetitle', $section->getVar('title')); // Resource data $resource = array('id' => $res->id(), 'title' => $res->getVar('title'), 'link' => $res->permalink(), 'reads' => $res->getVar('reads')); $res->add_read($res); // Navegación de Secciones $db = XoopsDatabaseFactory::getDatabaseConnection(); $sql = "SELECT * FROM " . $db->prefix("rd_sections") . " WHERE id_res='" . $res->id() . "' AND parent = '0' ORDER BY `order`"; $result = $db->query($sql); $i = 1; $number = 1; $located = false; // Check if current position has been located while ($row = $db->fetchArray($result)) { $sec = new RDSection(); $sec->assignVars($row); if ($sec->id() == $section->id()) { $number = $i; $located = true; } if ($sec->id() == $section->id() && isset($sprev)) { $prev_section = array('id' => $sprev->id(), 'title' => $sprev->getVar('title'), 'link' => $sprev->permalink()); } if ($number == $i - 1 && $located) { $next_section = array('id' => $sec->id(), 'title' => $sec->getVar('title'), 'link' => $sec->permalink()); break; } $i++; $sprev = $sec; } $GLOBALS['rd_section_number'] = $number; $sections = RDFunctions::get_section_tree($section->id(), $res, $number, true); array_walk($sections, 'rd_insert_edit'); // Check last modification date $last_modification = 0; foreach ($sections as $sec) { if ($sec['modified'] > $last_modification) { $last_modification = $sec['modified']; $last_author = array('id' => $sec['author'], 'name' => $sec['author_name']); } } // Event $sections = RMEvents::get()->run_event('docs.show.section', $sections, $res, $section); RMTemplate::get()->add_style('docs.css', 'docs'); RMTemplate::get()->add_jquery(); RMTemplate::get()->add_script(XOOPS_URL . '/modules/docs/include/js/docs.js'); // URLs if ($xoopsModuleConfig['permalinks']) { /** * @todo Generate friendly links */ if (RMFunctions::plugin_installed('topdf')) { $pdf_book_url = RDFunctions::url() . '/pdfbook/' . $section->id() . '/'; $pdf_section_url = RDFunctions::url() . '/pdfsection/' . $section->id() . '/'; } $print_book_url = RDFunctions::url() . '/printbook/' . $section->id() . '/'; $print_section_url = RDFunctions::url() . '/printsection/' . $section->id() . '/'; if (RDFunctions::new_resource_allowed($xoopsUser ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS)) { $publish_url = RDFunctions::url() . '/publish/'; } } else { if (RMFunctions::plugin_installed('topdf')) { $pdf_book_url = XOOPS_URL . '/modules/docs/index.php?page=content&id=' . $section->id() . '&action=pdfbook'; $pdf_section_url = XOOPS_URL . '/modules/docs/index.php?page=content&id=' . $section->id() . '&action=pdfsection'; } $print_book_url = XOOPS_URL . '/modules/docs/index.php?page=content&id=' . $section->id() . '&action=printbook'; $print_section_url = XOOPS_URL . '/modules/docs/index.php?page=content&id=' . $section->id() . '&action=printsection'; if (RDFunctions::new_resource_allowed($xoopsUser ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS)) { $publish_url = RDFunctions::url() . '/?action=publish'; } } // Comments RMFunctions::get_comments('docs', 'res=' . $res->id() . '&id=' . $section->id(), 'module', 0); RMFunctions::comments_form('docs', 'res=' . $res->id() . '&id=' . $section->id(), 'module', RDPATH . '/class/mywordscontroller.php'); RDFunctions::breadcrumb(); RMBreadCrumb::get()->add_crumb($res->getVar('title'), $res->permalink()); RMBreadCrumb::get()->add_crumb($section->getVar('title'), $section->permalink()); include RMEvents::get()->run_event('docs.section.template', RMTemplate::get()->get_template('rd_section.php', 'module', 'docs')); if ($standalone) { RDFunctions::standalone(); } include 'footer.php'; }
$publish_url = RDFunctions::url() . '/?action=publish'; } } include RMTemplate::get()->get_template('rd_resall.php', 'module', 'docs'); } elseif ($res->getVar('quick')) { // Show Quick Index to User $content = false; //Obtiene índice $db = XoopsDatabaseFactory::getDatabaseConnection(); $sql = "SELECT * FROM " . $db->prefix('rd_sections') . " WHERE id_res='" . $res->id() . "' AND parent=0 ORDER BY `order`"; $result = $db->queryF($sql); // Quick index array $qindex_sections = array(); while ($rows = $db->fetchArray($result)) { $sec = new RDSection(); $sec->assignVars($rows); $qindex_sections[] = array('id' => $id, 'title' => $sec->getVar('title'), 'desc' => TextCleaner::getInstance()->clean_disabled_tags(TextCleaner::truncate($sec->getVar('content'), 255)), 'link' => $sec->permalink()); } include RMTemplate::get()->get_template('rd_quickindex.php', 'module', 'docs'); } else { if (!$allowed) { RDFunctions::error_404(); } $toc = array(); RDFunctions::sections_tree_index(0, 0, $res, '', '', false, $toc); include RMTemplate::get()->get_template('rd_resindextoc.php', 'module', 'docs'); } RMTemplate::get()->add_style('docs.css', 'docs'); RMTemplate::get()->add_jquery(); RMTemplate::get()->add_script(RDURL . '/include/js/docs.js'); if ($standalone) {
$sql = "SELECT * FROM " . $db->prefix("rd_resources") . " WHERE public=1 ORDER BY `reads` DESC LIMIT 0, 15"; $result = $db->query($sql); $top_data = array(); while ($row = $db->fetchArray($result)) { $res = new RDResource(); $res->assignVars($row); $top_data['reads'][] = $res->getVar('reads'); $top_data['names'][] = $res->getVar('title') . ' (' . $res->getVar('reads') . ')'; } array_multisort($top_data['names'], SORT_STRING, $top_data['reads'], SORT_NUMERIC); $sql = "SELECT * FROM " . $db->prefix("rd_sections") . " ORDER BY `comments` DESC LIMIT 0, 15"; $result = $db->query($sql); $comm_data = array(); while ($row = $db->fetchArray($result)) { $sec = new RDSection(); $sec->assignVars($row); $comm_data['comments'][] = $sec->getVar('comments'); $comm_data['names'][] = $sec->getVar('title') . ' (' . $sec->getVar('comments') . ')'; } array_multisort($comm_data['names'], SORT_STRING, $comm_data['comments'], SORT_NUMERIC); // Resume data list($num) = $db->fetchRow($db->query("SELECT COUNT(*) FROM " . $db->prefix("rd_resources"))); $resume_data['resources'] = $num; list($num) = $db->fetchRow($db->query("SELECT COUNT(*) FROM " . $db->prefix("rd_sections"))); $resume_data['sections'] = $num; list($num) = $db->fetchRow($db->query("SELECT COUNT(*) FROM " . $db->prefix("rd_figures"))); $resume_data['figures'] = $num; list($num) = $db->fetchRow($db->query("SELECT COUNT(*) FROM " . $db->prefix("rd_references"))); $resume_data['notes'] = $num; // No published resoruces $sql = "SELECT * FROM " . $db->prefix("rd_resources") . " WHERE public=0 ORDER BY created DESC LIMIT 0,5";