<?php

$threads = cache_load('latest_forum_threads');
$options['output'] .= '<ul>' . "\n";
foreach ($threads as $thread) {
    if (forum_category_access($thread['read_threads'])) {
        $thread['title'] = mb_strlen($thread['title'], 'UTF8') > 22 ? htmlspecialchars(mb_substr(htmlspecialchars_decode($thread['title']), 0, 19, 'UTF8')) . '...' : $thread['title'];
        $info = 'I ' . $thread['category_title'] . ' av ' . $thread['username'] . ': ' . $thread['title'];
        $options['output'] .= '<li>' . date('H:i', $thread['timestamp']) . ' <a title="' . $info . '" href="' . $thread['url'] . '"' . ($thread['read_threads'] == 'joshua' ? 'style="color: orange;"' : '') . '>' . $thread['title'] . '</a></li>' . "\n";
    }
}
$options['return'] .= '</ul>' . "\n";
if (!(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.0') || $_SESSION['disablesteve'] == 1)) {
    $options['output'] .= '<img src="' . IMAGE_URL . 'steve/icon_gun.gif" id="steve_gun" />' . "\n";
}
function recurse_forum_category_specialgrej($categories, $depth)
{
    foreach ($categories as $category) {
        if ($category['handle'] == 'hamsterpajs_artiklar' || $category['handle'] == 'forum_error') {
            continue;
        }
        $indent = '';
        for ($i = 0; $i < $depth; $i++) {
            $indent .= '&nbsp;&nbsp;';
        }
        $category['title'] = strlen($category['title']) > 21 ? substr($category['title'], 0, 19) . '...' : $category['title'];
        $style = $depth == 0 ? ' style="font-weight: bold;"' : '';
        $output .= '<option value="' . $category['handle'] . '"' . $style . '>' . $indent . $category['title'] . '</option>' . "\n";
        $output .= recurse_forum_category_specialgrej($category['children'], $depth + 1);
    }
    return $output;
function forum_security($options)
{
    switch ($options['action']) {
        case 'move_thread':
            if (login_checklogin()) {
                if (is_privilegied('discussion_forum_move_thread')) {
                    return true;
                }
            }
            break;
        case 'thread_sticky':
            return is_privilegied('discussion_forum_sticky_threads');
            break;
        case 'thread_lock':
            return is_privilegied('discussion_forum_lock_threads');
            break;
        case 'thread_rename':
            return is_privilegied('discussion_forum_rename_threads');
            break;
        case 'remove_post':
        case 'unremove_post':
            return is_privilegied('discussion_forum_remove_posts');
            break;
        case 'user_ro':
            return is_privilegied('user_management_admin');
            break;
        case 'report':
            return login_checklogin();
            break;
        case 'edit_post':
            if (is_privilegied('discussion_forum_edit_posts')) {
                return true;
            }
            if ($options['post']['timestamp'] > time() - 600 && $options['post']['author'] == $_SESSION['login']['id']) {
                return true;
            }
            break;
        case 'post_addition':
            if (is_privilegied('discussion_forum_post_addition') || $options['post']['author'] == $_SESSION['login']['id']) {
                return true;
            }
            break;
        case 'reply':
            if (login_checklogin()) {
                if (isset($options['post']) && !empty($options['post']) && $options['post']['locked'] == 1) {
                    $return .= '<h2>Diskussionen är låst!</h2>' . "\n";
                    $return .= '<p>Av en eller annan anledning har någon utav våra ordningsvakter låst diskussionen. Att diskussioner blir låsta beror oftast på att de har spårat ur, eller om de går för mycket ifrån ämnet.</p>' . "\n";
                    return $return;
                }
                return true;
            } else {
                $return .= '<h2>Inte inloggad</h2>' . "\n";
                $return .= '<p>Du kan inte skriva i forumet om du inte är inloggad. Att <a href="/register.php">bli medlem</a> är både gratis och vi frågar inte några jobbiga frågor om varken din epost eller ditt personnummer.</p>' . "\n";
                return $return;
            }
            break;
        case 'discussion_create':
            $category_tree = discussion_forum_categories_fetch(array('id' => $options['forum_id']));
            if (count($category_tree) < 1) {
                $return .= '<h2>Hittade inte forumet</h2>' . "\n";
                $return .= '<p>Vi kunde inte starta en diskussion i det forumet, för det finns inget forum med id #' . $options['forum_id'] . '.</p>' . "\n";
                $return .= '<pre>' . $options['content'] . '</pre>' . "\n";
                return $return;
                break;
            }
            $category = array_pop($category_tree);
            if (!forum_category_access($category['create_thread'])) {
                $return .= '<h2>Aja baja, så får man inte göra!</h2>' . "\n";
                $return .= '<p>Nu försökte du starta en diskussion i en kategori du inte får posta i. Kanske var det någon som lekte hacker?</p>' . "\n";
                $return .= '<pre>' . $options['content'] . '</pre>' . "\n";
                return $return;
                break;
            }
            if ($category['quality_level'] > $_SESSION['login']['quality_level'] && $_SESSION['login']['quality_level_expire'] > time()) {
                $return .= '<h2>Här får du inte skriva</h2>' . "\n";
                $return .= '<p>Tjockis, du är ju QL:ad! Sluta hacka, fetknåpp.</p>' . "\n";
                return $return;
                break;
            }
            return true;
            break;
        case 'new_post':
            $first_post = array_shift(discussion_forum_post_fetch(array('post_id' => $options['parent_post'], 'limit' => 1, 'disable_forum_lookup' => true)));
            if ($first_post == NULL) {
                $return .= '<h2>Hittade inte diskussionen</h2>' . "\n";
                $return .= '<p>Vi hittade inte diskussionen i vårat system, kanske är den borttagen? Här är ditt inlägg:</p>' . "\n";
                $return .= '<pre>' . $options['content'] . '</pre>' . "\n";
                return $return;
                break;
            }
            if ($first_post['locked'] == 1) {
                $return .= '<h2>Diskussionen är låst!</h2>' . "\n";
                $return .= '<p>Av en eller annan anledning har någon utav våra ordningsvakter låst diskussionen. Att diskussioner blir låsta beror oftast på att de har spårat ur, eller om de går för mycket ifrån ämnet. Här är ditt inlägg:</p>' . "\n";
                $return .= '<pre>' . $options['content'] . '</pre>' . "\n";
                return $return;
                break;
            }
            $category_tree = discussion_forum_categories_fetch(array('id' => $options['forum_id']));
            if (count($category_tree) < 1) {
                $return .= '<h2>Hittade inte forumet</h2>' . "\n";
                $return .= '<p>Vi hittade inte forumet du försökte posta inlägget i. Här är ditt inlägg:</p>' . "\n";
                $return .= '<pre>' . $options['content'] . '</pre>' . "\n";
                return $return;
                break;
            }
            $category = array_pop($category_tree);
            if (!forum_category_access($category['create_post'])) {
                $return .= '<h2>Här får du inte skriva</h2>' . "\n";
                $return .= '<p>Du får inte posta i den här forumdelen. Ditt inlägg sparades inte. Här är ditt inlägg:</p>' . "\n";
                $return .= '<pre>' . $options['content'] . '</pre>' . "\n";
                return $return;
                break;
            }
            if ($category['quality_level'] > $_SESSION['login']['quality_level'] && $_SESSION['login']['quality_level_expire'] > time()) {
                $return .= '<h2>Här får du inte skriva</h2>' . "\n";
                $return .= '<p>Tjockis, du är ju QL:ad! Sluta hacka, fetknåpp.</p>' . "\n";
                return $return;
                break;
            }
            return true;
            break;
        case 'view_category':
            if (!forum_category_access($options['category']['read_threads'])) {
                $return .= '<h2>För låg användarnivå för kategori</h2>' . "\n";
                $return .= '<p>Nae, den kategorin får inte du titta i.</p>' . "\n";
                return $return;
                break;
            }
            return true;
            break;
        case 'view_thread':
            $category_tree = discussion_forum_categories_fetch(array('id' => $options['forum_id']));
            if (count($category_tree) < 1) {
                trace('forum_bug', 'In ' . __FILE__ . ' on line ' . __LINE__);
                return true;
                break;
            }
            $category = array_pop($category_tree);
            if (!forum_category_access($category['read_threads'])) {
                $return .= '<h2>Den här diskussionen får du inte läsa!</h2>' . "\n";
                $return .= '<p>Hemligt, hemligt...</p>' . "\n";
                return $return;
                break;
            }
            return true;
            break;
    }
    return false;
}