function bxpress_block_topics_show($options) { $db = XoopsDatabaseFactory::getDatabaseConnection(); $mc = RMSettings::module_settings('bxpress'); $tbl1 = $db->prefix('mod_bxpress_posts'); $tbl2 = $db->prefix('mod_bxpress_topics'); $tbl3 = $db->prefix('mod_bxpress_likes'); $tbl4 = $db->prefix('mod_bxpress_forums'); // Calculate period of time if (0 < $options['days']) { $period = time() - $options['days'] * 86400; } $order = 'DESC' == $options['order'] ? 'DESC' : 'ASC'; $sql = "SELECT topics.*, forums.name,\n (SELECT SUM(likes) FROM {$tbl1} WHERE id_topic=topics.id_topic) as likes,\n (SELECT post_time FROm {$tbl1} WHERE id_topic=topics.id_topic ORDER BY post_time DESC LIMIT 0, 1) as updated\n FROM {$tbl2} as topics, {$tbl4} as forums WHERE "; if (0 < $options['days']) { $sql .= " topics.date > {$period} AND "; } $sql .= "forums.id_forum=topics.id_forum"; if ('recent' == $options['type']) { $sql .= " ORDER BY topics.id_topic {$order} LIMIT 0, {$options['limit']}"; } elseif ('hot' == $options['type']) { $sql .= " ORDER BY topics.replies {$order} LIMIT 0, {$options['limit']}"; } elseif ('hits' == $options['type']) { $sql .= " ORDER BY topics.views {$order} LIMIT 0, {$options['limit']}"; } $result = $db->queryF($sql); $topics = array(); $block = array(); include_once XOOPS_ROOT_PATH . '/modules/bxpress/class/bxforum.class.php'; include_once XOOPS_ROOT_PATH . '/modules/bxpress/class/bxpost.class.php'; include_once XOOPS_ROOT_PATH . '/modules/bxpress/class/bxtopic.class.php'; include_once XOOPS_ROOT_PATH . '/modules/bxpress/class/bxfunctions.class.php'; $topic = new bXTopic(); $forum = new bXForum(); $tf = new RMTimeFormatter(0, '%T% %d%, %Y%'); while ($row = $db->fetchArray($result)) { $topic->assignVars($row); $forum->assignVars(array('id_forum' => $topic->forum())); $ret = array('id' => $topic->id(), 'title' => $topic->title, 'link' => $topic->permalink(), 'likes' => $topic->likes, 'replies' => $topic->replies, 'hits' => $topic->views, 'forum' => array('name' => $row['name'], 'id' => $row['id_forum'], 'link' => $forum->permalink()), 'time' => $topic->date, 'date' => $tf->ago($topic->date), 'likes' => $row['likes'], 'updated' => 'full' == $options['format'] ? sprintf(__('Updated on %s', 'bxpress'), $tf->format($row['updated'])) : $tf->ago($row['updated'])); $topics[] = $ret; } $block['topics'] = $topics; $block['format'] = $options['format']; // Add css styles RMTemplate::get()->add_style('bxpress-blocks.min.css', 'bxpress'); return $block; }
if ($lastid) { header('Location: topic.php?pid=' . $lastid . '#p' . $lastid); exit; } } if ($id == '') { redirect_header('./', 2, __('Specified topic is not valid!', 'bxpress')); die; } $topic = new bXTopic($id); if ($topic->isNew()) { redirect_header('./', 2, __('Specified topic does not exists!', 'bxpress')); die; } //Determinamos de el mensaje esta aprobado y si el usuario es administrador o moderador $forum = new bXForum($topic->forum()); if (!$topic->approved() && (!$xoopsUser->isAdmin() || !$forum->isModerator($xoopsUser->uid()))) { redirect_header('./', 2, __('This topic has not been approved yet!', 'bxpress')); die; } $forum = new bXForum($topic->forum()); if (!$forum->isAllowed($xoopsUser ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS, 'view')) { redirect_header('./', 2, __('Sorry, you don\'t have permission to view this forum!', 'bxpress')); die; } if (!isset($_SESSION['topics_viewed'])) { $topic->addView(); $topic->save(); $_SESSION['topics_viewed'] = array(); $_SESSION['topics_viewed'][] = $topic->id(); } else {
/** * @desc Eliminar temas */ function deleteTopics() { global $db, $xoopsModuleConfig, $bxpress, $forum, $xoopsUser, $xoopsSecurity; $ok = isset($_POST['ok']) ? $_POST['ok'] : 0; $topics = isset($_REQUEST['topics']) ? $_REQUEST['topics'] : null; if (empty($topics) || is_array($topics) && empty($topics)) { redirect_header('moderate.php?id=' . $forum->id(), 2, __('Select at least one topic to delete!', 'bxpress')); die; } $topics = !is_array($topics) ? array($topics) : $topics; $lastpost = false; if (!$xoopsSecurity->check()) { redirect_header('moderate.php?id=' . $forum->id(), 2, __('Session token expired!', 'bxpress')); die; } foreach ($topics as $k) { $topic = new bXTopic($k); if ($topic->isNew()) { continue; } if ($topic->forum() != $forum->id()) { continue; } //Verificamos si el tema contiene el último mensaje del foro if (!$lastpost && array_key_exists($forum->lastPostId(), $topic->getPosts(0))) { $lastpost = true; } $topic->delete(); } //Actualizamos el último mensaje del foro if ($lastpost) { $forum = new bXForum($forum->id()); $post = $forum->getLastPost(); $forum->setPostId($post); $forum->save(); } redirect_header('moderate.php?id=' . $forum->id(), 1, __('Action completed!', 'bxpress')); }